gitlab-pygments.rb 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (399) hide show
  1. data/.gitignore +6 -0
  2. data/Gemfile +2 -0
  3. data/README.md +91 -0
  4. data/Rakefile +78 -0
  5. data/bench.rb +22 -0
  6. data/cache-lexers.rb +8 -0
  7. data/lexers +0 -0
  8. data/lib/pygments/lexer.rb +148 -0
  9. data/lib/pygments/mentos.py +344 -0
  10. data/lib/pygments/popen.rb +389 -0
  11. data/lib/pygments/version.rb +3 -0
  12. data/lib/pygments.rb +8 -0
  13. data/pygments.rb.gemspec +24 -0
  14. data/test/test_data.c +2581 -0
  15. data/test/test_data.py +514 -0
  16. data/test/test_data_generated +2582 -0
  17. data/test/test_pygments.rb +276 -0
  18. data/vendor/custom_formatters/gitlab.py +171 -0
  19. data/vendor/custom_lexers/github.py +362 -0
  20. data/vendor/pygments-main/AUTHORS +115 -0
  21. data/vendor/pygments-main/CHANGES +762 -0
  22. data/vendor/pygments-main/LICENSE +25 -0
  23. data/vendor/pygments-main/MANIFEST.in +6 -0
  24. data/vendor/pygments-main/Makefile +59 -0
  25. data/vendor/pygments-main/REVISION +1 -0
  26. data/vendor/pygments-main/TODO +15 -0
  27. data/vendor/pygments-main/docs/generate.py +472 -0
  28. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  29. data/vendor/pygments-main/docs/src/api.txt +270 -0
  30. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  31. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  32. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  33. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  34. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  35. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  36. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  37. data/vendor/pygments-main/docs/src/index.txt +69 -0
  38. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  39. data/vendor/pygments-main/docs/src/integrate.txt +43 -0
  40. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +551 -0
  41. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  42. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  43. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  44. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  45. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  46. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  47. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  48. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  49. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  50. data/vendor/pygments-main/external/moin-parser.py +112 -0
  51. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  52. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  53. data/vendor/pygments-main/external/rst-directive.py +83 -0
  54. data/vendor/pygments-main/ez_setup.py +276 -0
  55. data/vendor/pygments-main/pygmentize +7 -0
  56. data/vendor/pygments-main/pygments/__init__.py +91 -0
  57. data/vendor/pygments-main/pygments/cmdline.py +433 -0
  58. data/vendor/pygments-main/pygments/console.py +74 -0
  59. data/vendor/pygments-main/pygments/filter.py +74 -0
  60. data/vendor/pygments-main/pygments/filters/__init__.py +357 -0
  61. data/vendor/pygments-main/pygments/formatter.py +92 -0
  62. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  63. data/vendor/pygments-main/pygments/formatters/_mapping.py +94 -0
  64. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  65. data/vendor/pygments-main/pygments/formatters/gitlab.py +171 -0
  66. data/vendor/pygments-main/pygments/formatters/html.py +750 -0
  67. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  68. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  69. data/vendor/pygments-main/pygments/formatters/other.py +117 -0
  70. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  71. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  72. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  73. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  74. data/vendor/pygments-main/pygments/lexer.py +697 -0
  75. data/vendor/pygments-main/pygments/lexers/__init__.py +229 -0
  76. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  77. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  78. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  79. data/vendor/pygments-main/pygments/lexers/_mapping.py +298 -0
  80. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  81. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +232 -0
  82. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +29 -0
  83. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +3 -0
  84. data/vendor/pygments-main/pygments/lexers/agile.py +1803 -0
  85. data/vendor/pygments-main/pygments/lexers/asm.py +360 -0
  86. data/vendor/pygments-main/pygments/lexers/compiled.py +2891 -0
  87. data/vendor/pygments-main/pygments/lexers/dotnet.py +636 -0
  88. data/vendor/pygments-main/pygments/lexers/functional.py +1832 -0
  89. data/vendor/pygments-main/pygments/lexers/github.py +362 -0
  90. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  91. data/vendor/pygments-main/pygments/lexers/jvm.py +847 -0
  92. data/vendor/pygments-main/pygments/lexers/math.py +1072 -0
  93. data/vendor/pygments-main/pygments/lexers/other.py +3339 -0
  94. data/vendor/pygments-main/pygments/lexers/parsers.py +695 -0
  95. data/vendor/pygments-main/pygments/lexers/shell.py +361 -0
  96. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  97. data/vendor/pygments-main/pygments/lexers/sql.py +559 -0
  98. data/vendor/pygments-main/pygments/lexers/templates.py +1631 -0
  99. data/vendor/pygments-main/pygments/lexers/text.py +1753 -0
  100. data/vendor/pygments-main/pygments/lexers/web.py +2864 -0
  101. data/vendor/pygments-main/pygments/plugin.py +74 -0
  102. data/vendor/pygments-main/pygments/scanner.py +104 -0
  103. data/vendor/pygments-main/pygments/style.py +117 -0
  104. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  105. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  106. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  107. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  108. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  109. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  110. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  111. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  112. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  113. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  114. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  115. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  116. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  117. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  118. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  119. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  120. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  121. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  122. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  123. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  124. data/vendor/pygments-main/pygments/token.py +195 -0
  125. data/vendor/pygments-main/pygments/unistring.py +130 -0
  126. data/vendor/pygments-main/pygments/util.py +232 -0
  127. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  128. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +30 -0
  129. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  130. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  131. data/vendor/pygments-main/scripts/find_error.py +171 -0
  132. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  133. data/vendor/pygments-main/scripts/pylintrc +301 -0
  134. data/vendor/pygments-main/scripts/reindent.py +291 -0
  135. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  136. data/vendor/pygments-main/setup.cfg +6 -0
  137. data/vendor/pygments-main/setup.py +88 -0
  138. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  139. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  140. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  141. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  142. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  143. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  144. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  145. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  146. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  147. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  148. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  149. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  150. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  151. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  152. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  153. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  154. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  155. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  156. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  157. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  158. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  159. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  160. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  161. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  162. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  163. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  164. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  165. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  166. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  167. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  168. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  169. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  170. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  171. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  172. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  173. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  174. data/vendor/pygments-main/tests/examplefiles/classes.dylan +40 -0
  175. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  176. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  177. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  178. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  179. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  180. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  181. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  182. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  183. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  184. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  185. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  186. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  187. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  188. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  189. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  190. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  191. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  192. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  193. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  194. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  195. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  196. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  197. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  198. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  199. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  200. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  201. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  202. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  203. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  204. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  205. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  206. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  207. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  208. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  209. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  210. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  211. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  212. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  213. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  214. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  215. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  216. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  217. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  218. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  219. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  220. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  221. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  222. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  223. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  224. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  225. data/vendor/pygments-main/tests/examplefiles/http_request_example +14 -0
  226. data/vendor/pygments-main/tests/examplefiles/http_response_example +27 -0
  227. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  228. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  229. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  230. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  231. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  232. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  233. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  234. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  235. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  236. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  237. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  238. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  239. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  240. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  241. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  242. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  243. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  244. data/vendor/pygments-main/tests/examplefiles/matlab_sample +27 -0
  245. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  246. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  247. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  248. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  249. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  250. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  251. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  252. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  253. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  254. data/vendor/pygments-main/tests/examplefiles/objc_example.m +25 -0
  255. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  256. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  257. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  258. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  259. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  260. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  261. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  262. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  263. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  264. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  265. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  266. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  267. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  268. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  269. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  270. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  271. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  272. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  273. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  274. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  275. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  276. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  277. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  278. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  279. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  280. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  281. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  282. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  283. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  284. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  285. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  286. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  287. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  288. data/vendor/pygments-main/tests/examplefiles/test.R +119 -0
  289. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  290. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  291. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  292. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  293. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  294. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  295. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  296. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  297. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  298. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  299. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  300. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  301. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  302. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  303. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  304. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  305. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  306. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  307. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  308. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  309. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  310. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  311. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  312. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  313. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  314. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  315. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  316. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  317. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  318. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  319. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  320. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  321. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  322. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  323. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  324. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  325. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  326. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  327. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  328. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  329. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  330. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  331. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  332. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  333. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  334. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  335. data/vendor/pygments-main/tests/examplefiles/type.lisp +1202 -0
  336. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  337. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  338. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  339. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  340. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  341. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  342. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  343. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  344. data/vendor/pygments-main/tests/old_run.py +138 -0
  345. data/vendor/pygments-main/tests/run.py +48 -0
  346. data/vendor/pygments-main/tests/support.py +15 -0
  347. data/vendor/pygments-main/tests/test_basic_api.py +294 -0
  348. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  349. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  350. data/vendor/pygments-main/tests/test_examplefiles.py +97 -0
  351. data/vendor/pygments-main/tests/test_html_formatter.py +162 -0
  352. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  353. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  354. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  355. data/vendor/pygments-main/tests/test_token.py +46 -0
  356. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  357. data/vendor/pygments-main/tests/test_util.py +116 -0
  358. data/vendor/simplejson/.gitignore +10 -0
  359. data/vendor/simplejson/.travis.yml +5 -0
  360. data/vendor/simplejson/CHANGES.txt +291 -0
  361. data/vendor/simplejson/LICENSE.txt +19 -0
  362. data/vendor/simplejson/MANIFEST.in +5 -0
  363. data/vendor/simplejson/README.rst +19 -0
  364. data/vendor/simplejson/conf.py +179 -0
  365. data/vendor/simplejson/index.rst +628 -0
  366. data/vendor/simplejson/scripts/make_docs.py +18 -0
  367. data/vendor/simplejson/setup.py +104 -0
  368. data/vendor/simplejson/simplejson/__init__.py +510 -0
  369. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  370. data/vendor/simplejson/simplejson/decoder.py +425 -0
  371. data/vendor/simplejson/simplejson/encoder.py +567 -0
  372. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  373. data/vendor/simplejson/simplejson/scanner.py +77 -0
  374. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  375. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  376. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  377. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  378. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  379. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  380. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  381. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  382. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  383. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  384. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  385. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  386. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  387. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  388. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  389. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  390. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  391. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  392. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  393. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  394. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  395. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  396. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  397. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  398. data/vendor/simplejson/simplejson/tool.py +39 -0
  399. metadata +492 -0
