annotate jsrequires.py @ 4:30c1f55eff96

fixed greedy regexp bug
author Atul Varma <avarma@mozilla.com>
date Thu, 22 Apr 2010 17:31:32 -0700
parents ce894f57b30c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
1 from jsscan import Tokenizer
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
2
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
3 if __name__ == '__main__':
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
4 import os
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
5 import sys
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
6
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
7 text = open(os.path.expanduser(sys.argv[1]), 'r').read()
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
8
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
9 t = Tokenizer(text)
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
10 try:
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
11 tokens = t.tokenize(ignore='whitespace')
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
12 for token in tokens:
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
13 if token[:2] == ('name', 'require'):
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
14 lparen = tokens.next()[:2]
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
15 modname = tokens.next()
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
16 rparen = tokens.next()[:2]
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
17 if (lparen == ('literal', '(') and
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
18 rparen == ('literal', ')') and
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
19 modname[0] == 'string'):
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
20 print "%s required at line %d, character %d" % (
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
21 modname[1],
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
22 token[2][0],
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
23 token[2][1]
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
24 )
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
25 else:
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
26 print ("unusual require() found at "
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
27 "line %d, character %d" % (token[2][0],
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
28 token[2][1]))
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
29
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
30 except TokenizationError, e:
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
31 print e
ce894f57b30c added jsrequires
Atul Varma <avarma@mozilla.com>
parents:
diff changeset
32 sys.exit(1)