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,232 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.util
4
+ ~~~~~~~~~~~~~
5
+
6
+ Utility functions.
7
+
8
+ :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ import re
13
+ import sys
14
+ import codecs
15
+
16
+
17
+ split_path_re = re.compile(r'[/\\ ]')
18
+ doctype_lookup_re = re.compile(r'''(?smx)
19
+ (<\?.*?\?>)?\s*
20
+ <!DOCTYPE\s+(
21
+ [a-zA-Z_][a-zA-Z0-9]*\s+
22
+ [a-zA-Z_][a-zA-Z0-9]*\s+
23
+ "[^"]*")
24
+ [^>]*>
25
+ ''')
26
+ tag_re = re.compile(r'<(.+?)(\s.*?)?>.*?</.+?>(?uism)')
27
+
28
+
29
+ class ClassNotFound(ValueError):
30
+ """
31
+ If one of the get_*_by_* functions didn't find a matching class.
32
+ """
33
+
34
+
35
+ class OptionError(Exception):
36
+ pass
37
+
38
+
39
+ def get_choice_opt(options, optname, allowed, default=None, normcase=False):
40
+ string = options.get(optname, default)
41
+ if normcase:
42
+ string = string.lower()
43
+ if string not in allowed:
44
+ raise OptionError('Value for option %s must be one of %s' %
45
+ (optname, ', '.join(map(str, allowed))))
46
+ return string
47
+
48
+
49
+ def get_bool_opt(options, optname, default=None):
50
+ string = options.get(optname, default)
51
+ if isinstance(string, bool):
52
+ return string
53
+ elif isinstance(string, int):
54
+ return bool(string)
55
+ elif not isinstance(string, basestring):
56
+ raise OptionError('Invalid type %r for option %s; use '
57
+ '1/0, yes/no, true/false, on/off' % (
58
+ string, optname))
59
+ elif string.lower() in ('1', 'yes', 'true', 'on'):
60
+ return True
61
+ elif string.lower() in ('0', 'no', 'false', 'off'):
62
+ return False
63
+ else:
64
+ raise OptionError('Invalid value %r for option %s; use '
65
+ '1/0, yes/no, true/false, on/off' % (
66
+ string, optname))
67
+
68
+
69
+ def get_int_opt(options, optname, default=None):
70
+ string = options.get(optname, default)
71
+ try:
72
+ return int(string)
73
+ except TypeError:
74
+ raise OptionError('Invalid type %r for option %s; you '
75
+ 'must give an integer value' % (
76
+ string, optname))
77
+ except ValueError:
78
+ raise OptionError('Invalid value %r for option %s; you '
79
+ 'must give an integer value' % (
80
+ string, optname))
81
+
82
+
83
+ def get_list_opt(options, optname, default=None):
84
+ val = options.get(optname, default)
85
+ if isinstance(val, basestring):
86
+ return val.split()
87
+ elif isinstance(val, (list, tuple)):
88
+ return list(val)
89
+ else:
90
+ raise OptionError('Invalid type %r for option %s; you '
91
+ 'must give a list value' % (
92
+ val, optname))
93
+
94
+
95
+ def docstring_headline(obj):
96
+ if not obj.__doc__:
97
+ return ''
98
+ res = []
99
+ for line in obj.__doc__.strip().splitlines():
100
+ if line.strip():
101
+ res.append(" " + line.strip())
102
+ else:
103
+ break
104
+ return ''.join(res).lstrip()
105
+
106
+
107
+ def make_analysator(f):
108
+ """
109
+ Return a static text analysation function that
110
+ returns float values.
111
+ """
112
+ def text_analyse(text):
113
+ try:
114
+ rv = f(text)
115
+ except Exception:
116
+ return 0.0
117
+ if not rv:
118
+ return 0.0
119
+ try:
120
+ return min(1.0, max(0.0, float(rv)))
121
+ except (ValueError, TypeError):
122
+ return 0.0
123
+ text_analyse.__doc__ = f.__doc__
124
+ return staticmethod(text_analyse)
125
+
126
+
127
+ def shebang_matches(text, regex):
128
+ """
129
+ Check if the given regular expression matches the last part of the
130
+ shebang if one exists.
131
+
132
+ >>> from pygments.util import shebang_matches
133
+ >>> shebang_matches('#!/usr/bin/env python', r'python(2\.\d)?')
134
+ True
135
+ >>> shebang_matches('#!/usr/bin/python2.4', r'python(2\.\d)?')
136
+ True
137
+ >>> shebang_matches('#!/usr/bin/python-ruby', r'python(2\.\d)?')
138
+ False
139
+ >>> shebang_matches('#!/usr/bin/python/ruby', r'python(2\.\d)?')
140
+ False
141
+ >>> shebang_matches('#!/usr/bin/startsomethingwith python',
142
+ ... r'python(2\.\d)?')
143
+ True
144
+
145
+ It also checks for common windows executable file extensions::
146
+
147
+ >>> shebang_matches('#!C:\\Python2.4\\Python.exe', r'python(2\.\d)?')
148
+ True
149
+
150
+ Parameters (``'-f'`` or ``'--foo'`` are ignored so ``'perl'`` does
151
+ the same as ``'perl -e'``)
152
+
153
+ Note that this method automatically searches the whole string (eg:
154
+ the regular expression is wrapped in ``'^$'``)
155
+ """
156
+ index = text.find('\n')
157
+ if index >= 0:
158
+ first_line = text[:index].lower()
159
+ else:
160
+ first_line = text.lower()
161
+ if first_line.startswith('#!'):
162
+ try:
163
+ found = [x for x in split_path_re.split(first_line[2:].strip())
164
+ if x and not x.startswith('-')][-1]
165
+ except IndexError:
166
+ return False
167
+ regex = re.compile('^%s(\.(exe|cmd|bat|bin))?$' % regex, re.IGNORECASE)
168
+ if regex.search(found) is not None:
169
+ return True
170
+ return False
171
+
172
+
173
+ def doctype_matches(text, regex):
174
+ """
175
+ Check if the doctype matches a regular expression (if present).
176
+ Note that this method only checks the first part of a DOCTYPE.
177
+ eg: 'html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"'
178
+ """
179
+ m = doctype_lookup_re.match(text)
180
+ if m is None:
181
+ return False
182
+ doctype = m.group(2)
183
+ return re.compile(regex).match(doctype.strip()) is not None
184
+
185
+
186
+ def html_doctype_matches(text):
187
+ """
188
+ Check if the file looks like it has a html doctype.
189
+ """
190
+ return doctype_matches(text, r'html\s+PUBLIC\s+"-//W3C//DTD X?HTML.*')
191
+
192
+
193
+ _looks_like_xml_cache = {}
194
+ def looks_like_xml(text):
195
+ """
196
+ Check if a doctype exists or if we have some tags.
197
+ """
198
+ key = hash(text)
199
+ try:
200
+ return _looks_like_xml_cache[key]
201
+ except KeyError:
202
+ m = doctype_lookup_re.match(text)
203
+ if m is not None:
204
+ return True
205
+ rv = tag_re.search(text[:1000]) is not None
206
+ _looks_like_xml_cache[key] = rv
207
+ return rv
208
+
209
+ # Python 2/3 compatibility
210
+
211
+ if sys.version_info < (3,0):
212
+ b = bytes = str
213
+ u_prefix = 'u'
214
+ import StringIO, cStringIO
215
+ BytesIO = cStringIO.StringIO
216
+ StringIO = StringIO.StringIO
217
+ uni_open = codecs.open
218
+ else:
219
+ import builtins
220
+ bytes = builtins.bytes
221
+ u_prefix = ''
222
+ def b(s):
223
+ if isinstance(s, str):
224
+ return bytes(map(ord, s))
225
+ elif isinstance(s, bytes):
226
+ return s
227
+ else:
228
+ raise TypeError("Invalid argument %r for b()" % (s,))
229
+ import io
230
+ BytesIO = io.BytesIO
231
+ StringIO = io.StringIO
232
+ uni_open = builtins.open
@@ -0,0 +1,242 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Checker for file headers
5
+ ~~~~~~~~~~~~~~~~~~~~~~~~
6
+
7
+ Make sure each Python file has a correct file header
8
+ including copyright and license information.
9
+
10
+ :copyright: Copyright 2006-2012 by the Pygments team, see AUTHORS.
11
+ :license: BSD, see LICENSE for details.
12
+ """
13
+
14
+ import sys, os, re
15
+ import getopt
16
+ import cStringIO
17
+ from os.path import join, splitext, abspath
18
+
19
+
20
+ checkers = {}
21
+
22
+ def checker(*suffixes, **kwds):
23
+ only_pkg = kwds.pop('only_pkg', False)
24
+ def deco(func):
25
+ for suffix in suffixes:
26
+ checkers.setdefault(suffix, []).append(func)
27
+ func.only_pkg = only_pkg
28
+ return func
29
+ return deco
30
+
31
+
32
+ name_mail_re = r'[\w ]+(<.*?>)?'
33
+ copyright_re = re.compile(r'^ :copyright: Copyright 2006-2012 by '
34
+ r'the Pygments team, see AUTHORS\.$', re.UNICODE)
35
+ copyright_2_re = re.compile(r'^ %s(, %s)*[,.]$' %
36
+ (name_mail_re, name_mail_re), re.UNICODE)
37
+ coding_re = re.compile(r'coding[:=]\s*([-\w.]+)')
38
+ not_ix_re = re.compile(r'\bnot\s+\S+?\s+i[sn]\s\S+')
39
+ is_const_re = re.compile(r'if.*?==\s+(None|False|True)\b')
40
+
41
+ misspellings = ["developement", "adress", "verificate", # ALLOW-MISSPELLING
42
+ "informations"] # ALLOW-MISSPELLING
43
+
44
+
45
+ @checker('.py')
46
+ def check_syntax(fn, lines):
47
+ try:
48
+ compile(''.join(lines), fn, "exec")
49
+ except SyntaxError, err:
50
+ yield 0, "not compilable: %s" % err
51
+
52
+
53
+ @checker('.py')
54
+ def check_style_and_encoding(fn, lines):
55
+ encoding = 'ascii'
56
+ for lno, line in enumerate(lines):
57
+ if len(line) > 90:
58
+ yield lno+1, "line too long"
59
+ m = not_ix_re.search(line)
60
+ if m:
61
+ yield lno+1, '"' + m.group() + '"'
62
+ if is_const_re.search(line):
63
+ yield lno+1, 'using == None/True/False'
64
+ if lno < 2:
65
+ co = coding_re.search(line)
66
+ if co:
67
+ encoding = co.group(1)
68
+ try:
69
+ line.decode(encoding)
70
+ except UnicodeDecodeError, err:
71
+ yield lno+1, "not decodable: %s\n Line: %r" % (err, line)
72
+ except LookupError, err:
73
+ yield 0, "unknown encoding: %s" % encoding
74
+ encoding = 'latin1'
75
+
76
+
77
+ @checker('.py', only_pkg=True)
78
+ def check_fileheader(fn, lines):
79
+ # line number correction
80
+ c = 1
81
+ if lines[0:1] == ['#!/usr/bin/env python\n']:
82
+ lines = lines[1:]
83
+ c = 2
84
+
85
+ llist = []
86
+ docopen = False
87
+ for lno, l in enumerate(lines):
88
+ llist.append(l)
89
+ if lno == 0:
90
+ if l == '# -*- coding: rot13 -*-\n':
91
+ # special-case pony package
92
+ return
93
+ elif l != '# -*- coding: utf-8 -*-\n':
94
+ yield 1, "missing coding declaration"
95
+ elif lno == 1:
96
+ if l != '"""\n' and l != 'r"""\n':
97
+ yield 2, 'missing docstring begin (""")'
98
+ else:
99
+ docopen = True
100
+ elif docopen:
101
+ if l == '"""\n':
102
+ # end of docstring
103
+ if lno <= 4:
104
+ yield lno+c, "missing module name in docstring"
105
+ break
106
+
107
+ if l != "\n" and l[:4] != ' ' and docopen:
108
+ yield lno+c, "missing correct docstring indentation"
109
+
110
+ if lno == 2:
111
+ # if not in package, don't check the module name
112
+ modname = fn[:-3].replace('/', '.').replace('.__init__', '')
113
+ while modname:
114
+ if l.lower()[4:-1] == modname:
115
+ break
116
+ modname = '.'.join(modname.split('.')[1:])
117
+ else:
118
+ yield 3, "wrong module name in docstring heading"
119
+ modnamelen = len(l.strip())
120
+ elif lno == 3:
121
+ if l.strip() != modnamelen * "~":
122
+ yield 4, "wrong module name underline, should be ~~~...~"
123
+
124
+ else:
125
+ yield 0, "missing end and/or start of docstring..."
126
+
127
+ # check for copyright and license fields
128
+ license = llist[-2:-1]
129
+ if license != [" :license: BSD, see LICENSE for details.\n"]:
130
+ yield 0, "no correct license info"
131
+
132
+ ci = -3
133
+ copyright = [s.decode('utf-8') for s in llist[ci:ci+1]]
134
+ while copyright and copyright_2_re.match(copyright[0]):
135
+ ci -= 1
136
+ copyright = llist[ci:ci+1]
137
+ if not copyright or not copyright_re.match(copyright[0]):
138
+ yield 0, "no correct copyright info"
139
+
140
+
141
+ @checker('.py', '.html', '.js')
142
+ def check_whitespace_and_spelling(fn, lines):
143
+ for lno, line in enumerate(lines):
144
+ if "\t" in line:
145
+ yield lno+1, "OMG TABS!!!1 "
146
+ if line[:-1].rstrip(' \t') != line[:-1]:
147
+ yield lno+1, "trailing whitespace"
148
+ for word in misspellings:
149
+ if word in line and 'ALLOW-MISSPELLING' not in line:
150
+ yield lno+1, '"%s" used' % word
151
+
152
+
153
+ bad_tags = ('<b>', '<i>', '<u>', '<s>', '<strike>'
154
+ '<center>', '<big>', '<small>', '<font')
155
+
156
+ @checker('.html')
157
+ def check_xhtml(fn, lines):
158
+ for lno, line in enumerate(lines):
159
+ for bad_tag in bad_tags:
160
+ if bad_tag in line:
161
+ yield lno+1, "used " + bad_tag
162
+
163
+
164
+ def main(argv):
165
+ try:
166
+ gopts, args = getopt.getopt(argv[1:], "vi:")
167
+ except getopt.GetoptError:
168
+ print "Usage: %s [-v] [-i ignorepath]* [path]" % argv[0]
169
+ return 2
170
+ opts = {}
171
+ for opt, val in gopts:
172
+ if opt == '-i':
173
+ val = abspath(val)
174
+ opts.setdefault(opt, []).append(val)
175
+
176
+ if len(args) == 0:
177
+ path = '.'
178
+ elif len(args) == 1:
179
+ path = args[0]
180
+ else:
181
+ print "Usage: %s [-v] [-i ignorepath]* [path]" % argv[0]
182
+ return 2
183
+
184
+ verbose = '-v' in opts
185
+
186
+ num = 0
187
+ out = cStringIO.StringIO()
188
+
189
+ # TODO: replace os.walk run with iteration over output of
190
+ # `svn list -R`.
191
+
192
+ for root, dirs, files in os.walk(path):
193
+ if '.svn' in dirs:
194
+ dirs.remove('.svn')
195
+ if '-i' in opts and abspath(root) in opts['-i']:
196
+ del dirs[:]
197
+ continue
198
+ # XXX: awkward: for the Makefile call: don't check non-package
199
+ # files for file headers
200
+ in_pocoo_pkg = root.startswith('./pygments')
201
+ for fn in files:
202
+
203
+ fn = join(root, fn)
204
+ if fn[:2] == './': fn = fn[2:]
205
+
206
+ if '-i' in opts and abspath(fn) in opts['-i']:
207
+ continue
208
+
209
+ ext = splitext(fn)[1]
210
+ checkerlist = checkers.get(ext, None)
211
+ if not checkerlist:
212
+ continue
213
+
214
+ if verbose:
215
+ print "Checking %s..." % fn
216
+
217
+ try:
218
+ f = open(fn, 'r')
219
+ lines = list(f)
220
+ except (IOError, OSError), err:
221
+ print "%s: cannot open: %s" % (fn, err)
222
+ num += 1
223
+ continue
224
+
225
+ for checker in checkerlist:
226
+ if not in_pocoo_pkg and checker.only_pkg:
227
+ continue
228
+ for lno, msg in checker(fn, lines):
229
+ print >>out, "%s:%d: %s" % (fn, lno, msg)
230
+ num += 1
231
+ if verbose:
232
+ print
233
+ if num == 0:
234
+ print "No errors found."
235
+ else:
236
+ print out.getvalue().rstrip('\n')
237
+ print "%d error%s found." % (num, num > 1 and "s" or "")
238
+ return int(num > 0)
239
+
240
+
241
+ if __name__ == '__main__':
242
+ sys.exit(main(sys.argv))