@@ -0,0 +1,567 @@
1
+ " Vim completion script
2
+ " Language: PHP
3
+ " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
4
+ " Last Change: 2006 May 9
5
+ "
6
+ " TODO:
7
+ " - Class aware completion:
8
+ " a) caching?
9
+ " - Switching to HTML (XML?) completion (SQL) inside of phpStrings
10
+ " - allow also for XML completion <- better do html_flavor for HTML
11
+ " completion
12
+ " - outside of <?php?> getting parent tag may cause problems. Heh, even in
13
+ " perfect conditions GetLastOpenTag doesn't cooperate... Inside of
14
+ " phpStrings this can be even a bonus but outside of <?php?> it is not the
15
+ " best situation
16
+
17
+ function! phpcomplete#CompletePHP(findstart, base)
18
+ if a:findstart
19
+ unlet! b:php_menu
20
+ " Check if we are inside of PHP markup
21
+ let pos = getpos('.')
22
+ let phpbegin = searchpairpos('<?', '', '?>', 'bWn',
23
+ \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\|comment"')
24
+ let phpend = searchpairpos('<?', '', '?>', 'Wn',
25
+ \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\|comment"')
26
+
27
+ if phpbegin == [0,0] && phpend == [0,0]
28
+ " We are outside of any PHP markup. Complete HTML
29
+ let htmlbegin = htmlcomplete#CompleteTags(1, '')
30
+ let cursor_col = pos[2]
31
+ let base = getline('.')[htmlbegin : cursor_col]
32
+ let b:php_menu = htmlcomplete#CompleteTags(0, base)
33
+ return htmlbegin
34
+ else
35
+ " locate the start of the word
36
+ let line = getline('.')
37
+ let start = col('.') - 1
38
+ let curline = line('.')
39
+ let compl_begin = col('.') - 2
40
+ while start >= 0 && line[start - 1] =~ '[a-zA-Z_0-9\x7f-\xff$]'
41
+ let start -= 1
42
+ endwhile
43
+ let b:compl_context = getline('.')[0:compl_begin]
44
+ return start
45
+
46
+ " We can be also inside of phpString with HTML tags. Deal with
47
+ " it later (time, not lines).
48
+ endif
49
+
50
+ endif
51
+ " If exists b:php_menu it means completion was already constructed we
52
+ " don't need to do anything more
53
+ if exists("b:php_menu")
54
+ return b:php_menu
55
+ endif
56
+ " Initialize base return lists
57
+ let res = []
58
+ let res2 = []
59
+ " a:base is very short - we need context
60
+ if exists("b:compl_context")
61
+ let context = b:compl_context
62
+ unlet! b:compl_context
63
+ endif
64
+
65
+ if !exists('g:php_builtin_functions')
66
+ call phpcomplete#LoadData()
67
+ endif
68
+
69
+ let scontext = substitute(context, '\$\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*$', '', '')
70
+
71
+ if scontext =~ '\(=\s*new\|extends\)\s\+$'
72
+ " Complete class name
73
+ " Internal solution for finding classes in current file.
74
+ let file = getline(1, '$')
75
+ call filter(file,
76
+ \ 'v:val =~ "class\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
77
+ let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
78
+ let jfile = join(file, ' ')
79
+ let int_values = split(jfile, 'class\s\+')
80
+ let int_classes = {}
81
+ for i in int_values
82
+ let c_name = matchstr(i, '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
83
+ if c_name != ''
84
+ let int_classes[c_name] = ''
85
+ endif
86
+ endfor
87
+
88
+ " Prepare list of classes from tags file
89
+ let ext_classes = {}
90
+ let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
91
+ if fnames != ''
92
+ exe 'silent! vimgrep /^'.a:base.'.*\tc\(\t\|$\)/j '.fnames
93
+ let qflist = getqflist()
94
+ if len(qflist) > 0
95
+ for field in qflist
96
+ " [:space:] thing: we don't have to be so strict when
97
+ " dealing with tags files - entries there were already
98
+ " checked by ctags.
99
+ let item = matchstr(field['text'], '^[^[:space:]]\+')
100
+ let ext_classes[item] = ''
101
+ endfor
102
+ endif
103
+ endif
104
+
105
+ " Prepare list of built in classes from g:php_builtin_functions
106
+ if !exists("g:php_omni_bi_classes")
107
+ let g:php_omni_bi_classes = {}
108
+ for i in keys(g:php_builtin_object_functions)
109
+ let g:php_omni_bi_classes[substitute(i, '::.*$', '', '')] = ''
110
+ endfor
111
+ endif
112
+
113
+ let classes = sort(keys(int_classes))
114
+ let classes += sort(keys(ext_classes))
115
+ let classes += sort(keys(g:php_omni_bi_classes))
116
+
117
+ for m in classes
118
+ if m =~ '^'.a:base
119
+ call add(res, m)
120
+ endif
121
+ endfor
122
+
123
+ let final_menu = []
124
+ for i in res
125
+ let final_menu += [{'word':i, 'kind':'c'}]
126
+ endfor
127
+
128
+ return final_menu
129
+
130
+ elseif scontext =~ '\(->\|::\)$'
131
+ " Complete user functions and variables
132
+ " Internal solution for current file.
133
+ " That seems as unnecessary repeating of functions but there are
134
+ " few not so subtle differences as not appending of $ and addition
135
+ " of 'kind' tag (not necessary in regular completion)
136
+
137
+ if scontext =~ '->$' && scontext !~ '\$this->$'
138
+
139
+ " Get name of the class
140
+ let classname = phpcomplete#GetClassName(scontext)
141
+
142
+ " Get location of class definition, we have to iterate through all
143
+ " tags files separately because we need relative path from current
144
+ " file to the exact file (tags file can be in different dir)
145
+ if classname != ''
146
+ let classlocation = phpcomplete#GetClassLocation(classname)
147
+ else
148
+ let classlocation = ''
149
+ endif
150
+
151
+ if classlocation == 'VIMPHP_BUILTINOBJECT'
152
+
153
+ for object in keys(g:php_builtin_object_functions)
154
+ if object =~ '^'.classname
155
+ let res += [{'word':substitute(object, '.*::', '', ''),
156
+ \ 'info': g:php_builtin_object_functions[object]}]
157
+ endif
158
+ endfor
159
+
160
+ return res
161
+
162
+ endif
163
+
164
+ if filereadable(classlocation)
165
+ let classfile = readfile(classlocation)
166
+ let classcontent = ''
167
+ let classcontent .= "\n".phpcomplete#GetClassContents(classfile, classname)
168
+ let sccontent = split(classcontent, "\n")
169
+
170
+ " YES, YES, YES! - we have whole content including extends!
171
+ " Now we need to get two elements: public functions and public
172
+ " vars
173
+ " NO, NO, NO! - third separate filtering looking for content
174
+ " :(, but all of them have differences. To squeeze them into
175
+ " one implementation would require many additional arguments
176
+ " and ifs. No good solution
177
+ " Functions declared with public keyword or without any
178
+ " keyword are public
179
+ let functions = filter(deepcopy(sccontent),
180
+ \ 'v:val =~ "^\\s*\\(static\\s\\+\\|public\\s\\+\\)*function"')
181
+ let jfuncs = join(functions, ' ')
182
+ let sfuncs = split(jfuncs, 'function\s\+')
183
+ let c_functions = {}
184
+ for i in sfuncs
185
+ let f_name = matchstr(i,
186
+ \ '^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze')
187
+ let f_args = matchstr(i,
188
+ \ '^&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\zs.\{-}\ze)\_s*{')
189
+ if f_name != ''
190
+ let c_functions[f_name.'('] = f_args
191
+ endif
192
+ endfor
193
+ " Variables declared with var or with public keyword are
194
+ " public
195
+ let variables = filter(deepcopy(sccontent),
196
+ \ 'v:val =~ "^\\s*\\(public\\|var\\)\\s\\+\\$"')
197
+ let jvars = join(variables, ' ')
198
+ let svars = split(jvars, '\$')
199
+ let c_variables = {}
200
+ for i in svars
201
+ let c_var = matchstr(i,
202
+ \ '^\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze')
203
+ if c_var != ''
204
+ let c_variables[c_var] = ''
205
+ endif
206
+ endfor
207
+
208
+ let all_values = {}
209
+ call extend(all_values, c_functions)
210
+ call extend(all_values, c_variables)
211
+
212
+ for m in sort(keys(all_values))
213
+ if m =~ '^'.a:base && m !~ '::'
214
+ call add(res, m)
215
+ elseif m =~ '::'.a:base
216
+ call add(res2, m)
217
+ endif
218
+ endfor
219
+
220
+ let start_list = res + res2
221
+
222
+ let final_list = []
223
+ for i in start_list
224
+ if has_key(c_variables, i)
225
+ let class = ' '
226
+ if all_values[i] != ''
227
+ let class = i.' class '
228
+ endif
229
+ let final_list +=
230
+ \ [{'word':i,
231
+ \ 'info':class.all_values[i],
232
+ \ 'kind':'v'}]
233
+ else
234
+ let final_list +=
235
+ \ [{'word':substitute(i, '.*::', '', ''),
236
+ \ 'info':i.all_values[i].')',
237
+ \ 'kind':'f'}]
238
+ endif
239
+ endfor
240
+
241
+ return final_list
242
+
243
+ endif
244
+
245
+ endif
246
+
247
+ if a:base =~ '^\$'
248
+ let adddollar = '$'
249
+ else
250
+ let adddollar = ''
251
+ endif
252
+ let file = getline(1, '$')
253
+ let jfile = join(file, ' ')
254
+ let sfile = split(jfile, '\$')
255
+ let int_vars = {}
256
+ for i in sfile
257
+ if i =~ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*=\s*new'
258
+ let val = matchstr(i, '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*').'->'
259
+ else
260
+ let val = matchstr(i, '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
261
+ endif
262
+ if val !~ ''
263
+ let int_vars[adddollar.val] = ''
264
+ endif
265
+ endfor
266
+
267
+ " ctags has good support for PHP, use tags file for external
268
+ " variables
269
+ let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
270
+ let ext_vars = {}
271
+ if fnames != ''
272
+ let sbase = substitute(a:base, '^\$', '', '')
273
+ exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames
274
+ let qflist = getqflist()
275
+ if len(qflist) > 0
276
+ for field in qflist
277
+ let item = matchstr(field['text'], '^[^[:space:]]\+')
278
+ " Add -> if it is possible object declaration
279
+ let classname = ''
280
+ if field['text'] =~ item.'\s*=\s*new\s\+'
281
+ let item = item.'->'
282
+ let classname = matchstr(field['text'],
283
+ \ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
284
+ endif
285
+ let ext_vars[adddollar.item] = classname
286
+ endfor
287
+ endif
288
+ endif
289
+
290
+ " Now we have all variables in int_vars dictionary
291
+ call extend(int_vars, ext_vars)
292
+
293
+ " Internal solution for finding functions in current file.
294
+ let file = getline(1, '$')
295
+ call filter(file,
296
+ \ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
297
+ let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
298
+ let jfile = join(file, ' ')
299
+ let int_values = split(jfile, 'function\s\+')
300
+ let int_functions = {}
301
+ for i in int_values
302
+ let f_name = matchstr(i,
303
+ \ '^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze')
304
+ let f_args = matchstr(i,
305
+ \ '^&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\zs.\{-}\ze)\_s*{')
306
+ let int_functions[f_name.'('] = f_args.')'
307
+ endfor
308
+
309
+ " Prepare list of functions from tags file
310
+ let ext_functions = {}
311
+ if fnames != ''
312
+ exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames
313
+ let qflist = getqflist()
314
+ if len(qflist) > 0
315
+ for field in qflist
316
+ " File name
317
+ let item = matchstr(field['text'], '^[^[:space:]]\+')
318
+ let fname = matchstr(field['text'], '\t\zs\f\+\ze')
319
+ let prototype = matchstr(field['text'],
320
+ \ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?')
321
+ let ext_functions[item.'('] = prototype.') - '.fname
322
+ endfor
323
+ endif
324
+ endif
325
+
326
+ let all_values = {}
327
+ call extend(all_values, int_functions)
328
+ call extend(all_values, ext_functions)
329
+ call extend(all_values, int_vars) " external variables are already in
330
+ call extend(all_values, g:php_builtin_object_functions)
331
+
332
+ for m in sort(keys(all_values))
333
+ if m =~ '\(^\|::\)'.a:base
334
+ call add(res, m)
335
+ endif
336
+ endfor
337
+
338
+ let start_list = res
339
+
340
+ let final_list = []
341
+ for i in start_list
342
+ if has_key(int_vars, i)
343
+ let class = ' '
344
+ if all_values[i] != ''
345
+ let class = i.' class '
346
+ endif
347
+ let final_list += [{'word':i, 'info':class.all_values[i], 'kind':'v'}]
348
+ else
349
+ let final_list +=
350
+ \ [{'word':substitute(i, '.*::', '', ''),
351
+ \ 'info':i.all_values[i],
352
+ \ 'kind':'f'}]
353
+ endif
354
+ endfor
355
+
356
+ return final_list
357
+ endif
358
+
359
+ if a:base =~ '^\$'
360
+ " Complete variables
361
+ " Built-in variables {{{
362
+ let g:php_builtin_vars = {'$GLOBALS':'',
363
+ \ '$_SERVER':'',
364
+ \ '$_GET':'',
365
+ \ '$_POST':'',
366
+ \ '$_COOKIE':'',
367
+ \ '$_FILES':'',
368
+ \ '$_ENV':'',
369
+ \ '$_REQUEST':'',
370
+ \ '$_SESSION':'',
371
+ \ '$HTTP_SERVER_VARS':'',
372
+ \ '$HTTP_ENV_VARS':'',
373
+ \ '$HTTP_COOKIE_VARS':'',
374
+ \ '$HTTP_GET_VARS':'',
375
+ \ '$HTTP_POST_VARS':'',
376
+ \ '$HTTP_POST_FILES':'',
377
+ \ '$HTTP_SESSION_VARS':'',
378
+ \ '$php_errormsg':'',
379
+ \ '$this':''
380
+ \ }
381
+ " }}}
382
+
383
+ " Internal solution for current file.
384
+ let file = getline(1, '$')
385
+ let jfile = join(file, ' ')
386
+ let int_vals = split(jfile, '\ze\$')
387
+ let int_vars = {}
388
+ for i in int_vals
389
+ if i =~ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*=\s*new'
390
+ let val = matchstr(i,
391
+ \ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*').'->'
392
+ else
393
+ let val = matchstr(i,
394
+ \ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
395
+ endif
396
+ if val != ''
397
+ let int_vars[val] = ''
398
+ endif
399
+ endfor
400
+
401
+ call extend(int_vars,g:php_builtin_vars)
402
+
403
+ " ctags has support for PHP, use tags file for external variables
404
+ let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
405
+ let ext_vars = {}
406
+ if fnames != ''
407
+ let sbase = substitute(a:base, '^\$', '', '')
408
+ exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames
409
+ let qflist = getqflist()
410
+ if len(qflist) > 0
411
+ for field in qflist
412
+ let item = '$'.matchstr(field['text'], '^[^[:space:]]\+')
413
+ let m_menu = ''
414
+ " Add -> if it is possible object declaration
415
+ if field['text'] =~ item.'\s*=\s*new\s\+'
416
+ let item = item.'->'
417
+ let m_menu = matchstr(field['text'],
418
+ \ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
419
+ endif
420
+ let ext_vars[item] = m_menu
421
+ endfor
422
+ endif
423
+ endif
424
+
425
+ call extend(int_vars, ext_vars)
426
+ let g:a0 = keys(int_vars)
427
+
428
+ for m in sort(keys(int_vars))
429
+ if m =~ '^\'.a:base
430
+ call add(res, m)
431
+ endif
432
+ endfor
433
+
434
+ let int_list = res
435
+
436
+ let int_dict = []
437
+ for i in int_list
438
+ if int_vars[i] != ''
439
+ let class = ' '
440
+ if int_vars[i] != ''
441
+ let class = i.' class '
442
+ endif
443
+ let int_dict += [{'word':i, 'info':class.int_vars[i], 'kind':'v'}]
444
+ else
445
+ let int_dict += [{'word':i, 'kind':'v'}]
446
+ endif
447
+ endfor
448
+
449
+ return int_dict
450
+
451
+ else
452
+ " Complete everything else -
453
+ " + functions, DONE
454
+ " + keywords of language DONE
455
+ " + defines (constant definitions), DONE
456
+ " + extend keywords for predefined constants, DONE
457
+ " + classes (after new), DONE
458
+ " + limit choice after -> and :: to funcs and vars DONE
459
+
460
+ " Internal solution for finding functions in current file.
461
+ let file = getline(1, '$')
462
+ call filter(file,
463
+ \ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
464
+ let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
465
+ let jfile = join(file, ' ')
466
+ let int_values = split(jfile, 'function\s\+')
467
+ let int_functions = {}
468
+ for i in int_values
469
+ let f_name = matchstr(i,
470
+ \ '^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze')
471
+ let f_args = matchstr(i,
472
+ \ '^&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\s*\zs.\{-}\ze\s*)\_s*{')
473
+ let int_functions[f_name.'('] = f_args.')'
474
+ endfor
475
+
476
+ " Prepare list of functions from tags file
477
+ let ext_functions = {}
478
+ if fnames != ''
479
+ exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames
480
+ let qflist = getqflist()
481
+ if len(qflist) > 0
482
+ for field in qflist
483
+ " File name
484
+ let item = matchstr(field['text'], '^[^[:space:]]\+')
485
+ let fname = matchstr(field['text'], '\t\zs\f\+\ze')
486
+ let prototype = matchstr(field['text'],
487
+ \ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?')
488
+ let ext_functions[item.'('] = prototype.') - '.fname
489
+ endfor
490
+ endif
491
+ endif
492
+
493
+ " All functions
494
+ call extend(int_functions, ext_functions)
495
+ call extend(int_functions, g:php_builtin_functions)
496
+
497
+ " Internal solution for finding constants in current file
498
+ let file = getline(1, '$')
499
+ call filter(file, 'v:val =~ "define\\s*("')
500
+ let jfile = join(file, ' ')
501
+ let int_values = split(jfile, 'define\s*(\s*')
502
+ let int_constants = {}
503
+ for i in int_values
504
+ let c_name = matchstr(i, '\(["'']\)\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze\1')
505
+ " let c_value = matchstr(i,
506
+ " \ '\(["'']\)[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\1\s*,\s*\zs.\{-}\ze\s*)')
507
+ if c_name != ''
508
+ let int_constants[c_name] = '' " c_value
509
+ endif
510
+ endfor
511
+
512
+ " Prepare list of constants from tags file
513
+ let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")'))
514
+ let ext_constants = {}
515
+ if fnames != ''
516
+ exe 'silent! vimgrep /^'.a:base.'.*\td\(\t\|$\)/j '.fnames
517
+ let qflist = getqflist()
518
+ if len(qflist) > 0
519
+ for field in qflist
520
+ let item = matchstr(field['text'], '^[^[:space:]]\+')
521
+ let ext_constants[item] = ''
522
+ endfor
523
+ endif
524
+ endif
525
+
526
+ " All constants
527
+ call extend(int_constants, ext_constants)
528
+ " Treat keywords as constants
529
+
530
+ let all_values = {}
531
+
532
+ " One big dictionary of functions
533
+ call extend(all_values, int_functions)
534
+
535
+ " Add constants
536
+ call extend(all_values, int_constants)
537
+ " Add keywords
538
+ call extend(all_values, g:php_keywords)
539
+
540
+ for m in sort(keys(all_values))
541
+ if m =~ '^'.a:base
542
+ call add(res, m)
543
+ endif
544
+ endfor
545
+
546
+ let int_list = res
547
+
548
+ let final_list = []
549
+ for i in int_list
550
+ if has_key(int_functions, i)
551
+ let final_list +=
552
+ \ [{'word':i,
553
+ \ 'info':i.int_functions[i],
554
+ \ 'kind':'f'}]
555
+ elseif has_key(int_constants, i)
556
+ let final_list += [{'word':i, 'kind':'d'}]
557
+ else
558
+ let final_list += [{'word':i}]
559
+ endif
560
+ endfor
561
+
562
+ return final_list
563
+
564
+ endif
565
+
566
+ endfunction
567
+ " vim:set foldmethod=marker: