pygments.rb-jruby 0.5.4

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 (473) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/CHANGELOG.md +71 -0
  4. data/Gemfile +2 -0
  5. data/LICENSE +17 -0
  6. data/README.md +118 -0
  7. data/Rakefile +66 -0
  8. data/bench.rb +22 -0
  9. data/cache-lexers.rb +8 -0
  10. data/lexers +0 -0
  11. data/lib/pygments.rb +8 -0
  12. data/lib/pygments/lexer.rb +148 -0
  13. data/lib/pygments/mentos.py +351 -0
  14. data/lib/pygments/popen.rb +404 -0
  15. data/lib/pygments/version.rb +3 -0
  16. data/pygments.rb.gemspec +24 -0
  17. data/test/test_data.c +2581 -0
  18. data/test/test_data.py +514 -0
  19. data/test/test_data_generated +2582 -0
  20. data/test/test_pygments.rb +287 -0
  21. data/vendor/custom_lexers/github.py +565 -0
  22. data/vendor/pygments-main/AUTHORS +153 -0
  23. data/vendor/pygments-main/CHANGES +889 -0
  24. data/vendor/pygments-main/LICENSE +25 -0
  25. data/vendor/pygments-main/MANIFEST.in +6 -0
  26. data/vendor/pygments-main/Makefile +59 -0
  27. data/vendor/pygments-main/REVISION +1 -0
  28. data/vendor/pygments-main/TODO +15 -0
  29. data/vendor/pygments-main/docs/generate.py +472 -0
  30. data/vendor/pygments-main/docs/pygmentize.1 +94 -0
  31. data/vendor/pygments-main/docs/src/api.txt +270 -0
  32. data/vendor/pygments-main/docs/src/authors.txt +5 -0
  33. data/vendor/pygments-main/docs/src/changelog.txt +5 -0
  34. data/vendor/pygments-main/docs/src/cmdline.txt +147 -0
  35. data/vendor/pygments-main/docs/src/filterdevelopment.txt +70 -0
  36. data/vendor/pygments-main/docs/src/filters.txt +42 -0
  37. data/vendor/pygments-main/docs/src/formatterdevelopment.txt +169 -0
  38. data/vendor/pygments-main/docs/src/formatters.txt +48 -0
  39. data/vendor/pygments-main/docs/src/index.txt +69 -0
  40. data/vendor/pygments-main/docs/src/installation.txt +71 -0
  41. data/vendor/pygments-main/docs/src/integrate.txt +48 -0
  42. data/vendor/pygments-main/docs/src/java.txt +70 -0
  43. data/vendor/pygments-main/docs/src/lexerdevelopment.txt +603 -0
  44. data/vendor/pygments-main/docs/src/lexers.txt +67 -0
  45. data/vendor/pygments-main/docs/src/moinmoin.txt +39 -0
  46. data/vendor/pygments-main/docs/src/plugins.txt +93 -0
  47. data/vendor/pygments-main/docs/src/quickstart.txt +202 -0
  48. data/vendor/pygments-main/docs/src/rstdirective.txt +22 -0
  49. data/vendor/pygments-main/docs/src/styles.txt +143 -0
  50. data/vendor/pygments-main/docs/src/tokens.txt +349 -0
  51. data/vendor/pygments-main/docs/src/unicode.txt +49 -0
  52. data/vendor/pygments-main/external/autopygmentize +64 -0
  53. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +144 -0
  54. data/vendor/pygments-main/external/markdown-processor.py +67 -0
  55. data/vendor/pygments-main/external/moin-parser.py +112 -0
  56. data/vendor/pygments-main/external/pygments.bashcomp +38 -0
  57. data/vendor/pygments-main/external/rst-directive-old.py +77 -0
  58. data/vendor/pygments-main/external/rst-directive.py +83 -0
  59. data/vendor/pygments-main/ez_setup.py +276 -0
  60. data/vendor/pygments-main/pygmentize +7 -0
  61. data/vendor/pygments-main/pygments/__init__.py +91 -0
  62. data/vendor/pygments-main/pygments/cmdline.py +441 -0
  63. data/vendor/pygments-main/pygments/console.py +74 -0
  64. data/vendor/pygments-main/pygments/filter.py +74 -0
  65. data/vendor/pygments-main/pygments/filters/__init__.py +356 -0
  66. data/vendor/pygments-main/pygments/formatter.py +95 -0
  67. data/vendor/pygments-main/pygments/formatters/__init__.py +68 -0
  68. data/vendor/pygments-main/pygments/formatters/_mapping.py +92 -0
  69. data/vendor/pygments-main/pygments/formatters/bbcode.py +109 -0
  70. data/vendor/pygments-main/pygments/formatters/html.py +821 -0
  71. data/vendor/pygments-main/pygments/formatters/img.py +553 -0
  72. data/vendor/pygments-main/pygments/formatters/latex.py +378 -0
  73. data/vendor/pygments-main/pygments/formatters/other.py +115 -0
  74. data/vendor/pygments-main/pygments/formatters/rtf.py +136 -0
  75. data/vendor/pygments-main/pygments/formatters/svg.py +154 -0
  76. data/vendor/pygments-main/pygments/formatters/terminal.py +112 -0
  77. data/vendor/pygments-main/pygments/formatters/terminal256.py +222 -0
  78. data/vendor/pygments-main/pygments/lexer.py +765 -0
  79. data/vendor/pygments-main/pygments/lexers/__init__.py +240 -0
  80. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1645 -0
  81. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +232 -0
  82. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +5172 -0
  83. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +249 -0
  84. data/vendor/pygments-main/pygments/lexers/_mapping.py +354 -0
  85. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +562 -0
  86. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +3787 -0
  87. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +233 -0
  88. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +557 -0
  89. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +40 -0
  90. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +1072 -0
  91. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +360 -0
  92. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +13 -0
  93. data/vendor/pygments-main/pygments/lexers/agile.py +2290 -0
  94. data/vendor/pygments-main/pygments/lexers/asm.py +398 -0
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +3723 -0
  96. data/vendor/pygments-main/pygments/lexers/dalvik.py +104 -0
  97. data/vendor/pygments-main/pygments/lexers/dotnet.py +671 -0
  98. data/vendor/pygments-main/pygments/lexers/foxpro.py +428 -0
  99. data/vendor/pygments-main/pygments/lexers/functional.py +2731 -0
  100. data/vendor/pygments-main/pygments/lexers/github.py +565 -0
  101. data/vendor/pygments-main/pygments/lexers/hdl.py +356 -0
  102. data/vendor/pygments-main/pygments/lexers/jvm.py +1112 -0
  103. data/vendor/pygments-main/pygments/lexers/math.py +1918 -0
  104. data/vendor/pygments-main/pygments/lexers/other.py +3778 -0
  105. data/vendor/pygments-main/pygments/lexers/parsers.py +778 -0
  106. data/vendor/pygments-main/pygments/lexers/shell.py +424 -0
  107. data/vendor/pygments-main/pygments/lexers/special.py +100 -0
  108. data/vendor/pygments-main/pygments/lexers/sql.py +559 -0
  109. data/vendor/pygments-main/pygments/lexers/templates.py +1742 -0
  110. data/vendor/pygments-main/pygments/lexers/text.py +1893 -0
  111. data/vendor/pygments-main/pygments/lexers/web.py +4045 -0
  112. data/vendor/pygments-main/pygments/modeline.py +40 -0
  113. data/vendor/pygments-main/pygments/plugin.py +74 -0
  114. data/vendor/pygments-main/pygments/scanner.py +104 -0
  115. data/vendor/pygments-main/pygments/style.py +117 -0
  116. data/vendor/pygments-main/pygments/styles/__init__.py +70 -0
  117. data/vendor/pygments-main/pygments/styles/autumn.py +65 -0
  118. data/vendor/pygments-main/pygments/styles/borland.py +51 -0
  119. data/vendor/pygments-main/pygments/styles/bw.py +49 -0
  120. data/vendor/pygments-main/pygments/styles/colorful.py +81 -0
  121. data/vendor/pygments-main/pygments/styles/default.py +73 -0
  122. data/vendor/pygments-main/pygments/styles/emacs.py +72 -0
  123. data/vendor/pygments-main/pygments/styles/friendly.py +72 -0
  124. data/vendor/pygments-main/pygments/styles/fruity.py +42 -0
  125. data/vendor/pygments-main/pygments/styles/manni.py +75 -0
  126. data/vendor/pygments-main/pygments/styles/monokai.py +106 -0
  127. data/vendor/pygments-main/pygments/styles/murphy.py +80 -0
  128. data/vendor/pygments-main/pygments/styles/native.py +65 -0
  129. data/vendor/pygments-main/pygments/styles/pastie.py +75 -0
  130. data/vendor/pygments-main/pygments/styles/perldoc.py +69 -0
  131. data/vendor/pygments-main/pygments/styles/rrt.py +33 -0
  132. data/vendor/pygments-main/pygments/styles/tango.py +141 -0
  133. data/vendor/pygments-main/pygments/styles/trac.py +63 -0
  134. data/vendor/pygments-main/pygments/styles/vim.py +63 -0
  135. data/vendor/pygments-main/pygments/styles/vs.py +38 -0
  136. data/vendor/pygments-main/pygments/token.py +195 -0
  137. data/vendor/pygments-main/pygments/unistring.py +140 -0
  138. data/vendor/pygments-main/pygments/util.py +277 -0
  139. data/vendor/pygments-main/scripts/check_sources.py +242 -0
  140. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +32 -0
  141. data/vendor/pygments-main/scripts/epydoc.css +280 -0
  142. data/vendor/pygments-main/scripts/find_codetags.py +205 -0
  143. data/vendor/pygments-main/scripts/find_error.py +170 -0
  144. data/vendor/pygments-main/scripts/get_vimkw.py +43 -0
  145. data/vendor/pygments-main/scripts/pylintrc +301 -0
  146. data/vendor/pygments-main/scripts/reindent.py +291 -0
  147. data/vendor/pygments-main/scripts/vim2pygments.py +933 -0
  148. data/vendor/pygments-main/setup.cfg +7 -0
  149. data/vendor/pygments-main/setup.py +90 -0
  150. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +37 -0
  151. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +869 -0
  152. data/vendor/pygments-main/tests/dtds/HTML4.dcl +88 -0
  153. data/vendor/pygments-main/tests/dtds/HTML4.dtd +1092 -0
  154. data/vendor/pygments-main/tests/dtds/HTML4.soc +9 -0
  155. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +195 -0
  156. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +77 -0
  157. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +241 -0
  158. data/vendor/pygments-main/tests/examplefiles/ANTLRv3.g +608 -0
  159. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +209 -0
  160. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +102 -0
  161. data/vendor/pygments-main/tests/examplefiles/BOM.js +1 -0
  162. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +611 -0
  163. data/vendor/pygments-main/tests/examplefiles/Config.in.cache +1973 -0
  164. data/vendor/pygments-main/tests/examplefiles/Constants.mo +158 -0
  165. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +411 -0
  166. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +578 -0
  167. data/vendor/pygments-main/tests/examplefiles/Errors.scala +18 -0
  168. data/vendor/pygments-main/tests/examplefiles/File.hy +174 -0
  169. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +66 -0
  170. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +104 -0
  171. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +671 -0
  172. data/vendor/pygments-main/tests/examplefiles/Intro.java +1660 -0
  173. data/vendor/pygments-main/tests/examplefiles/Makefile +1131 -0
  174. data/vendor/pygments-main/tests/examplefiles/Object.st +4394 -0
  175. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +584 -0
  176. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +23 -0
  177. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +378 -0
  178. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +470 -0
  179. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +382 -0
  180. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +30 -0
  181. data/vendor/pygments-main/tests/examplefiles/antlr_throws +1 -0
  182. data/vendor/pygments-main/tests/examplefiles/apache2.conf +393 -0
  183. data/vendor/pygments-main/tests/examplefiles/as3_test.as +143 -0
  184. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +46 -0
  185. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +3 -0
  186. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +27 -0
  187. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +25 -0
  188. data/vendor/pygments-main/tests/examplefiles/badcase.java +2 -0
  189. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +49 -0
  190. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +308 -0
  191. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +1557 -0
  192. data/vendor/pygments-main/tests/examplefiles/ca65_example +284 -0
  193. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +9 -0
  194. data/vendor/pygments-main/tests/examplefiles/cells.ps +515 -0
  195. data/vendor/pygments-main/tests/examplefiles/ceval.c +2604 -0
  196. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +13 -0
  197. data/vendor/pygments-main/tests/examplefiles/classes.dylan +125 -0
  198. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +10 -0
  199. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +447 -0
  200. data/vendor/pygments-main/tests/examplefiles/database.pytb +20 -0
  201. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +2461 -0
  202. data/vendor/pygments-main/tests/examplefiles/demo.ahk +181 -0
  203. data/vendor/pygments-main/tests/examplefiles/demo.cfm +38 -0
  204. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +68 -0
  205. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +17 -0
  206. data/vendor/pygments-main/tests/examplefiles/erl_session +10 -0
  207. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +1 -0
  208. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +48 -0
  209. data/vendor/pygments-main/tests/examplefiles/example.Rd +78 -0
  210. data/vendor/pygments-main/tests/examplefiles/example.bug +54 -0
  211. data/vendor/pygments-main/tests/examplefiles/example.c +2080 -0
  212. data/vendor/pygments-main/tests/examplefiles/example.ceylon +52 -0
  213. data/vendor/pygments-main/tests/examplefiles/example.clay +33 -0
  214. data/vendor/pygments-main/tests/examplefiles/example.cls +15 -0
  215. data/vendor/pygments-main/tests/examplefiles/example.cob +3556 -0
  216. data/vendor/pygments-main/tests/examplefiles/example.cpp +2363 -0
  217. data/vendor/pygments-main/tests/examplefiles/example.gs +106 -0
  218. data/vendor/pygments-main/tests/examplefiles/example.gst +7 -0
  219. data/vendor/pygments-main/tests/examplefiles/example.hx +142 -0
  220. data/vendor/pygments-main/tests/examplefiles/example.jag +48 -0
  221. data/vendor/pygments-main/tests/examplefiles/example.kt +47 -0
  222. data/vendor/pygments-main/tests/examplefiles/example.lagda +19 -0
  223. data/vendor/pygments-main/tests/examplefiles/example.lua +250 -0
  224. data/vendor/pygments-main/tests/examplefiles/example.monkey +152 -0
  225. data/vendor/pygments-main/tests/examplefiles/example.moo +26 -0
  226. data/vendor/pygments-main/tests/examplefiles/example.moon +629 -0
  227. data/vendor/pygments-main/tests/examplefiles/example.msc +43 -0
  228. data/vendor/pygments-main/tests/examplefiles/example.nim +1010 -0
  229. data/vendor/pygments-main/tests/examplefiles/example.ns2 +69 -0
  230. data/vendor/pygments-main/tests/examplefiles/example.p +34 -0
  231. data/vendor/pygments-main/tests/examplefiles/example.pas +2708 -0
  232. data/vendor/pygments-main/tests/examplefiles/example.prg +161 -0
  233. data/vendor/pygments-main/tests/examplefiles/example.rb +1852 -0
  234. data/vendor/pygments-main/tests/examplefiles/example.reg +19 -0
  235. data/vendor/pygments-main/tests/examplefiles/example.rexx +50 -0
  236. data/vendor/pygments-main/tests/examplefiles/example.rhtml +561 -0
  237. data/vendor/pygments-main/tests/examplefiles/example.rkt +95 -0
  238. data/vendor/pygments-main/tests/examplefiles/example.rpf +4 -0
  239. data/vendor/pygments-main/tests/examplefiles/example.sh-session +19 -0
  240. data/vendor/pygments-main/tests/examplefiles/example.shell-session +45 -0
  241. data/vendor/pygments-main/tests/examplefiles/example.sml +156 -0
  242. data/vendor/pygments-main/tests/examplefiles/example.snobol +15 -0
  243. data/vendor/pygments-main/tests/examplefiles/example.stan +108 -0
  244. data/vendor/pygments-main/tests/examplefiles/example.tea +34 -0
  245. data/vendor/pygments-main/tests/examplefiles/example.ts +28 -0
  246. data/vendor/pygments-main/tests/examplefiles/example.u +548 -0
  247. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +9 -0
  248. data/vendor/pygments-main/tests/examplefiles/example.xhtml +376 -0
  249. data/vendor/pygments-main/tests/examplefiles/example.xtend +34 -0
  250. data/vendor/pygments-main/tests/examplefiles/example.yaml +302 -0
  251. data/vendor/pygments-main/tests/examplefiles/example2.aspx +29 -0
  252. data/vendor/pygments-main/tests/examplefiles/example2.msc +79 -0
  253. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +363 -0
  254. data/vendor/pygments-main/tests/examplefiles/example_file.fy +128 -0
  255. data/vendor/pygments-main/tests/examplefiles/firefox.mak +586 -0
  256. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +19 -0
  257. data/vendor/pygments-main/tests/examplefiles/foo.sce +6 -0
  258. data/vendor/pygments-main/tests/examplefiles/format.ml +1213 -0
  259. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +77 -0
  260. data/vendor/pygments-main/tests/examplefiles/function.mu +1 -0
  261. data/vendor/pygments-main/tests/examplefiles/functional.rst +1472 -0
  262. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +133 -0
  263. data/vendor/pygments-main/tests/examplefiles/genclass.clj +510 -0
  264. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +193 -0
  265. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +33 -0
  266. data/vendor/pygments-main/tests/examplefiles/glsl.frag +7 -0
  267. data/vendor/pygments-main/tests/examplefiles/glsl.vert +13 -0
  268. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +22 -0
  269. data/vendor/pygments-main/tests/examplefiles/hello.smali +40 -0
  270. data/vendor/pygments-main/tests/examplefiles/hello.sp +9 -0
  271. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +1 -0
  272. data/vendor/pygments-main/tests/examplefiles/http_request_example +15 -0
  273. data/vendor/pygments-main/tests/examplefiles/http_response_example +29 -0
  274. data/vendor/pygments-main/tests/examplefiles/import.hs +4 -0
  275. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +71 -0
  276. data/vendor/pygments-main/tests/examplefiles/intro.ik +24 -0
  277. data/vendor/pygments-main/tests/examplefiles/ints.php +10 -0
  278. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +675 -0
  279. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +286 -0
  280. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +8 -0
  281. data/vendor/pygments-main/tests/examplefiles/irc.lsp +214 -0
  282. data/vendor/pygments-main/tests/examplefiles/java.properties +16 -0
  283. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +28 -0
  284. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +45 -0
  285. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +713 -0
  286. data/vendor/pygments-main/tests/examplefiles/json.lasso +301 -0
  287. data/vendor/pygments-main/tests/examplefiles/json.lasso9 +213 -0
  288. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +13 -0
  289. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +47 -0
  290. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +41 -0
  291. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +28 -0
  292. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +2849 -0
  293. data/vendor/pygments-main/tests/examplefiles/main.cmake +42 -0
  294. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +679 -0
  295. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +3 -0
  296. data/vendor/pygments-main/tests/examplefiles/matlab_sample +30 -0
  297. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +37 -0
  298. data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +455 -0
  299. data/vendor/pygments-main/tests/examplefiles/mg_sample.pro +73 -0
  300. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +112 -0
  301. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +4 -0
  302. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +340 -0
  303. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +38 -0
  304. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +95 -0
  305. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +96 -0
  306. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +30 -0
  307. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +87 -0
  308. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +118 -0
  309. data/vendor/pygments-main/tests/examplefiles/numbers.c +12 -0
  310. data/vendor/pygments-main/tests/examplefiles/objc_example.m +32 -0
  311. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +24 -0
  312. data/vendor/pygments-main/tests/examplefiles/perl_misc +62 -0
  313. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +998 -0
  314. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +120 -0
  315. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +856 -0
  316. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +163 -0
  317. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +567 -0
  318. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +1223 -0
  319. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +47 -0
  320. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +10 -0
  321. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +122 -0
  322. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +2 -0
  323. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +4 -0
  324. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +14 -0
  325. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +2 -0
  326. data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +4 -0
  327. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +234 -0
  328. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +13 -0
  329. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +38 -0
  330. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +280 -0
  331. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +2 -0
  332. data/vendor/pygments-main/tests/examplefiles/regex.js +22 -0
  333. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +427 -0
  334. data/vendor/pygments-main/tests/examplefiles/robotframework.txt +39 -0
  335. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +11 -0
  336. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +233 -0
  337. data/vendor/pygments-main/tests/examplefiles/scilab.sci +30 -0
  338. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +9 -0
  339. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +19 -0
  340. data/vendor/pygments-main/tests/examplefiles/simple.md +747 -0
  341. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +209 -0
  342. data/vendor/pygments-main/tests/examplefiles/source.lgt +343 -0
  343. data/vendor/pygments-main/tests/examplefiles/sources.list +62 -0
  344. data/vendor/pygments-main/tests/examplefiles/sphere.pov +18 -0
  345. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +27 -0
  346. data/vendor/pygments-main/tests/examplefiles/squid.conf +30 -0
  347. data/vendor/pygments-main/tests/examplefiles/string.jl +1031 -0
  348. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +21 -0
  349. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +3 -0
  350. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +1329 -0
  351. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +225 -0
  352. data/vendor/pygments-main/tests/examplefiles/test.R +153 -0
  353. data/vendor/pygments-main/tests/examplefiles/test.adb +211 -0
  354. data/vendor/pygments-main/tests/examplefiles/test.agda +102 -0
  355. data/vendor/pygments-main/tests/examplefiles/test.asy +131 -0
  356. data/vendor/pygments-main/tests/examplefiles/test.awk +121 -0
  357. data/vendor/pygments-main/tests/examplefiles/test.bas +29 -0
  358. data/vendor/pygments-main/tests/examplefiles/test.bb +95 -0
  359. data/vendor/pygments-main/tests/examplefiles/test.bmx +145 -0
  360. data/vendor/pygments-main/tests/examplefiles/test.boo +39 -0
  361. data/vendor/pygments-main/tests/examplefiles/test.bro +250 -0
  362. data/vendor/pygments-main/tests/examplefiles/test.cs +374 -0
  363. data/vendor/pygments-main/tests/examplefiles/test.css +54 -0
  364. data/vendor/pygments-main/tests/examplefiles/test.cu +36 -0
  365. data/vendor/pygments-main/tests/examplefiles/test.d +135 -0
  366. data/vendor/pygments-main/tests/examplefiles/test.dart +23 -0
  367. data/vendor/pygments-main/tests/examplefiles/test.dtd +89 -0
  368. data/vendor/pygments-main/tests/examplefiles/test.ebnf +31 -0
  369. data/vendor/pygments-main/tests/examplefiles/test.ec +605 -0
  370. data/vendor/pygments-main/tests/examplefiles/test.ecl +58 -0
  371. data/vendor/pygments-main/tests/examplefiles/test.eh +315 -0
  372. data/vendor/pygments-main/tests/examplefiles/test.erl +169 -0
  373. data/vendor/pygments-main/tests/examplefiles/test.evoque +33 -0
  374. data/vendor/pygments-main/tests/examplefiles/test.fan +818 -0
  375. data/vendor/pygments-main/tests/examplefiles/test.flx +57 -0
  376. data/vendor/pygments-main/tests/examplefiles/test.gdc +13 -0
  377. data/vendor/pygments-main/tests/examplefiles/test.groovy +97 -0
  378. data/vendor/pygments-main/tests/examplefiles/test.html +339 -0
  379. data/vendor/pygments-main/tests/examplefiles/test.ini +10 -0
  380. data/vendor/pygments-main/tests/examplefiles/test.java +653 -0
  381. data/vendor/pygments-main/tests/examplefiles/test.jsp +24 -0
  382. data/vendor/pygments-main/tests/examplefiles/test.maql +45 -0
  383. data/vendor/pygments-main/tests/examplefiles/test.mod +374 -0
  384. data/vendor/pygments-main/tests/examplefiles/test.moo +51 -0
  385. data/vendor/pygments-main/tests/examplefiles/test.myt +166 -0
  386. data/vendor/pygments-main/tests/examplefiles/test.nim +93 -0
  387. data/vendor/pygments-main/tests/examplefiles/test.opa +10 -0
  388. data/vendor/pygments-main/tests/examplefiles/test.p6 +252 -0
  389. data/vendor/pygments-main/tests/examplefiles/test.pas +743 -0
  390. data/vendor/pygments-main/tests/examplefiles/test.php +505 -0
  391. data/vendor/pygments-main/tests/examplefiles/test.plot +333 -0
  392. data/vendor/pygments-main/tests/examplefiles/test.ps1 +108 -0
  393. data/vendor/pygments-main/tests/examplefiles/test.pypylog +1839 -0
  394. data/vendor/pygments-main/tests/examplefiles/test.r3 +94 -0
  395. data/vendor/pygments-main/tests/examplefiles/test.rb +177 -0
  396. data/vendor/pygments-main/tests/examplefiles/test.rhtml +43 -0
  397. data/vendor/pygments-main/tests/examplefiles/test.scaml +8 -0
  398. data/vendor/pygments-main/tests/examplefiles/test.ssp +12 -0
  399. data/vendor/pygments-main/tests/examplefiles/test.tcsh +830 -0
  400. data/vendor/pygments-main/tests/examplefiles/test.vb +407 -0
  401. data/vendor/pygments-main/tests/examplefiles/test.vhdl +161 -0
  402. data/vendor/pygments-main/tests/examplefiles/test.xqy +138 -0
  403. data/vendor/pygments-main/tests/examplefiles/test.xsl +23 -0
  404. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +120 -0
  405. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +15 -0
  406. data/vendor/pygments-main/tests/examplefiles/type.lisp +1218 -0
  407. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +603 -0
  408. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +5 -0
  409. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +11 -0
  410. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +37 -0
  411. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +3 -0
  412. data/vendor/pygments-main/tests/examplefiles/while.pov +13 -0
  413. data/vendor/pygments-main/tests/examplefiles/wiki.factor +384 -0
  414. data/vendor/pygments-main/tests/examplefiles/xml_example +1897 -0
  415. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +798 -0
  416. data/vendor/pygments-main/tests/old_run.py +138 -0
  417. data/vendor/pygments-main/tests/run.py +49 -0
  418. data/vendor/pygments-main/tests/support.py +15 -0
  419. data/vendor/pygments-main/tests/support/tags +36 -0
  420. data/vendor/pygments-main/tests/test_basic_api.py +295 -0
  421. data/vendor/pygments-main/tests/test_clexer.py +31 -0
  422. data/vendor/pygments-main/tests/test_cmdline.py +105 -0
  423. data/vendor/pygments-main/tests/test_examplefiles.py +99 -0
  424. data/vendor/pygments-main/tests/test_html_formatter.py +178 -0
  425. data/vendor/pygments-main/tests/test_latex_formatter.py +55 -0
  426. data/vendor/pygments-main/tests/test_lexers_other.py +68 -0
  427. data/vendor/pygments-main/tests/test_perllexer.py +137 -0
  428. data/vendor/pygments-main/tests/test_regexlexer.py +47 -0
  429. data/vendor/pygments-main/tests/test_token.py +46 -0
  430. data/vendor/pygments-main/tests/test_using_api.py +40 -0
  431. data/vendor/pygments-main/tests/test_util.py +135 -0
  432. data/vendor/simplejson/.gitignore +10 -0
  433. data/vendor/simplejson/.travis.yml +5 -0
  434. data/vendor/simplejson/CHANGES.txt +291 -0
  435. data/vendor/simplejson/LICENSE.txt +19 -0
  436. data/vendor/simplejson/MANIFEST.in +5 -0
  437. data/vendor/simplejson/README.rst +19 -0
  438. data/vendor/simplejson/conf.py +179 -0
  439. data/vendor/simplejson/index.rst +628 -0
  440. data/vendor/simplejson/scripts/make_docs.py +18 -0
  441. data/vendor/simplejson/setup.py +104 -0
  442. data/vendor/simplejson/simplejson/__init__.py +510 -0
  443. data/vendor/simplejson/simplejson/_speedups.c +2745 -0
  444. data/vendor/simplejson/simplejson/decoder.py +425 -0
  445. data/vendor/simplejson/simplejson/encoder.py +567 -0
  446. data/vendor/simplejson/simplejson/ordered_dict.py +119 -0
  447. data/vendor/simplejson/simplejson/scanner.py +77 -0
  448. data/vendor/simplejson/simplejson/tests/__init__.py +67 -0
  449. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +55 -0
  450. data/vendor/simplejson/simplejson/tests/test_check_circular.py +30 -0
  451. data/vendor/simplejson/simplejson/tests/test_decimal.py +66 -0
  452. data/vendor/simplejson/simplejson/tests/test_decode.py +83 -0
  453. data/vendor/simplejson/simplejson/tests/test_default.py +9 -0
  454. data/vendor/simplejson/simplejson/tests/test_dump.py +67 -0
  455. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +46 -0
  456. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +32 -0
  457. data/vendor/simplejson/simplejson/tests/test_errors.py +34 -0
  458. data/vendor/simplejson/simplejson/tests/test_fail.py +91 -0
  459. data/vendor/simplejson/simplejson/tests/test_float.py +19 -0
  460. data/vendor/simplejson/simplejson/tests/test_indent.py +86 -0
  461. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +20 -0
  462. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +121 -0
  463. data/vendor/simplejson/simplejson/tests/test_pass1.py +76 -0
  464. data/vendor/simplejson/simplejson/tests/test_pass2.py +14 -0
  465. data/vendor/simplejson/simplejson/tests/test_pass3.py +20 -0
  466. data/vendor/simplejson/simplejson/tests/test_recursion.py +67 -0
  467. data/vendor/simplejson/simplejson/tests/test_scanstring.py +117 -0
  468. data/vendor/simplejson/simplejson/tests/test_separators.py +42 -0
  469. data/vendor/simplejson/simplejson/tests/test_speedups.py +20 -0
  470. data/vendor/simplejson/simplejson/tests/test_tuple.py +49 -0
  471. data/vendor/simplejson/simplejson/tests/test_unicode.py +109 -0
  472. data/vendor/simplejson/simplejson/tool.py +39 -0
  473. metadata +557 -0
@@ -0,0 +1,10 @@
1
+ [section]
2
+
3
+ foo = bar
4
+ continued = foo
5
+ baz
6
+ conttwo =
7
+ foo
8
+ ; comment
9
+ # comment
10
+
@@ -0,0 +1,653 @@
1
+ /*
2
+ * Created on 13-Mar-2004
3
+ * Created by James Yeh
4
+ * Copyright (C) 2004, 2005, 2006 Aelitis, All Rights Reserved.
5
+ *
6
+ * This program is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU General Public License
8
+ * as published by the Free Software Foundation; either version 2
9
+ * of the License, or (at your option) any later version.
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ * You should have received a copy of the GNU General Public License
15
+ * along with this program; if not, write to the Free Software
16
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
+ *
18
+ * AELITIS, SAS au capital de 46,603.30 euros
19
+ * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
20
+ *
21
+ */
22
+
23
+ package org.gudy.azureus2.platform.macosx;
24
+
25
+ import org.gudy.azureus2.core3.logging.*;
26
+ import org.gudy.azureus2.core3.util.AEMonitor;
27
+ import org.gudy.azureus2.core3.util.Debug;
28
+ import org.gudy.azureus2.core3.util.SystemProperties;
29
+ import org.gudy.azureus2.platform.PlatformManager;
30
+ import org.gudy.azureus2.platform.PlatformManagerCapabilities;
31
+ import org.gudy.azureus2.platform.PlatformManagerListener;
32
+ import org.gudy.azureus2.platform.macosx.access.jnilib.OSXAccess;
33
+
34
+ import org.gudy.azureus2.plugins.platform.PlatformManagerException;
35
+
36
+ import java.io.BufferedReader;
37
+ import java.io.File;
38
+ import java.io.IOException;
39
+ import java.io.InputStreamReader;
40
+ import java.text.MessageFormat;
41
+ import java.util.HashSet;
42
+
43
+
44
+ /**
45
+ * Performs platform-specific operations with Mac OS X
46
+ *
47
+ * @author James Yeh
48
+ * @version 1.0 Initial Version
49
+ * @see PlatformManager
50
+ */
51
+ public class PlatformManagerImpl implements PlatformManager
52
+ {
53
+ private static final LogIDs LOGID = LogIDs.CORE;
54
+
55
+ protected static PlatformManagerImpl singleton;
56
+ protected static AEMonitor class_mon = new AEMonitor("PlatformManager");
57
+
58
+ private static final String USERDATA_PATH = new File(System.getProperty("user.home") + "/Library/Application Support/").getPath();
59
+
60
+ //T: PlatformManagerCapabilities
61
+ private final HashSet capabilitySet = new HashSet();
62
+
63
+ /**
64
+ * Gets the platform manager singleton, which was already initialized
65
+ */
66
+ public static PlatformManagerImpl getSingleton()
67
+ {
68
+ return singleton;
69
+ }
70
+
71
+ /**
72
+ * Tries to enable cocoa-java access and instantiates the singleton
73
+ */
74
+ static
75
+ {
76
+ initializeSingleton();
77
+ }
78
+
79
+ /**
80
+ * Instantiates the singleton
81
+ */
82
+ private static void initializeSingleton()
83
+ {
84
+ try
85
+ {
86
+ class_mon.enter();
87
+ singleton = new PlatformManagerImpl();
88
+ }
89
+ catch (Throwable e)
90
+ {
91
+ Logger.log(new LogEvent(LOGID, "Failed to initialize platform manager"
92
+ + " for Mac OS X", e));
93
+ }
94
+ finally
95
+ {
96
+ class_mon.exit();
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Creates a new PlatformManager and initializes its capabilities
102
+ */
103
+ public PlatformManagerImpl()
104
+ {
105
+ capabilitySet.add(PlatformManagerCapabilities.RecoverableFileDelete);
106
+ capabilitySet.add(PlatformManagerCapabilities.ShowFileInBrowser);
107
+ capabilitySet.add(PlatformManagerCapabilities.ShowPathInCommandLine);
108
+ capabilitySet.add(PlatformManagerCapabilities.CreateCommandLineProcess);
109
+ capabilitySet.add(PlatformManagerCapabilities.GetUserDataDirectory);
110
+ capabilitySet.add(PlatformManagerCapabilities.UseNativeScripting);
111
+ capabilitySet.add(PlatformManagerCapabilities.PlaySystemAlert);
112
+
113
+ if (OSXAccess.isLoaded()) {
114
+ capabilitySet.add(PlatformManagerCapabilities.GetVersion);
115
+ }
116
+ }
117
+
118
+ /**
119
+ * {@inheritDoc}
120
+ */
121
+ public int getPlatformType()
122
+ {
123
+ return PT_MACOSX;
124
+ }
125
+
126
+ /**
127
+ * {@inheritDoc}
128
+ */
129
+ public String getVersion() throws PlatformManagerException
130
+ {
131
+ if (!OSXAccess.isLoaded()) {
132
+ throw new PlatformManagerException("Unsupported capability called on platform manager");
133
+ }
134
+
135
+ return OSXAccess.getVersion();
136
+ }
137
+
138
+ /**
139
+ * {@inheritDoc}
140
+ * @see org.gudy.azureus2.core3.util.SystemProperties#getUserPath()
141
+ */
142
+ public String getUserDataDirectory() throws PlatformManagerException
143
+ {
144
+ return USERDATA_PATH;
145
+ }
146
+
147
+ public File
148
+ getLocation(
149
+ long location_id )
150
+
151
+ throws PlatformManagerException
152
+ {
153
+ if ( location_id == LOC_USER_DATA ){
154
+
155
+ return( new File( USERDATA_PATH ));
156
+ }
157
+
158
+ return( null );
159
+ }
160
+ /**
161
+ * Not implemented; returns True
162
+ */
163
+ public boolean isApplicationRegistered() throws PlatformManagerException
164
+ {
165
+ return true;
166
+ }
167
+
168
+
169
+ public String
170
+ getApplicationCommandLine()
171
+ throws PlatformManagerException
172
+ {
173
+ try{
174
+ String bundle_path = System.getProperty("user.dir") +SystemProperties.SEP+ SystemProperties.getApplicationName() + ".app";
175
+
176
+ File osx_app_bundle = new File( bundle_path ).getAbsoluteFile();
177
+
178
+ if( !osx_app_bundle.exists() ) {
179
+ String msg = "OSX app bundle not found: [" +osx_app_bundle.toString()+ "]";
180
+ System.out.println( msg );
181
+ if (Logger.isEnabled())
182
+ Logger.log(new LogEvent(LOGID, msg));
183
+ throw new PlatformManagerException( msg );
184
+ }
185
+
186
+ return "open -a \"" +osx_app_bundle.toString()+ "\"";
187
+ //return osx_app_bundle.toString() +"/Contents/MacOS/JavaApplicationStub";
188
+
189
+ }
190
+ catch( Throwable t ){
191
+ t.printStackTrace();
192
+ return null;
193
+ }
194
+ }
195
+
196
+
197
+ public boolean
198
+ isAdditionalFileTypeRegistered(
199
+ String name, // e.g. "BitTorrent"
200
+ String type ) // e.g. ".torrent"
201
+
202
+ throws PlatformManagerException
203
+ {
204
+ throw new PlatformManagerException("Unsupported capability called on platform manager");
205
+ }
206
+
207
+ public void
208
+ unregisterAdditionalFileType(
209
+ String name, // e.g. "BitTorrent"
210
+ String type ) // e.g. ".torrent"
211
+
212
+ throws PlatformManagerException
213
+ {
214
+ throw new PlatformManagerException("Unsupported capability called on platform manager");
215
+ }
216
+
217
+ public void
218
+ registerAdditionalFileType(
219
+ String name, // e.g. "BitTorrent"
220
+ String description, // e.g. "BitTorrent File"
221
+ String type, // e.g. ".torrent"
222
+ String content_type ) // e.g. "application/x-bittorrent"
223
+
224
+ throws PlatformManagerException
225
+ {
226
+ throw new PlatformManagerException("Unsupported capability called on platform manager");
227
+ }
228
+
229
+ /**
230
+ * Not implemented; does nothing
231
+ */
232
+ public void registerApplication() throws PlatformManagerException
233
+ {
234
+ // handled by LaunchServices and/0r user interaction
235
+ }
236
+
237
+ /**
238
+ * {@inheritDoc}
239
+ */
240
+ public void createProcess(String cmd, boolean inheritsHandles) throws PlatformManagerException
241
+ {
242
+ try
243
+ {
244
+ performRuntimeExec(cmd.split(" "));
245
+ }
246
+ catch (Throwable e)
247
+ {
248
+ throw new PlatformManagerException("Failed to create process", e);
249
+ }
250
+ }
251
+
252
+ /**
253
+ * {@inheritDoc}
254
+ */
255
+ public void performRecoverableFileDelete(String path) throws PlatformManagerException
256
+ {
257
+ File file = new File(path);
258
+ if(!file.exists())
259
+ {
260
+ if (Logger.isEnabled())
261
+ Logger.log(new LogEvent(LOGID, LogEvent.LT_WARNING, "Cannot find "
262
+ + file.getName()));
263
+ return;
264
+ }
265
+
266
+ boolean useOSA = !NativeInvocationBridge.sharedInstance().isEnabled() || !NativeInvocationBridge.sharedInstance().performRecoverableFileDelete(file);
267
+
268
+ if(useOSA)
269
+ {
270
+ try
271
+ {
272
+ StringBuffer sb = new StringBuffer();
273
+ sb.append("tell application \"");
274
+ sb.append("Finder");
275
+ sb.append("\" to move (posix file \"");
276
+ sb.append(path);
277
+ sb.append("\" as alias) to the trash");
278
+
279
+ performOSAScript(sb);
280
+ }
281
+ catch (Throwable e)
282
+ {
283
+ throw new PlatformManagerException("Failed to move file", e);
284
+ }
285
+ }
286
+ }
287
+
288
+ /**
289
+ * {@inheritDoc}
290
+ */
291
+ public boolean hasCapability(PlatformManagerCapabilities capability)
292
+ {
293
+ return capabilitySet.contains(capability);
294
+ }
295
+
296
+ /**
297
+ * {@inheritDoc}
298
+ */
299
+ public void dispose()
300
+ {
301
+ NativeInvocationBridge.sharedInstance().dispose();
302
+ }
303
+
304
+ /**
305
+ * {@inheritDoc}
306
+ */
307
+ public void setTCPTOSEnabled(boolean enabled) throws PlatformManagerException
308
+ {
309
+ throw new PlatformManagerException("Unsupported capability called on platform manager");
310
+ }
311
+
312
+ public void
313
+ copyFilePermissions(
314
+ String from_file_name,
315
+ String to_file_name )
316
+
317
+ throws PlatformManagerException
318
+ {
319
+ throw new PlatformManagerException("Unsupported capability called on platform manager");
320
+ }
321
+
322
+ /**
323
+ * {@inheritDoc}
324
+ */
325
+ public void showFile(String path) throws PlatformManagerException
326
+ {
327
+ File file = new File(path);
328
+ if(!file.exists())
329
+ {
330
+ if (Logger.isEnabled())
331
+ Logger.log(new LogEvent(LOGID, LogEvent.LT_WARNING, "Cannot find "
332
+ + file.getName()));
333
+ throw new PlatformManagerException("File not found");
334
+ }
335
+
336
+ showInFinder(file);
337
+ }
338
+
339
+ // Public utility methods not shared across the interface
340
+
341
+ /**
342
+ * Plays the system alert (the jingle is specified by the user in System Preferences)
343
+ */
344
+ public void playSystemAlert()
345
+ {
346
+ try
347
+ {
348
+ performRuntimeExec(new String[]{"beep"});
349
+ }
350
+ catch (IOException e)
351
+ {
352
+ if (Logger.isEnabled())
353
+ Logger.log(new LogEvent(LOGID, LogEvent.LT_WARNING,
354
+ "Cannot play system alert"));
355
+ Logger.log(new LogEvent(LOGID, "", e));
356
+ }
357
+ }
358
+
359
+ /**
360
+ * <p>Shows the given file or directory in Finder</p>
361
+ * @param path Absolute path to the file or directory
362
+ */
363
+ public void showInFinder(File path)
364
+ {
365
+ boolean useOSA = !NativeInvocationBridge.sharedInstance().isEnabled() || !NativeInvocationBridge.sharedInstance().showInFinder(path);
366
+
367
+ if(useOSA)
368
+ {
369
+ StringBuffer sb = new StringBuffer();
370
+ sb.append("tell application \"");
371
+ sb.append(getFileBrowserName());
372
+ sb.append("\" to reveal (posix file \"");
373
+ sb.append(path);
374
+ sb.append("\" as alias)");
375
+
376
+ try
377
+ {
378
+ performOSAScript(sb);
379
+ }
380
+ catch (IOException e)
381
+ {
382
+ Logger.log(new LogAlert(LogAlert.UNREPEATABLE, LogAlert.AT_ERROR, e
383
+ .getMessage()));
384
+ }
385
+ }
386
+ }
387
+
388
+ /**
389
+ * <p>Shows the given file or directory in Terminal by executing cd /absolute/path/to</p>
390
+ * @param path Absolute path to the file or directory
391
+ */
392
+ public void showInTerminal(String path)
393
+ {
394
+ showInTerminal(new File(path));
395
+ }
396
+
397
+ /**
398
+ * <p>Shows the given file or directory in Terminal by executing cd /absolute/path/to</p>
399
+ * @param path Absolute path to the file or directory
400
+ */
401
+ public void showInTerminal(File path)
402
+ {
403
+ if (path.isFile())
404
+ {
405
+ path = path.getParentFile();
406
+ }
407
+
408
+ if (path != null && path.isDirectory())
409
+ {
410
+ StringBuffer sb = new StringBuffer();
411
+ sb.append("tell application \"");
412
+ sb.append("Terminal");
413
+ sb.append("\" to do script \"cd ");
414
+ sb.append(path.getAbsolutePath().replaceAll(" ", "\\ "));
415
+ sb.append("\"");
416
+
417
+ try
418
+ {
419
+ performOSAScript(sb);
420
+ }
421
+ catch (IOException e)
422
+ {
423
+ Logger.log(new LogAlert(LogAlert.UNREPEATABLE, LogAlert.AT_ERROR, e
424
+ .getMessage()));
425
+ }
426
+ }
427
+ else
428
+ {
429
+ if (Logger.isEnabled())
430
+ Logger.log(new LogEvent(LOGID, LogEvent.LT_WARNING, "Cannot find "
431
+ + path.getName()));
432
+ }
433
+ }
434
+
435
+ // Internal utility methods
436
+
437
+ /**
438
+ * Compiles a new AppleScript instance and runs it
439
+ * @param cmd AppleScript command to execute; do not surround command with extra quotation marks
440
+ * @return Output of the script
441
+ * @throws IOException If the script failed to execute
442
+ */
443
+ protected static String performOSAScript(CharSequence cmd) throws IOException
444
+ {
445
+ return performOSAScript(new CharSequence[]{cmd});
446
+ }
447
+
448
+ /**
449
+ * Compiles a new AppleScript instance and runs it
450
+ * @param cmds AppleScript Sequence of commands to execute; do not surround command with extra quotation marks
451
+ * @return Output of the script
452
+ * @throws IOException If the script failed to execute
453
+ */
454
+ protected static String performOSAScript(CharSequence[] cmds) throws IOException
455
+ {
456
+ long start = System.currentTimeMillis();
457
+ Debug.outNoStack("Executing OSAScript: ");
458
+ for (int i = 0; i < cmds.length; i++)
459
+ {
460
+ Debug.outNoStack("\t" + cmds[i]);
461
+ }
462
+
463
+ String[] cmdargs = new String[2 * cmds.length + 1];
464
+ cmdargs[0] = "osascript";
465
+ for (int i = 0; i < cmds.length; i++)
466
+ {
467
+ cmdargs[i * 2 + 1] = "-e";
468
+ cmdargs[i * 2 + 2] = String.valueOf(cmds[i]);
469
+ }
470
+
471
+ Process osaProcess = performRuntimeExec(cmdargs);
472
+ BufferedReader reader = new BufferedReader(new InputStreamReader(osaProcess.getInputStream()));
473
+ String line = reader.readLine();
474
+ reader.close();
475
+ Debug.outNoStack("OSAScript Output: " + line);
476
+
477
+ reader = new BufferedReader(new InputStreamReader(osaProcess.getErrorStream()));
478
+ String errorMsg = reader.readLine();
479
+ reader.close();
480
+
481
+ Debug.outNoStack("OSAScript Error (if any): " + errorMsg);
482
+
483
+ Debug.outNoStack(MessageFormat.format("OSAScript execution ended ({0}ms)", new Object[]{String.valueOf(System.currentTimeMillis() - start)}));
484
+
485
+ if (errorMsg != null)
486
+ {
487
+ throw new IOException(errorMsg);
488
+ }
489
+
490
+ return line;
491
+ }
492
+
493
+ /**
494
+ * Compiles a new AppleScript instance and runs it
495
+ * @param script AppleScript file (.scpt) to execute
496
+ * @return Output of the script
497
+ * @throws IOException If the script failed to execute
498
+ */
499
+ protected static String performOSAScript(File script) throws IOException
500
+ {
501
+ long start = System.currentTimeMillis();
502
+ Debug.outNoStack("Executing OSAScript from file: " + script.getPath());
503
+
504
+ Process osaProcess = performRuntimeExec(new String[]{"osascript", script.getPath()});
505
+ BufferedReader reader = new BufferedReader(new InputStreamReader(osaProcess.getInputStream()));
506
+ String line = reader.readLine();
507
+ reader.close();
508
+ Debug.outNoStack("OSAScript Output: " + line);
509
+
510
+ reader = new BufferedReader(new InputStreamReader(osaProcess.getErrorStream()));
511
+ String errorMsg = reader.readLine();
512
+ reader.close();
513
+
514
+ Debug.outNoStack("OSAScript Error (if any): " + errorMsg);
515
+
516
+ Debug.outNoStack(MessageFormat.format("OSAScript execution ended ({0}ms)", new Object[]{String.valueOf(System.currentTimeMillis() - start)}));
517
+
518
+ if (errorMsg != null)
519
+ {
520
+ throw new IOException(errorMsg);
521
+ }
522
+
523
+ return line;
524
+ }
525
+
526
+ /**
527
+ * Compiles a new AppleScript instance to the specified location
528
+ * @param cmd Command to compile; do not surround command with extra quotation marks
529
+ * @param destination Destination location of the AppleScript file
530
+ * @return True if compiled successfully
531
+ */
532
+ protected static boolean compileOSAScript(CharSequence cmd, File destination)
533
+ {
534
+ return compileOSAScript(new CharSequence[]{cmd}, destination);
535
+ }
536
+
537
+ /**
538
+ * Compiles a new AppleScript instance to the specified location
539
+ * @param cmds Sequence of commands to compile; do not surround command with extra quotation marks
540
+ * @param destination Destination location of the AppleScript file
541
+ * @return True if compiled successfully
542
+ */
543
+ protected static boolean compileOSAScript(CharSequence[] cmds, File destination)
544
+ {
545
+ long start = System.currentTimeMillis();
546
+ Debug.outNoStack("Compiling OSAScript: " + destination.getPath());
547
+ for (int i = 0; i < cmds.length; i++)
548
+ {
549
+ Debug.outNoStack("\t" + cmds[i]);
550
+ }
551
+
552
+ String[] cmdargs = new String[2 * cmds.length + 3];
553
+ cmdargs[0] = "osacompile";
554
+ for (int i = 0; i < cmds.length; i++)
555
+ {
556
+ cmdargs[i * 2 + 1] = "-e";
557
+ cmdargs[i * 2 + 2] = String.valueOf(cmds[i]);
558
+ }
559
+
560
+ cmdargs[cmdargs.length - 2] = "-o";
561
+ cmdargs[cmdargs.length - 1] = destination.getPath();
562
+
563
+ String errorMsg;
564
+ try
565
+ {
566
+ Process osaProcess = performRuntimeExec(cmdargs);
567
+
568
+ BufferedReader reader = new BufferedReader(new InputStreamReader(osaProcess.getErrorStream()));
569
+ errorMsg = reader.readLine();
570
+ reader.close();
571
+ }
572
+ catch (IOException e)
573
+ {
574
+ Debug.outNoStack("OSACompile Execution Failed: " + e.getMessage());
575
+ Debug.printStackTrace(e);
576
+ return false;
577
+ }
578
+
579
+ Debug.outNoStack("OSACompile Error (if any): " + errorMsg);
580
+
581
+ Debug.outNoStack(MessageFormat.format("OSACompile execution ended ({0}ms)", new Object[]{String.valueOf(System.currentTimeMillis() - start)}));
582
+
583
+ return (errorMsg == null);
584
+ }
585
+
586
+ /**
587
+ * @see Runtime#exec(String[])
588
+ */
589
+ protected static Process performRuntimeExec(String[] cmdargs) throws IOException
590
+ {
591
+ try
592
+ {
593
+ return Runtime.getRuntime().exec(cmdargs);
594
+ }
595
+ catch (IOException e)
596
+ {
597
+ Logger.log(new LogAlert(LogAlert.UNREPEATABLE, e.getMessage(), e));
598
+ throw e;
599
+ }
600
+ }
601
+
602
+ /**
603
+ * <p>Gets the preferred file browser name</p>
604
+ * <p>Currently supported browsers are Path Finder and Finder. If Path Finder is currently running
605
+ * (not just installed), then "Path Finder is returned; else, "Finder" is returned.</p>
606
+ * @return "Path Finder" if it is currently running; else "Finder"
607
+ */
608
+ private static String getFileBrowserName()
609
+ {
610
+ try
611
+ {
612
+ // slowwwwwwww
613
+ if ("true".equalsIgnoreCase(performOSAScript("tell application \"System Events\" to exists process \"Path Finder\"")))
614
+ {
615
+ Debug.outNoStack("Path Finder is running");
616
+
617
+ return "Path Finder";
618
+ }
619
+ else
620
+ {
621
+ return "Finder";
622
+ }
623
+ }
624
+ catch (IOException e)
625
+ {
626
+ Debug.printStackTrace(e);
627
+ Logger.log(new LogEvent(LOGID, e.getMessage(), e));
628
+
629
+ return "Finder";
630
+ }
631
+ }
632
+
633
+ public boolean
634
+ testNativeAvailability(
635
+ String name )
636
+
637
+ throws PlatformManagerException
638
+ {
639
+ throw new PlatformManagerException("Unsupported capability called on platform manager");
640
+ }
641
+
642
+ public void
643
+ addListener(
644
+ PlatformManagerListener listener )
645
+ {
646
+ }
647
+
648
+ public void
649
+ removeListener(
650
+ PlatformManagerListener listener )
651
+ {
652
+ }
653
+ }