inc_gollum 4.1.2c

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1043) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.md +91 -0
  3. data/Gemfile +4 -0
  4. data/HISTORY.md +138 -0
  5. data/LICENSE +21 -0
  6. data/README.md +177 -0
  7. data/Rakefile +179 -0
  8. data/bin/inc_gollum +295 -0
  9. data/config.rb +11 -0
  10. data/config.ru +12 -0
  11. data/contrib/openrc/conf.d/gollum +3 -0
  12. data/contrib/openrc/init.d/gollum +36 -0
  13. data/contrib/systemd/gollum@.service +12 -0
  14. data/contrib/sysv-debian/init.d/gollum +79 -0
  15. data/gollum.gemspec +1089 -0
  16. data/lib/gollum.rb +41 -0
  17. data/lib/gollum/app.rb +652 -0
  18. data/lib/gollum/helpers.rb +68 -0
  19. data/lib/gollum/public/gollum/css/_styles.css +143 -0
  20. data/lib/gollum/public/gollum/css/dialog.css +253 -0
  21. data/lib/gollum/public/gollum/css/editor.css +697 -0
  22. data/lib/gollum/public/gollum/css/gollum.css +857 -0
  23. data/lib/gollum/public/gollum/css/ie7.css +75 -0
  24. data/lib/gollum/public/gollum/css/print.css +14 -0
  25. data/lib/gollum/public/gollum/css/template.css +882 -0
  26. data/lib/gollum/public/gollum/fonts/FontAwesome.otf +0 -0
  27. data/lib/gollum/public/gollum/fonts/fontawesome-webfont.eot +0 -0
  28. data/lib/gollum/public/gollum/fonts/fontawesome-webfont.svg +414 -0
  29. data/lib/gollum/public/gollum/fonts/fontawesome-webfont.ttf +0 -0
  30. data/lib/gollum/public/gollum/fonts/fontawesome-webfont.woff +0 -0
  31. data/lib/gollum/public/gollum/images/dirty-shade.png +0 -0
  32. data/lib/gollum/public/gollum/images/fileview/document.png +0 -0
  33. data/lib/gollum/public/gollum/images/fileview/folder-horizontal.png +0 -0
  34. data/lib/gollum/public/gollum/images/fileview/toggle-small-expand.png +0 -0
  35. data/lib/gollum/public/gollum/images/fileview/toggle-small.png +0 -0
  36. data/lib/gollum/public/gollum/images/fileview/trashcan.png +0 -0
  37. data/lib/gollum/public/gollum/images/icon-sprite.png +0 -0
  38. data/lib/gollum/public/gollum/images/man_24.png +0 -0
  39. data/lib/gollum/public/gollum/images/para.png +0 -0
  40. data/lib/gollum/public/gollum/images/pin-16.png +0 -0
  41. data/lib/gollum/public/gollum/images/pin-20.png +0 -0
  42. data/lib/gollum/public/gollum/images/pin-24.png +0 -0
  43. data/lib/gollum/public/gollum/images/pin-32.png +0 -0
  44. data/lib/gollum/public/gollum/javascript/editor/gollum.editor.js +1193 -0
  45. data/lib/gollum/public/gollum/javascript/editor/langs/asciidoc.js +183 -0
  46. data/lib/gollum/public/gollum/javascript/editor/langs/creole.js +105 -0
  47. data/lib/gollum/public/gollum/javascript/editor/langs/markdown.js +228 -0
  48. data/lib/gollum/public/gollum/javascript/editor/langs/org.js +174 -0
  49. data/lib/gollum/public/gollum/javascript/editor/langs/pod.js +112 -0
  50. data/lib/gollum/public/gollum/javascript/editor/langs/rdoc.js +74 -0
  51. data/lib/gollum/public/gollum/javascript/editor/langs/textile.js +176 -0
  52. data/lib/gollum/public/gollum/javascript/gollum.dialog.js +319 -0
  53. data/lib/gollum/public/gollum/javascript/gollum.js +333 -0
  54. data/lib/gollum/public/gollum/javascript/gollum.placeholder.js +54 -0
  55. data/lib/gollum/public/gollum/javascript/identicon_canvas.js +111 -0
  56. data/lib/gollum/public/gollum/javascript/jquery-1.7.2.min.js +4 -0
  57. data/lib/gollum/public/gollum/javascript/jquery.color.js +123 -0
  58. data/lib/gollum/public/gollum/javascript/mousetrap.min.js +8 -0
  59. data/lib/gollum/public/gollum/livepreview/css/custom.css +132 -0
  60. data/lib/gollum/public/gollum/livepreview/images/cancel_24.png +0 -0
  61. data/lib/gollum/public/gollum/livepreview/images/globe_24.png +0 -0
  62. data/lib/gollum/public/gollum/livepreview/images/lr_24.png +0 -0
  63. data/lib/gollum/public/gollum/livepreview/images/save_24.png +0 -0
  64. data/lib/gollum/public/gollum/livepreview/images/savecomment_24.png +0 -0
  65. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ace.js +129 -0
  66. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/anchor.js +245 -0
  67. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/anchor_test.js +223 -0
  68. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/autocomplete.js +497 -0
  69. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/autocomplete/popup.js +341 -0
  70. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/autocomplete/text_completer.js +78 -0
  71. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/autocomplete/util.js +74 -0
  72. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/background_tokenizer.js +250 -0
  73. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/background_tokenizer_test.js +85 -0
  74. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/commands/command_manager.js +118 -0
  75. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/commands/command_manager_test.js +199 -0
  76. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/commands/default_commands.js +721 -0
  77. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/commands/incremental_search_commands.js +232 -0
  78. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/commands/multi_select_commands.js +113 -0
  79. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/commands/occur_commands.js +110 -0
  80. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/config.js +202 -0
  81. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/config_test.js +135 -0
  82. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/css/codefolding-fold-button-states.png +0 -0
  83. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/css/editor.css +422 -0
  84. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/css/expand-marker.png +0 -0
  85. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/document.js +645 -0
  86. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/document_test.js +306 -0
  87. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/edit_session.js +2551 -0
  88. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/edit_session/bracket_match.js +221 -0
  89. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/edit_session/fold.js +140 -0
  90. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/edit_session/fold_line.js +269 -0
  91. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/edit_session/folding.js +859 -0
  92. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/edit_session_test.js +1075 -0
  93. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/editor.js +2693 -0
  94. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/editor_change_document_test.js +188 -0
  95. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/editor_highlight_selected_word_test.js +223 -0
  96. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/editor_navigation_test.js +164 -0
  97. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/editor_text_edit_test.js +557 -0
  98. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/beautify.js +57 -0
  99. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/beautify/php_rules.js +366 -0
  100. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/chromevox.js +980 -0
  101. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/elastic_tabstops_lite.js +319 -0
  102. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/emmet.js +434 -0
  103. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/error_marker.js +214 -0
  104. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/keybinding_menu.js +86 -0
  105. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/language_tools.js +226 -0
  106. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/linking.js +78 -0
  107. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/menu_tools/add_editor_menu_options.js +109 -0
  108. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/menu_tools/element_generator.js +148 -0
  109. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/menu_tools/generate_settings_menu.js +264 -0
  110. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/menu_tools/get_editor_keyboard_shortcuts.js +91 -0
  111. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/menu_tools/get_set_functions.js +141 -0
  112. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/menu_tools/overlay_page.js +116 -0
  113. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/menu_tools/settings_menu.css +48 -0
  114. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/modelist.js +195 -0
  115. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/old_ie.js +114 -0
  116. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/old_ie_test.js +77 -0
  117. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/searchbox.css +153 -0
  118. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/searchbox.js +308 -0
  119. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/settings_menu.js +76 -0
  120. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/spellcheck.js +69 -0
  121. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/split.js +40 -0
  122. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/static.css +31 -0
  123. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/static_highlight.js +190 -0
  124. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/static_highlight_test.js +96 -0
  125. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/statusbar.js +48 -0
  126. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/textarea.js +521 -0
  127. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/themelist.js +100 -0
  128. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/whitespace.js +213 -0
  129. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/ext/whitespace_test.js +116 -0
  130. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/incremental_search.js +317 -0
  131. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/incremental_search_test.js +213 -0
  132. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/keyboard/emacs.js +652 -0
  133. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/keyboard/emacs_test.js +151 -0
  134. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/keyboard/hash_handler.js +231 -0
  135. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/keyboard/keybinding.js +145 -0
  136. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/keyboard/keybinding_test.js +69 -0
  137. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/keyboard/state_handler.js +249 -0
  138. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/keyboard/textarea.js +82 -0
  139. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/keyboard/textinput.js +509 -0
  140. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim.js +6016 -0
  141. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim_test.js +3866 -0
  142. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/layer/cursor.js +240 -0
  143. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/layer/font_metrics.js +176 -0
  144. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/layer/gutter.js +287 -0
  145. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/layer/marker.js +218 -0
  146. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/layer/text.js +575 -0
  147. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/layer/text_test.js +126 -0
  148. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/app_config.js +157 -0
  149. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/dom.js +284 -0
  150. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/es5-shim.js +1062 -0
  151. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/event.js +367 -0
  152. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/event_emitter.js +155 -0
  153. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/event_emitter_test.js +65 -0
  154. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/fixoldbrowsers.js +19 -0
  155. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/keys.js +163 -0
  156. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/lang.js +221 -0
  157. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/net.js +51 -0
  158. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/oop.js +57 -0
  159. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/regexp.js +113 -0
  160. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/lib/useragent.js +106 -0
  161. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/line_widgets.js +297 -0
  162. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/Readme.md +9 -0
  163. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/highlight_rules_test.js +210 -0
  164. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/package.json +8 -0
  165. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_asciidoc.txt +111 -0
  166. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_coffee.txt +57 -0
  167. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_curly.txt +9 -0
  168. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_html.txt +10 -0
  169. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_javascript.txt +86 -0
  170. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_livescript.txt +1 -0
  171. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_lucene.txt +16 -0
  172. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_markdown.txt +22 -0
  173. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_php.txt +24 -0
  174. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_ruby.txt +34 -0
  175. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/text_xml.txt +7 -0
  176. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_abap.json +189 -0
  177. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_abc.json +2207 -0
  178. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_actionscript.json +263 -0
  179. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_ada.json +39 -0
  180. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_asciidoc.json +422 -0
  181. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_assembly_x86.json +114 -0
  182. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_autohotkey.json +261 -0
  183. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_batchfile.json +70 -0
  184. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_c9search.json +131 -0
  185. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_c_cpp.json +190 -0
  186. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_cirru.json +267 -0
  187. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_clojure.json +162 -0
  188. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_cobol.json +4 -0
  189. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_coffee.json +545 -0
  190. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_coldfusion.json +26 -0
  191. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_csharp.json +31 -0
  192. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_css.json +148 -0
  193. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_curly.json +56 -0
  194. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_d.json +111 -0
  195. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_dart.json +368 -0
  196. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_diff.json +262 -0
  197. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_dot.json +2254 -0
  198. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_eiffel.json +141 -0
  199. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_ejs.json +296 -0
  200. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_elixir.json +196 -0
  201. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_elm.json +198 -0
  202. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_erlang.json +166 -0
  203. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_forth.json +219 -0
  204. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_ftl.json +341 -0
  205. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_gcode.json +296 -0
  206. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_gherkin.json +142 -0
  207. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_gitignore.json +33 -0
  208. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_glsl.json +127 -0
  209. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_golang.json +256 -0
  210. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_groovy.json +410 -0
  211. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_haml.json +174 -0
  212. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_handlebars.json +81 -0
  213. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_haskell.json +156 -0
  214. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_haxe.json +143 -0
  215. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_html.json +63 -0
  216. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_html_ruby.json +257 -0
  217. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_ini.json +23 -0
  218. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_io.json +49 -0
  219. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_jack.json +1786 -0
  220. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_jade.json +188 -0
  221. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_java.json +95 -0
  222. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_javascript.json +593 -0
  223. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_json.json +412 -0
  224. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_jsoniq.json +4 -0
  225. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_jsp.json +435 -0
  226. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_jsx.json +51 -0
  227. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_julia.json +111 -0
  228. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_latex.json +127 -0
  229. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_less.json +204 -0
  230. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_liquid.json +551 -0
  231. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_lisp.json +248 -0
  232. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_livescript.json +6 -0
  233. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_logiql.json +190 -0
  234. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_lsl.json +503 -0
  235. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_lua.json +348 -0
  236. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_luapage.json +633 -0
  237. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_lucene.json +92 -0
  238. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_markdown.json +114 -0
  239. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_mask.json +302 -0
  240. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_matlab.json +90 -0
  241. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_mel.json +257 -0
  242. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_mushcode.json +790 -0
  243. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_mysql.json +4 -0
  244. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_nix.json +360 -0
  245. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_objectivec.json +793 -0
  246. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_ocaml.json +200 -0
  247. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_pascal.json +297 -0
  248. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_perl.json +227 -0
  249. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_pgsql.json +889 -0
  250. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_php.json +171 -0
  251. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_powershell.json +184 -0
  252. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_prolog.json +245 -0
  253. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_properties.json +68 -0
  254. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_protobuf.json +136 -0
  255. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_python.json +152 -0
  256. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_r.json +235 -0
  257. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_rdoc.json +441 -0
  258. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_rhtml.json +106 -0
  259. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_ruby.json +242 -0
  260. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_rust.json +136 -0
  261. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_sass.json +229 -0
  262. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_scad.json +194 -0
  263. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_scala.json +542 -0
  264. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_scheme.json +216 -0
  265. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_scss.json +123 -0
  266. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_sh.json +334 -0
  267. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_sjs.json +276 -0
  268. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_smarty.json +98 -0
  269. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_snippets.json +159 -0
  270. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_soy_template.json +286 -0
  271. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_space.json +322 -0
  272. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_sql.json +54 -0
  273. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_stylus.json +271 -0
  274. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_svg.json +684 -0
  275. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_tcl.json +385 -0
  276. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_tex.json +130 -0
  277. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_text.json +29 -0
  278. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_textile.json +113 -0
  279. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_toml.json +131 -0
  280. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_twig.json +288 -0
  281. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_typescript.json +559 -0
  282. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_vala.json +158 -0
  283. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_vbscript.json +205 -0
  284. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_velocity.json +285 -0
  285. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_verilog.json +113 -0
  286. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_vhdl.json +271 -0
  287. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_xml.json +43 -0
  288. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_xquery.json +44 -0
  289. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/_test/tokens_yaml.json +150 -0
  290. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/abap.js +77 -0
  291. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/abap_highlight_rules.js +134 -0
  292. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/abc.js +58 -0
  293. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/abc_highlight_rules.js +114 -0
  294. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/actionscript.js +58 -0
  295. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/actionscript_highlight_rules.js +141 -0
  296. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ada.js +54 -0
  297. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ada_highlight_rules.js +93 -0
  298. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/apache_conf.js +62 -0
  299. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/apache_conf_highlight_rules.js +231 -0
  300. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/applescript.js +55 -0
  301. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/applescript_highlight_rules.js +139 -0
  302. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/asciidoc.js +64 -0
  303. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/asciidoc_highlight_rules.js +234 -0
  304. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/assembly_x86.js +56 -0
  305. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/assembly_x86_highlight_rules.js +114 -0
  306. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/autohotkey.js +57 -0
  307. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/autohotkey_highlight_rules.js +107 -0
  308. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/batchfile.js +61 -0
  309. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/batchfile_highlight_rules.js +97 -0
  310. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour.js +90 -0
  311. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour/behaviour_test.js +139 -0
  312. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour/css.js +108 -0
  313. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour/cstyle.js +392 -0
  314. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour/html.js +46 -0
  315. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour/xml.js +202 -0
  316. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour/xquery.js +92 -0
  317. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/c9search.js +67 -0
  318. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/c9search_highlight_rules.js +182 -0
  319. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/c_cpp.js +101 -0
  320. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/c_cpp_highlight_rules.js +196 -0
  321. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/cirru.js +51 -0
  322. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/cirru_highlight_rules.js +125 -0
  323. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/clojure.js +128 -0
  324. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/clojure_highlight_rules.js +200 -0
  325. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/cobol.js +53 -0
  326. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/cobol_highlight_rules.js +100 -0
  327. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee.js +135 -0
  328. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/coffee-script.js +62 -0
  329. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/helpers.js +271 -0
  330. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/lexer.js +935 -0
  331. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/nodes.js +3106 -0
  332. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/parser.js +724 -0
  333. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/parser_test.js +88 -0
  334. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/rewriter.js +516 -0
  335. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/scope.js +174 -0
  336. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee_highlight_rules.js +233 -0
  337. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coffee_worker.js +73 -0
  338. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coldfusion.js +61 -0
  339. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coldfusion_highlight_rules.js +49 -0
  340. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/coldfusion_test.js +67 -0
  341. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/csharp.js +61 -0
  342. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/csharp_highlight_rules.js +93 -0
  343. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/css.js +100 -0
  344. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/css/csslint.js +9628 -0
  345. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/css_highlight_rules.js +179 -0
  346. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/css_test.js +78 -0
  347. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/css_worker.js +100 -0
  348. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/css_worker_test.js +68 -0
  349. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/curly.js +63 -0
  350. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/curly_highlight_rules.js +66 -0
  351. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/d.js +56 -0
  352. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/d_highlight_rules.js +334 -0
  353. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/dart.js +62 -0
  354. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/dart_highlight_rules.js +186 -0
  355. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/diff.js +52 -0
  356. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/diff_highlight_rules.js +108 -0
  357. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/django.js +119 -0
  358. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/doc_comment_highlight_rules.js +79 -0
  359. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/dockerfile.js +52 -0
  360. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/dockerfile_highlight_rules.js +57 -0
  361. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/dot.js +55 -0
  362. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/dot_highlight_rules.js +126 -0
  363. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/eiffel.js +52 -0
  364. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/eiffel_highlight_rules.js +136 -0
  365. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ejs.js +109 -0
  366. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/elixir.js +58 -0
  367. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/elixir_highlight_rules.js +433 -0
  368. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/elm.js +58 -0
  369. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/elm_highlight_rules.js +162 -0
  370. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/erlang.js +57 -0
  371. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/erlang_highlight_rules.js +876 -0
  372. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/asciidoc.js +142 -0
  373. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/c9search.js +83 -0
  374. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/coffee.js +120 -0
  375. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/coffee_test.js +101 -0
  376. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/csharp.js +137 -0
  377. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/cstyle.js +186 -0
  378. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/cstyle_test.js +109 -0
  379. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/diff.js +69 -0
  380. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/fold_mode.js +120 -0
  381. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/html.js +48 -0
  382. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/html_test.js +186 -0
  383. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/ini.js +80 -0
  384. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/latex.js +162 -0
  385. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/lua.js +163 -0
  386. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/markdown.js +125 -0
  387. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/mixed.js +83 -0
  388. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/pythonic.js +58 -0
  389. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/pythonic_test.js +98 -0
  390. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/velocity.js +120 -0
  391. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/xml.js +278 -0
  392. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/folding/xml_test.js +110 -0
  393. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/forth.js +58 -0
  394. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/forth_highlight_rules.js +164 -0
  395. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ftl.js +49 -0
  396. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ftl_highlight_rules.js +195 -0
  397. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/gcode.js +51 -0
  398. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/gcode_highlight_rules.js +94 -0
  399. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/gherkin.js +80 -0
  400. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/gherkin_highlight_rules.js +113 -0
  401. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/gitignore.js +20 -0
  402. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/gitignore_highlight_rules.js +31 -0
  403. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/glsl.js +56 -0
  404. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/glsl_highlight_rules.js +81 -0
  405. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/golang.js +55 -0
  406. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/golang_highlight_rules.js +108 -0
  407. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/groovy.js +24 -0
  408. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/groovy_highlight_rules.js +173 -0
  409. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/haml.js +61 -0
  410. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/haml_highlight_rules.js +132 -0
  411. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/handlebars.js +29 -0
  412. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/handlebars_highlight_rules.js +72 -0
  413. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/haskell.js +62 -0
  414. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/haskell_highlight_rules.js +246 -0
  415. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/haxe.js +56 -0
  416. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/haxe_highlight_rules.js +98 -0
  417. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/html.js +106 -0
  418. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/html/saxparser.js +10430 -0
  419. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/html_completions.js +305 -0
  420. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/html_highlight_rules.js +111 -0
  421. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/html_ruby.js +59 -0
  422. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/html_ruby_highlight_rules.js +84 -0
  423. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/html_test.js +67 -0
  424. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/html_worker.js +92 -0
  425. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ini.js +53 -0
  426. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ini_highlight_rules.js +112 -0
  427. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/io.js +58 -0
  428. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/io_highlight_rules.js +120 -0
  429. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/jack.js +79 -0
  430. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/jack_highlight_rules.js +142 -0
  431. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/jade.js +57 -0
  432. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/jade_highlight_rules.js +341 -0
  433. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/java.js +24 -0
  434. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/java_highlight_rules.js +128 -0
  435. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/javascript.js +116 -0
  436. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/javascript/jshint.js +10846 -0
  437. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_highlight_rules.js +405 -0
  438. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_test.js +213 -0
  439. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_worker.js +185 -0
  440. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_worker_test.js +106 -0
  441. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/js_regex_highlight_rules.js +94 -0
  442. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/json.js +93 -0
  443. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/json/json_parse.js +346 -0
  444. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/json_highlight_rules.js +100 -0
  445. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/json_worker.js +67 -0
  446. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/json_worker_test.js +102 -0
  447. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/jsoniq.js +203 -0
  448. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/jsp.js +55 -0
  449. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/jsp_highlight_rules.js +91 -0
  450. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/jsx.js +56 -0
  451. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/jsx_highlight_rules.js +120 -0
  452. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/julia.js +62 -0
  453. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/julia_highlight_rules.js +170 -0
  454. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/latex.js +26 -0
  455. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/latex_highlight_rules.js +73 -0
  456. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/less.js +84 -0
  457. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/less_highlight_rules.js +271 -0
  458. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/liquid.js +82 -0
  459. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/liquid_highlight_rules.js +131 -0
  460. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/lisp.js +56 -0
  461. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/lisp_highlight_rules.js +124 -0
  462. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/livescript.js +246 -0
  463. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/logiql.js +139 -0
  464. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/logiql_highlight_rules.js +119 -0
  465. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/logiql_test.js +98 -0
  466. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/lsl.js +92 -0
  467. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/lsl_highlight_rules.js +123 -0
  468. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/lua.js +168 -0
  469. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/lua/luaparse.js +1989 -0
  470. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/lua_highlight_rules.js +193 -0
  471. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/lua_worker.js +70 -0
  472. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/luapage.js +24 -0
  473. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/luapage_highlight_rules.js +49 -0
  474. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/lucene.js +19 -0
  475. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/lucene_highlight_rules.js +49 -0
  476. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/makefile.js +58 -0
  477. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/makefile_highlight_rules.js +75 -0
  478. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/markdown.js +76 -0
  479. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/markdown_highlight_rules.js +228 -0
  480. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/mask.js +84 -0
  481. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/mask_highlight_rules.js +309 -0
  482. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/matching_brace_outdent.js +69 -0
  483. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/matching_parens_outdent.js +74 -0
  484. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/matlab.js +55 -0
  485. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/matlab_highlight_rules.js +262 -0
  486. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/mel.js +56 -0
  487. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/mel_highlight_rules.js +133 -0
  488. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/mushcode.js +116 -0
  489. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/mushcode_highlight_rules.js +569 -0
  490. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/mysql.js +51 -0
  491. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/mysql_highlight_rules.js +122 -0
  492. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/nix.js +62 -0
  493. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/nix_highlight_rules.js +119 -0
  494. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/objectivec.js +61 -0
  495. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/objectivec_highlight_rules.js +331 -0
  496. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ocaml.js +97 -0
  497. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ocaml_highlight_rules.js +337 -0
  498. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/pascal.js +67 -0
  499. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/pascal_highlight_rules.js +127 -0
  500. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/perl.js +90 -0
  501. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/perl_highlight_rules.js +165 -0
  502. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/pgsql.js +59 -0
  503. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/pgsql_highlight_rules.js +619 -0
  504. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/php.js +161 -0
  505. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/php/php.js +5031 -0
  506. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/php_highlight_rules.js +1085 -0
  507. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/php_test.js +65 -0
  508. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/php_worker.js +77 -0
  509. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/plain_text.js +55 -0
  510. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/plain_text_test.js +56 -0
  511. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/powershell.js +61 -0
  512. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/powershell_highlight_rules.js +145 -0
  513. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/praat.js +84 -0
  514. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/praat_highlight_rules.js +262 -0
  515. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/prolog.js +62 -0
  516. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/prolog_highlight_rules.js +238 -0
  517. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/properties.js +48 -0
  518. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/properties_highlight_rules.js +86 -0
  519. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/protobuf.js +63 -0
  520. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/protobuf_highlight_rules.js +66 -0
  521. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/python.js +113 -0
  522. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/python_highlight_rules.js +191 -0
  523. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/python_test.js +79 -0
  524. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/r.js +154 -0
  525. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/r_highlight_rules.js +208 -0
  526. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/rdoc.js +61 -0
  527. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/rdoc_highlight_rules.js +119 -0
  528. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/rhtml.js +87 -0
  529. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/rhtml_highlight_rules.js +66 -0
  530. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ruby.js +100 -0
  531. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ruby_highlight_rules.js +326 -0
  532. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/ruby_test.js +77 -0
  533. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/rust.js +58 -0
  534. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/rust_highlight_rules.js +158 -0
  535. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/sass.js +52 -0
  536. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/sass_highlight_rules.js +79 -0
  537. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/scad.js +99 -0
  538. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/scad_highlight_rules.js +142 -0
  539. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/scala.js +25 -0
  540. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/scala_highlight_rules.js +160 -0
  541. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/scheme.js +56 -0
  542. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/scheme_highlight_rules.js +123 -0
  543. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/scss.js +84 -0
  544. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/scss_highlight_rules.js +296 -0
  545. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/sh.js +116 -0
  546. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/sh_highlight_rules.js +203 -0
  547. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/sjs.js +56 -0
  548. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/sjs_highlight_rules.js +233 -0
  549. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/smarty.js +51 -0
  550. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/smarty_highlight_rules.js +139 -0
  551. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/snippets.js +113 -0
  552. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/soy_template.js +60 -0
  553. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/soy_template_highlight_rules.js +356 -0
  554. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/space.js +21 -0
  555. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/space_highlight_rules.js +56 -0
  556. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/sql.js +53 -0
  557. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/sql_highlight_rules.js +99 -0
  558. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/stylus.js +62 -0
  559. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/stylus_highlight_rules.js +165 -0
  560. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/svg.js +69 -0
  561. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/svg_highlight_rules.js +49 -0
  562. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/tcl.js +84 -0
  563. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/tcl_highlight_rules.js +172 -0
  564. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/tex.js +68 -0
  565. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/tex_highlight_rules.js +127 -0
  566. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/text.js +386 -0
  567. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/text_highlight_rules.js +234 -0
  568. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/text_test.js +64 -0
  569. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/textile.js +67 -0
  570. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/textile_highlight_rules.js +93 -0
  571. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/toml.js +56 -0
  572. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/toml_highlight_rules.js +103 -0
  573. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/twig.js +81 -0
  574. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/twig_highlight_rules.js +166 -0
  575. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/typescript.js +62 -0
  576. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/typescript_highlight_rules.js +98 -0
  577. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/vala.js +105 -0
  578. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/vala_highlight_rules.js +457 -0
  579. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/vbscript.js +60 -0
  580. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/vbscript_highlight_rules.js +246 -0
  581. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/velocity.js +58 -0
  582. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/velocity_highlight_rules.js +177 -0
  583. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/verilog.js +54 -0
  584. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/verilog_highlight_rules.js +101 -0
  585. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/vhdl.js +52 -0
  586. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/vhdl_highlight_rules.js +115 -0
  587. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xml.js +75 -0
  588. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xml/dom-parser.js +260 -0
  589. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xml/dom.js +1138 -0
  590. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xml/sax.js +592 -0
  591. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xml_highlight_rules.js +242 -0
  592. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xml_test.js +75 -0
  593. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xml_worker.js +92 -0
  594. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xquery.js +216 -0
  595. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/Readme.md +1 -0
  596. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/jsoniq_lexer.js +4453 -0
  597. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/xqlint.js +78911 -0
  598. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/xquery_lexer.js +4422 -0
  599. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/xquery_worker.js +114 -0
  600. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/yaml.js +78 -0
  601. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mode/yaml_highlight_rules.js +113 -0
  602. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/model/editor.js +62 -0
  603. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mouse/default_gutter_handler.js +181 -0
  604. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mouse/default_handlers.js +279 -0
  605. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mouse/dragdrop_handler.js +428 -0
  606. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mouse/fold_handler.js +93 -0
  607. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_event.js +129 -0
  608. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_handler.js +205 -0
  609. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_handler_test.js +77 -0
  610. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/mouse/multi_select_handler.js +211 -0
  611. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/multi_select.js +970 -0
  612. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/multi_select_test.js +269 -0
  613. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/occur.js +193 -0
  614. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/occur_test.js +154 -0
  615. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/placeholder.js +274 -0
  616. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/placeholder_test.js +157 -0
  617. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/range.js +549 -0
  618. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/range_list.js +240 -0
  619. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/range_list_test.js +182 -0
  620. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/range_test.js +191 -0
  621. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/renderloop.js +75 -0
  622. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/requirejs/text.js +52 -0
  623. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/requirejs/text_build.js +60 -0
  624. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/scrollbar.js +270 -0
  625. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/search.js +403 -0
  626. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/search_highlight.js +82 -0
  627. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/search_test.js +494 -0
  628. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/selection.js +955 -0
  629. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/selection_test.js +480 -0
  630. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets.js +949 -0
  631. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/_.snippets +240 -0
  632. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/_all_modes.js +7 -0
  633. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/_all_modes.snippets +0 -0
  634. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/abap.js +7 -0
  635. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/abap.snippets +0 -0
  636. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/abc.js +7 -0
  637. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/abc.snippets +31 -0
  638. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/actionscript.js +7 -0
  639. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/actionscript.snippets +157 -0
  640. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ada.js +7 -0
  641. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ada.snippets +0 -0
  642. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/all_modes.js +7 -0
  643. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/all_modes.snippets +0 -0
  644. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/apache.snippets +35 -0
  645. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/apache_conf.js +7 -0
  646. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/apache_conf.snippets +0 -0
  647. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/applescript.js +7 -0
  648. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/applescript.snippets +0 -0
  649. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/asciidoc.js +7 -0
  650. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/asciidoc.snippets +0 -0
  651. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/assembly_x86.js +7 -0
  652. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/assembly_x86.snippets +0 -0
  653. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/autohotkey.js +7 -0
  654. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/autohotkey.snippets +0 -0
  655. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/autoit.snippets +66 -0
  656. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/batchfile.js +7 -0
  657. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/batchfile.snippets +0 -0
  658. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/c.snippets +235 -0
  659. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/c9search.js +7 -0
  660. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/c9search.snippets +0 -0
  661. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/c_cpp.js +7 -0
  662. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/c_cpp.snippets +131 -0
  663. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/chef.snippets +204 -0
  664. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/cirru.js +7 -0
  665. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/cirru.snippets +0 -0
  666. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/clojure.js +7 -0
  667. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/clojure.snippets +90 -0
  668. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/cmake.snippets +58 -0
  669. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/cobol.js +7 -0
  670. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/cobol.snippets +0 -0
  671. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/coffee.js +7 -0
  672. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/coffee.snippets +95 -0
  673. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/coldfusion.js +7 -0
  674. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/coldfusion.snippets +0 -0
  675. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/cs.snippets +374 -0
  676. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/csharp.js +7 -0
  677. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/csharp.snippets +0 -0
  678. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/css.js +7 -0
  679. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/css.snippets +967 -0
  680. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/curly.js +7 -0
  681. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/curly.snippets +0 -0
  682. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/d.js +7 -0
  683. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/d.snippets +0 -0
  684. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/dart.js +7 -0
  685. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/dart.snippets +83 -0
  686. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/diff.js +7 -0
  687. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/diff.snippets +11 -0
  688. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/django.js +7 -0
  689. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/django.snippets +108 -0
  690. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/dockerfile.js +7 -0
  691. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/dockerfile.snippets +0 -0
  692. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/dot.js +7 -0
  693. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/dot.snippets +0 -0
  694. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/dummy.js +7 -0
  695. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/dummy_syntax.js +7 -0
  696. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/eiffel.js +7 -0
  697. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/eiffel.snippets +0 -0
  698. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ejs.js +7 -0
  699. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ejs.snippets +0 -0
  700. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/elixir.js +7 -0
  701. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/elixir.snippets +0 -0
  702. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/elm.js +7 -0
  703. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/elm.snippets +0 -0
  704. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/erlang.js +7 -0
  705. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/erlang.snippets +160 -0
  706. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/eruby.snippets +113 -0
  707. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/falcon.snippets +71 -0
  708. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/forth.js +7 -0
  709. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/forth.snippets +0 -0
  710. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ftl.js +7 -0
  711. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ftl.snippets +0 -0
  712. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/gcode.js +7 -0
  713. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/gcode.snippets +0 -0
  714. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/gherkin.js +7 -0
  715. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/gherkin.snippets +0 -0
  716. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/gitignore.js +7 -0
  717. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/gitignore.snippets +0 -0
  718. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/glsl.js +7 -0
  719. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/glsl.snippets +0 -0
  720. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/go.snippets +201 -0
  721. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/golang.js +7 -0
  722. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/golang.snippets +0 -0
  723. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/groovy.js +7 -0
  724. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/groovy.snippets +0 -0
  725. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/haml.js +7 -0
  726. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/haml.snippets +20 -0
  727. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/handlebars.js +7 -0
  728. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/handlebars.snippets +0 -0
  729. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/haskell.js +7 -0
  730. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/haskell.snippets +82 -0
  731. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/haxe.js +7 -0
  732. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/haxe.snippets +0 -0
  733. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/html.js +7 -0
  734. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/html.snippets +828 -0
  735. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/html_ruby.js +7 -0
  736. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/html_ruby.snippets +0 -0
  737. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/htmldjango.snippets +136 -0
  738. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/htmltornado.snippets +55 -0
  739. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ini.js +7 -0
  740. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ini.snippets +0 -0
  741. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/io.js +69 -0
  742. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/io.snippets +0 -0
  743. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/jack.js +7 -0
  744. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/jack.snippets +0 -0
  745. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/jade.js +7 -0
  746. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/jade.snippets +0 -0
  747. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/java.js +7 -0
  748. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/java.snippets +240 -0
  749. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/javascript-jquery.snippets +589 -0
  750. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/javascript.js +7 -0
  751. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/javascript.snippets +195 -0
  752. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/json.js +7 -0
  753. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/json.snippets +0 -0
  754. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/jsoniq.js +7 -0
  755. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/jsoniq.snippets +61 -0
  756. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/jsp.js +7 -0
  757. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/jsp.snippets +99 -0
  758. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/jsx.js +7 -0
  759. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/jsx.snippets +0 -0
  760. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/julia.js +7 -0
  761. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/julia.snippets +0 -0
  762. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/latex.js +7 -0
  763. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/latex.snippets +0 -0
  764. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ledger.snippets +5 -0
  765. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/less.js +7 -0
  766. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/less.snippets +0 -0
  767. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/liquid.js +7 -0
  768. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/liquid.snippets +0 -0
  769. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/lisp.js +7 -0
  770. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/lisp.snippets +0 -0
  771. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/livescript.js +7 -0
  772. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/livescript.snippets +0 -0
  773. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/logiql.js +7 -0
  774. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/logiql.snippets +0 -0
  775. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/lsl.js +7 -0
  776. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/lsl.snippets +1066 -0
  777. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/lua.js +7 -0
  778. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/lua.snippets +21 -0
  779. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/luapage.js +7 -0
  780. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/luapage.snippets +0 -0
  781. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/lucene.js +7 -0
  782. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/lucene.snippets +0 -0
  783. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/makefile.js +7 -0
  784. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/makefile.snippets +4 -0
  785. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/mako.snippets +54 -0
  786. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/markdown.js +7 -0
  787. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/markdown.snippets +88 -0
  788. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/matlab.js +7 -0
  789. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/matlab.snippets +0 -0
  790. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/mel.js +7 -0
  791. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/mel.snippets +0 -0
  792. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/mushcode.js +7 -0
  793. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/mushcode.snippets +0 -0
  794. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/mushcode_high_rules.js +7 -0
  795. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/mushcode_high_rules.snippets +0 -0
  796. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/mysql.js +7 -0
  797. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/mysql.snippets +0 -0
  798. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/nix.js +7 -0
  799. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/nix.snippets +0 -0
  800. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/objc.snippets +247 -0
  801. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/objectivec.js +7 -0
  802. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/objectivec.snippets +0 -0
  803. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ocaml.js +7 -0
  804. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ocaml.snippets +0 -0
  805. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/pascal.js +7 -0
  806. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/pascal.snippets +0 -0
  807. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/perl.js +7 -0
  808. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/perl.snippets +347 -0
  809. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/pgsql.js +7 -0
  810. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/pgsql.snippets +0 -0
  811. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/php.js +7 -0
  812. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/php.snippets +377 -0
  813. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/plain_text.js +7 -0
  814. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/plain_text.snippets +0 -0
  815. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/powershell.js +7 -0
  816. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/powershell.snippets +0 -0
  817. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/praat.js +7 -0
  818. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/praat.snippets +0 -0
  819. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/prolog.js +7 -0
  820. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/prolog.snippets +0 -0
  821. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/properties.js +7 -0
  822. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/properties.snippets +0 -0
  823. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/protobuf.js +7 -0
  824. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/protobuf.snippets +0 -0
  825. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/python.js +7 -0
  826. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/python.snippets +158 -0
  827. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/r.js +7 -0
  828. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/r.snippets +121 -0
  829. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/rdoc.js +7 -0
  830. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/rdoc.snippets +0 -0
  831. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/rhtml.js +7 -0
  832. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/rhtml.snippets +0 -0
  833. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/rst.snippets +22 -0
  834. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ruby.js +7 -0
  835. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/ruby.snippets +928 -0
  836. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/rust.js +7 -0
  837. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/rust.snippets +0 -0
  838. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/sass.js +7 -0
  839. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/sass.snippets +0 -0
  840. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/scad.js +7 -0
  841. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/scad.snippets +0 -0
  842. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/scala.js +7 -0
  843. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/scala.snippets +0 -0
  844. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/scheme.js +7 -0
  845. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/scheme.snippets +0 -0
  846. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/scss.js +7 -0
  847. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/scss.snippets +0 -0
  848. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/sh.js +7 -0
  849. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/sh.snippets +83 -0
  850. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/sjs.js +7 -0
  851. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/sjs.snippets +0 -0
  852. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/smarty.js +7 -0
  853. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/smarty.snippets +0 -0
  854. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/snippets.js +7 -0
  855. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/snippets.snippets +9 -0
  856. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/soy_template.js +7 -0
  857. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/soy_template.snippets +0 -0
  858. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/space.js +7 -0
  859. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/space.snippets +0 -0
  860. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/sql.js +7 -0
  861. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/sql.snippets +26 -0
  862. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/stylus.js +7 -0
  863. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/stylus.snippets +0 -0
  864. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/svg.js +7 -0
  865. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/svg.snippets +0 -0
  866. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/tcl.js +7 -0
  867. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/tcl.snippets +92 -0
  868. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/tex.js +7 -0
  869. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/tex.snippets +191 -0
  870. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/text.js +7 -0
  871. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/text.snippets +0 -0
  872. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/textile.js +7 -0
  873. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/textile.snippets +30 -0
  874. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/tmsnippet.snippets +0 -0
  875. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/toml.js +7 -0
  876. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/toml.snippets +0 -0
  877. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/twig.js +7 -0
  878. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/twig.snippets +0 -0
  879. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/typescript.js +7 -0
  880. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/typescript.snippets +0 -0
  881. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/vala.js +195 -0
  882. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/vala.snippets +0 -0
  883. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/vbscript.js +7 -0
  884. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/vbscript.snippets +0 -0
  885. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/velocity.js +8 -0
  886. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/velocity.snippets +28 -0
  887. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/verilog.js +7 -0
  888. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/verilog.snippets +0 -0
  889. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/vhdl.js +7 -0
  890. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/vhdl.snippets +0 -0
  891. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/xml.js +7 -0
  892. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/xml.snippets +0 -0
  893. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/xquery.js +7 -0
  894. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/xquery.snippets +61 -0
  895. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/xslt.snippets +97 -0
  896. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/yaml.js +7 -0
  897. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets/yaml.snippets +0 -0
  898. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/snippets_test.js +131 -0
  899. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/split.js +373 -0
  900. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/all.js +35 -0
  901. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/all_browser.js +150 -0
  902. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/assertions.js +56 -0
  903. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/asyncjs/assert.js +313 -0
  904. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/asyncjs/async.js +529 -0
  905. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/asyncjs/index.js +13 -0
  906. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/asyncjs/test.js +195 -0
  907. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/asyncjs/utils.js +65 -0
  908. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/benchmark.js +78 -0
  909. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/mockdom.js +10 -0
  910. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/mockrenderer.js +208 -0
  911. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/test/tests.html +46 -0
  912. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/ambiance.css +221 -0
  913. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/ambiance.js +33 -0
  914. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/chaos.css +154 -0
  915. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/chaos.js +33 -0
  916. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/chrome.css +154 -0
  917. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/chrome.js +39 -0
  918. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/clouds.css +112 -0
  919. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/clouds.js +39 -0
  920. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/clouds_midnight.css +113 -0
  921. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/clouds_midnight.js +39 -0
  922. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/cobalt.css +134 -0
  923. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/cobalt.js +39 -0
  924. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/crimson_editor.css +143 -0
  925. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/crimson_editor.js +39 -0
  926. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/dawn.css +127 -0
  927. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/dawn.js +39 -0
  928. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/dreamweaver.css +176 -0
  929. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/dreamweaver.js +38 -0
  930. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/eclipse.css +113 -0
  931. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/eclipse.js +41 -0
  932. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/github.css +119 -0
  933. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/github.js +39 -0
  934. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/idle_fingers.css +113 -0
  935. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/idle_fingers.js +39 -0
  936. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/katzenmilch.css +140 -0
  937. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/katzenmilch.js +39 -0
  938. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/kr_theme.css +124 -0
  939. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/kr_theme.js +39 -0
  940. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/kuroir.css +67 -0
  941. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/kuroir.js +39 -0
  942. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/merbivore.css +110 -0
  943. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/merbivore.js +39 -0
  944. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/merbivore_soft.css +111 -0
  945. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/merbivore_soft.js +39 -0
  946. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/mono_industrial.css +126 -0
  947. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/mono_industrial.js +39 -0
  948. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/monokai.css +122 -0
  949. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/monokai.js +39 -0
  950. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/pastel_on_dark.css +129 -0
  951. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/pastel_on_dark.js +39 -0
  952. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/solarized_dark.css +101 -0
  953. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/solarized_dark.js +39 -0
  954. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/solarized_light.css +106 -0
  955. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/solarized_light.js +39 -0
  956. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/terminal.css +132 -0
  957. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/terminal.js +39 -0
  958. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/textmate.css +155 -0
  959. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/textmate.js +40 -0
  960. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow.css +125 -0
  961. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow.js +39 -0
  962. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night.css +125 -0
  963. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night.js +39 -0
  964. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_blue.css +122 -0
  965. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_blue.js +39 -0
  966. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_bright.css +141 -0
  967. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_bright.js +39 -0
  968. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_eighties.css +125 -0
  969. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_eighties.js +39 -0
  970. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/twilight.css +128 -0
  971. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/twilight.js +39 -0
  972. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/vibrant_ink.css +110 -0
  973. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/vibrant_ink.js +39 -0
  974. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/xcode.css +103 -0
  975. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/theme/xcode.js +39 -0
  976. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/token_iterator.js +150 -0
  977. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/token_iterator_test.js +212 -0
  978. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/tokenizer.js +362 -0
  979. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/tokenizer_dev.js +183 -0
  980. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/tokenizer_test.js +97 -0
  981. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/tooltip.js +138 -0
  982. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/undomanager.js +168 -0
  983. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/unicode.js +107 -0
  984. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/virtual_renderer.js +1764 -0
  985. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/virtual_renderer_test.js +86 -0
  986. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/worker/mirror.js +49 -0
  987. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/worker/worker.js +193 -0
  988. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/worker/worker_client.js +255 -0
  989. data/lib/gollum/public/gollum/livepreview/js/ace/lib/ace/worker/worker_test.js +125 -0
  990. data/lib/gollum/public/gollum/livepreview/js/jquery.ba-throttle-debounce.min.js +2 -0
  991. data/lib/gollum/public/gollum/livepreview/js/livepreview.js +530 -0
  992. data/lib/gollum/public/gollum/livepreview/js/md_sundown.js +22 -0
  993. data/lib/gollum/public/gollum/livepreview/js/requirejs.min.js +35 -0
  994. data/lib/gollum/public/gollum/livepreview/js/sundown.js +1 -0
  995. data/lib/gollum/public/gollum/livepreview/licenses/ace/LICENSE.txt +24 -0
  996. data/lib/gollum/public/gollum/livepreview/licenses/bootstraponline_gollum/LICENSE.txt +9 -0
  997. data/lib/gollum/public/gollum/livepreview/licenses/debounce/LICENSE-MIT.txt +22 -0
  998. data/lib/gollum/public/gollum/livepreview/licenses/gollum/LICENSE.txt +21 -0
  999. data/lib/gollum/public/gollum/livepreview/licenses/jquery/MIT-LICENSE.txt +20 -0
  1000. data/lib/gollum/public/gollum/livepreview/licenses/licenses.txt +69 -0
  1001. data/lib/gollum/public/gollum/livepreview/licenses/notepages/LICENSE.txt +19 -0
  1002. data/lib/gollum/public/gollum/livepreview/licenses/requirejs/LICENSE.txt +58 -0
  1003. data/lib/gollum/public/gollum/livepreview/licenses/retina_display_icon_set/by_sa_3.0_unported_legalcode.txt +359 -0
  1004. data/lib/gollum/public/gollum/livepreview/licenses/sizzle/LICENSE.txt +148 -0
  1005. data/lib/gollum/public/gollum/livepreview/licenses/sundown/sundown.txt +4 -0
  1006. data/lib/gollum/public/gollum/livepreview/licenses/templarian_windowsicons/license.txt +40 -0
  1007. data/lib/gollum/public/gollum/livepreview/readme.md +44 -0
  1008. data/lib/gollum/templates/compare.mustache +69 -0
  1009. data/lib/gollum/templates/create.mustache +14 -0
  1010. data/lib/gollum/templates/edit.mustache +12 -0
  1011. data/lib/gollum/templates/editor.mustache +136 -0
  1012. data/lib/gollum/templates/error.mustache +8 -0
  1013. data/lib/gollum/templates/file_view.mustache +34 -0
  1014. data/lib/gollum/templates/history.mustache +60 -0
  1015. data/lib/gollum/templates/history_authors/gravatar.mustache +5 -0
  1016. data/lib/gollum/templates/history_authors/identicon.mustache +5 -0
  1017. data/lib/gollum/templates/history_authors/none.mustache +3 -0
  1018. data/lib/gollum/templates/latest_changes.mustache +39 -0
  1019. data/lib/gollum/templates/layout.mustache +67 -0
  1020. data/lib/gollum/templates/livepreview.mustache +66 -0
  1021. data/lib/gollum/templates/page.mustache +100 -0
  1022. data/lib/gollum/templates/pages.mustache +42 -0
  1023. data/lib/gollum/templates/search.mustache +38 -0
  1024. data/lib/gollum/templates/searchbar.mustache +10 -0
  1025. data/lib/gollum/uri_encode_component.rb +212 -0
  1026. data/lib/gollum/views/compare.rb +94 -0
  1027. data/lib/gollum/views/create.rb +61 -0
  1028. data/lib/gollum/views/edit.rb +77 -0
  1029. data/lib/gollum/views/editable.rb +13 -0
  1030. data/lib/gollum/views/error.rb +7 -0
  1031. data/lib/gollum/views/file_view.rb +19 -0
  1032. data/lib/gollum/views/has_page.rb +15 -0
  1033. data/lib/gollum/views/history.rb +88 -0
  1034. data/lib/gollum/views/latest_changes.rb +90 -0
  1035. data/lib/gollum/views/layout.rb +45 -0
  1036. data/lib/gollum/views/livepreview.rb +13 -0
  1037. data/lib/gollum/views/page.rb +193 -0
  1038. data/lib/gollum/views/pages.rb +78 -0
  1039. data/lib/gollum/views/search.rb +20 -0
  1040. data/licenses/css_tree_menu_thecssninja/license.txt +50 -0
  1041. data/licenses/licenses.txt +52 -0
  1042. data/licenses/unity_asset_pool/COPYRIGHT +286 -0
  1043. metadata +1284 -0
@@ -0,0 +1,1989 @@
1
+ define(function(require, exports, module) {
2
+ /*global exports:true module:true require:true define:true global:true */
3
+
4
+ (function (root, name, factory) {
5
+ factory(exports)
6
+ }(this, 'luaparse', function (exports) {
7
+ 'use strict';
8
+
9
+ exports.version = '0.1.4';
10
+
11
+ var input, options, length;
12
+
13
+ // Options can be set either globally on the parser object through
14
+ // defaultOptions, or during the parse call.
15
+ var defaultOptions = exports.defaultOptions = {
16
+ // Explicitly tell the parser when the input ends.
17
+ wait: false
18
+ // Store comments as an array in the chunk object.
19
+ , comments: true
20
+ // Track identifier scopes by adding an isLocal attribute to each
21
+ // identifier-node.
22
+ , scope: false
23
+ // Store location information on each syntax node as
24
+ // `loc: { start: { line, column }, end: { line, column } }`.
25
+ , locations: false
26
+ // Store the start and end character locations on each syntax node as
27
+ // `range: [start, end]`.
28
+ , ranges: false
29
+ };
30
+
31
+ // The available tokens expressed as enum flags so they can be checked with
32
+ // bitwise operations.
33
+
34
+ var EOF = 1, StringLiteral = 2, Keyword = 4, Identifier = 8
35
+ , NumericLiteral = 16, Punctuator = 32, BooleanLiteral = 64
36
+ , NilLiteral = 128, VarargLiteral = 256;
37
+
38
+ exports.tokenTypes = { EOF: EOF, StringLiteral: StringLiteral
39
+ , Keyword: Keyword, Identifier: Identifier, NumericLiteral: NumericLiteral
40
+ , Punctuator: Punctuator, BooleanLiteral: BooleanLiteral
41
+ , NilLiteral: NilLiteral, VarargLiteral: VarargLiteral
42
+ };
43
+
44
+ // As this parser is a bit different from luas own, the error messages
45
+ // will be different in some situations.
46
+
47
+ var errors = exports.errors = {
48
+ unexpected: 'Unexpected %1 \'%2\' near \'%3\''
49
+ , expected: '\'%1\' expected near \'%2\''
50
+ , expectedToken: '%1 expected near \'%2\''
51
+ , unfinishedString: 'unfinished string near \'%1\''
52
+ , malformedNumber: 'malformed number near \'%1\''
53
+ };
54
+
55
+ // ### Abstract Syntax Tree
56
+ //
57
+ // The default AST structure is inspired by the Mozilla Parser API but can
58
+ // easily be customized by overriding these functions.
59
+
60
+ var ast = exports.ast = {
61
+ labelStatement: function(label) {
62
+ return {
63
+ type: 'LabelStatement'
64
+ , label: label
65
+ };
66
+ }
67
+
68
+ , breakStatement: function() {
69
+ return {
70
+ type: 'BreakStatement'
71
+ };
72
+ }
73
+
74
+ , gotoStatement: function(label) {
75
+ return {
76
+ type: 'GotoStatement'
77
+ , label: label
78
+ };
79
+ }
80
+
81
+ , returnStatement: function(args) {
82
+ return {
83
+ type: 'ReturnStatement'
84
+ , 'arguments': args
85
+ };
86
+ }
87
+
88
+ , ifStatement: function(clauses) {
89
+ return {
90
+ type: 'IfStatement'
91
+ , clauses: clauses
92
+ };
93
+ }
94
+ , ifClause: function(condition, body) {
95
+ return {
96
+ type: 'IfClause'
97
+ , condition: condition
98
+ , body: body
99
+ };
100
+ }
101
+ , elseifClause: function(condition, body) {
102
+ return {
103
+ type: 'ElseifClause'
104
+ , condition: condition
105
+ , body: body
106
+ };
107
+ }
108
+ , elseClause: function(body) {
109
+ return {
110
+ type: 'ElseClause'
111
+ , body: body
112
+ };
113
+ }
114
+
115
+ , whileStatement: function(condition, body) {
116
+ return {
117
+ type: 'WhileStatement'
118
+ , condition: condition
119
+ , body: body
120
+ };
121
+ }
122
+
123
+ , doStatement: function(body) {
124
+ return {
125
+ type: 'DoStatement'
126
+ , body: body
127
+ };
128
+ }
129
+
130
+ , repeatStatement: function(condition, body) {
131
+ return {
132
+ type: 'RepeatStatement'
133
+ , condition: condition
134
+ , body: body
135
+ };
136
+ }
137
+
138
+ , localStatement: function(variables, init) {
139
+ return {
140
+ type: 'LocalStatement'
141
+ , variables: variables
142
+ , init: init
143
+ };
144
+ }
145
+
146
+ , assignmentStatement: function(variables, init) {
147
+ return {
148
+ type: 'AssignmentStatement'
149
+ , variables: variables
150
+ , init: init
151
+ };
152
+ }
153
+
154
+ , callStatement: function(expression) {
155
+ return {
156
+ type: 'CallStatement'
157
+ , expression: expression
158
+ };
159
+ }
160
+
161
+ , functionStatement: function(identifier, parameters, isLocal, body) {
162
+ return {
163
+ type: 'FunctionDeclaration'
164
+ , identifier: identifier
165
+ , isLocal: isLocal
166
+ , parameters: parameters
167
+ , body: body
168
+ };
169
+ }
170
+
171
+ , forNumericStatement: function(variable, start, end, step, body) {
172
+ return {
173
+ type: 'ForNumericStatement'
174
+ , variable: variable
175
+ , start: start
176
+ , end: end
177
+ , step: step
178
+ , body: body
179
+ };
180
+ }
181
+
182
+ , forGenericStatement: function(variables, iterators, body) {
183
+ return {
184
+ type: 'ForGenericStatement'
185
+ , variables: variables
186
+ , iterators: iterators
187
+ , body: body
188
+ };
189
+ }
190
+
191
+ , chunk: function(body) {
192
+ return {
193
+ type: 'Chunk'
194
+ , body: body
195
+ };
196
+ }
197
+
198
+ , identifier: function(name) {
199
+ return {
200
+ type: 'Identifier'
201
+ , name: name
202
+ };
203
+ }
204
+
205
+ , literal: function(type, value, raw) {
206
+ type = (type === StringLiteral) ? 'StringLiteral'
207
+ : (type === NumericLiteral) ? 'NumericLiteral'
208
+ : (type === BooleanLiteral) ? 'BooleanLiteral'
209
+ : (type === NilLiteral) ? 'NilLiteral'
210
+ : 'VarargLiteral';
211
+
212
+ return {
213
+ type: type
214
+ , value: value
215
+ , raw: raw
216
+ };
217
+ }
218
+
219
+ , tableKey: function(key, value) {
220
+ return {
221
+ type: 'TableKey'
222
+ , key: key
223
+ , value: value
224
+ };
225
+ }
226
+ , tableKeyString: function(key, value) {
227
+ return {
228
+ type: 'TableKeyString'
229
+ , key: key
230
+ , value: value
231
+ };
232
+ }
233
+ , tableValue: function(value) {
234
+ return {
235
+ type: 'TableValue'
236
+ , value: value
237
+ };
238
+ }
239
+
240
+
241
+ , tableConstructorExpression: function(fields) {
242
+ return {
243
+ type: 'TableConstructorExpression'
244
+ , fields: fields
245
+ };
246
+ }
247
+ , binaryExpression: function(operator, left, right) {
248
+ var type = ('and' === operator || 'or' === operator) ?
249
+ 'LogicalExpression' :
250
+ 'BinaryExpression';
251
+
252
+ return {
253
+ type: type
254
+ , operator: operator
255
+ , left: left
256
+ , right: right
257
+ };
258
+ }
259
+ , unaryExpression: function(operator, argument) {
260
+ return {
261
+ type: 'UnaryExpression'
262
+ , operator: operator
263
+ , argument: argument
264
+ };
265
+ }
266
+ , memberExpression: function(base, indexer, identifier) {
267
+ return {
268
+ type: 'MemberExpression'
269
+ , indexer: indexer
270
+ , identifier: identifier
271
+ , base: base
272
+ };
273
+ }
274
+
275
+ , indexExpression: function(base, index) {
276
+ return {
277
+ type: 'IndexExpression'
278
+ , base: base
279
+ , index: index
280
+ };
281
+ }
282
+
283
+ , callExpression: function(base, args) {
284
+ return {
285
+ type: 'CallExpression'
286
+ , base: base
287
+ , 'arguments': args
288
+ };
289
+ }
290
+
291
+ , tableCallExpression: function(base, args) {
292
+ return {
293
+ type: 'TableCallExpression'
294
+ , base: base
295
+ , 'arguments': args
296
+ };
297
+ }
298
+
299
+ , stringCallExpression: function(base, argument) {
300
+ return {
301
+ type: 'StringCallExpression'
302
+ , base: base
303
+ , argument: argument
304
+ };
305
+ }
306
+
307
+ , comment: function(value, raw) {
308
+ return {
309
+ type: 'Comment'
310
+ , value: value
311
+ , raw: raw
312
+ };
313
+ }
314
+ };
315
+
316
+ // Wrap up the node object.
317
+
318
+ function finishNode(node) {
319
+ // Pop a `Marker` off the location-array and attach its location data.
320
+ if (trackLocations) {
321
+ var location = locations.pop();
322
+ location.complete();
323
+ if (options.locations) node.loc = location.loc;
324
+ if (options.ranges) node.range = location.range;
325
+ }
326
+ return node;
327
+ }
328
+
329
+
330
+
331
+ // Helpers
332
+ // -------
333
+
334
+ var slice = Array.prototype.slice
335
+ , toString = Object.prototype.toString
336
+ , indexOf = function indexOf(array, element) {
337
+ for (var i = 0, length = array.length; i < length; i++) {
338
+ if (array[i] === element) return i;
339
+ }
340
+ return -1;
341
+ };
342
+
343
+ // Iterate through an array of objects and return the index of an object
344
+ // with a matching property.
345
+
346
+ function indexOfObject(array, property, element) {
347
+ for (var i = 0, length = array.length; i < length; i++) {
348
+ if (array[i][property] === element) return i;
349
+ }
350
+ return -1;
351
+ }
352
+
353
+ // A sprintf implementation using %index (beginning at 1) to input
354
+ // arguments in the format string.
355
+ //
356
+ // Example:
357
+ //
358
+ // // Unexpected function in token
359
+ // sprintf('Unexpected %2 in %1.', 'token', 'function');
360
+
361
+ function sprintf(format) {
362
+ var args = slice.call(arguments, 1);
363
+ format = format.replace(/%(\d)/g, function (match, index) {
364
+ return '' + args[index - 1] || '';
365
+ });
366
+ return format;
367
+ }
368
+
369
+ // Returns a new object with the properties from all objectes passed as
370
+ // arguments. Last argument takes precedence.
371
+ //
372
+ // Example:
373
+ //
374
+ // this.options = extend(options, { output: false });
375
+
376
+ function extend() {
377
+ var args = slice.call(arguments)
378
+ , dest = {}
379
+ , src, prop;
380
+
381
+ for (var i = 0, length = args.length; i < length; i++) {
382
+ src = args[i];
383
+ for (prop in src) if (src.hasOwnProperty(prop)) {
384
+ dest[prop] = src[prop];
385
+ }
386
+ }
387
+ return dest;
388
+ }
389
+
390
+ // ### Error functions
391
+
392
+ // #### Raise an exception.
393
+ //
394
+ // Raise an exception by passing a token, a string format and its paramters.
395
+ //
396
+ // The passed tokens location will automatically be added to the error
397
+ // message if it exists, if not it will default to the lexers current
398
+ // position.
399
+ //
400
+ // Example:
401
+ //
402
+ // // [1:0] expected [ near (
403
+ // raise(token, "expected %1 near %2", '[', token.value);
404
+
405
+ function raise(token) {
406
+ var message = sprintf.apply(null, slice.call(arguments, 1))
407
+ , error, col;
408
+
409
+ if ('undefined' !== typeof token.line) {
410
+ col = token.range[0] - token.lineStart;
411
+ error = new SyntaxError(sprintf('[%1:%2] %3', token.line, col, message));
412
+ error.line = token.line;
413
+ error.index = token.range[0];
414
+ error.column = col;
415
+ } else {
416
+ col = index - lineStart + 1;
417
+ error = new SyntaxError(sprintf('[%1:%2] %3', line, col, message));
418
+ error.index = index;
419
+ error.line = line;
420
+ error.column = col;
421
+ }
422
+ throw error;
423
+ }
424
+
425
+ // #### Raise an unexpected token error.
426
+ //
427
+ // Example:
428
+ //
429
+ // // expected <name> near '0'
430
+ // raiseUnexpectedToken('<name>', token);
431
+
432
+ function raiseUnexpectedToken(type, token) {
433
+ raise(token, errors.expectedToken, type, token.value);
434
+ }
435
+
436
+ // #### Raise a general unexpected error
437
+ //
438
+ // Usage should pass either a token object or a symbol string which was
439
+ // expected. We can also specify a nearby token such as <eof>, this will
440
+ // default to the currently active token.
441
+ //
442
+ // Example:
443
+ //
444
+ // // Unexpected symbol 'end' near '<eof>'
445
+ // unexpected(token);
446
+ //
447
+ // If there's no token in the buffer it means we have reached <eof>.
448
+
449
+ function unexpected(found, near) {
450
+ if ('undefined' === typeof near) near = lookahead.value;
451
+ if ('undefined' !== typeof found.type) {
452
+ var type;
453
+ switch (found.type) {
454
+ case StringLiteral: type = 'string'; break;
455
+ case Keyword: type = 'keyword'; break;
456
+ case Identifier: type = 'identifier'; break;
457
+ case NumericLiteral: type = 'number'; break;
458
+ case Punctuator: type = 'symbol'; break;
459
+ case BooleanLiteral: type = 'boolean'; break;
460
+ case NilLiteral:
461
+ return raise(found, errors.unexpected, 'symbol', 'nil', near);
462
+ }
463
+ return raise(found, errors.unexpected, type, found.value, near);
464
+ }
465
+ return raise(found, errors.unexpected, 'symbol', found, near);
466
+ }
467
+
468
+ // Lexer
469
+ // -----
470
+ //
471
+ // The lexer, or the tokenizer reads the input string character by character
472
+ // and derives a token left-right. To be as efficient as possible the lexer
473
+ // prioritizes the common cases such as identifiers. It also works with
474
+ // character codes instead of characters as string comparisons was the
475
+ // biggest bottleneck of the parser.
476
+ //
477
+ // If `options.comments` is enabled, all comments encountered will be stored
478
+ // in an array which later will be appended to the chunk object. If disabled,
479
+ // they will simply be disregarded.
480
+ //
481
+ // When the lexer has derived a valid token, it will be returned as an object
482
+ // containing its value and as well as its position in the input string (this
483
+ // is always enabled to provide proper debug messages).
484
+ //
485
+ // `lex()` starts lexing and returns the following token in the stream.
486
+
487
+ var index
488
+ , token
489
+ , previousToken
490
+ , lookahead
491
+ , comments
492
+ , tokenStart
493
+ , line
494
+ , lineStart;
495
+
496
+ exports.lex = lex;
497
+
498
+ function lex() {
499
+ skipWhiteSpace();
500
+
501
+ // Skip comments beginning with --
502
+ while (45 === input.charCodeAt(index) &&
503
+ 45 === input.charCodeAt(index + 1)) {
504
+ scanComment();
505
+ skipWhiteSpace();
506
+ }
507
+ if (index >= length) return {
508
+ type : EOF
509
+ , value: '<eof>'
510
+ , line: line
511
+ , lineStart: lineStart
512
+ , range: [index, index]
513
+ };
514
+
515
+ var charCode = input.charCodeAt(index)
516
+ , next = input.charCodeAt(index + 1);
517
+
518
+ // Memorize the range index where the token begins.
519
+ tokenStart = index;
520
+ if (isIdentifierStart(charCode)) return scanIdentifierOrKeyword();
521
+
522
+ switch (charCode) {
523
+ case 39: case 34: // '"
524
+ return scanStringLiteral();
525
+
526
+ // 0-9
527
+ case 48: case 49: case 50: case 51: case 52: case 53:
528
+ case 54: case 55: case 56: case 57:
529
+ return scanNumericLiteral();
530
+
531
+ case 46: // .
532
+ // If the dot is followed by a digit it's a float.
533
+ if (isDecDigit(next)) return scanNumericLiteral();
534
+ if (46 === next) {
535
+ if (46 === input.charCodeAt(index + 2)) return scanVarargLiteral();
536
+ return scanPunctuator('..');
537
+ }
538
+ return scanPunctuator('.');
539
+
540
+ case 61: // =
541
+ if (61 === next) return scanPunctuator('==');
542
+ return scanPunctuator('=');
543
+
544
+ case 62: // >
545
+ if (61 === next) return scanPunctuator('>=');
546
+ return scanPunctuator('>');
547
+
548
+ case 60: // <
549
+ if (61 === next) return scanPunctuator('<=');
550
+ return scanPunctuator('<');
551
+
552
+ case 126: // ~
553
+ if (61 === next) return scanPunctuator('~=');
554
+ return raise({}, errors.expected, '=', '~');
555
+
556
+ case 58: // :
557
+ if (58 === next) return scanPunctuator('::');
558
+ return scanPunctuator(':');
559
+
560
+ case 91: // [
561
+ // Check for a multiline string, they begin with [= or [[
562
+ if (91 === next || 61 === next) return scanLongStringLiteral();
563
+ return scanPunctuator('[');
564
+
565
+ // \* / ^ % , { } ] ( ) ; # - +
566
+ case 42: case 47: case 94: case 37: case 44: case 123: case 125:
567
+ case 93: case 40: case 41: case 59: case 35: case 45: case 43:
568
+ return scanPunctuator(input.charAt(index));
569
+ }
570
+
571
+ return unexpected(input.charAt(index));
572
+ }
573
+
574
+ // Whitespace has no semantic meaning in lua so simply skip ahead while
575
+ // tracking the encounted newlines. Newlines are also tracked in all
576
+ // token functions where multiline values are allowed.
577
+
578
+ function skipWhiteSpace() {
579
+ while (index < length) {
580
+ var charCode = input.charCodeAt(index);
581
+ if (isWhiteSpace(charCode)) {
582
+ index++;
583
+ } else if (isLineTerminator(charCode)) {
584
+ line++;
585
+ lineStart = ++index;
586
+ } else {
587
+ break;
588
+ }
589
+ }
590
+ }
591
+
592
+ // Identifiers, keywords, booleans and nil all look the same syntax wise. We
593
+ // simply go through them one by one and defaulting to an identifier if no
594
+ // previous case matched.
595
+
596
+ function scanIdentifierOrKeyword() {
597
+ var value, type;
598
+
599
+ // Slicing the input string is prefered before string concatenation in a
600
+ // loop for performance reasons.
601
+ while (isIdentifierPart(input.charCodeAt(++index)));
602
+ value = input.slice(tokenStart, index);
603
+
604
+ // Decide on the token type and possibly cast the value.
605
+ if (isKeyword(value)) {
606
+ type = Keyword;
607
+ } else if ('true' === value || 'false' === value) {
608
+ type = BooleanLiteral;
609
+ value = ('true' === value);
610
+ } else if ('nil' === value) {
611
+ type = NilLiteral;
612
+ value = null;
613
+ } else {
614
+ type = Identifier;
615
+ }
616
+
617
+ return {
618
+ type: type
619
+ , value: value
620
+ , line: line
621
+ , lineStart: lineStart
622
+ , range: [tokenStart, index]
623
+ };
624
+ }
625
+
626
+ // Once a punctuator reaches this function it should already have been
627
+ // validated so we simply return it as a token.
628
+
629
+ function scanPunctuator(value) {
630
+ index += value.length;
631
+ return {
632
+ type: Punctuator
633
+ , value: value
634
+ , line: line
635
+ , lineStart: lineStart
636
+ , range: [tokenStart, index]
637
+ };
638
+ }
639
+
640
+ // A vararg literal consists of three dots.
641
+
642
+ function scanVarargLiteral() {
643
+ index += 3;
644
+ return {
645
+ type: VarargLiteral
646
+ , value: '...'
647
+ , line: line
648
+ , lineStart: lineStart
649
+ , range: [tokenStart, index]
650
+ };
651
+ }
652
+
653
+ // Find the string literal by matching the delimiter marks used.
654
+
655
+ function scanStringLiteral() {
656
+ var delimiter = input.charCodeAt(index++)
657
+ , stringStart = index
658
+ , string = ''
659
+ , charCode;
660
+
661
+ while (index < length) {
662
+ charCode = input.charCodeAt(index++);
663
+ if (delimiter === charCode) break;
664
+ if (92 === charCode) { // \
665
+ string += input.slice(stringStart, index - 1) + readEscapeSequence();
666
+ stringStart = index;
667
+ }
668
+ // EOF or `\n` terminates a string literal. If we haven't found the
669
+ // ending delimiter by now, raise an exception.
670
+ else if (index >= length || isLineTerminator(charCode)) {
671
+ string += input.slice(stringStart, index - 1);
672
+ raise({}, errors.unfinishedString, string + String.fromCharCode(charCode));
673
+ }
674
+ }
675
+ string += input.slice(stringStart, index - 1);
676
+
677
+ return {
678
+ type: StringLiteral
679
+ , value: string
680
+ , line: line
681
+ , lineStart: lineStart
682
+ , range: [tokenStart, index]
683
+ };
684
+ }
685
+
686
+ // Expect a multiline string literal and return it as a regular string
687
+ // literal, if it doesn't validate into a valid multiline string, throw an
688
+ // exception.
689
+
690
+ function scanLongStringLiteral() {
691
+ var string = readLongString();
692
+ // Fail if it's not a multiline literal.
693
+ if (false === string) raise(token, errors.expected, '[', token.value);
694
+
695
+ return {
696
+ type: StringLiteral
697
+ , value: string
698
+ , line: line
699
+ , lineStart: lineStart
700
+ , range: [tokenStart, index]
701
+ };
702
+ }
703
+
704
+ // Numeric literals will be returned as floating-point numbers instead of
705
+ // strings. The raw value should be retrieved from slicing the input string
706
+ // later on in the process.
707
+ //
708
+ // If a hexadecimal number is encountered, it will be converted.
709
+
710
+ function scanNumericLiteral() {
711
+ var character = input.charAt(index)
712
+ , next = input.charAt(index + 1);
713
+
714
+ var value = ('0' === character && 'xX'.indexOf(next || null) >= 0) ?
715
+ readHexLiteral() : readDecLiteral();
716
+
717
+ return {
718
+ type: NumericLiteral
719
+ , value: value
720
+ , line: line
721
+ , lineStart: lineStart
722
+ , range: [tokenStart, index]
723
+ };
724
+ }
725
+
726
+ // Lua hexadecimals have an optional fraction part and an optional binary
727
+ // exoponent part. These are not included in JavaScript so we will compute
728
+ // all three parts separately and then sum them up at the end of the function
729
+ // with the following algorithm.
730
+ //
731
+ // Digit := toDec(digit)
732
+ // Fraction := toDec(fraction) / 16 ^ fractionCount
733
+ // BinaryExp := 2 ^ binaryExp
734
+ // Number := ( Digit + Fraction ) * BinaryExp
735
+
736
+ function readHexLiteral() {
737
+ var fraction = 0 // defaults to 0 as it gets summed
738
+ , binaryExponent = 1 // defaults to 1 as it gets multiplied
739
+ , binarySign = 1 // positive
740
+ , digit, fractionStart, exponentStart, digitStart;
741
+
742
+ digitStart = index += 2; // Skip 0x part
743
+
744
+ // A minimum of one hex digit is required.
745
+ if (!isHexDigit(input.charCodeAt(index)))
746
+ raise({}, errors.malformedNumber, input.slice(tokenStart, index));
747
+
748
+ while (isHexDigit(input.charCodeAt(index))) index++;
749
+ // Convert the hexadecimal digit to base 10.
750
+ digit = parseInt(input.slice(digitStart, index), 16);
751
+
752
+ // Fraction part i optional.
753
+ if ('.' === input.charAt(index)) {
754
+ fractionStart = ++index;
755
+
756
+ while (isHexDigit(input.charCodeAt(index))) index++;
757
+ fraction = input.slice(fractionStart, index);
758
+
759
+ // Empty fraction parts should default to 0, others should be converted
760
+ // 0.x form so we can use summation at the end.
761
+ fraction = (fractionStart === index) ? 0
762
+ : parseInt(fraction, 16) / Math.pow(16, index - fractionStart);
763
+ }
764
+
765
+ // Binary exponents are optional
766
+ if ('pP'.indexOf(input.charAt(index) || null) >= 0) {
767
+ index++;
768
+
769
+ // Sign part is optional and defaults to 1 (positive).
770
+ if ('+-'.indexOf(input.charAt(index) || null) >= 0)
771
+ binarySign = ('+' === input.charAt(index++)) ? 1 : -1;
772
+
773
+ exponentStart = index;
774
+
775
+ // The binary exponent sign requires a decimal digit.
776
+ if (!isDecDigit(input.charCodeAt(index)))
777
+ raise({}, errors.malformedNumber, input.slice(tokenStart, index));
778
+
779
+ while (isDecDigit(input.charCodeAt(index))) index++;
780
+ binaryExponent = input.slice(exponentStart, index);
781
+
782
+ // Calculate the binary exponent of the number.
783
+ binaryExponent = Math.pow(2, binaryExponent * binarySign);
784
+ }
785
+
786
+ return (digit + fraction) * binaryExponent;
787
+ }
788
+
789
+ // Decimal numbers are exactly the same in Lua and in JavaScript, because of
790
+ // this we check where the token ends and then parse it with native
791
+ // functions.
792
+
793
+ function readDecLiteral() {
794
+ while (isDecDigit(input.charCodeAt(index))) index++;
795
+ // Fraction part is optional
796
+ if ('.' === input.charAt(index)) {
797
+ index++;
798
+ // Fraction part defaults to 0
799
+ while (isDecDigit(input.charCodeAt(index))) index++;
800
+ }
801
+ // Exponent part is optional.
802
+ if ('eE'.indexOf(input.charAt(index) || null) >= 0) {
803
+ index++;
804
+ // Sign part is optional.
805
+ if ('+-'.indexOf(input.charAt(index) || null) >= 0) index++;
806
+ // An exponent is required to contain at least one decimal digit.
807
+ if (!isDecDigit(input.charCodeAt(index)))
808
+ raise({}, errors.malformedNumber, input.slice(tokenStart, index));
809
+
810
+ while (isDecDigit(input.charCodeAt(index))) index++;
811
+ }
812
+
813
+ return parseFloat(input.slice(tokenStart, index));
814
+ }
815
+
816
+
817
+ // Translate escape sequences to the actual characters.
818
+
819
+ function readEscapeSequence() {
820
+ var sequenceStart = index;
821
+ switch (input.charAt(index)) {
822
+ // Lua allow the following escape sequences.
823
+ // We don't escape the bell sequence.
824
+ case 'n': index++; return '\n';
825
+ case 'r': index++; return '\r';
826
+ case 't': index++; return '\t';
827
+ case 'v': index++; return '\x0B';
828
+ case 'b': index++; return '\b';
829
+ case 'f': index++; return '\f';
830
+ // Skips the following span of white-space.
831
+ case 'z': index++; skipWhiteSpace(); return '';
832
+ // Byte representation should for now be returned as is.
833
+ case 'x':
834
+ // \xXX, where XX is a sequence of exactly two hexadecimal digits
835
+ if (isHexDigit(input.charCodeAt(index + 1)) &&
836
+ isHexDigit(input.charCodeAt(index + 2))) {
837
+ index += 3;
838
+ // Return it as is, without translating the byte.
839
+ return '\\' + input.slice(sequenceStart, index);
840
+ }
841
+ return '\\' + input.charAt(index++);
842
+ default:
843
+ // \ddd, where ddd is a sequence of up to three decimal digits.
844
+ if (isDecDigit(input.charCodeAt(index))) {
845
+ while (isDecDigit(input.charCodeAt(++index)));
846
+ return '\\' + input.slice(sequenceStart, index);
847
+ }
848
+ // Simply return the \ as is, it's not escaping any sequence.
849
+ return input.charAt(index++);
850
+ }
851
+ }
852
+
853
+ // Comments begin with -- after which it will be decided if they are
854
+ // multiline comments or not.
855
+ //
856
+ // The multiline functionality works the exact same way as with string
857
+ // literals so we reuse the functionality.
858
+
859
+ function scanComment() {
860
+ tokenStart = index;
861
+ index += 2; // --
862
+
863
+ var character = input.charAt(index)
864
+ , content = ''
865
+ , isLong = false
866
+ , commentStart = index
867
+ , lineStartComment = lineStart
868
+ , lineComment = line;
869
+
870
+ if ('[' === character) {
871
+ content = readLongString();
872
+ // This wasn't a multiline comment after all.
873
+ if (false === content) content = character;
874
+ else isLong = true;
875
+ }
876
+ // Scan until next line as long as it's not a multiline comment.
877
+ if (!isLong) {
878
+ while (index < length) {
879
+ if (isLineTerminator(input.charCodeAt(index))) break;
880
+ index++;
881
+ }
882
+ if (options.comments) content = input.slice(commentStart, index);
883
+ }
884
+
885
+ if (options.comments) {
886
+ var node = ast.comment(content, input.slice(tokenStart, index));
887
+
888
+ // `Marker`s depend on tokens available in the parser and as comments are
889
+ // intercepted in the lexer all location data is set manually.
890
+ if (options.locations) {
891
+ node.loc = {
892
+ start: { line: lineComment, column: tokenStart - lineStartComment }
893
+ , end: { line: line, column: index - lineStart }
894
+ };
895
+ }
896
+ if (options.ranges) {
897
+ node.range = [tokenStart, index];
898
+ }
899
+ comments.push(node);
900
+ }
901
+ }
902
+
903
+ // Read a multiline string by calculating the depth of `=` characters and
904
+ // then appending until an equal depth is found.
905
+
906
+ function readLongString() {
907
+ var level = 0
908
+ , content = ''
909
+ , terminator = false
910
+ , character, stringStart;
911
+
912
+ index++; // [
913
+
914
+ // Calculate the depth of the comment.
915
+ while ('=' === input.charAt(index + level)) level++;
916
+ // Exit, this is not a long string afterall.
917
+ if ('[' !== input.charAt(index + level)) return false;
918
+
919
+ index += level + 1;
920
+
921
+ // If the first character is a newline, ignore it and begin on next line.
922
+ if (isLineTerminator(input.charCodeAt(index))) {
923
+ line++;
924
+ lineStart = index++;
925
+ }
926
+
927
+ stringStart = index;
928
+ while (index < length) {
929
+ character = input.charAt(index++);
930
+
931
+ // We have to keep track of newlines as `skipWhiteSpace()` does not get
932
+ // to scan this part.
933
+ if (isLineTerminator(character.charCodeAt(0))) {
934
+ line++;
935
+ lineStart = index;
936
+ }
937
+
938
+ // Once the delimiter is found, iterate through the depth count and see
939
+ // if it matches.
940
+ if (']' === character) {
941
+ terminator = true;
942
+ for (var i = 0; i < level; i++) {
943
+ if ('=' !== input.charAt(index + i)) terminator = false;
944
+ }
945
+ if (']' !== input.charAt(index + level)) terminator = false;
946
+ }
947
+
948
+ // We reached the end of the multiline string. Get out now.
949
+ if (terminator) break;
950
+ }
951
+ content += input.slice(stringStart, index - 1);
952
+ index += level + 1;
953
+
954
+ return content;
955
+ }
956
+
957
+ // ## Lex functions and helpers.
958
+
959
+ // Read the next token.
960
+ //
961
+ // This is actually done by setting the current token to the lookahead and
962
+ // reading in the new lookahead token.
963
+
964
+ function next() {
965
+ previousToken = token;
966
+ token = lookahead;
967
+ lookahead = lex();
968
+ }
969
+
970
+ // Consume a token if its value matches. Once consumed or not, return the
971
+ // success of the operation.
972
+
973
+ function consume(value) {
974
+ if (value === token.value) {
975
+ next();
976
+ return true;
977
+ }
978
+ return false;
979
+ }
980
+
981
+ // Expect the next token value to match. If not, throw an exception.
982
+
983
+ function expect(value) {
984
+ if (value === token.value) next();
985
+ else raise(token, errors.expected, value, token.value);
986
+ }
987
+
988
+ // ### Validation functions
989
+
990
+ function isWhiteSpace(charCode) {
991
+ return 9 === charCode || 32 === charCode || 0xB === charCode || 0xC === charCode;
992
+ }
993
+
994
+ function isLineTerminator(charCode) {
995
+ return 10 === charCode || 13 === charCode;
996
+ }
997
+
998
+ function isDecDigit(charCode) {
999
+ return charCode >= 48 && charCode <= 57;
1000
+ }
1001
+
1002
+ function isHexDigit(charCode) {
1003
+ return (charCode >= 48 && charCode <= 57) || (charCode >= 97 && charCode <= 102) || (charCode >= 65 && charCode <= 70);
1004
+ }
1005
+
1006
+ // From [Lua 5.2](http://www.lua.org/manual/5.2/manual.html#8.1) onwards
1007
+ // identifiers cannot use locale-dependet letters.
1008
+
1009
+ function isIdentifierStart(charCode) {
1010
+ return (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || 95 === charCode;
1011
+ }
1012
+
1013
+ function isIdentifierPart(charCode) {
1014
+ return (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || 95 === charCode || (charCode >= 48 && charCode <= 57);
1015
+ }
1016
+
1017
+ // [3.1 Lexical Conventions](http://www.lua.org/manual/5.2/manual.html#3.1)
1018
+ //
1019
+ // `true`, `false` and `nil` will not be considered keywords, but literals.
1020
+
1021
+ function isKeyword(id) {
1022
+ switch (id.length) {
1023
+ case 2:
1024
+ return 'do' === id || 'if' === id || 'in' === id || 'or' === id;
1025
+ case 3:
1026
+ return 'and' === id || 'end' === id || 'for' === id || 'not' === id;
1027
+ case 4:
1028
+ return 'else' === id || 'goto' === id || 'then' === id;
1029
+ case 5:
1030
+ return 'break' === id || 'local' === id || 'until' === id || 'while' === id;
1031
+ case 6:
1032
+ return 'elseif' === id || 'repeat' === id || 'return' === id;
1033
+ case 8:
1034
+ return 'function' === id;
1035
+ }
1036
+ return false;
1037
+ }
1038
+
1039
+ function isUnary(token) {
1040
+ if (Punctuator === token.type) return '#-'.indexOf(token.value) >= 0;
1041
+ if (Keyword === token.type) return 'not' === token.value;
1042
+ return false;
1043
+ }
1044
+
1045
+ // @TODO this needs to be rethought.
1046
+ function isCallExpression(expression) {
1047
+ switch (expression.type) {
1048
+ case 'CallExpression':
1049
+ case 'TableCallExpression':
1050
+ case 'StringCallExpression':
1051
+ return true;
1052
+ }
1053
+ return false;
1054
+ }
1055
+
1056
+ // Check if the token syntactically closes a block.
1057
+
1058
+ function isBlockFollow(token) {
1059
+ if (EOF === token.type) return true;
1060
+ if (Keyword !== token.type) return false;
1061
+ switch (token.value) {
1062
+ case 'else': case 'elseif':
1063
+ case 'end': case 'until':
1064
+ return true;
1065
+ default:
1066
+ return false;
1067
+ }
1068
+ }
1069
+
1070
+ // Scope
1071
+ // -----
1072
+
1073
+ // Store each block scope as a an array of identifier names. Each scope is
1074
+ // stored in an FILO-array.
1075
+ var scopes
1076
+ // The current scope index
1077
+ , scopeDepth
1078
+ // A list of all global identifier nodes.
1079
+ , globals;
1080
+
1081
+ // Create a new scope inheriting all declarations from the previous scope.
1082
+ function createScope() {
1083
+ scopes.push(Array.apply(null, scopes[scopeDepth++]));
1084
+ }
1085
+
1086
+ // Exit and remove the current scope.
1087
+ function exitScope() {
1088
+ scopes.pop();
1089
+ scopeDepth--;
1090
+ }
1091
+
1092
+ // Add identifier name to the current scope if it doesnt already exist.
1093
+ function scopeIdentifierName(name) {
1094
+ if (-1 !== indexOf(scopes[scopeDepth], name)) return;
1095
+ scopes[scopeDepth].push(name);
1096
+ }
1097
+
1098
+ // Add identifier to the current scope
1099
+ function scopeIdentifier(node) {
1100
+ scopeIdentifierName(node.name);
1101
+ attachScope(node, true);
1102
+ }
1103
+
1104
+ // Attach scope information to node. If the node is global, store it in the
1105
+ // globals array so we can return the information to the user.
1106
+ function attachScope(node, isLocal) {
1107
+ if (!isLocal && -1 === indexOfObject(globals, 'name', node.name))
1108
+ globals.push(node);
1109
+
1110
+ node.isLocal = isLocal;
1111
+ }
1112
+
1113
+ // Is the identifier name available in this scope.
1114
+ function scopeHasName(name) {
1115
+ return (-1 !== indexOf(scopes[scopeDepth], name));
1116
+ }
1117
+
1118
+ // Location tracking
1119
+ // -----------------
1120
+ //
1121
+ // Locations are stored in FILO-array as a `Marker` object consisting of both
1122
+ // `loc` and `range` data. Once a `Marker` is popped off the list an end
1123
+ // location is added and the data is attached to a syntax node.
1124
+
1125
+ var locations = []
1126
+ , trackLocations;
1127
+
1128
+ function createLocationMarker() {
1129
+ return new Marker(token);
1130
+ }
1131
+
1132
+ function Marker(token) {
1133
+ if (options.locations) {
1134
+ this.loc = {
1135
+ start: {
1136
+ line: token.line
1137
+ , column: token.range[0] - token.lineStart
1138
+ }
1139
+ , end: {
1140
+ line: 0
1141
+ , column: 0
1142
+ }
1143
+ };
1144
+ }
1145
+ if (options.ranges) this.range = [token.range[0], 0];
1146
+ }
1147
+
1148
+ // Complete the location data stored in the `Marker` by adding the location
1149
+ // of the *previous token* as an end location.
1150
+ Marker.prototype.complete = function() {
1151
+ if (options.locations) {
1152
+ this.loc.end.line = previousToken.line;
1153
+ this.loc.end.column = previousToken.range[1] - previousToken.lineStart;
1154
+ }
1155
+ if (options.ranges) {
1156
+ this.range[1] = previousToken.range[1];
1157
+ }
1158
+ };
1159
+
1160
+ // Create a new `Marker` and add it to the FILO-array.
1161
+ function markLocation() {
1162
+ if (trackLocations) locations.push(createLocationMarker());
1163
+ }
1164
+
1165
+ // Push an arbitrary `Marker` object onto the FILO-array.
1166
+ function pushLocation(marker) {
1167
+ if (trackLocations) locations.push(marker);
1168
+ }
1169
+
1170
+ // Parse functions
1171
+ // ---------------
1172
+
1173
+ // Chunk is the main program object. Syntactically it's the same as a block.
1174
+ //
1175
+ // chunk ::= block
1176
+
1177
+ function parseChunk() {
1178
+ next();
1179
+ markLocation();
1180
+ var body = parseBlock();
1181
+ if (EOF !== token.type) unexpected(token);
1182
+ // If the body is empty no previousToken exists when finishNode runs.
1183
+ if (trackLocations && !body.length) previousToken = token;
1184
+ return finishNode(ast.chunk(body));
1185
+ }
1186
+
1187
+ // A block contains a list of statements with an optional return statement
1188
+ // as its last statement.
1189
+ //
1190
+ // block ::= {stat} [retstat]
1191
+
1192
+ function parseBlock(terminator) {
1193
+ var block = []
1194
+ , statement;
1195
+
1196
+ // Each block creates a new scope.
1197
+ if (options.scope) createScope();
1198
+
1199
+ while (!isBlockFollow(token)) {
1200
+ // Return has to be the last statement in a block.
1201
+ if ('return' === token.value) {
1202
+ block.push(parseStatement());
1203
+ break;
1204
+ }
1205
+ statement = parseStatement();
1206
+ // Statements are only added if they are returned, this allows us to
1207
+ // ignore some statements, such as EmptyStatement.
1208
+ if (statement) block.push(statement);
1209
+ }
1210
+
1211
+ if (options.scope) exitScope();
1212
+ // Doesn't really need an ast node
1213
+ return block;
1214
+ }
1215
+
1216
+ // There are two types of statements, simple and compound.
1217
+ //
1218
+ // statement ::= break | goto | do | while | repeat | return
1219
+ // | if | for | function | local | label | assignment
1220
+ // | functioncall | ';'
1221
+
1222
+ function parseStatement() {
1223
+ markLocation();
1224
+ if (Keyword === token.type) {
1225
+ switch (token.value) {
1226
+ case 'local': next(); return parseLocalStatement();
1227
+ case 'if': next(); return parseIfStatement();
1228
+ case 'return': next(); return parseReturnStatement();
1229
+ case 'function': next();
1230
+ var name = parseFunctionName();
1231
+ return parseFunctionDeclaration(name);
1232
+ case 'while': next(); return parseWhileStatement();
1233
+ case 'for': next(); return parseForStatement();
1234
+ case 'repeat': next(); return parseRepeatStatement();
1235
+ case 'break': next(); return parseBreakStatement();
1236
+ case 'do': next(); return parseDoStatement();
1237
+ case 'goto': next(); return parseGotoStatement();
1238
+ }
1239
+ }
1240
+
1241
+ if (Punctuator === token.type) {
1242
+ if (consume('::')) return parseLabelStatement();
1243
+ }
1244
+ // Assignments memorizes the location and pushes it manually for wrapper
1245
+ // nodes. Additionally empty `;` statements should not mark a location.
1246
+ if (trackLocations) locations.pop();
1247
+
1248
+ // When a `;` is encounted, simply eat it without storing it.
1249
+ if (consume(';')) return;
1250
+
1251
+ return parseAssignmentOrCallStatement();
1252
+ }
1253
+
1254
+ // ## Statements
1255
+
1256
+ // label ::= '::' Name '::'
1257
+
1258
+ function parseLabelStatement() {
1259
+ var name = token.value
1260
+ , label = parseIdentifier();
1261
+
1262
+ if (options.scope) {
1263
+ scopeIdentifierName('::' + name + '::');
1264
+ attachScope(label, true);
1265
+ }
1266
+
1267
+ expect('::');
1268
+ return finishNode(ast.labelStatement(label));
1269
+ }
1270
+
1271
+ // break ::= 'break'
1272
+
1273
+ function parseBreakStatement() {
1274
+ return finishNode(ast.breakStatement());
1275
+ }
1276
+
1277
+ // goto ::= 'goto' Name
1278
+
1279
+ function parseGotoStatement() {
1280
+ var name = token.value
1281
+ , label = parseIdentifier();
1282
+
1283
+ if (options.scope) label.isLabel = scopeHasName('::' + name + '::');
1284
+ return finishNode(ast.gotoStatement(label));
1285
+ }
1286
+
1287
+ // do ::= 'do' block 'end'
1288
+
1289
+ function parseDoStatement() {
1290
+ var body = parseBlock();
1291
+ expect('end');
1292
+ return finishNode(ast.doStatement(body));
1293
+ }
1294
+
1295
+ // while ::= 'while' exp 'do' block 'end'
1296
+
1297
+ function parseWhileStatement() {
1298
+ var condition = parseExpectedExpression();
1299
+ expect('do');
1300
+ var body = parseBlock();
1301
+ expect('end');
1302
+ return finishNode(ast.whileStatement(condition, body));
1303
+ }
1304
+
1305
+ // repeat ::= 'repeat' block 'until' exp
1306
+
1307
+ function parseRepeatStatement() {
1308
+ var body = parseBlock();
1309
+ expect('until');
1310
+ var condition = parseExpectedExpression();
1311
+ return finishNode(ast.repeatStatement(condition, body));
1312
+ }
1313
+
1314
+ // retstat ::= 'return' [exp {',' exp}] [';']
1315
+
1316
+ function parseReturnStatement() {
1317
+ var expressions = [];
1318
+
1319
+ if ('end' !== token.value) {
1320
+ var expression = parseExpression();
1321
+ if (null != expression) expressions.push(expression);
1322
+ while (consume(',')) {
1323
+ expression = parseExpectedExpression();
1324
+ expressions.push(expression);
1325
+ }
1326
+ consume(';'); // grammar tells us ; is optional here.
1327
+ }
1328
+ return finishNode(ast.returnStatement(expressions));
1329
+ }
1330
+
1331
+ // if ::= 'if' exp 'then' block {elif} ['else' block] 'end'
1332
+ // elif ::= 'elseif' exp 'then' block
1333
+
1334
+ function parseIfStatement() {
1335
+ var clauses = []
1336
+ , condition
1337
+ , body
1338
+ , marker;
1339
+
1340
+ // IfClauses begin at the same location as the parent IfStatement.
1341
+ // It ends at the start of `end`, `else`, or `elseif`.
1342
+ if (trackLocations) {
1343
+ marker = locations[locations.length - 1];
1344
+ locations.push(marker);
1345
+ }
1346
+ condition = parseExpectedExpression();
1347
+ expect('then');
1348
+ body = parseBlock();
1349
+ clauses.push(finishNode(ast.ifClause(condition, body)));
1350
+
1351
+ if (trackLocations) marker = createLocationMarker();
1352
+ while (consume('elseif')) {
1353
+ pushLocation(marker);
1354
+ condition = parseExpectedExpression();
1355
+ expect('then');
1356
+ body = parseBlock();
1357
+ clauses.push(finishNode(ast.elseifClause(condition, body)));
1358
+ if (trackLocations) marker = createLocationMarker();
1359
+ }
1360
+
1361
+ if (consume('else')) {
1362
+ // Include the `else` in the location of ElseClause.
1363
+ if (trackLocations) {
1364
+ marker = new Marker(previousToken);
1365
+ locations.push(marker);
1366
+ }
1367
+ body = parseBlock();
1368
+ clauses.push(finishNode(ast.elseClause(body)));
1369
+ }
1370
+
1371
+ expect('end');
1372
+ return finishNode(ast.ifStatement(clauses));
1373
+ }
1374
+
1375
+ // There are two types of for statements, generic and numeric.
1376
+ //
1377
+ // for ::= Name '=' exp ',' exp [',' exp] 'do' block 'end'
1378
+ // for ::= namelist 'in' explist 'do' block 'end'
1379
+ // namelist ::= Name {',' Name}
1380
+ // explist ::= exp {',' exp}
1381
+
1382
+ function parseForStatement() {
1383
+ var variable = parseIdentifier()
1384
+ , body;
1385
+
1386
+ // The start-identifier is local.
1387
+ if (options.scope) scopeIdentifier(variable);
1388
+
1389
+ // If the first expression is followed by a `=` punctuator, this is a
1390
+ // Numeric For Statement.
1391
+ if (consume('=')) {
1392
+ // Start expression
1393
+ var start = parseExpectedExpression();
1394
+ expect(',');
1395
+ // End expression
1396
+ var end = parseExpectedExpression();
1397
+ // Optional step expression
1398
+ var step = consume(',') ? parseExpectedExpression() : null;
1399
+
1400
+ expect('do');
1401
+ body = parseBlock();
1402
+ expect('end');
1403
+
1404
+ return finishNode(ast.forNumericStatement(variable, start, end, step, body));
1405
+ }
1406
+ // If not, it's a Generic For Statement
1407
+ else {
1408
+ // The namelist can contain one or more identifiers.
1409
+ var variables = [variable];
1410
+ while (consume(',')) {
1411
+ variable = parseIdentifier();
1412
+ // Each variable in the namelist is locally scoped.
1413
+ if (options.scope) scopeIdentifier(variable);
1414
+ variables.push(variable);
1415
+ }
1416
+ expect('in');
1417
+ var iterators = [];
1418
+
1419
+ // One or more expressions in the explist.
1420
+ do {
1421
+ var expression = parseExpectedExpression();
1422
+ iterators.push(expression);
1423
+ } while (consume(','));
1424
+
1425
+ expect('do');
1426
+ body = parseBlock();
1427
+ expect('end');
1428
+
1429
+ return finishNode(ast.forGenericStatement(variables, iterators, body));
1430
+ }
1431
+ }
1432
+
1433
+ // Local statements can either be variable assignments or function
1434
+ // definitions. If a function definition is found, it will be delegated to
1435
+ // `parseFunctionDeclaration()` with the isLocal flag.
1436
+ //
1437
+ // This AST structure might change into a local assignment with a function
1438
+ // child.
1439
+ //
1440
+ // local ::= 'local' 'function' Name funcdecl
1441
+ // | 'local' Name {',' Name} ['=' exp {',' exp}
1442
+
1443
+ function parseLocalStatement() {
1444
+ var name;
1445
+
1446
+ if (Identifier === token.type) {
1447
+ var variables = []
1448
+ , init = [];
1449
+
1450
+ do {
1451
+ name = parseIdentifier();
1452
+
1453
+ variables.push(name);
1454
+ } while (consume(','));
1455
+
1456
+ if (consume('=')) {
1457
+ do {
1458
+ var expression = parseExpectedExpression();
1459
+ init.push(expression);
1460
+ } while (consume(','));
1461
+ }
1462
+
1463
+ // Declarations doesn't exist before the statement has been evaluated.
1464
+ // Therefore assignments can't use their declarator. And the identifiers
1465
+ // shouldn't be added to the scope until the statement is complete.
1466
+ if (options.scope) {
1467
+ for (var i = 0, l = variables.length; i < l; i++) {
1468
+ scopeIdentifier(variables[i]);
1469
+ }
1470
+ }
1471
+
1472
+ return finishNode(ast.localStatement(variables, init));
1473
+ }
1474
+ if (consume('function')) {
1475
+ name = parseIdentifier();
1476
+ if (options.scope) scopeIdentifier(name);
1477
+
1478
+ // MemberExpressions are not allowed in local function statements.
1479
+ return parseFunctionDeclaration(name, true);
1480
+ } else {
1481
+ raiseUnexpectedToken('<name>', token);
1482
+ }
1483
+ }
1484
+
1485
+ // assignment ::= varlist '=' explist
1486
+ // varlist ::= prefixexp {',' prefixexp}
1487
+ // explist ::= exp {',' exp}
1488
+ //
1489
+ // call ::= callexp
1490
+ // callexp ::= prefixexp args | prefixexp ':' Name args
1491
+
1492
+ function parseAssignmentOrCallStatement() {
1493
+ // Keep a reference to the previous token for better error messages in case
1494
+ // of invalid statement
1495
+ var previous = token
1496
+ , expression, marker;
1497
+
1498
+ if (trackLocations) marker = createLocationMarker();
1499
+ expression = parsePrefixExpression();
1500
+
1501
+ if (null == expression) return unexpected(token);
1502
+ if (',='.indexOf(token.value) >= 0) {
1503
+ var variables = [expression]
1504
+ , init = []
1505
+ , exp;
1506
+
1507
+ while (consume(',')) {
1508
+ exp = parsePrefixExpression();
1509
+ if (null == exp) raiseUnexpectedToken('<expression>', token);
1510
+ variables.push(exp);
1511
+ }
1512
+ expect('=');
1513
+ do {
1514
+ exp = parseExpectedExpression();
1515
+ init.push(exp);
1516
+ } while (consume(','));
1517
+
1518
+ pushLocation(marker);
1519
+ return finishNode(ast.assignmentStatement(variables, init));
1520
+ }
1521
+ if (isCallExpression(expression)) {
1522
+ pushLocation(marker);
1523
+ return finishNode(ast.callStatement(expression));
1524
+ }
1525
+ // The prefix expression was neither part of an assignment or a
1526
+ // callstatement, however as it was valid it's been consumed, so raise
1527
+ // the exception on the previous token to provide a helpful message.
1528
+ return unexpected(previous);
1529
+ }
1530
+
1531
+
1532
+
1533
+ // ### Non-statements
1534
+
1535
+ // Identifier ::= Name
1536
+
1537
+ function parseIdentifier() {
1538
+ markLocation();
1539
+ var identifier = token.value;
1540
+ if (Identifier !== token.type) raiseUnexpectedToken('<name>', token);
1541
+ next();
1542
+ return finishNode(ast.identifier(identifier));
1543
+ }
1544
+
1545
+ // Parse the functions parameters and body block. The name should already
1546
+ // have been parsed and passed to this declaration function. By separating
1547
+ // this we allow for anonymous functions in expressions.
1548
+ //
1549
+ // For local functions there's a boolean parameter which needs to be set
1550
+ // when parsing the declaration.
1551
+ //
1552
+ // funcdecl ::= '(' [parlist] ')' block 'end'
1553
+ // parlist ::= Name {',' Name} | [',' '...'] | '...'
1554
+
1555
+ function parseFunctionDeclaration(name, isLocal) {
1556
+ var parameters = [];
1557
+ expect('(');
1558
+
1559
+ // The declaration has arguments
1560
+ if (!consume(')')) {
1561
+ // Arguments are a comma separated list of identifiers, optionally ending
1562
+ // with a vararg.
1563
+ while (true) {
1564
+ if (Identifier === token.type) {
1565
+ var parameter = parseIdentifier();
1566
+ // Function parameters are local.
1567
+ if (options.scope) scopeIdentifier(parameter);
1568
+
1569
+ parameters.push(parameter);
1570
+
1571
+ if (consume(',')) continue;
1572
+ else if (consume(')')) break;
1573
+ }
1574
+ // No arguments are allowed after a vararg.
1575
+ else if (VarargLiteral === token.type) {
1576
+ parameters.push(parsePrimaryExpression());
1577
+ expect(')');
1578
+ break;
1579
+ } else {
1580
+ raiseUnexpectedToken('<name> or \'...\'', token);
1581
+ }
1582
+ }
1583
+ }
1584
+
1585
+ var body = parseBlock();
1586
+ expect('end');
1587
+
1588
+ isLocal = isLocal || false;
1589
+ return finishNode(ast.functionStatement(name, parameters, isLocal, body));
1590
+ }
1591
+
1592
+ // Parse the function name as identifiers and member expressions.
1593
+ //
1594
+ // Name {'.' Name} [':' Name]
1595
+
1596
+ function parseFunctionName() {
1597
+ var base, name, marker;
1598
+
1599
+ if (trackLocations) marker = createLocationMarker();
1600
+ base = parseIdentifier();
1601
+
1602
+ if (options.scope) attachScope(base, false);
1603
+
1604
+ while (consume('.')) {
1605
+ pushLocation(marker);
1606
+ name = parseIdentifier();
1607
+ if (options.scope) attachScope(name, false);
1608
+ base = finishNode(ast.memberExpression(base, '.', name));
1609
+ }
1610
+
1611
+ if (consume(':')) {
1612
+ pushLocation(marker);
1613
+ name = parseIdentifier();
1614
+ if (options.scope) attachScope(name, false);
1615
+ base = finishNode(ast.memberExpression(base, ':', name));
1616
+ }
1617
+
1618
+ return base;
1619
+ }
1620
+
1621
+ // tableconstructor ::= '{' [fieldlist] '}'
1622
+ // fieldlist ::= field {fieldsep field} fieldsep
1623
+ // field ::= '[' exp ']' '=' exp | Name = 'exp' | exp
1624
+ //
1625
+ // fieldsep ::= ',' | ';'
1626
+
1627
+ function parseTableConstructor() {
1628
+ var fields = []
1629
+ , key, value;
1630
+
1631
+ while (true) {
1632
+ markLocation();
1633
+ if (Punctuator === token.type && consume('[')) {
1634
+ key = parseExpectedExpression();
1635
+ expect(']');
1636
+ expect('=');
1637
+ value = parseExpectedExpression();
1638
+ fields.push(finishNode(ast.tableKey(key, value)));
1639
+ } else if (Identifier === token.type) {
1640
+ key = parseExpectedExpression();
1641
+ if (consume('=')) {
1642
+ value = parseExpectedExpression();
1643
+ fields.push(finishNode(ast.tableKeyString(key, value)));
1644
+ } else {
1645
+ fields.push(finishNode(ast.tableValue(key)));
1646
+ }
1647
+ } else {
1648
+ if (null == (value = parseExpression())) {
1649
+ locations.pop();
1650
+ break;
1651
+ }
1652
+ fields.push(finishNode(ast.tableValue(value)));
1653
+ }
1654
+ if (',;'.indexOf(token.value) >= 0) {
1655
+ next();
1656
+ continue;
1657
+ }
1658
+ if ('}' === token.value) break;
1659
+ }
1660
+ expect('}');
1661
+ return finishNode(ast.tableConstructorExpression(fields));
1662
+ }
1663
+
1664
+ // Expression parser
1665
+ // -----------------
1666
+ //
1667
+ // Expressions are evaluated and always return a value. If nothing is
1668
+ // matched null will be returned.
1669
+ //
1670
+ // exp ::= (unop exp | primary | prefixexp ) { binop exp }
1671
+ //
1672
+ // primary ::= nil | false | true | Number | String | '...'
1673
+ // | functiondef | tableconstructor
1674
+ //
1675
+ // prefixexp ::= (Name | '(' exp ')' ) { '[' exp ']'
1676
+ // | '.' Name | ':' Name args | args }
1677
+ //
1678
+
1679
+ function parseExpression() {
1680
+ var expression = parseSubExpression(0);
1681
+ return expression;
1682
+ }
1683
+
1684
+ // Parse an expression expecting it to be valid.
1685
+
1686
+ function parseExpectedExpression() {
1687
+ var expression = parseExpression();
1688
+ if (null == expression) raiseUnexpectedToken('<expression>', token);
1689
+ else return expression;
1690
+ }
1691
+
1692
+
1693
+ // Return the precedence priority of the operator.
1694
+ //
1695
+ // As unary `-` can't be distinguished from binary `-`, unary precedence
1696
+ // isn't described in this table but in `parseSubExpression()` itself.
1697
+ //
1698
+ // As this function gets hit on every expression it's been optimized due to
1699
+ // the expensive CompareICStub which took ~8% of the parse time.
1700
+
1701
+ function binaryPrecedence(operator) {
1702
+ var charCode = operator.charCodeAt(0)
1703
+ , length = operator.length;
1704
+
1705
+ if (1 === length) {
1706
+ switch (charCode) {
1707
+ case 94: return 10; // ^
1708
+ case 42: case 47: case 37: return 7; // * / %
1709
+ case 43: case 45: return 6; // + -
1710
+ case 60: case 62: return 3; // < >
1711
+ }
1712
+ } else if (2 === length) {
1713
+ switch (charCode) {
1714
+ case 46: return 5; // ..
1715
+ case 60: case 62: case 61: case 126: return 3; // <= >= == ~=
1716
+ case 111: return 1; // or
1717
+ }
1718
+ } else if (97 === charCode && 'and' === operator) return 2;
1719
+ return 0;
1720
+ }
1721
+
1722
+ // Implement an operator-precedence parser to handle binary operator
1723
+ // precedence.
1724
+ //
1725
+ // We use this algorithm because it's compact, it's fast and Lua core uses
1726
+ // the same so we can be sure our expressions are parsed in the same manner
1727
+ // without excessive amounts of tests.
1728
+ //
1729
+ // exp ::= (unop exp | primary | prefixexp ) { binop exp }
1730
+
1731
+ function parseSubExpression(minPrecedence) {
1732
+ var operator = token.value
1733
+ // The left-hand side in binary operations.
1734
+ , expression, marker;
1735
+
1736
+ if (trackLocations) marker = createLocationMarker();
1737
+
1738
+ // UnaryExpression
1739
+ if (isUnary(token)) {
1740
+ markLocation();
1741
+ next();
1742
+ var argument = parseSubExpression(8);
1743
+ if (argument == null) raiseUnexpectedToken('<expression>', token);
1744
+ expression = finishNode(ast.unaryExpression(operator, argument));
1745
+ }
1746
+ if (null == expression) {
1747
+ // PrimaryExpression
1748
+ expression = parsePrimaryExpression();
1749
+
1750
+ // PrefixExpression
1751
+ if (null == expression) {
1752
+ expression = parsePrefixExpression();
1753
+ }
1754
+ }
1755
+ // This is not a valid left hand expression.
1756
+ if (null == expression) return null;
1757
+
1758
+ var precedence;
1759
+ while (true) {
1760
+ operator = token.value;
1761
+
1762
+ precedence = (Punctuator === token.type || Keyword === token.type) ?
1763
+ binaryPrecedence(operator) : 0;
1764
+
1765
+ if (precedence === 0 || precedence <= minPrecedence) break;
1766
+ // Right-hand precedence operators
1767
+ if ('^' === operator || '..' === operator) precedence--;
1768
+ next();
1769
+ var right = parseSubExpression(precedence);
1770
+ if (null == right) raiseUnexpectedToken('<expression>', token);
1771
+ // Push in the marker created before the loop to wrap its entirety.
1772
+ if (trackLocations) locations.push(marker);
1773
+ expression = finishNode(ast.binaryExpression(operator, expression, right));
1774
+
1775
+ }
1776
+ return expression;
1777
+ }
1778
+
1779
+ // prefixexp ::= prefix {suffix}
1780
+ // prefix ::= Name | '(' exp ')'
1781
+ // suffix ::= '[' exp ']' | '.' Name | ':' Name args | args
1782
+ //
1783
+ // args ::= '(' [explist] ')' | tableconstructor | String
1784
+
1785
+ function parsePrefixExpression() {
1786
+ var base, name, marker
1787
+ // Keep track of the scope, if a parent is local so are the children.
1788
+ , isLocal;
1789
+
1790
+ if (trackLocations) marker = createLocationMarker();
1791
+
1792
+ // The prefix
1793
+ if (Identifier === token.type) {
1794
+ name = token.value;
1795
+ base = parseIdentifier();
1796
+ // Set the parent scope.
1797
+ if (options.scope) attachScope(base, isLocal = scopeHasName(name));
1798
+ } else if (consume('(')) {
1799
+ base = parseExpectedExpression();
1800
+ expect(')');
1801
+ if (options.scope) isLocal = base.isLocal;
1802
+ } else {
1803
+ return null;
1804
+ }
1805
+
1806
+ // The suffix
1807
+ var expression, identifier;
1808
+ while (true) {
1809
+ if (Punctuator === token.type) {
1810
+ switch (token.value) {
1811
+ case '[':
1812
+ pushLocation(marker);
1813
+ next();
1814
+ expression = parseExpectedExpression();
1815
+ base = finishNode(ast.indexExpression(base, expression));
1816
+ expect(']');
1817
+ break;
1818
+ case '.':
1819
+ pushLocation(marker);
1820
+ next();
1821
+ identifier = parseIdentifier();
1822
+ // Inherit the scope
1823
+ if (options.scope) attachScope(identifier, isLocal);
1824
+ base = finishNode(ast.memberExpression(base, '.', identifier));
1825
+ break;
1826
+ case ':':
1827
+ pushLocation(marker);
1828
+ next();
1829
+ identifier = parseIdentifier();
1830
+ if (options.scope) attachScope(identifier, isLocal);
1831
+ base = finishNode(ast.memberExpression(base, ':', identifier));
1832
+ // Once a : is found, this has to be a CallExpression, otherwise
1833
+ // throw an error.
1834
+ pushLocation(marker);
1835
+ base = parseCallExpression(base);
1836
+ break;
1837
+ case '(': case '{': // args
1838
+ pushLocation(marker);
1839
+ base = parseCallExpression(base);
1840
+ break;
1841
+ default:
1842
+ return base;
1843
+ }
1844
+ } else if (StringLiteral === token.type) {
1845
+ pushLocation(marker);
1846
+ base = parseCallExpression(base);
1847
+ } else {
1848
+ break;
1849
+ }
1850
+ }
1851
+
1852
+ return base;
1853
+ }
1854
+
1855
+ // args ::= '(' [explist] ')' | tableconstructor | String
1856
+
1857
+ function parseCallExpression(base) {
1858
+ if (Punctuator === token.type) {
1859
+ switch (token.value) {
1860
+ case '(':
1861
+ next();
1862
+
1863
+ // List of expressions
1864
+ var expressions = [];
1865
+ var expression = parseExpression();
1866
+ if (null != expression) expressions.push(expression);
1867
+ while (consume(',')) {
1868
+ expression = parseExpectedExpression();
1869
+ expressions.push(expression);
1870
+ }
1871
+
1872
+ expect(')');
1873
+ return finishNode(ast.callExpression(base, expressions));
1874
+
1875
+ case '{':
1876
+ markLocation();
1877
+ next();
1878
+ var table = parseTableConstructor();
1879
+ return finishNode(ast.tableCallExpression(base, table));
1880
+ }
1881
+ } else if (StringLiteral === token.type) {
1882
+ return finishNode(ast.stringCallExpression(base, parsePrimaryExpression()));
1883
+ }
1884
+
1885
+ raiseUnexpectedToken('function arguments', token);
1886
+ }
1887
+
1888
+ // primary ::= String | Numeric | nil | true | false
1889
+ // | functiondef | tableconstructor | '...'
1890
+
1891
+ function parsePrimaryExpression() {
1892
+ var literals = StringLiteral | NumericLiteral | BooleanLiteral | NilLiteral | VarargLiteral
1893
+ , value = token.value
1894
+ , type = token.type
1895
+ , marker;
1896
+
1897
+ if (trackLocations) marker = createLocationMarker();
1898
+
1899
+ if (type & literals) {
1900
+ pushLocation(marker);
1901
+ var raw = input.slice(token.range[0], token.range[1]);
1902
+ next();
1903
+ return finishNode(ast.literal(type, value, raw));
1904
+ } else if (Keyword === type && 'function' === value) {
1905
+ pushLocation(marker);
1906
+ next();
1907
+ return parseFunctionDeclaration(null);
1908
+ } else if (consume('{')) {
1909
+ pushLocation(marker);
1910
+ return parseTableConstructor();
1911
+ }
1912
+ }
1913
+
1914
+ // Parser
1915
+ // ------
1916
+
1917
+ // Export the main parser.
1918
+ //
1919
+ // - `wait` Hold parsing until end() is called. Defaults to false
1920
+ // - `comments` Store comments. Defaults to true.
1921
+ // - `scope` Track identifier scope. Defaults to false.
1922
+ //
1923
+ // Example:
1924
+ //
1925
+ // var parser = require('luaparser');
1926
+ // parser.parse('i = 0');
1927
+
1928
+ exports.parse = parse;
1929
+
1930
+ function parse(_input, _options) {
1931
+ if ('undefined' === typeof _options && 'object' === typeof _input) {
1932
+ _options = _input;
1933
+ _input = undefined;
1934
+ }
1935
+ if (!_options) _options = {};
1936
+
1937
+ input = _input || '';
1938
+ options = extend(defaultOptions, _options);
1939
+
1940
+ // Rewind the lexer
1941
+ index = 0;
1942
+ line = 1;
1943
+ lineStart = 0;
1944
+ length = input.length;
1945
+ // When tracking identifier scope, initialize with an empty scope.
1946
+ scopes = [[]];
1947
+ scopeDepth = 0;
1948
+ globals = [];
1949
+ locations = [];
1950
+
1951
+ if (options.comments) comments = [];
1952
+ if (!options.wait) return end();
1953
+ return exports;
1954
+ }
1955
+
1956
+ // Write to the source code buffer without beginning the parse.
1957
+ exports.write = write;
1958
+
1959
+ function write(_input) {
1960
+ input += String(_input);
1961
+ length = input.length;
1962
+ return exports;
1963
+ }
1964
+
1965
+ // Send an EOF and begin parsing.
1966
+ exports.end = end;
1967
+
1968
+ function end(_input) {
1969
+ if ('undefined' !== typeof _input) write(_input);
1970
+
1971
+ length = input.length;
1972
+ trackLocations = options.locations || options.ranges;
1973
+ // Initialize with a lookahead token.
1974
+ lookahead = lex();
1975
+
1976
+ var chunk = parseChunk();
1977
+ if (options.comments) chunk.comments = comments;
1978
+ if (options.scope) chunk.globals = globals;
1979
+
1980
+ if (locations.length > 0)
1981
+ throw new Error('Location tracking failed. This is most likely a bug in luaparse');
1982
+
1983
+ return chunk;
1984
+ }
1985
+
1986
+ }));
1987
+ /* vim: set sw=2 ts=2 et tw=79 : */
1988
+
1989
+ });