jqueryplugingen 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. data/History.txt +7 -0
  2. data/Manifest.txt +160 -1
  3. data/README.rdoc +1 -3
  4. data/bundles/JavaScript jQuery.tmbundle/Commands/Documentation for Word : Selection.tmCommand +68 -0
  5. data/bundles/JavaScript jQuery.tmbundle/Snippets/$ (Select DOM Element).tmSnippet +16 -0
  6. data/bundles/JavaScript jQuery.tmbundle/Snippets/$(this).tmSnippet +16 -0
  7. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_ajax(hash).tmSnippet +28 -0
  8. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_ajaxError.tmSnippet +19 -0
  9. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_ajaxSend.tmSnippet +19 -0
  10. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_ajaxSetup.tmSnippet +28 -0
  11. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_ajaxSuccess.tmSnippet +18 -0
  12. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_get.tmSnippet +19 -0
  13. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_getIfModified.tmSnippet +19 -0
  14. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_getJSON.tmSnippet +21 -0
  15. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_getScript.tmSnippet +19 -0
  16. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_post.tmSnippet +23 -0
  17. data/bundles/JavaScript jQuery.tmbundle/Snippets/$_trim.tmSnippet +16 -0
  18. data/bundles/JavaScript jQuery.tmbundle/Snippets/:checked.tmSnippet +18 -0
  19. data/bundles/JavaScript jQuery.tmbundle/Snippets/:contains('test').tmSnippet +18 -0
  20. data/bundles/JavaScript jQuery.tmbundle/Snippets/:disabled.tmSnippet +18 -0
  21. data/bundles/JavaScript jQuery.tmbundle/Snippets/:empty.tmSnippet +18 -0
  22. data/bundles/JavaScript jQuery.tmbundle/Snippets/:enabled.tmSnippet +18 -0
  23. data/bundles/JavaScript jQuery.tmbundle/Snippets/:eq(n).tmSnippet +18 -0
  24. data/bundles/JavaScript jQuery.tmbundle/Snippets/:even.tmSnippet +18 -0
  25. data/bundles/JavaScript jQuery.tmbundle/Snippets/:first-child.tmSnippet +18 -0
  26. data/bundles/JavaScript jQuery.tmbundle/Snippets/:first-of-type.tmSnippet +18 -0
  27. data/bundles/JavaScript jQuery.tmbundle/Snippets/:first.tmSnippet +18 -0
  28. data/bundles/JavaScript jQuery.tmbundle/Snippets/:gt(n).tmSnippet +18 -0
  29. data/bundles/JavaScript jQuery.tmbundle/Snippets/:hidden.tmSnippet +19 -0
  30. data/bundles/JavaScript jQuery.tmbundle/Snippets/:last-child.tmSnippet +18 -0
  31. data/bundles/JavaScript jQuery.tmbundle/Snippets/:last-of-type.tmSnippet +18 -0
  32. data/bundles/JavaScript jQuery.tmbundle/Snippets/:last.tmSnippet +18 -0
  33. data/bundles/JavaScript jQuery.tmbundle/Snippets/:lt(n).tmSnippet +18 -0
  34. data/bundles/JavaScript jQuery.tmbundle/Snippets/:not(s).tmSnippet +18 -0
  35. data/bundles/JavaScript jQuery.tmbundle/Snippets/:nth-child(n).tmSnippet +18 -0
  36. data/bundles/JavaScript jQuery.tmbundle/Snippets/:nth-last-child(n).tmSnippet +18 -0
  37. data/bundles/JavaScript jQuery.tmbundle/Snippets/:nth-of-type(n).tmSnippet +18 -0
  38. data/bundles/JavaScript jQuery.tmbundle/Snippets/:odd.tmSnippet +18 -0
  39. data/bundles/JavaScript jQuery.tmbundle/Snippets/:only-child.tmSnippet +18 -0
  40. data/bundles/JavaScript jQuery.tmbundle/Snippets/:only-of-type.tmSnippet +18 -0
  41. data/bundles/JavaScript jQuery.tmbundle/Snippets/:parent.tmSnippet +19 -0
  42. data/bundles/JavaScript jQuery.tmbundle/Snippets/:root.tmSnippet +18 -0
  43. data/bundles/JavaScript jQuery.tmbundle/Snippets/:visible.tmSnippet +19 -0
  44. data/bundles/JavaScript jQuery.tmbundle/Snippets/add.tmSnippet +16 -0
  45. data/bundles/JavaScript jQuery.tmbundle/Snippets/addClass.tmSnippet +16 -0
  46. data/bundles/JavaScript jQuery.tmbundle/Snippets/after.tmSnippet +16 -0
  47. data/bundles/JavaScript jQuery.tmbundle/Snippets/ajaxStart.tmSnippet +19 -0
  48. data/bundles/JavaScript jQuery.tmbundle/Snippets/ajaxStop.tmSnippet +19 -0
  49. data/bundles/JavaScript jQuery.tmbundle/Snippets/animate.tmSnippet +16 -0
  50. data/bundles/JavaScript jQuery.tmbundle/Snippets/append.tmSnippet +16 -0
  51. data/bundles/JavaScript jQuery.tmbundle/Snippets/appendTo.tmSnippet +16 -0
  52. data/bundles/JavaScript jQuery.tmbundle/Snippets/attr(hash).tmSnippet +16 -0
  53. data/bundles/JavaScript jQuery.tmbundle/Snippets/attr.tmSnippet +16 -0
  54. data/bundles/JavaScript jQuery.tmbundle/Snippets/before.tmSnippet +16 -0
  55. data/bundles/JavaScript jQuery.tmbundle/Snippets/bind.tmSnippet +18 -0
  56. data/bundles/JavaScript jQuery.tmbundle/Snippets/blur.tmSnippet +18 -0
  57. data/bundles/JavaScript jQuery.tmbundle/Snippets/change.tmSnippet +18 -0
  58. data/bundles/JavaScript jQuery.tmbundle/Snippets/children.tmSnippet +16 -0
  59. data/bundles/JavaScript jQuery.tmbundle/Snippets/click.tmSnippet +18 -0
  60. data/bundles/JavaScript jQuery.tmbundle/Snippets/clone.tmSnippet +16 -0
  61. data/bundles/JavaScript jQuery.tmbundle/Snippets/contains.tmSnippet +16 -0
  62. data/bundles/JavaScript jQuery.tmbundle/Snippets/css(hash).tmSnippet +16 -0
  63. data/bundles/JavaScript jQuery.tmbundle/Snippets/css.tmSnippet +16 -0
  64. data/bundles/JavaScript jQuery.tmbundle/Snippets/dblclick.tmSnippet +18 -0
  65. data/bundles/JavaScript jQuery.tmbundle/Snippets/each.tmSnippet +18 -0
  66. data/bundles/JavaScript jQuery.tmbundle/Snippets/end.tmSnippet +16 -0
  67. data/bundles/JavaScript jQuery.tmbundle/Snippets/error.tmSnippet +18 -0
  68. data/bundles/JavaScript jQuery.tmbundle/Snippets/fadeIn - with callback.tmSnippet +19 -0
  69. data/bundles/JavaScript jQuery.tmbundle/Snippets/fadeIn.tmSnippet +16 -0
  70. data/bundles/JavaScript jQuery.tmbundle/Snippets/fadeOut - with callback.tmSnippet +19 -0
  71. data/bundles/JavaScript jQuery.tmbundle/Snippets/fadeOut.tmSnippet +16 -0
  72. data/bundles/JavaScript jQuery.tmbundle/Snippets/fadeTo - with callback.tmSnippet +19 -0
  73. data/bundles/JavaScript jQuery.tmbundle/Snippets/fadeTo.tmSnippet +16 -0
  74. data/bundles/JavaScript jQuery.tmbundle/Snippets/filter.tmSnippet +16 -0
  75. data/bundles/JavaScript jQuery.tmbundle/Snippets/find.tmSnippet +16 -0
  76. data/bundles/JavaScript jQuery.tmbundle/Snippets/focus.tmSnippet +18 -0
  77. data/bundles/JavaScript jQuery.tmbundle/Snippets/get.tmSnippet +16 -0
  78. data/bundles/JavaScript jQuery.tmbundle/Snippets/height.tmSnippet +16 -0
  79. data/bundles/JavaScript jQuery.tmbundle/Snippets/hide - with callback.tmSnippet +19 -0
  80. data/bundles/JavaScript jQuery.tmbundle/Snippets/hide.tmSnippet +16 -0
  81. data/bundles/JavaScript jQuery.tmbundle/Snippets/hover.tmSnippet +20 -0
  82. data/bundles/JavaScript jQuery.tmbundle/Snippets/html.tmSnippet +16 -0
  83. data/bundles/JavaScript jQuery.tmbundle/Snippets/insertAfter.tmSnippet +16 -0
  84. data/bundles/JavaScript jQuery.tmbundle/Snippets/insertBefore.tmSnippet +16 -0
  85. data/bundles/JavaScript jQuery.tmbundle/Snippets/is.tmSnippet +16 -0
  86. data/bundles/JavaScript jQuery.tmbundle/Snippets/load (AHAH).tmSnippet +21 -0
  87. data/bundles/JavaScript jQuery.tmbundle/Snippets/load.tmSnippet +18 -0
  88. data/bundles/JavaScript jQuery.tmbundle/Snippets/loadIfModified.tmSnippet +21 -0
  89. data/bundles/JavaScript jQuery.tmbundle/Snippets/mousedown.tmSnippet +18 -0
  90. data/bundles/JavaScript jQuery.tmbundle/Snippets/mousemove.tmSnippet +18 -0
  91. data/bundles/JavaScript jQuery.tmbundle/Snippets/mouseout.tmSnippet +18 -0
  92. data/bundles/JavaScript jQuery.tmbundle/Snippets/mouseover.tmSnippet +18 -0
  93. data/bundles/JavaScript jQuery.tmbundle/Snippets/mouseup.tmSnippet +18 -0
  94. data/bundles/JavaScript jQuery.tmbundle/Snippets/next.tmSnippet +16 -0
  95. data/bundles/JavaScript jQuery.tmbundle/Snippets/not.tmSnippet +16 -0
  96. data/bundles/JavaScript jQuery.tmbundle/Snippets/one.tmSnippet +18 -0
  97. data/bundles/JavaScript jQuery.tmbundle/Snippets/parent.tmSnippet +16 -0
  98. data/bundles/JavaScript jQuery.tmbundle/Snippets/parents.tmSnippet +16 -0
  99. data/bundles/JavaScript jQuery.tmbundle/Snippets/prepend.tmSnippet +16 -0
  100. data/bundles/JavaScript jQuery.tmbundle/Snippets/prependTo.tmSnippet +16 -0
  101. data/bundles/JavaScript jQuery.tmbundle/Snippets/prev.tmSnippet +16 -0
  102. data/bundles/JavaScript jQuery.tmbundle/Snippets/ready.tmSnippet +19 -0
  103. data/bundles/JavaScript jQuery.tmbundle/Snippets/remove.tmSnippet +16 -0
  104. data/bundles/JavaScript jQuery.tmbundle/Snippets/removeAttr.tmSnippet +16 -0
  105. data/bundles/JavaScript jQuery.tmbundle/Snippets/removeClass.tmSnippet +16 -0
  106. data/bundles/JavaScript jQuery.tmbundle/Snippets/reset.tmSnippet +18 -0
  107. data/bundles/JavaScript jQuery.tmbundle/Snippets/resize.tmSnippet +18 -0
  108. data/bundles/JavaScript jQuery.tmbundle/Snippets/scroll.tmSnippet +18 -0
  109. data/bundles/JavaScript jQuery.tmbundle/Snippets/select.tmSnippet +18 -0
  110. data/bundles/JavaScript jQuery.tmbundle/Snippets/show - with callback.tmSnippet +19 -0
  111. data/bundles/JavaScript jQuery.tmbundle/Snippets/show.tmSnippet +16 -0
  112. data/bundles/JavaScript jQuery.tmbundle/Snippets/siblings.tmSnippet +16 -0
  113. data/bundles/JavaScript jQuery.tmbundle/Snippets/size.tmSnippet +16 -0
  114. data/bundles/JavaScript jQuery.tmbundle/Snippets/slideDown - with callback.tmSnippet +19 -0
  115. data/bundles/JavaScript jQuery.tmbundle/Snippets/slideDown.tmSnippet +16 -0
  116. data/bundles/JavaScript jQuery.tmbundle/Snippets/slideToggle.tmSnippet +16 -0
  117. data/bundles/JavaScript jQuery.tmbundle/Snippets/slideUp - with callback.tmSnippet +19 -0
  118. data/bundles/JavaScript jQuery.tmbundle/Snippets/slideUp.tmSnippet +16 -0
  119. data/bundles/JavaScript jQuery.tmbundle/Snippets/submit.tmSnippet +18 -0
  120. data/bundles/JavaScript jQuery.tmbundle/Snippets/text.tmSnippet +16 -0
  121. data/bundles/JavaScript jQuery.tmbundle/Snippets/toggle (show:hide).tmSnippet +16 -0
  122. data/bundles/JavaScript jQuery.tmbundle/Snippets/toggle.tmSnippet +21 -0
  123. data/bundles/JavaScript jQuery.tmbundle/Snippets/toggleClass.tmSnippet +16 -0
  124. data/bundles/JavaScript jQuery.tmbundle/Snippets/trigger.tmSnippet +16 -0
  125. data/bundles/JavaScript jQuery.tmbundle/Snippets/unbind.tmSnippet +16 -0
  126. data/bundles/JavaScript jQuery.tmbundle/Snippets/val.tmSnippet +16 -0
  127. data/bundles/JavaScript jQuery.tmbundle/Snippets/width.tmSnippet +16 -0
  128. data/bundles/JavaScript jQuery.tmbundle/Snippets/wrap.tmSnippet +16 -0
  129. data/bundles/JavaScript jQuery.tmbundle/Syntaxes/jQuery (JavaScript).tmLanguage +440 -0
  130. data/bundles/JavaScript jQuery.tmbundle/info.plist +387 -0
  131. data/bundles/JavaScript.tmbundle/Commands/Copy as Bookmarklet to Clipboard.tmCommand +54 -0
  132. data/bundles/JavaScript.tmbundle/Commands/Documentation for Word.plist +30 -0
  133. data/bundles/JavaScript.tmbundle/Commands/New Function.tmCommand +28 -0
  134. data/bundles/JavaScript.tmbundle/Commands/New Method.tmCommand +28 -0
  135. data/bundles/JavaScript.tmbundle/Commands/Reformat Document : Selection.tmCommand +50 -0
  136. data/bundles/JavaScript.tmbundle/Preferences/Comments.tmPreferences +36 -0
  137. data/bundles/JavaScript.tmbundle/Preferences/JavaScript Indent.tmPreferences +19 -0
  138. data/bundles/JavaScript.tmbundle/Preferences/Symbol List Banned.tmPreferences +17 -0
  139. data/bundles/JavaScript.tmbundle/Preferences/Symbol List Class.tmPreferences +21 -0
  140. data/bundles/JavaScript.tmbundle/Preferences/Symbol List Instance.tmPreferences +21 -0
  141. data/bundles/JavaScript.tmbundle/Preferences/Symbol List Sub 1.tmPreferences +21 -0
  142. data/bundles/JavaScript.tmbundle/Preferences/Symbol List Sub 2.tmPreferences +21 -0
  143. data/bundles/JavaScript.tmbundle/Snippets/Get Elements.tmSnippet +16 -0
  144. data/bundles/JavaScript.tmbundle/Snippets/Object Method String.tmSnippet +18 -0
  145. data/bundles/JavaScript.tmbundle/Snippets/Object Method.tmSnippet +18 -0
  146. data/bundles/JavaScript.tmbundle/Snippets/Object Value JS.tmSnippet +16 -0
  147. data/bundles/JavaScript.tmbundle/Snippets/Object key /342/200/224 key: /"value/".tmSnippet" +18 -0
  148. data/bundles/JavaScript.tmbundle/Snippets/Prototype (proto).plist +19 -0
  149. data/bundles/JavaScript.tmbundle/Snippets/for (/342/200/246) {/342/200/246} (faster).tmSnippet" +18 -0
  150. data/bundles/JavaScript.tmbundle/Snippets/for (/342/200/246) {/342/200/246}.tmSnippet" +18 -0
  151. data/bundles/JavaScript.tmbundle/Snippets/function (fun).plist +18 -0
  152. data/bundles/JavaScript.tmbundle/Snippets/function.tmSnippet +16 -0
  153. data/bundles/JavaScript.tmbundle/Snippets/if ___ else.tmSnippet +16 -0
  154. data/bundles/JavaScript.tmbundle/Snippets/if.tmSnippet +16 -0
  155. data/bundles/JavaScript.tmbundle/Snippets/setTimeout function.tmSnippet +16 -0
  156. data/bundles/JavaScript.tmbundle/Support/dev_guru_index.gz +0 -0
  157. data/bundles/JavaScript.tmbundle/Support/lib/beautify.php +557 -0
  158. data/bundles/JavaScript.tmbundle/Syntaxes/JavaScript.plist +712 -0
  159. data/bundles/JavaScript.tmbundle/info.plist +136 -0
  160. data/jQuery-Plugin-Generator.tmproj +190 -2
  161. data/lib/jquery_plugin_gen.rb +3 -5
  162. data/lib/jquery_plugin_gen/quick_template.rb +2 -2
  163. data/lib/jquery_plugin_gen/support/bundles.rake +28 -0
  164. data/lib/jquery_plugin_gen/support/jquery.rake +143 -0
  165. data/lib/jquery_plugin_gen/tasks.rb +5 -0
  166. data/lib/templates/Rakefile.erb +8 -2
  167. data/spec/data/templates/Rakefile +8 -2
  168. metadata +162 -3
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>content</key>
6
+ <string>function($1) {${0:$TM_SELECTED_TEXT}};</string>
7
+ <key>name</key>
8
+ <string>Anonymous Function</string>
9
+ <key>scope</key>
10
+ <string>source.js</string>
11
+ <key>tabTrigger</key>
12
+ <string>f</string>
13
+ <key>uuid</key>
14
+ <string>4C6EDB43-3E2E-411B-A016-13C135C59833</string>
15
+ </dict>
16
+ </plist>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>content</key>
6
+ <string>if (${1:true}) {${0:$TM_SELECTED_TEXT}} else{};</string>
7
+ <key>name</key>
8
+ <string>if … else</string>
9
+ <key>scope</key>
10
+ <string>source.js</string>
11
+ <key>tabTrigger</key>
12
+ <string>ife</string>
13
+ <key>uuid</key>
14
+ <string>31964029-9D71-4ADC-8213-DFE5C4E222B3</string>
15
+ </dict>
16
+ </plist>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>content</key>
6
+ <string>if (${1:true}) {${0:$TM_SELECTED_TEXT}};</string>
7
+ <key>name</key>
8
+ <string>if</string>
9
+ <key>scope</key>
10
+ <string>source.js</string>
11
+ <key>tabTrigger</key>
12
+ <string>if</string>
13
+ <key>uuid</key>
14
+ <string>F19F3732-39A7-48EC-A72B-A8F477A01795</string>
15
+ </dict>
16
+ </plist>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>content</key>
6
+ <string>setTimeout(function() {$0}${2:}, ${1:10});</string>
7
+ <key>name</key>
8
+ <string>setTimeout function</string>
9
+ <key>scope</key>
10
+ <string>source.js</string>
11
+ <key>tabTrigger</key>
12
+ <string>timeout</string>
13
+ <key>uuid</key>
14
+ <string>009A3E6C-FE3F-4A18-8759-2DC31F17BBE2</string>
15
+ </dict>
16
+ </plist>
@@ -0,0 +1,557 @@
1
+ <?php // $Id: beautify.php 41 2008-02-19 04:55:10Z einars $
2
+
3
+ /*
4
+
5
+ JS Beautifier
6
+
7
+ (c) 2007, Einars "elfz" Lielmanis
8
+
9
+ http://elfz.laacz.lv/beautify/
10
+
11
+
12
+ You are free to use this in any way you want, in case you find this useful or working for you.
13
+
14
+ Usage:
15
+ require('beautify.php');
16
+ echo js_beautify($js_source_text);
17
+
18
+ */
19
+
20
+ error_reporting(E_ALL);
21
+ ini_set('display_errors', 'on');
22
+
23
+
24
+ $n = 1;
25
+ define('IN_EXPR', ++$n);
26
+ define('IN_BLOCK', ++$n);
27
+
28
+
29
+ define('TK_UNKNOWN', ++$n);
30
+ define('TK_WORD', ++$n);
31
+ define('TK_START_EXPR', ++$n);
32
+ define('TK_END_EXPR', ++$n);
33
+ define('TK_START_BLOCK', ++$n);
34
+ define('TK_END_BLOCK', ++$n);
35
+ define('TK_END_COMMAND', ++$n);
36
+ define('TK_EOF', ++$n);
37
+ define('TK_STRING', ++$n);
38
+
39
+ define('TK_BLOCK_COMMENT', ++$n);
40
+ define('TK_COMMENT', ++$n);
41
+
42
+ define('TK_OPERATOR', ++$n);
43
+
44
+ // internal flags
45
+ define('PRINT_NONE', ++$n);
46
+ define('PRINT_SPACE', ++$n);
47
+ define('PRINT_NL', ++$n);
48
+
49
+
50
+ function js_beautify($js_source_text, $tab_size = 4)
51
+ {
52
+ global $output, $token_text, $last_type, $last_text, $in, $ins, $indent, $tab_string;
53
+
54
+ global $input, $input_length;
55
+
56
+ $tab_string = str_repeat(' ', $tab_size);
57
+
58
+ $input = $js_source_text;
59
+ $input_length = strlen($input);
60
+
61
+ $last_word = ''; // last TK_WORD passed
62
+ $last_type = TK_START_EXPR; // last token type
63
+ $last_text = ''; // last token text
64
+ $output = '';
65
+
66
+ // words which should always start on new line.
67
+ // simple hack for cases when lines aren't ending with semicolon.
68
+ // feel free to tell me about the ones that need to be added.
69
+ $line_starters = explode(',', 'continue,try,throw,return,var,if,switch,case,default,for,while,break,function');
70
+
71
+ // states showing if we are currently in expression (i.e. "if" case) - IN_EXPR, or in usual block (like, procedure), IN_BLOCK.
72
+ // some formatting depends on that.
73
+ $in = IN_BLOCK;
74
+ $ins = array($in);
75
+
76
+
77
+ $indent = 0;
78
+ $pos = 0; // parser position
79
+ $in_case = false; // flag for parser that case/default has been processed, and next colon needs special attention
80
+
81
+ while (true) {
82
+ list($token_text, $token_type) = get_next_token($pos);
83
+ if ($token_type == TK_EOF) {
84
+ break;
85
+ }
86
+
87
+ // $output .= " [$token_type:$last_type]";
88
+
89
+ switch($token_type) {
90
+
91
+ case TK_START_EXPR:
92
+
93
+ in(IN_EXPR);
94
+ if ($last_type == TK_END_EXPR or $last_type == TK_START_EXPR) {
95
+ // do nothing on (( and )( and ][ and ]( ..
96
+ } elseif ($last_type != TK_WORD and $last_type != TK_OPERATOR) {
97
+ space();
98
+ } elseif (in_array($last_word, $line_starters) and $last_word != 'function') {
99
+ space();
100
+ }
101
+ token();
102
+ break;
103
+
104
+ case TK_END_EXPR:
105
+
106
+ token();
107
+ in_pop();
108
+ break;
109
+
110
+ case TK_START_BLOCK:
111
+
112
+ in(IN_BLOCK);
113
+ if ($last_type != TK_OPERATOR and $last_type != TK_START_EXPR) {
114
+ if ($last_type == TK_START_BLOCK) {
115
+ nl();
116
+ } else {
117
+ space();
118
+ }
119
+ }
120
+ token();
121
+ indent();
122
+ break;
123
+
124
+ case TK_END_BLOCK:
125
+
126
+ if ($last_type == TK_END_EXPR) {
127
+ unindent();
128
+ nl();
129
+ } elseif ($last_type == TK_END_BLOCK) {
130
+ unindent();
131
+ nl();
132
+ } elseif ($last_type == TK_START_BLOCK) {
133
+ // nothing
134
+ unindent();
135
+ } else {
136
+ unindent();
137
+ nl();
138
+ }
139
+ token();
140
+ in_pop();
141
+ break;
142
+
143
+ case TK_WORD:
144
+
145
+ if ($token_text == 'case' or $token_text == 'default') {
146
+ if ($last_text == ':') {
147
+ // switch cases following one another
148
+ remove_indent();
149
+ } else {
150
+ $indent--;
151
+ nl();
152
+ $indent++;
153
+ }
154
+ token();
155
+ $in_case = true;
156
+ break;
157
+ }
158
+
159
+ $prefix = PRINT_NONE;
160
+ if ($last_type == TK_END_BLOCK) {
161
+ if (!in_array($token_text, array('else', 'catch', 'finally'))) {
162
+ $prefix = PRINT_NL;
163
+ } else {
164
+ $prefix = PRINT_SPACE;
165
+ space();
166
+ }
167
+ } elseif ($last_type == TK_END_COMMAND && $in == IN_BLOCK) {
168
+ $prefix = PRINT_NL;
169
+ } elseif ($last_type == TK_END_COMMAND && $in == IN_EXPR) {
170
+ $prefix = PRINT_SPACE;
171
+ } elseif ($last_type == TK_WORD) {
172
+ if ($last_word == 'else') { // else if
173
+ $prefix = PRINT_SPACE;
174
+ } else {
175
+ $prefix = PRINT_SPACE;
176
+ }
177
+ } elseif ($last_type == TK_START_BLOCK) {
178
+ $prefix = PRINT_NL;
179
+ } elseif ($last_type == TK_END_EXPR) {
180
+ space();
181
+ }
182
+
183
+ if (in_array($token_text, $line_starters) or $prefix == PRINT_NL) {
184
+
185
+ if ($last_text == 'else') {
186
+ // no need to force newline on else break
187
+ // DONOTHING
188
+ space();
189
+ } elseif (($last_type == TK_START_EXPR or $last_text == '=') and $token_text == 'function') {
190
+ // no need to force newline on 'function': (function
191
+ // DONOTHING
192
+ } elseif ($last_type == TK_WORD and ($last_text == 'return' or $last_text == 'throw')) {
193
+ // no newline between 'return nnn'
194
+ space();
195
+ } else
196
+ if ($last_type != TK_END_EXPR) {
197
+ if (($last_type != TK_START_EXPR or $token_text != 'var') and $last_text != ':') {
198
+ // no need to force newline on 'var': for (var x = 0...)
199
+ if ($token_text == 'if' and $last_type == TK_WORD and $last_word == 'else') {
200
+ // no newline for } else if {
201
+ space();
202
+ } else {
203
+ nl();
204
+ }
205
+ }
206
+ }
207
+ } elseif ($prefix == PRINT_SPACE) {
208
+ space();
209
+ }
210
+ token();
211
+ $last_word = $token_text;
212
+ break;
213
+
214
+ case TK_END_COMMAND:
215
+
216
+ token();
217
+ break;
218
+
219
+ case TK_STRING:
220
+
221
+ if ($last_type == TK_START_BLOCK or $last_type == TK_END_BLOCK) {
222
+ nl();
223
+ } elseif ($last_type == TK_WORD) {
224
+ space();
225
+ }
226
+ token();
227
+ break;
228
+
229
+ case TK_OPERATOR:
230
+ $start_delim = true;
231
+ $end_delim = true;
232
+
233
+ if ($token_text == ':' and $in_case) {
234
+ token(); // colon really asks for separate treatment
235
+ nl();
236
+ $expecting_case = false;
237
+ break;
238
+ }
239
+
240
+ $in_case = false;
241
+
242
+
243
+
244
+ if ($token_text == ',') {
245
+ if ($last_type == TK_END_BLOCK) {
246
+ token();
247
+ nl();
248
+ } else {
249
+ if ($in == IN_BLOCK) {
250
+ token();
251
+ nl();
252
+ } else {
253
+ token();
254
+ space();
255
+ }
256
+ }
257
+ break;
258
+ } elseif ($token_text == '--' or $token_text == '++') { // unary operators special case
259
+ if ($last_text == ';') {
260
+ // space for (;; ++i)
261
+ $start_delim = true;
262
+ $end_delim = false;
263
+ } else {
264
+ $start_delim = false;
265
+ $end_delim = false;
266
+ }
267
+ } elseif ($token_text == '!' and $last_type == TK_START_EXPR) {
268
+ // special case handling: if (!a)
269
+ $start_delim = false;
270
+ $end_delim = false;
271
+ } elseif ($last_type == TK_OPERATOR) {
272
+ $start_delim = false;
273
+ $end_delim = false;
274
+ } elseif ($last_type == TK_END_EXPR) {
275
+ $start_delim = true;
276
+ $end_delim = true;
277
+ } elseif ($token_text == '.') {
278
+ // decimal digits or object.property
279
+ $start_delim = false;
280
+ $end_delim = false;
281
+
282
+ } elseif ($token_text == ':') {
283
+ // zz: xx
284
+ // can't differentiate ternary op, so for now it's a ? b: c; without space before colon
285
+ $start_delim = false;
286
+ }
287
+ if ($start_delim) {
288
+ space();
289
+ }
290
+
291
+ token();
292
+
293
+ if ($end_delim) {
294
+ space();
295
+ }
296
+ break;
297
+
298
+ case TK_BLOCK_COMMENT:
299
+
300
+ nl();
301
+ token();
302
+ nl();
303
+ break;
304
+
305
+ case TK_COMMENT:
306
+
307
+ //if ($last_type != TK_COMMENT) {
308
+ nl();
309
+ //}
310
+ token();
311
+ nl();
312
+ break;
313
+
314
+ case TK_UNKNOWN:
315
+ token();
316
+ break;
317
+ }
318
+
319
+ if ($token_type != TK_COMMENT) {
320
+ $last_type = $token_type;
321
+ $last_text = $token_text;
322
+ }
323
+ }
324
+
325
+ // clean empty lines from redundant spaces
326
+ $output = preg_replace('/^ +$/m', '', $output);
327
+
328
+ return $output;
329
+ }
330
+
331
+
332
+
333
+
334
+ function nl($ignore_repeated = true)
335
+ {
336
+ global $indent, $output, $tab_string;
337
+
338
+ $output = rtrim($output, ' '); // remove possible indent
339
+
340
+ if ($output == '') return; // no newline on start of file
341
+
342
+ if (substr($output, -1) != "\n" or !$ignore_repeated) {
343
+ $output .= "\n";
344
+ }
345
+ $output .= str_repeat($tab_string, $indent);
346
+ }
347
+
348
+
349
+
350
+ function space()
351
+ {
352
+ global $output;
353
+
354
+ if ($output and substr($output, -1) != ' ') { // prevent occassional duplicate space
355
+ $output .= ' ';
356
+ }
357
+ }
358
+
359
+
360
+ function token()
361
+ {
362
+ global $token_text, $output;
363
+ $output .= $token_text;
364
+ }
365
+
366
+ function indent()
367
+ {
368
+ global $indent;
369
+ $indent ++;
370
+ }
371
+
372
+
373
+ function unindent()
374
+ {
375
+ global $indent;
376
+ if ($indent) {
377
+ $indent --;
378
+ }
379
+ }
380
+
381
+
382
+ function remove_indent()
383
+ {
384
+ global $tab_string, $output;
385
+ $tab_string_len = strlen($tab_string);
386
+ if (substr($output, -$tab_string_len) == $tab_string) {
387
+ $output = substr($output, 0, -$tab_string_len);
388
+ }
389
+ }
390
+
391
+
392
+ function in($where)
393
+ {
394
+ global $ins, $in;
395
+ array_push($ins, $in);
396
+ $in = $where;
397
+ }
398
+
399
+
400
+ function in_pop()
401
+ {
402
+ global $ins, $in;
403
+ $in = array_pop($ins);
404
+ }
405
+
406
+
407
+
408
+ function make_array($str)
409
+ {
410
+ $res = array();
411
+ for ($i = 0; $i < strlen($str); $i++) {
412
+ $res[] = $str[$i];
413
+ }
414
+ return $res;
415
+ }
416
+
417
+
418
+
419
+ function get_next_token(&$pos)
420
+ {
421
+ global $last_type, $last_text;
422
+ global $whitespace, $wordchar, $punct;
423
+ global $input, $input_length;
424
+
425
+
426
+ if (!$whitespace) $whitespace = make_array("\n\r\t ");
427
+ if (!$wordchar) $wordchar = make_array('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$');
428
+ if (!$punct) $punct = explode(' ', '+ - * / % & ++ -- = += -= *= /= %= == === != !== > < >= <= >> << >>> >>>= >>= <<= && &= | || ! !! , : ? ^ ^= |=');
429
+
430
+ $n_newlines = 0;
431
+ do {
432
+ if ($pos >= $input_length) {
433
+ return array('', TK_EOF);
434
+ }
435
+ $c = $input[$pos];
436
+ $pos += 1;
437
+ if ($c == "\n") {
438
+ nl($n_newlines == 0);
439
+ $n_newlines += 1;
440
+ }
441
+ } while (in_array($c, $whitespace));
442
+
443
+ if (in_array($c, $wordchar)) {
444
+ if ($pos < $input_length) {
445
+ while (in_array($input[$pos], $wordchar)) {
446
+ $c .= $input[$pos];
447
+ $pos += 1;
448
+ if ($pos == $input_length) break;
449
+ }
450
+ }
451
+
452
+ // small and surprisingly unugly hack for 1E-10 representation
453
+ if ($pos != $input_length and preg_match('/^\d+[Ee]$/', $c) and $input[$pos] == '-') {
454
+ $pos += 1;
455
+ list($next_word, $next_type) = get_next_token($pos);
456
+ $c .= '-' . $next_word;
457
+ return array($c, TK_WORD);
458
+ }
459
+
460
+ if ($c == 'in') { // hack for 'in' operator
461
+ return array($c, TK_OPERATOR);
462
+ }
463
+ return array($c, TK_WORD);
464
+ }
465
+
466
+ if ($c == '(' || $c == '[') {
467
+ return array($c, TK_START_EXPR);
468
+ }
469
+
470
+ if ($c == ')' || $c == ']') {
471
+ return array($c, TK_END_EXPR);
472
+ }
473
+
474
+ if ($c == '{') {
475
+ return array($c, TK_START_BLOCK);
476
+ }
477
+
478
+ if ($c == '}') {
479
+ return array($c, TK_END_BLOCK);
480
+ }
481
+
482
+ if ($c == ';') {
483
+ return array($c, TK_END_COMMAND);
484
+ }
485
+
486
+ if ($c == '/') {
487
+ // peek for comment /* ... */
488
+ if ($input[$pos] == '*') {
489
+ $comment = '';
490
+ $pos += 1;
491
+ if ($pos < $input_length){
492
+ while (!($input[$pos] == '*' && isset($input[$pos + 1]) && $input[$pos + 1] == '/') && $pos < $input_length) {
493
+ $comment .= $input[$pos];
494
+ $pos += 1;
495
+ if ($pos >= $input_length) break;
496
+ }
497
+ }
498
+ $pos +=2;
499
+ return array("/*$comment*/", TK_BLOCK_COMMENT);
500
+ }
501
+ // peek for comment // ...
502
+ if ($input[$pos] == '/') {
503
+ $comment = $c;
504
+ while ($input[$pos] != "\x0d" && $input[$pos] != "\x0a") {
505
+ $comment .= $input[$pos];
506
+ $pos += 1;
507
+ if ($pos >= $input_length) break;
508
+ }
509
+ $pos += 1;
510
+ return array($comment, TK_COMMENT);
511
+ }
512
+
513
+ }
514
+
515
+ if ($c == "'" || // string
516
+ $c == '"' || // string
517
+ ($c == '/' &&
518
+ (($last_type == TK_WORD and $last_text == 'return') or ($last_type == TK_START_EXPR || $last_type == TK_END_BLOCK || $last_type == TK_OPERATOR || $last_type == TK_EOF || $last_type == TK_END_COMMAND)))) { // regexp
519
+ $sep = $c;
520
+ $c = '';
521
+ $esc = false;
522
+
523
+ if ($pos < $input_length) {
524
+
525
+ while ($esc || $input[$pos] != $sep) {
526
+ $c .= $input[$pos];
527
+ if (!$esc) {
528
+ $esc = $input[$pos] == '\\';
529
+ } else {
530
+ $esc = false;
531
+ }
532
+ $pos += 1;
533
+ if ($pos >= $input_length) break;
534
+ }
535
+
536
+ }
537
+
538
+ $pos += 1;
539
+ if ($last_type == TK_END_COMMAND) {
540
+ nl();
541
+ }
542
+ return array($sep . $c . $sep, TK_STRING);
543
+ }
544
+
545
+ if (in_array($c, $punct)) {
546
+ while ($pos < $input_length and in_array($c . $input[$pos], $punct)) {
547
+ $c .= $input[$pos];
548
+ $pos += 1;
549
+ if ($pos >= $input_length) break;
550
+ }
551
+ return array($c, TK_OPERATOR);
552
+ }
553
+
554
+ return array($c, TK_UNKNOWN);
555
+ }
556
+
557
+ ?>