gitlab-pygments.rb 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: