spider-src 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/Gemfile +7 -0
  4. data/LICENSE.txt +74 -0
  5. data/README.md +37 -0
  6. data/Rakefile +25 -0
  7. data/lib/spider-src/support/spider/.eslintrc +17 -0
  8. data/lib/spider-src/support/spider/.npmignore +9 -0
  9. data/lib/spider-src/support/spider/.travis.yml +7 -0
  10. data/lib/spider-src/support/spider/.yo-rc.json +3 -0
  11. data/lib/spider-src/support/spider/CHANGELOG.md +64 -0
  12. data/lib/spider-src/support/spider/Gruntfile.js +97 -0
  13. data/lib/spider-src/support/spider/Gruntfile.spider +93 -0
  14. data/lib/spider-src/support/spider/LICENSE +201 -0
  15. data/lib/spider-src/support/spider/README.md +50 -0
  16. data/lib/spider-src/support/spider/cli.js +119 -0
  17. data/lib/spider-src/support/spider/lib/ast/CaseClause.js +179 -0
  18. data/lib/spider-src/support/spider/lib/ast/CatchClause.js +26 -0
  19. data/lib/spider-src/support/spider/lib/ast/ExportBatchSpecifier.js +19 -0
  20. data/lib/spider-src/support/spider/lib/ast/ExportSpecifier.js +33 -0
  21. data/lib/spider-src/support/spider/lib/ast/ImportDefaultSpecifier.js +23 -0
  22. data/lib/spider-src/support/spider/lib/ast/ImportNamespaceSpecifier.js +23 -0
  23. data/lib/spider-src/support/spider/lib/ast/ImportSpecifier.js +40 -0
  24. data/lib/spider-src/support/spider/lib/ast/Node.js +93 -0
  25. data/lib/spider-src/support/spider/lib/ast/Parameter.js +229 -0
  26. data/lib/spider-src/support/spider/lib/ast/Program.js +58 -0
  27. data/lib/spider-src/support/spider/lib/ast/Property.js +32 -0
  28. data/lib/spider-src/support/spider/lib/ast/Range.js +257 -0
  29. data/lib/spider-src/support/spider/lib/ast/VariableDeclarator.js +29 -0
  30. data/lib/spider-src/support/spider/lib/ast/expressions/ArrayExpression.js +41 -0
  31. data/lib/spider-src/support/spider/lib/ast/expressions/ArrayPattern.js +45 -0
  32. data/lib/spider-src/support/spider/lib/ast/expressions/AssignmentExpression.js +29 -0
  33. data/lib/spider-src/support/spider/lib/ast/expressions/BinaryExpression.js +104 -0
  34. data/lib/spider-src/support/spider/lib/ast/expressions/CallExpression.js +139 -0
  35. data/lib/spider-src/support/spider/lib/ast/expressions/ConditionalExpression.js +31 -0
  36. data/lib/spider-src/support/spider/lib/ast/expressions/CurryCallExpression.js +102 -0
  37. data/lib/spider-src/support/spider/lib/ast/expressions/ExistentialExpression.js +83 -0
  38. data/lib/spider-src/support/spider/lib/ast/expressions/ForInExpression.js +116 -0
  39. data/lib/spider-src/support/spider/lib/ast/expressions/FunctionExpression.js +157 -0
  40. data/lib/spider-src/support/spider/lib/ast/expressions/InExpression.js +99 -0
  41. data/lib/spider-src/support/spider/lib/ast/expressions/LogicalExpression.js +50 -0
  42. data/lib/spider-src/support/spider/lib/ast/expressions/MemberExpression.js +43 -0
  43. data/lib/spider-src/support/spider/lib/ast/expressions/NewExpression.js +46 -0
  44. data/lib/spider-src/support/spider/lib/ast/expressions/NullCheckCallExpression.js +132 -0
  45. data/lib/spider-src/support/spider/lib/ast/expressions/NullCoalescingExpression.js +114 -0
  46. data/lib/spider-src/support/spider/lib/ast/expressions/NullPropagatingExpression.js +161 -0
  47. data/lib/spider-src/support/spider/lib/ast/expressions/ObjectExpression.js +39 -0
  48. data/lib/spider-src/support/spider/lib/ast/expressions/ObjectPattern.js +49 -0
  49. data/lib/spider-src/support/spider/lib/ast/expressions/RangeMemberExpression.js +157 -0
  50. data/lib/spider-src/support/spider/lib/ast/expressions/SplatExpression.js +48 -0
  51. data/lib/spider-src/support/spider/lib/ast/expressions/SuperExpression.js +170 -0
  52. data/lib/spider-src/support/spider/lib/ast/expressions/ThisExpression.js +22 -0
  53. data/lib/spider-src/support/spider/lib/ast/expressions/UnaryExpression.js +147 -0
  54. data/lib/spider-src/support/spider/lib/ast/expressions/UpdateExpression.js +26 -0
  55. data/lib/spider-src/support/spider/lib/ast/literals/BooleanLiteral.js +24 -0
  56. data/lib/spider-src/support/spider/lib/ast/literals/Identifier.js +60 -0
  57. data/lib/spider-src/support/spider/lib/ast/literals/NullLiteral.js +24 -0
  58. data/lib/spider-src/support/spider/lib/ast/literals/NumberLiteral.js +24 -0
  59. data/lib/spider-src/support/spider/lib/ast/literals/RegularExpressionLiteral.js +25 -0
  60. data/lib/spider-src/support/spider/lib/ast/literals/StringLiteral.js +90 -0
  61. data/lib/spider-src/support/spider/lib/ast/literals/UndefinedLiteral.js +30 -0
  62. data/lib/spider-src/support/spider/lib/ast/statements/BlockStatement.js +47 -0
  63. data/lib/spider-src/support/spider/lib/ast/statements/BreakStatement.js +19 -0
  64. data/lib/spider-src/support/spider/lib/ast/statements/ContinueStatement.js +19 -0
  65. data/lib/spider-src/support/spider/lib/ast/statements/DebuggerStatement.js +19 -0
  66. data/lib/spider-src/support/spider/lib/ast/statements/DoWhileStatement.js +25 -0
  67. data/lib/spider-src/support/spider/lib/ast/statements/ExportDeclarationStatement.js +51 -0
  68. data/lib/spider-src/support/spider/lib/ast/statements/ExpressionStatement.js +22 -0
  69. data/lib/spider-src/support/spider/lib/ast/statements/FallthroughStatement.js +74 -0
  70. data/lib/spider-src/support/spider/lib/ast/statements/ForInStatement.js +79 -0
  71. data/lib/spider-src/support/spider/lib/ast/statements/ForOfStatement.js +98 -0
  72. data/lib/spider-src/support/spider/lib/ast/statements/ForStatement.js +43 -0
  73. data/lib/spider-src/support/spider/lib/ast/statements/FunctionDeclarationStatement.js +104 -0
  74. data/lib/spider-src/support/spider/lib/ast/statements/GoStatement.js +41 -0
  75. data/lib/spider-src/support/spider/lib/ast/statements/IfStatement.js +32 -0
  76. data/lib/spider-src/support/spider/lib/ast/statements/ImportDeclarationStatement.js +40 -0
  77. data/lib/spider-src/support/spider/lib/ast/statements/PushStatement.js +37 -0
  78. data/lib/spider-src/support/spider/lib/ast/statements/ReturnStatement.js +26 -0
  79. data/lib/spider-src/support/spider/lib/ast/statements/SwitchStatement.js +159 -0
  80. data/lib/spider-src/support/spider/lib/ast/statements/ThrowStatement.js +22 -0
  81. data/lib/spider-src/support/spider/lib/ast/statements/TryStatement.js +36 -0
  82. data/lib/spider-src/support/spider/lib/ast/statements/UntilStatement.js +31 -0
  83. data/lib/spider-src/support/spider/lib/ast/statements/UseStatement.js +49 -0
  84. data/lib/spider-src/support/spider/lib/ast/statements/VariableDeclarationStatement.js +36 -0
  85. data/lib/spider-src/support/spider/lib/ast/statements/WhileStatement.js +25 -0
  86. data/lib/spider-src/support/spider/lib/ast.js +16 -0
  87. data/lib/spider-src/support/spider/lib/parser.js +14878 -0
  88. data/lib/spider-src/support/spider/lib/spider.js +217 -0
  89. data/lib/spider-src/support/spider/package.json +61 -0
  90. data/lib/spider-src/support/spider/spider-script.js +6 -0
  91. data/lib/spider-src/support/spider/src/ast/CaseClause.spider +179 -0
  92. data/lib/spider-src/support/spider/src/ast/CatchClause.spider +30 -0
  93. data/lib/spider-src/support/spider/src/ast/ExportBatchSpecifier.spider +19 -0
  94. data/lib/spider-src/support/spider/src/ast/ExportSpecifier.spider +37 -0
  95. data/lib/spider-src/support/spider/src/ast/ImportDefaultSpecifier.spider +25 -0
  96. data/lib/spider-src/support/spider/src/ast/ImportNamespaceSpecifier.spider +25 -0
  97. data/lib/spider-src/support/spider/src/ast/ImportSpecifier.spider +44 -0
  98. data/lib/spider-src/support/spider/src/ast/Node.spider +104 -0
  99. data/lib/spider-src/support/spider/src/ast/Parameter.spider +233 -0
  100. data/lib/spider-src/support/spider/src/ast/Program.spider +109 -0
  101. data/lib/spider-src/support/spider/src/ast/Property.spider +36 -0
  102. data/lib/spider-src/support/spider/src/ast/Range.spider +291 -0
  103. data/lib/spider-src/support/spider/src/ast/VariableDeclarator.spider +33 -0
  104. data/lib/spider-src/support/spider/src/ast/expressions/ArrayExpression.spider +32 -0
  105. data/lib/spider-src/support/spider/src/ast/expressions/ArrayPattern.spider +37 -0
  106. data/lib/spider-src/support/spider/src/ast/expressions/AssignmentExpression.spider +34 -0
  107. data/lib/spider-src/support/spider/src/ast/expressions/BinaryExpression.spider +125 -0
  108. data/lib/spider-src/support/spider/src/ast/expressions/CallExpression.spider +149 -0
  109. data/lib/spider-src/support/spider/src/ast/expressions/ConditionalExpression.spider +34 -0
  110. data/lib/spider-src/support/spider/src/ast/expressions/CurryCallExpression.spider +109 -0
  111. data/lib/spider-src/support/spider/src/ast/expressions/ExistentialExpression.spider +102 -0
  112. data/lib/spider-src/support/spider/src/ast/expressions/ForInExpression.spider +140 -0
  113. data/lib/spider-src/support/spider/src/ast/expressions/FunctionExpression.spider +183 -0
  114. data/lib/spider-src/support/spider/src/ast/expressions/InExpression.spider +114 -0
  115. data/lib/spider-src/support/spider/src/ast/expressions/LogicalExpression.spider +62 -0
  116. data/lib/spider-src/support/spider/src/ast/expressions/MemberExpression.spider +57 -0
  117. data/lib/spider-src/support/spider/src/ast/expressions/NewExpression.spider +40 -0
  118. data/lib/spider-src/support/spider/src/ast/expressions/NullCheckCallExpression.spider +151 -0
  119. data/lib/spider-src/support/spider/src/ast/expressions/NullCoalescingExpression.spider +151 -0
  120. data/lib/spider-src/support/spider/src/ast/expressions/NullPropagatingExpression.spider +190 -0
  121. data/lib/spider-src/support/spider/src/ast/expressions/ObjectExpression.spider +30 -0
  122. data/lib/spider-src/support/spider/src/ast/expressions/ObjectPattern.spider +42 -0
  123. data/lib/spider-src/support/spider/src/ast/expressions/RangeMemberExpression.spider +179 -0
  124. data/lib/spider-src/support/spider/src/ast/expressions/SplatExpression.spider +49 -0
  125. data/lib/spider-src/support/spider/src/ast/expressions/SuperExpression.spider +235 -0
  126. data/lib/spider-src/support/spider/src/ast/expressions/ThisExpression.spider +21 -0
  127. data/lib/spider-src/support/spider/src/ast/expressions/UnaryExpression.spider +158 -0
  128. data/lib/spider-src/support/spider/src/ast/expressions/UpdateExpression.spider +28 -0
  129. data/lib/spider-src/support/spider/src/ast/literals/BooleanLiteral.spider +23 -0
  130. data/lib/spider-src/support/spider/src/ast/literals/Identifier.spider +68 -0
  131. data/lib/spider-src/support/spider/src/ast/literals/NullLiteral.spider +23 -0
  132. data/lib/spider-src/support/spider/src/ast/literals/NumberLiteral.spider +23 -0
  133. data/lib/spider-src/support/spider/src/ast/literals/RegularExpressionLiteral.spider +24 -0
  134. data/lib/spider-src/support/spider/src/ast/literals/StringLiteral.spider +91 -0
  135. data/lib/spider-src/support/spider/src/ast/literals/UndefinedLiteral.spider +30 -0
  136. data/lib/spider-src/support/spider/src/ast/statements/BlockStatement.spider +45 -0
  137. data/lib/spider-src/support/spider/src/ast/statements/BreakStatement.spider +19 -0
  138. data/lib/spider-src/support/spider/src/ast/statements/ContinueStatement.spider +19 -0
  139. data/lib/spider-src/support/spider/src/ast/statements/DebuggerStatement.spider +19 -0
  140. data/lib/spider-src/support/spider/src/ast/statements/DoWhileStatement.spider +28 -0
  141. data/lib/spider-src/support/spider/src/ast/statements/ExportDeclarationStatement.spider +46 -0
  142. data/lib/spider-src/support/spider/src/ast/statements/ExpressionStatement.spider +22 -0
  143. data/lib/spider-src/support/spider/src/ast/statements/FallthroughStatement.spider +85 -0
  144. data/lib/spider-src/support/spider/src/ast/statements/ForInStatement.spider +92 -0
  145. data/lib/spider-src/support/spider/src/ast/statements/ForOfStatement.spider +117 -0
  146. data/lib/spider-src/support/spider/src/ast/statements/ForStatement.spider +51 -0
  147. data/lib/spider-src/support/spider/src/ast/statements/FunctionDeclarationStatement.spider +115 -0
  148. data/lib/spider-src/support/spider/src/ast/statements/GoStatement.spider +44 -0
  149. data/lib/spider-src/support/spider/src/ast/statements/IfStatement.spider +38 -0
  150. data/lib/spider-src/support/spider/src/ast/statements/ImportDeclarationStatement.spider +33 -0
  151. data/lib/spider-src/support/spider/src/ast/statements/PushStatement.spider +40 -0
  152. data/lib/spider-src/support/spider/src/ast/statements/ReturnStatement.spider +28 -0
  153. data/lib/spider-src/support/spider/src/ast/statements/SwitchStatement.spider +161 -0
  154. data/lib/spider-src/support/spider/src/ast/statements/ThrowStatement.spider +23 -0
  155. data/lib/spider-src/support/spider/src/ast/statements/TryStatement.spider +42 -0
  156. data/lib/spider-src/support/spider/src/ast/statements/UntilStatement.spider +36 -0
  157. data/lib/spider-src/support/spider/src/ast/statements/UseStatement.spider +62 -0
  158. data/lib/spider-src/support/spider/src/ast/statements/VariableDeclarationStatement.spider +34 -0
  159. data/lib/spider-src/support/spider/src/ast/statements/WhileStatement.spider +28 -0
  160. data/lib/spider-src/support/spider/src/ast.spider +80 -0
  161. data/lib/spider-src/support/spider/src/spider.pegjs +1434 -0
  162. data/lib/spider-src/support/spider/src/spider.spider +276 -0
  163. data/lib/spider-src/support/spider/test/spider_test.js +1787 -0
  164. data/lib/spider-src/version.rb +5 -0
  165. data/lib/spider-src.rb +37 -0
  166. data/spider-src.gemspec +24 -0
  167. data/test/test_spider_src.rb +33 -0
  168. metadata +225 -0
@@ -0,0 +1,36 @@
1
+ use :node;
2
+
3
+ var Node = module.require('../Node').Node;
4
+
5
+ fn UntilStatement(test, body)
6
+ extends Node {
7
+
8
+ this.type = 'UntilStatement';
9
+
10
+ this.test = test;
11
+ this.test.parent = this;
12
+
13
+ this.body = body;
14
+ this.body.parent = this;
15
+ }
16
+
17
+ UntilStatement.prototype.codegen = () -> {
18
+ if !super.codegen() {
19
+ return;
20
+ }
21
+
22
+ this.type = 'WhileStatement';
23
+
24
+ this.test = {
25
+ "type": "UnaryExpression",
26
+ "operator": "!",
27
+ "argument": this.test.codegen(),
28
+ "prefix": true
29
+ };
30
+
31
+ this.body = this.body.blockWrap().codegen();
32
+
33
+ return this;
34
+ };
35
+
36
+ exports.UntilStatement = UntilStatement;
@@ -0,0 +1,62 @@
1
+ use :node;
2
+
3
+ var Node = module.require('../Node').Node;
4
+
5
+ fn UseStatement(identifiers)
6
+ extends Node {
7
+
8
+ this.type = 'UseStatement';
9
+
10
+ this.identifiers = identifiers;
11
+
12
+ for id in this.identifiers {
13
+ id.parent = this;
14
+ }
15
+ }
16
+
17
+ UseStatement.predefinedCollections = {
18
+ 'browser': [
19
+ 'document',
20
+ 'window',
21
+ 'screen',
22
+ 'location',
23
+ 'navigator',
24
+ 'alert',
25
+ 'console',
26
+ 'setTimeout'
27
+ ],
28
+
29
+ 'node': [
30
+ 'require',
31
+ 'exports',
32
+ 'module',
33
+ 'global',
34
+ 'console',
35
+ 'process',
36
+ 'setTimeout',
37
+ '__dirname',
38
+ '__filename',
39
+ ]
40
+ };
41
+
42
+ UseStatement.prototype.codegen = () -> {
43
+ if !super.codegen() {
44
+ return;
45
+ }
46
+
47
+ var context = this.getContext().node;
48
+
49
+ for id in this.identifiers {
50
+ if (id.predefinedCollection) {
51
+ for p in exports.UseStatement.predefinedCollections[id.name] {
52
+ context.defineIdentifier({ name: p });
53
+ }
54
+ } else {
55
+ context.defineIdentifier(id);
56
+ }
57
+ }
58
+
59
+ return null;
60
+ };
61
+
62
+ exports.UseStatement = UseStatement;
@@ -0,0 +1,34 @@
1
+ use :node;
2
+
3
+ var Node = module.require('../Node').Node;
4
+
5
+ fn VariableDeclarationStatement(declarations)
6
+ extends Node {
7
+
8
+ this.type = 'VariableDeclaration';
9
+ this.declarations = declarations;
10
+ this.kind = 'let';
11
+
12
+ for decl in declarations {
13
+ decl.parent = this;
14
+ }
15
+ }
16
+
17
+ VariableDeclarationStatement.prototype.codegen = () -> {
18
+ if !super.codegen() {
19
+ return;
20
+ }
21
+
22
+ var i = 0;
23
+ while (i < this.declarations.length) {
24
+ var statement = this.declarations[i].codegen();
25
+ if statement? {
26
+ this.declarations[this.declarations.indexOf(statement)] = statement;
27
+ }
28
+ i++;
29
+ }
30
+
31
+ return this;
32
+ };
33
+
34
+ exports.VariableDeclarationStatement = VariableDeclarationStatement;
@@ -0,0 +1,28 @@
1
+ use :node;
2
+
3
+ var Node = module.require('../Node').Node;
4
+
5
+ fn WhileStatement(test, body)
6
+ extends Node {
7
+
8
+ this.type = 'WhileStatement';
9
+
10
+ this.test = test;
11
+ this.test.parent = this;
12
+
13
+ this.body = body;
14
+ this.body.parent = this;
15
+ }
16
+
17
+ WhileStatement.prototype.codegen = () -> {
18
+ if !super.codegen() {
19
+ return;
20
+ }
21
+
22
+ this.test = this.test.codegen();
23
+ this.body = this.body.blockWrap().codegen();
24
+
25
+ return this;
26
+ };
27
+
28
+ exports.WhileStatement = WhileStatement;
@@ -0,0 +1,80 @@
1
+ use :node;
2
+
3
+ var nodes = [
4
+ 'Node',
5
+ 'Program',
6
+ 'VariableDeclarator',
7
+ 'Property',
8
+ 'Range',
9
+ 'Parameter',
10
+ 'CatchClause',
11
+ 'CaseClause',
12
+ 'ImportSpecifier',
13
+ 'ImportNamespaceSpecifier',
14
+ 'ImportDefaultSpecifier',
15
+ 'ExportSpecifier',
16
+ 'ExportBatchSpecifier',
17
+ 'expressions/AssignmentExpression',
18
+ 'expressions/BinaryExpression',
19
+ 'expressions/CallExpression',
20
+ 'expressions/ExistentialExpression',
21
+ 'expressions/LogicalExpression',
22
+ 'expressions/MemberExpression',
23
+ 'expressions/NullCheckCallExpression',
24
+ 'expressions/NullCoalescingExpression',
25
+ 'expressions/NullPropagatingExpression',
26
+ 'expressions/UnaryExpression',
27
+ 'expressions/ObjectExpression',
28
+ 'expressions/ArrayExpression',
29
+ 'expressions/ObjectPattern',
30
+ 'expressions/ArrayPattern',
31
+ 'expressions/UpdateExpression',
32
+ 'expressions/FunctionExpression',
33
+ 'expressions/RangeMemberExpression',
34
+ 'expressions/NewExpression',
35
+ 'expressions/ThisExpression',
36
+ 'expressions/SuperExpression',
37
+ 'expressions/SplatExpression',
38
+ 'expressions/ConditionalExpression',
39
+ 'expressions/InExpression',
40
+ 'expressions/ForInExpression',
41
+ 'expressions/CurryCallExpression',
42
+ 'statements/BlockStatement',
43
+ 'statements/ExpressionStatement',
44
+ 'statements/IfStatement',
45
+ 'statements/ForStatement',
46
+ 'statements/ForInStatement',
47
+ 'statements/ForOfStatement',
48
+ 'statements/WhileStatement',
49
+ 'statements/UntilStatement',
50
+ 'statements/VariableDeclarationStatement',
51
+ 'statements/FunctionDeclarationStatement',
52
+ 'statements/ReturnStatement',
53
+ 'statements/ThrowStatement',
54
+ 'statements/BreakStatement',
55
+ 'statements/ContinueStatement',
56
+ 'statements/DebuggerStatement',
57
+ 'statements/UseStatement',
58
+ 'statements/TryStatement',
59
+ 'statements/SwitchStatement',
60
+ 'statements/FallthroughStatement',
61
+ 'statements/ImportDeclarationStatement',
62
+ 'statements/ExportDeclarationStatement',
63
+ 'statements/DoWhileStatement',
64
+ 'statements/PushStatement',
65
+ 'statements/GoStatement',
66
+ 'literals/BooleanLiteral',
67
+ 'literals/NumberLiteral',
68
+ 'literals/StringLiteral',
69
+ 'literals/NullLiteral',
70
+ 'literals/UndefinedLiteral',
71
+ 'literals/Identifier',
72
+ 'literals/RegularExpressionLiteral'
73
+ ];
74
+
75
+ module.exports = {};
76
+
77
+ for node in nodes {
78
+ var name = node.substring(node.lastIndexOf('/') + 1);
79
+ module.exports[name] = module.require('./ast/' + node)[name];
80
+ }