javascript: Report function signature

This commit is contained in:
Colomban Wendling 2014-11-21 02:06:14 +01:00
parent f65dec49e7
commit f2b368e2cc
29 changed files with 360 additions and 252 deletions

View File

@ -219,7 +219,7 @@ static void deleteToken (tokenInfo *const token)
* Tag generation functions
*/
static void makeJsTag (tokenInfo *const token, const jsKind kind)
static void makeJsTag (tokenInfo *const token, const jsKind kind, vString *const signature)
{
if (JsKinds [kind].enabled && ! token->ignoreTag )
{
@ -256,13 +256,29 @@ static void makeJsTag (tokenInfo *const token, const jsKind kind)
e.extensionFields.scope[1] = vStringValue (fullscope);
}
makeTagEntry (&e);
if (signature && vStringLength(signature))
{
size_t i;
/* sanitize signature by replacing all control characters with a
* space (because it's simple).
* there should never be any junk in a valid signature, but who
* knows what the user wrote and CTags doesn't cope well with weird
* characters. */
for (i = 0; i < signature->length; i++)
{
unsigned char c = (unsigned char) signature->buffer[i];
if (c < 0x20 /* below space */ || c == 0x7F /* DEL */)
signature->buffer[i] = ' ';
}
e.extensionFields.arglist = vStringValue(signature);
}
makeTagEntry (&e);
vStringDelete (fullscope);
}
}
static void makeClassTag (tokenInfo *const token)
static void makeClassTag (tokenInfo *const token, vString *const signature)
{
vString * fulltag;
@ -283,13 +299,13 @@ static void makeClassTag (tokenInfo *const token)
if ( ! stringListHas(ClassNames, vStringValue (fulltag)) )
{
stringListAdd (ClassNames, vStringNewCopy (fulltag));
makeJsTag (token, JSTAG_CLASS);
makeJsTag (token, JSTAG_CLASS, signature);
}
vStringDelete (fulltag);
}
}
static void makeFunctionTag (tokenInfo *const token)
static void makeFunctionTag (tokenInfo *const token, vString *const signature)
{
vString * fulltag;
@ -310,7 +326,7 @@ static void makeFunctionTag (tokenInfo *const token)
if ( ! stringListHas(FunctionNames, vStringValue (fulltag)) )
{
stringListAdd (FunctionNames, vStringNewCopy (fulltag));
makeJsTag (token, JSTAG_FUNCTION);
makeJsTag (token, JSTAG_FUNCTION, signature);
}
vStringDelete (fulltag);
}
@ -390,8 +406,7 @@ static void parseIdentifier (vString *const string, const int firstChar)
c = fileGetc ();
} while (isIdentChar (c));
vStringTerminate (string);
if (!isspace (c))
fileUngetc (c); /* unget non-identifier character */
fileUngetc (c); /* unget non-identifier character */
}
static keywordId analyzeToken (vString *const name)
@ -404,24 +419,34 @@ static keywordId analyzeToken (vString *const name)
return result;
}
static void readToken (tokenInfo *const token)
static void readTokenFull (tokenInfo *const token, vString *const repr)
{
int c;
int i;
token->type = TOKEN_UNDEFINED;
token->keyword = KEYWORD_NONE;
vStringClear (token->string);
getNextChar:
i = 0;
do
{
c = fileGetc ();
i++;
}
while (c == '\t' || c == ' ' || c == '\n');
token->lineNumber = getSourceLineNumber ();
token->filePosition = getInputFilePosition ();
if (repr)
{
if (i > 1)
vStringPut (repr, ' ');
vStringPut (repr, c);
}
switch (c)
{
case EOF: longjmp (Exception, (int)ExceptionEOF); break;
@ -443,6 +468,11 @@ getNextChar:
parseString (token->string, c);
token->lineNumber = getSourceLineNumber ();
token->filePosition = getInputFilePosition ();
if (repr)
{
vStringCat (repr, token->string);
vStringPut (repr, c);
}
break;
case '\\':
@ -482,6 +512,8 @@ getNextChar:
}
else
{
if (repr) /* remove the / we added */
repr->buffer[--repr->length] = 0;
if (d == '*')
{
do
@ -533,6 +565,8 @@ getNextChar:
token->type = TOKEN_IDENTIFIER;
else
token->type = TOKEN_KEYWORD;
if (repr && vStringLength (token->string) > 1)
vStringCatS (repr, vStringValue (token->string) + 1);
}
break;
}
@ -540,6 +574,11 @@ getNextChar:
LastTokenType = token->type;
}
static void readToken (tokenInfo *const token)
{
readTokenFull (token, NULL);
}
static void copyToken (tokenInfo *const dest, tokenInfo *const src)
{
dest->nestLevel = src->nestLevel;
@ -555,7 +594,7 @@ static void copyToken (tokenInfo *const dest, tokenInfo *const src)
* Token parsing functions
*/
static void skipArgumentList (tokenInfo *const token)
static void skipArgumentList (tokenInfo *const token, vString *const repr)
{
int nest_level = 0;
@ -569,9 +608,11 @@ static void skipArgumentList (tokenInfo *const token)
if (isType (token, TOKEN_OPEN_PAREN)) /* arguments? */
{
nest_level++;
if (repr)
vStringPut (repr, '(');
while (! (isType (token, TOKEN_CLOSE_PAREN) && (nest_level == 0)))
{
readToken (token);
readTokenFull (token, repr);
if (isType (token, TOKEN_OPEN_PAREN))
{
nest_level++;
@ -661,7 +702,7 @@ static boolean findCmdTerm (tokenInfo *const token)
}
else if ( isType (token, TOKEN_OPEN_PAREN) )
{
skipArgumentList(token);
skipArgumentList(token, NULL);
}
else if ( isType (token, TOKEN_OPEN_SQUARE) )
{
@ -698,7 +739,7 @@ static void parseSwitch (tokenInfo *const token)
* Handle nameless functions, these will only
* be considered methods.
*/
skipArgumentList(token);
skipArgumentList(token, NULL);
}
if (isType (token, TOKEN_OPEN_CURLY))
@ -742,7 +783,7 @@ static boolean parseLoop (tokenInfo *const token, tokenInfo *const parent)
* Handle nameless functions, these will only
* be considered methods.
*/
skipArgumentList(token);
skipArgumentList(token, NULL);
}
if (isType (token, TOKEN_OPEN_CURLY))
@ -792,7 +833,7 @@ static boolean parseLoop (tokenInfo *const token, tokenInfo *const parent)
* Handle nameless functions, these will only
* be considered methods.
*/
skipArgumentList(token);
skipArgumentList(token, NULL);
}
if (! isType (token, TOKEN_SEMICOLON))
is_terminated = FALSE;
@ -861,7 +902,7 @@ static boolean parseIf (tokenInfo *const token, tokenInfo *const parent)
* Handle nameless functions, these will only
* be considered methods.
*/
skipArgumentList(token);
skipArgumentList(token, NULL);
}
if (isType (token, TOKEN_OPEN_CURLY))
@ -886,6 +927,7 @@ static boolean parseIf (tokenInfo *const token, tokenInfo *const parent)
static void parseFunction (tokenInfo *const token)
{
tokenInfo *const name = newToken ();
vString *const signature = vStringNew ();
boolean is_class = FALSE;
/*
@ -909,19 +951,20 @@ static void parseFunction (tokenInfo *const token)
}
if ( isType (token, TOKEN_OPEN_PAREN) )
skipArgumentList(token);
skipArgumentList(token, signature);
if ( isType (token, TOKEN_OPEN_CURLY) )
{
is_class = parseBlock (token, name);
if ( is_class )
makeClassTag (name);
makeClassTag (name, signature);
else
makeFunctionTag (name);
makeFunctionTag (name, signature);
}
findCmdTerm (token);
vStringDelete (signature);
deleteToken (name);
}
@ -1062,17 +1105,19 @@ static boolean parseMethods (tokenInfo *const token, tokenInfo *const class)
readToken (token);
if ( isKeyword (token, KEYWORD_function) )
{
vString *const signature = vStringNew ();
readToken (token);
if ( isType (token, TOKEN_OPEN_PAREN) )
{
skipArgumentList(token);
skipArgumentList(token, signature);
}
if (isType (token, TOKEN_OPEN_CURLY))
{
has_methods = TRUE;
addToScope (name, class->string);
makeJsTag (name, JSTAG_METHOD);
makeJsTag (name, JSTAG_METHOD, signature);
parseBlock (token, name);
/*
@ -1081,6 +1126,8 @@ static boolean parseMethods (tokenInfo *const token, tokenInfo *const class)
*/
readToken (token);
}
vStringDelete (signature);
}
else
{
@ -1101,7 +1148,7 @@ static boolean parseMethods (tokenInfo *const token, tokenInfo *const class)
}
else if (isType (token, TOKEN_OPEN_PAREN))
{
skipArgumentList (token);
skipArgumentList (token, NULL);
}
else if (isType (token, TOKEN_OPEN_SQUARE))
{
@ -1117,9 +1164,9 @@ static boolean parseMethods (tokenInfo *const token, tokenInfo *const class)
has_methods = TRUE;
addToScope (name, class->string);
if (has_child_methods)
makeJsTag (name, JSTAG_CLASS);
makeJsTag (name, JSTAG_CLASS, NULL);
else
makeJsTag (name, JSTAG_PROPERTY);
makeJsTag (name, JSTAG_PROPERTY, NULL);
}
}
}
@ -1256,7 +1303,7 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
* }
*
*/
makeClassTag (name);
makeClassTag (name, NULL);
is_class = TRUE;
/*
@ -1271,9 +1318,10 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
readToken (token);
if ( isKeyword(token, KEYWORD_NONE) )
{
vString *const signature = vStringNew ();
vStringCopy(saveScope, token->scope);
addToScope(token, name->string);
makeJsTag (token, JSTAG_METHOD);
readToken (method_body_token);
vStringCopy (method_body_token->scope, token->scope);
@ -1283,11 +1331,15 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
isType (method_body_token, TOKEN_OPEN_CURLY)) )
{
if ( isType (method_body_token, TOKEN_OPEN_PAREN) )
skipArgumentList(method_body_token);
skipArgumentList(method_body_token,
vStringLength (signature) == 0 ? signature : NULL);
else
readToken (method_body_token);
}
makeJsTag (token, JSTAG_METHOD, signature);
vStringDelete (signature);
if ( isType (method_body_token, TOKEN_OPEN_CURLY))
{
parseBlock (method_body_token, token);
@ -1329,7 +1381,7 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
}
if ( isType (token, TOKEN_OPEN_PAREN) )
skipArgumentList(token);
skipArgumentList(token, NULL);
if ( isType (token, TOKEN_OPEN_SQUARE) )
skipArrayList(token);
@ -1365,7 +1417,7 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
* var g_var2;
*/
if (isType (token, TOKEN_SEMICOLON))
makeJsTag (name, JSTAG_VARIABLE);
makeJsTag (name, JSTAG_VARIABLE, NULL);
}
/*
* Statement has ended.
@ -1390,6 +1442,8 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
if ( isKeyword (token, KEYWORD_function) )
{
vString *const signature = vStringNew ();
readToken (token);
if ( isKeyword (token, KEYWORD_NONE) &&
@ -1417,7 +1471,7 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
}
if ( isType (token, TOKEN_OPEN_PAREN) )
skipArgumentList(token);
skipArgumentList(token, signature);
if (isType (token, TOKEN_OPEN_CURLY))
{
@ -1429,23 +1483,25 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
*/
if ( is_inside_class )
{
makeJsTag (name, JSTAG_METHOD);
makeJsTag (name, JSTAG_METHOD, signature);
if ( vStringLength(secondary_name->string) > 0 )
makeFunctionTag (secondary_name);
makeFunctionTag (secondary_name, signature);
parseBlock (token, name);
}
else
{
is_class = parseBlock (token, name);
if ( is_class )
makeClassTag (name);
makeClassTag (name, signature);
else
makeFunctionTag (name);
makeFunctionTag (name, signature);
if ( vStringLength(secondary_name->string) > 0 )
makeFunctionTag (secondary_name);
makeFunctionTag (secondary_name, signature);
}
}
vStringDelete (signature);
}
else if (isType (token, TOKEN_OPEN_CURLY))
{
@ -1460,7 +1516,7 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
*/
has_methods = parseMethods(token, name);
if (has_methods)
makeJsTag (name, JSTAG_CLASS);
makeJsTag (name, JSTAG_CLASS, NULL);
else
{
/*
@ -1496,7 +1552,7 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
if ( ! stringListHas(FunctionNames, vStringValue (fulltag)) &&
! stringListHas(ClassNames, vStringValue (fulltag)) )
{
makeJsTag (name, JSTAG_VARIABLE);
makeJsTag (name, JSTAG_VARIABLE, NULL);
}
vStringDelete (fulltag);
}
@ -1524,7 +1580,7 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
readToken (token);
if ( isType (token, TOKEN_OPEN_PAREN) )
skipArgumentList(token);
skipArgumentList(token, NULL);
if (isType (token, TOKEN_SEMICOLON))
{
@ -1532,15 +1588,18 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
{
if ( is_var )
{
makeJsTag (name, JSTAG_VARIABLE);
makeJsTag (name, JSTAG_VARIABLE, NULL);
}
else
{
if ( is_class )
{
makeClassTag (name);
makeClassTag (name, NULL);
} else {
makeFunctionTag (name);
/* FIXME: we cannot really get a meaningful
* signature from a `new Function()` call,
* so for now just don't set any */
makeFunctionTag (name, NULL);
}
}
}
@ -1584,7 +1643,7 @@ static boolean parseStatement (tokenInfo *const token, tokenInfo *const parent,
if ( ! stringListHas(FunctionNames, vStringValue (fulltag)) &&
! stringListHas(ClassNames, vStringValue (fulltag)) )
{
makeJsTag (name, JSTAG_VARIABLE);
makeJsTag (name, JSTAG_VARIABLE, NULL);
}
vStringDelete (fulltag);
}

View File

@ -1,5 +1,5 @@
# format=tagmanager
RPCÌ1ÎTestÖ0
asyncMethodÌ128ÎTest.RPCÖ0
asyncRequestÌ128ÎTest.RPCÖ0
asyncMethodÌ128Í( uri, method, params, callback)ÎTest.RPCÖ0
asyncRequestÌ128Í( uri, data, callback)ÎTest.RPCÖ0
request_idÌ64ÎTest.RPCÖ0

View File

@ -1,4 +1,4 @@
# format=tagmanager
objLiteralMethodĚ128ÎobjectLiteralÖ0
objLiteralMethodĚ128Í()ÎobjectLiteralÖ0
objLiteralPropertyÌ64ÎobjectLiteralÖ0
objectLiteralÌ1Ö0

View File

@ -1,4 +1,4 @@
# format=tagmanager
REÌ1Ö0
fooÌ16384Ö0
my_functionÌ16Ö0
my_functionÌ16Í()Ö0

View File

@ -1,42 +1,42 @@
# format=tagmanager
MyClassÌ1Ö0
MyClass_sub1フ128ホMyClassヨ0
MyClass_sub2フ128ホMyClassヨ0
aフ16ヨ0
aaフ16ヨ0
aa_sub1フ16ホaaヨ0
aa_sub2フ16ホaaヨ0
bフ16ヨ0
bazフ16ホfヨ0
cフ16ヨ0
dフ16ヨ0
eフ16ヨ0
fフ16ヨ0
gフ16ヨ0
hフ16ヨ0
iフ16ヨ0
jフ16ヨ0
kフ16ヨ0
lフ16ヨ0
mフ16ヨ0
nフ16ヨ0
oフ16ヨ0
pフ16ヨ0
qフ16ヨ0
rフ16ヨ0
sフ16ヨ0
tフ16ヨ0
uフ16ヨ0
vフ16ヨ0
wフ16ヨ0
w_sub1フ16ホwヨ0
w_sub2フ16ホwヨ0
xフ16ヨ0
x_sub1フ16ホxヨ0
x_sub2フ16ホxヨ0
yフ16ヨ0
y_sub1フ16ホyヨ0
y_sub2フ16ホyヨ0
zフ16ヨ0
z_sub1フ16ホzヨ0
z_sub2フ16ホzヨ0
MyClass_sub1フ128ヘ(x)ホMyClassヨ0
MyClass_sub2フ128ヘ(x)ホMyClassヨ0
aフ16ヘ(flag)ヨ0
aaフ16ヘ()ヨ0
aa_sub1フ16ヘ()ホaaヨ0
aa_sub2フ16ヘ()ホaaヨ0
bフ16ヘ()ヨ0
bazフ16ヘ()ホfヨ0
cフ16ヘ(flag)ヨ0
dフ16ヘ()ヨ0
eフ16ヘ(flag)ヨ0
fフ16ヘ()ヨ0
gフ16ヘ(flag)ヨ0
hフ16ヘ()ヨ0
iフ16ヘ(flag)ヨ0
jフ16ヘ()ヨ0
kフ16ヘ(flag)ヨ0
lフ16ヘ()ヨ0
mフ16ヘ(flag)ヨ0
nフ16ヘ()ヨ0
oフ16ヘ()ヨ0
pフ16ヘ()ヨ0
qフ16ヘ()ヨ0
rフ16ヘ(flag)ヨ0
sフ16ヘ()ヨ0
tフ16ヘ(flag)ヨ0
uフ16ヘ(flag)ヨ0
vフ16ヘ(flag)ヨ0
wフ16ヘ()ヨ0
w_sub1フ16ヘ(x)ホwヨ0
w_sub2フ16ヘ()ホwヨ0
xフ16ヘ()ヨ0
x_sub1フ16ヘ()ホxヨ0
x_sub2フ16ヘ()ホxヨ0
yフ16ヘ()ヨ0
y_sub1フ16ヘ()ホyヨ0
y_sub2フ16ヘ()ホyヨ0
zフ16ヘ()ヨ0
z_sub1フ16ヘ()ホzヨ0
z_sub2フ16ヘ()ホzヨ0

View File

@ -1,3 +1,3 @@
# format=tagmanager
f1フ16ヨ0
f2フ16ヨ0
f1フ16ヘ()ヨ0
f2フ16ヘ()ヨ0

View File

@ -1,13 +1,13 @@
# format=tagmanager
arrayÌ64ÎrootÖ0
decimalÌ64ÎrootÖ0
fÌ16Ö0
fÌ16Í()Ö0
idÌ64ÎrootÖ0
methodÌ128ÎrootÖ0
methodÌ128Í()ÎrootÖ0
negÌ64ÎrootÖ0
parenthesesÌ64ÎrootÖ0
rootÌ1Ö0
stringÌ64ÎrootÖ0
subFunctionÌ128Îroot.subObjectÖ0
subFunctionÌ128Í()Îroot.subObjectÖ0
subObjectÌ1ÎrootÖ0
subPropertyÌ64Îroot.subObjectÖ0

View File

@ -161,6 +161,7 @@ test_sources = \
java_enum.java \
js-class-related-unterminated.js \
js-scope.js \
js-signature.js \
js-sub-block-scope.js \
js-unknown-construct-nesting.js \
jsFunc_tutorial.js \

View File

@ -3,7 +3,7 @@ a
bÌ16384Ö0
barÌ64Îclass.test1Ö0
cÌ16384Ö0
classÌ1Ö0
classÌ1Í()Ö0
fooÌ64Îclass.test1Ö0
test1Ì1ÎclassÖ0
test3Ì128ÎclassÖ0
test3Ì128Í()ÎclassÖ0

View File

@ -1,7 +1,7 @@
# format=tagmanager
ContainerÌ16Ö0
ContainerÌ16Í()Ö0
MyClassÌ1Ö0
insertÌ128ÎMyClassÖ0
wrapÌ128ÎMyClassÖ0
xÌ16ÎContainerÖ0
yÌ16ÎContainerÖ0
insertÌ128Í(element, insertions)ÎMyClassÖ0
wrapÌ128Í(element, wrapper, attributes)ÎMyClassÖ0
xÌ16Í()ÎContainerÖ0
yÌ16Í()ÎContainerÖ0

View File

@ -2,13 +2,13 @@
*Ì64Îcontainer.dirtyTabÖ0
DifferentÌ1Ö0
TabChromeÌ1Ö0
createTabTileĚ128ÎDifferentÖ0
createTabTileĚ128ÎTabChromeÖ0
destroyTabTileĚ128ÎDifferentÖ0
destroyTabTileĚ128ÎTabChromeÖ0
createTabTileÌ128Í(browser)ÎDifferentÖ0
createTabTileÌ128Í(browser)ÎTabChromeÖ0
destroyTabTileÌ128Í(tile)ÎDifferentÖ0
destroyTabTileÌ128Í(tile)ÎTabChromeÖ0
dirtyTabÌ1ÎcontainerÖ0
initĚ128ÎDifferentÖ0
initĚ128ÎTabChromeÖ0
initÌ128Í()ÎDifferentÖ0
initÌ128Í()ÎTabChromeÖ0
snapshotÌ64Îcontainer.dirtyTabÖ0
titleÌ64Îcontainer.dirtyTabÖ0
urlÌ64Îcontainer.dirtyTabÖ0

View File

@ -1,3 +1,3 @@
# format=tagmanager
onsubmitÌ16ÎeditFormElÖ0
scrollEditBoxÌ16Ö0
onsubmitÌ16Í()ÎeditFormElÖ0
scrollEditBoxÌ16Í()Ö0

View File

@ -1,5 +1,5 @@
# format=tagmanager
containerÌ16384Ö0
method1Ì16Îcontainer.objectÖ0
method2Ì16Îcontainer.objectÖ0
objectÌ16ÎcontainerÖ0
method1Ì16Í()Îcontainer.objectÖ0
method2Ì16Í()Îcontainer.objectÖ0
objectÌ16Í()ÎcontainerÖ0

View File

@ -1,11 +1,11 @@
# format=tagmanager
MyClassÌ1Ö0
MyClassÌ16Ö0
function1Ì16Ö0
function2Ì16Ö0
method2Ì128ÎMyClassÖ0
nestedFunction1Ì16ÎMyClass.method2Ö0
nestedFunction2Ì16ÎMyClass.method2Ö0
nestedFunction3Ì16Îfunction1Ö0
nestedFunction4Ì16Îfunction2Ö0
nestedFunction5Ì16Îfunction2Ö0
MyClassÌ16Í()Ö0
function1Ì16Í()Ö0
function2Ì16Í()Ö0
method2Ì128Í()ÎMyClassÖ0
nestedFunction1Ì16Í()ÎMyClass.method2Ö0
nestedFunction2Ì16Í()ÎMyClass.method2Ö0
nestedFunction3Ì16Í()Îfunction1Ö0
nestedFunction4Ì16Í()Îfunction2Ö0
nestedFunction5Ì16Í()Îfunction2Ö0

View File

@ -1,18 +1,18 @@
# format=tagmanager
c2m1フ128ホclass2ヨ0
c2m2フ128ホclass2ヨ0
c2m3フ128ホclass2ヨ0
c3m1フ128ホclass3ヨ0
c3m2フ128ホclass3ヨ0
class1フ1ヨ0
class2フ1ヨ0
class3フ1ヨ0
class4フ1ヨ0
func1フ16ヨ0
func2フ16ヨ0
method1フ128ホclass1ヨ0
method1フ128ホclass4ヨ0
method2フ128ホclass1ヨ0
method2フ128ホclass4ヨ0
method3フ128ホclass1ヨ0
method4フ128ホclass1ヨ0
c2m1フ128ヘ()ホclass2ヨ0
c2m2フ128ヘ(f)ホclass2ヨ0
c2m3フ128ヘ(f)ホclass2ヨ0
c3m1フ128ヘ()ホclass3ヨ0
c3m2フ128ヘ()ホclass3ヨ0
class1フ1ヘ()ヨ0
class2フ1ヘ()ヨ0
class3フ1ヘ()ヨ0
class4フ1ヘ()ヨ0
func1フ16ヘ()ヨ0
func2フ16ヘ()ヨ0
method1フ128ヘ()ホclass1ヨ0
method1フ128ヘ()ホclass4ヨ0
method2フ128ヘ()ホclass1ヨ0
method2フ128ヘ()ホclass4ヨ0
method3フ128ヘ()ホclass1ヨ0
method4フ128ヘ()ホclass1ヨ0

View File

@ -1,16 +1,16 @@
# format=tagmanager
AÌ64ÎClsÖ0
Bフ1ホClsヨ0
Cフ1ホClsヨ0
Bフ1ヘ(a, b)ホClsヨ0
Cフ1ヘ()ホClsヨ0
ClsÌ1Ö0
Subフ1ホCls.Bヨ0
Subフ1ヘ()ホCls.Bヨ0
dyn1Ì128ÎCls.B.SubÖ0
m1フ128ホCls.Bヨ0
m2フ128ホCls.Bヨ0
m3フ128ホCls.Bヨ0
m4フ128ホCls.Bヨ0
m5フ128ホCls.Bヨ0
m6フ128ホCls.Bヨ0
mainフ16ヨ0
n1フ128ホCls.Cヨ0
n2フ128ホCls.Cヨ0
m1フ128ヘ(a)ホCls.Bヨ0
m2フ128ヘ(b)ホCls.Bヨ0
m3フ128ヘ(c)ホCls.Bヨ0
m4フ128ヘ(d)ホCls.Bヨ0
m5フ128ヘ(e)ホCls.Bヨ0
m6フ128ヘ(f)ホCls.Bヨ0
mainフ16ヘ()ヨ0
n1フ128ヘ()ホCls.Cヨ0
n2フ128ヘ()ホCls.Cヨ0

View File

@ -1,4 +1,4 @@
# format=tagmanager
Aフ1ヨ0
m1フ128ホAヨ0
m2フ128ホAヨ0
Aフ1ヘ()ヨ0
m1フ128ヘ()ホAヨ0
m2フ128ヘ()ホAヨ0

View File

@ -0,0 +1,38 @@
function f1() {
}
function f2(arg1, arg2) {
}
function f3(
arg1, // first
arg2, // second
arg3 // last
) {
// ...
}
function f4(a, b, c) {
}
function Cls(name) {
this.name = name;
}
Cls.prototype = {
get_name: function() {
return this.name;
},
set_name: function(name) {
this.name = name;
},
}
Cls.prototype.hello = function(tpl) {
if (tpl == undefined) tpl = "hello {}";
return tpl.replace ('{}', this.name);
}
main = function() {
c = new Cls("John");
print(c.hello());
}
main();

View File

@ -0,0 +1,10 @@
# format=tagmanager
ClsÌ1Í(name)Ö0
f1Ì16Í()Ö0
f2Ì16Í(arg1, arg2)Ö0
f3Ì16Í( arg1, arg2, arg3 )Ö0
f4Ì16Í(a, b, c)Ö0
get_nameÌ128Í()ÎClsÖ0
helloÌ128Í(tpl)ÎClsÖ0
mainÌ16Í()Ö0
set_nameÌ128Í(name)ÎClsÖ0

View File

@ -1,8 +1,8 @@
# format=tagmanager
barÌ16ÎparentÖ0
fooÌ16ÎparentÖ0
helloÌ16Îparent.fooÖ0
hello2Ì16Îparent.barÖ0
hiÌ16Îparent.fooÖ0
hi2Ì16Îparent.barÖ0
parentÌ16Ö0
barÌ16Í()ÎparentÖ0
fooÌ16Í()ÎparentÖ0
helloÌ16Í()Îparent.fooÖ0
hello2Ì16Í()Îparent.barÖ0
hiÌ16Í()Îparent.fooÖ0
hi2Ì16Í()Îparent.barÖ0
parentÌ16Í()Ö0

View File

@ -1,5 +1,5 @@
# format=tagmanager
aaフ128ホoヨ0
bbフ128ホoヨ0
ccフ128ホoヨ0
aaフ128ヘ()ホoヨ0
bbフ128ヘ(a)ホoヨ0
ccフ128ヘ()ホoヨ0
oÌ1Ö0

View File

@ -1,30 +1,30 @@
# format=tagmanager
Ball1Ì16Ö0
Ball3Ì16Ö0
D1Ì16Ö0
D2Ì16Ö0
D2AÌ16Ö0
Ball1Ì16Í()Ö0
Ball3Ì16Í()Ö0
D1Ì16Í(a, b)Ö0
D2Ì16Í(a, b)Ö0
D2AÌ16Í(a, b)Ö0
D3Ì16Ö0
D4Ì16Ö0
D5Ì16Ö0
DT1Ì16Ö0
DT2Ì16Ö0
DT2AÌ16Ö0
DT3Ì16Ö0
DT4Ì1Ö0
DT5Ì1Ö0
DT6Ì1Ö0
DT7Ì1Ö0
DT7AÌ1Ö0
DT8Ì1Ö0
DT9Ì1Ö0
PT1Ì16Ö0
PT2Ì1Ö0
PT3Ì1Ö0
addÌ16ÎmyObjectÖ0
addSalaryÌ128ÎPT3Ö0
addSalaryFunctionÌ1Ö0
addSalaryFunctionDT9Ì1Ö0
D5Ì16Í(myOperator)Ö0
DT1Ì16Í()Ö0
DT2Ì16Í(message)Ö0
DT2AÌ16Í(message)Ö0
DT3Ì16Í()Ö0
DT4Ì1Í(message, specifiedName)Ö0
DT5Ì1Í(color, specifiedName, owner, weight)Ö0
DT6Ì1Í(name, salary, mySupervisor)Ö0
DT7Ì1Í(name, salary)Ö0
DT7AÌ1Í(name, salary)Ö0
DT8Ì1Í(name, salary)Ö0
DT9Ì1Í(name, salary)Ö0
PT1Ì16Í()Ö0
PT2Ì1Í(name, color)Ö0
PT3Ì1Í(name, salary)Ö0
addÌ16Í(a,b)ÎmyObjectÖ0
addSalaryÌ128Í(addition)ÎPT3Ö0
addSalaryFunctionÌ1Í(addition)Ö0
addSalaryFunctionDT9Ì1Í(addition)Ö0
ball0Ì16384Ö0
ball1Ì16384Ö0
ball2Ì16384Ö0
@ -40,32 +40,32 @@ boss
boss1Ì16384Ö0
boss2Ì16384Ö0
boss3Ì16384Ö0
calculateÌ16ÎgetHalfOf7Ö0
calculateÌ16ÎgetHalfOf8Ö0
calculate8Ì16Ö0
getHalfOf7Ì16Ö0
getHalfOf8Ì16Ö0
getSalaryÌ128ÎDT7Ö0
getSalaryÌ128ÎDT7AÖ0
getSalaryÌ128ÎDT8Ö0
getSalaryÌ128ÎPT3Ö0
getSalaryFunctionDT9Ì16Ö0
calculateÌ16Í(number)ÎgetHalfOf7Ö0
calculateÌ16Í(number)ÎgetHalfOf8Ö0
calculate8Ì16Í(number)Ö0
getHalfOf7Ì16Í(num1, num2, num3)Ö0
getHalfOf8Ì16Í(num1, num2, num3)Ö0
getSalaryÌ128Í()ÎDT7Ö0
getSalaryÌ128Í()ÎDT7AÖ0
getSalaryÌ128Í()ÎDT8Ö0
getSalaryÌ128Í()ÎPT3Ö0
getSalaryFunctionDT9Ì16Í()Ö0
livesInÌ128ÎPT2Ö0
managerÌ16384Ö0
myFunction4Ì16Ö0
myFunction5Ì16Ö0
myFunction6Ì16Ö0
myFunction6AÌ16Ö0
myFunction6AEÌ16Ö0
myFunction6BÌ16Ö0
myFunction6EÌ16Ö0
myFunction4Ì16Í(message)Ö0
myFunction5Ì16Í()Ö0
myFunction6Ì16Í()Ö0
myFunction6AÌ16Í()Ö0
myFunction6AEÌ16Í()Ö0
myFunction6BÌ16Í()Ö0
myFunction6EÌ16Í()Ö0
myObjectÌ16384Ö0
my_global_var1Ì16384Ö0
object1Ì16384Ö0
object2Ì16384Ö0
object3Ì16384Ö0
priceÌ128ÎPT2Ö0
savedFunc6BÌ16Ö0
sayName4AÌ16Ö0
savedFunc6BÌ16Í()Ö0
sayName4AÌ16Í(name)Ö0
teamLeaderÌ16384Ö0
theAddÌ16Ö0
theAddÌ16Í(a, b)Ö0

View File

@ -1,6 +1,6 @@
# format=tagmanager
checkForUpdateÌ16Ö0
checkForUpdate2Ì16Ö0
getParentÌ16Ö0
ts_resortTableÌ16Ö0
ts_sort_currencyÌ16Ö0
checkForUpdateÌ16Í()Ö0
checkForUpdate2Ì16Í()Ö0
getParentÌ16Í(el, pTagName)Ö0
ts_resortTableÌ16Í(lnk)Ö0
ts_sort_currencyÌ16Í(a,b)Ö0

View File

@ -5,19 +5,19 @@ a1
a2フ16384ヨ0
bフ64ホd1ヨ0
bフ64ホd2ヨ0
b1Ì16Ö0
b1subÌ16Îb1Ö0
b2Ì16Ö0
b2subÌ16Îb2Ö0
b3Ì16Ö0
b3subÌ16Îb3Ö0
b1Ì16Í()Ö0
b1subÌ16Í()Îb1Ö0
b2Ì16Í()Ö0
b2subÌ16Í()Îb2Ö0
b3Ì16Í()Ö0
b3subÌ16Í()Îb3Ö0
c1フ16384ヨ0
c2フ16384ヨ0
d1フ1ヨ0
d2フ1ヨ0
e1Ì16Ö0
e1subÌ16Îe1Ö0
e2Ì16Ö0
e2subÌ16Îe2Ö0
e3Ì16Ö0
e3subÌ16Îe3Ö0
e1Ì16Í()Ö0
e1subÌ16Í()Îe1Ö0
e2Ì16Í()Ö0
e2subÌ16Í()Îe2Ö0
e3Ì16Í()Ö0
e3subÌ16Í()Îe3Ö0

View File

@ -1,6 +1,6 @@
# format=tagmanager
func1フ16ヨ0
func2フ16ヨ0
func1フ16ヘ()ヨ0
func2フ16ヘ()ヨ0
no_re1Ì16384Ö0
no_re2Ì16384Ö0
no_re3Ì16384Ö0

View File

@ -1,6 +1,6 @@
# format=tagmanager
D1Ì16Ö0
D2Ì16Ö0
D2AÌ16Ö0
D1Ì16Í(a, b)Ö0
D2Ì16Í(a, b)Ö0
D2AÌ16Í(a, b)Ö0
my_global_var1Ì16384Ö0
theAddÌ16Ö0
theAddÌ16Í(a, b)Ö0

View File

@ -1,2 +1,2 @@
# format=tagmanager
f<EFBFBD>16<EFBFBD>0
f<EFBFBD>16<EFBFBD>()<29>0

View File

@ -1,25 +1,25 @@
# format=tagmanager
DatabaseÌ1Ö0
ValidClassOneÌ1Îtestlib.extrasÖ0
ValidClassTwoÌ1Ö0
calculateÌ16ÎgetHalfOfÖ0
ValidClassOneÌ1Í(a,b)Îtestlib.extrasÖ0
ValidClassTwoÌ1Í()Ö0
calculateÌ16Í(number)ÎgetHalfOfÖ0
executeQueryStringÌ128ÎDatabaseÖ0
getHalfOfÌ16Ö0
getHalfOfÌ16Í(num1, num2, num3)Ö0
getTodaysDateÌ128ÎDatabaseÖ0
innerThreeÌ16ÎvalidFunctionThreeÖ0
invalidInnerFunctionÌ16Ö0
innerThreeÌ16Í(a,b)ÎvalidFunctionThreeÖ0
invalidInnerFunctionÌ16Í(a,b)Ö0
my_global_var1Ì16384Ö0
my_global_var2Ì16384Ö0
my_global_var3Ì16384Ö0
my_global_var4Ì16Ö0
my_global_var4Ì16Í()Ö0
my_global_var4Ì16384Ö0
validFunctionFiveÌ16ÎtestlibÖ0
validFunctionFourÌ16ÎextraÖ0
validFunctionOneÌ16Ö0
validFunctionSixÌ16Îtestlib.coreÖ0
validFunctionThreeÌ16Ö0
validFunctionTwoÌ16Ö0
validMethodFourÌ128ÎValidClassTwoÖ0
validMethodOneÌ128Îtestlib.extras.ValidClassOneÖ0
validMethodThreeÌ128ÎValidClassTwoÖ0
validMethodTwoÌ128Îtestlib.extras.ValidClassOneÖ0
validFunctionFiveÌ16Í(a,b)ÎtestlibÖ0
validFunctionFourÌ16Í(a,b)ÎextraÖ0
validFunctionOneÌ16Í(a,b)Ö0
validFunctionSixÌ16Í(a,b)Îtestlib.coreÖ0
validFunctionThreeÌ16Í(a,b)Ö0
validFunctionTwoÌ16Í(a,b)Ö0
validMethodFourÌ128Í()ÎValidClassTwoÖ0
validMethodOneÌ128Í(a,b)Îtestlib.extras.ValidClassOneÖ0
validMethodThreeÌ128Í()ÎValidClassTwoÖ0
validMethodTwoÌ128Í(a,b)Îtestlib.extras.ValidClassOneÖ0

View File

@ -1,6 +1,6 @@
# format=tagmanager
onInitÌ128Îapp.my_formÖ0
refreshFormÌ128Îapp.my_formÖ0
refreshSettlementsÌ128Îapp.my_formÖ0
setRefreshedÌ128Îapp.my_formÖ0
successfulRequestÌ128Îapp.my_formÖ0
onInitÌ128Í()Îapp.my_formÖ0
refreshFormÌ128Í(AUFNR)Îapp.my_formÖ0
refreshSettlementsÌ128Í(AUFNR)Îapp.my_formÖ0
setRefreshedÌ128Í(value)Îapp.my_formÖ0
successfulRequestÌ128Í(data)Îapp.my_formÖ0