pygments.rb 0.5.4 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +40 -0
  3. data/README.md +3 -0
  4. data/lexers +0 -0
  5. data/lib/pygments/popen.rb +3 -2
  6. data/lib/pygments/version.rb +1 -1
  7. data/pygments.rb.gemspec +2 -1
  8. data/vendor/pygments-main/AUTHORS +20 -1
  9. data/vendor/pygments-main/CHANGES +55 -3
  10. data/vendor/pygments-main/LICENSE +1 -1
  11. data/vendor/pygments-main/MANIFEST.in +1 -1
  12. data/vendor/pygments-main/Makefile +5 -8
  13. data/vendor/pygments-main/REVISION +1 -1
  14. data/vendor/pygments-main/doc/Makefile +153 -0
  15. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  16. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  17. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  18. data/vendor/pygments-main/doc/_templates/docssidebar.html +3 -0
  19. data/vendor/pygments-main/doc/_templates/indexsidebar.html +25 -0
  20. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +98 -0
  21. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  22. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  23. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  24. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  25. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  26. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +401 -0
  27. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +15 -0
  28. data/vendor/pygments-main/doc/conf.py +249 -0
  29. data/vendor/pygments-main/doc/docs/api.rst +316 -0
  30. data/vendor/pygments-main/doc/docs/authors.rst +4 -0
  31. data/vendor/pygments-main/doc/docs/changelog.rst +1 -0
  32. data/vendor/pygments-main/{docs/src/cmdline.txt → doc/docs/cmdline.rst} +9 -11
  33. data/vendor/pygments-main/{docs/src/filterdevelopment.txt → doc/docs/filterdevelopment.rst} +1 -1
  34. data/vendor/pygments-main/{docs/src/filters.txt → doc/docs/filters.rst} +4 -5
  35. data/vendor/pygments-main/{docs/src/formatterdevelopment.txt → doc/docs/formatterdevelopment.rst} +1 -1
  36. data/vendor/pygments-main/{docs/src/formatters.txt → doc/docs/formatters.rst} +6 -6
  37. data/vendor/pygments-main/doc/docs/index.rst +66 -0
  38. data/vendor/pygments-main/{docs/src/integrate.txt → doc/docs/integrate.rst} +3 -7
  39. data/vendor/pygments-main/{docs/src/java.txt → doc/docs/java.rst} +0 -0
  40. data/vendor/pygments-main/{docs/src/lexerdevelopment.txt → doc/docs/lexerdevelopment.rst} +13 -14
  41. data/vendor/pygments-main/{docs/src/lexers.txt → doc/docs/lexers.rst} +7 -5
  42. data/vendor/pygments-main/{docs/src/moinmoin.txt → doc/docs/moinmoin.rst} +0 -0
  43. data/vendor/pygments-main/{docs/src/plugins.txt → doc/docs/plugins.rst} +0 -0
  44. data/vendor/pygments-main/{docs/src/quickstart.txt → doc/docs/quickstart.rst} +22 -19
  45. data/vendor/pygments-main/{docs/src/rstdirective.txt → doc/docs/rstdirective.rst} +0 -0
  46. data/vendor/pygments-main/{docs/src/styles.txt → doc/docs/styles.rst} +2 -2
  47. data/vendor/pygments-main/{docs/src/tokens.txt → doc/docs/tokens.rst} +10 -7
  48. data/vendor/pygments-main/{docs/src/unicode.txt → doc/docs/unicode.rst} +8 -7
  49. data/vendor/pygments-main/doc/download.rst +41 -0
  50. data/vendor/pygments-main/doc/faq.rst +143 -0
  51. data/vendor/pygments-main/doc/index.rst +53 -0
  52. data/vendor/pygments-main/doc/languages.rst +151 -0
  53. data/vendor/pygments-main/doc/make.bat +190 -0
  54. data/vendor/pygments-main/{docs → doc}/pygmentize.1 +0 -0
  55. data/vendor/pygments-main/external/autopygmentize +65 -48
  56. data/vendor/pygments-main/external/markdown-processor.py +15 -15
  57. data/vendor/pygments-main/external/moin-parser.py +1 -1
  58. data/vendor/pygments-main/external/rst-directive.py +2 -3
  59. data/vendor/pygments-main/ez_setup.py +340 -234
  60. data/vendor/pygments-main/pygments/__init__.py +4 -4
  61. data/vendor/pygments-main/pygments/cmdline.py +81 -68
  62. data/vendor/pygments-main/pygments/console.py +1 -1
  63. data/vendor/pygments-main/pygments/filter.py +1 -1
  64. data/vendor/pygments-main/pygments/filters/__init__.py +11 -9
  65. data/vendor/pygments-main/pygments/formatter.py +3 -3
  66. data/vendor/pygments-main/pygments/formatters/__init__.py +5 -3
  67. data/vendor/pygments-main/pygments/formatters/_mapping.py +16 -5
  68. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  69. data/vendor/pygments-main/pygments/formatters/html.py +44 -26
  70. data/vendor/pygments-main/pygments/formatters/img.py +21 -14
  71. data/vendor/pygments-main/pygments/formatters/latex.py +104 -12
  72. data/vendor/pygments-main/pygments/formatters/other.py +53 -6
  73. data/vendor/pygments-main/pygments/formatters/rtf.py +30 -16
  74. data/vendor/pygments-main/pygments/formatters/svg.py +2 -2
  75. data/vendor/pygments-main/pygments/formatters/terminal.py +41 -1
  76. data/vendor/pygments-main/pygments/formatters/terminal256.py +2 -2
  77. data/vendor/pygments-main/pygments/lexer.py +59 -39
  78. data/vendor/pygments-main/pygments/lexers/__init__.py +38 -15
  79. data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
  80. data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +15 -15
  81. data/vendor/pygments-main/pygments/lexers/_cocoabuiltins.py +73 -0
  82. data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +11 -1
  83. data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +14 -8
  84. data/vendor/pygments-main/pygments/lexers/_mapping.py +81 -30
  85. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +1 -1
  86. data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +1067 -95
  87. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +7 -7
  88. data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +5 -4
  89. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -1
  90. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +12 -7
  91. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +112 -18
  92. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +1 -1
  93. data/vendor/pygments-main/pygments/lexers/agile.py +644 -382
  94. data/vendor/pygments-main/pygments/lexers/asm.py +66 -29
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +1643 -174
  96. data/vendor/pygments-main/pygments/lexers/dalvik.py +27 -6
  97. data/vendor/pygments-main/pygments/lexers/dotnet.py +45 -33
  98. data/vendor/pygments-main/pygments/lexers/foxpro.py +3 -3
  99. data/vendor/pygments-main/pygments/lexers/functional.py +1510 -570
  100. data/vendor/pygments-main/pygments/lexers/graph.py +81 -0
  101. data/vendor/pygments-main/pygments/lexers/hdl.py +29 -30
  102. data/vendor/pygments-main/pygments/lexers/inferno.py +96 -0
  103. data/vendor/pygments-main/pygments/lexers/jvm.py +622 -207
  104. data/vendor/pygments-main/pygments/lexers/math.py +438 -70
  105. data/vendor/pygments-main/pygments/lexers/other.py +885 -171
  106. data/vendor/pygments-main/pygments/lexers/parsers.py +24 -24
  107. data/vendor/pygments-main/pygments/lexers/qbasic.py +157 -0
  108. data/vendor/pygments-main/pygments/lexers/rdf.py +99 -0
  109. data/vendor/pygments-main/pygments/lexers/shell.py +28 -25
  110. data/vendor/pygments-main/pygments/lexers/special.py +7 -8
  111. data/vendor/pygments-main/pygments/lexers/sql.py +56 -23
  112. data/vendor/pygments-main/pygments/lexers/templates.py +377 -59
  113. data/vendor/pygments-main/pygments/lexers/text.py +208 -46
  114. data/vendor/pygments-main/pygments/lexers/web.py +729 -264
  115. data/vendor/pygments-main/pygments/modeline.py +1 -1
  116. data/vendor/pygments-main/pygments/plugin.py +1 -1
  117. data/vendor/pygments-main/pygments/scanner.py +1 -1
  118. data/vendor/pygments-main/pygments/sphinxext.py +153 -0
  119. data/vendor/pygments-main/pygments/style.py +3 -2
  120. data/vendor/pygments-main/pygments/styles/__init__.py +5 -1
  121. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  122. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  123. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  124. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  125. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  126. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  127. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  128. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  129. data/vendor/pygments-main/pygments/styles/igor.py +29 -0
  130. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  131. data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
  132. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  133. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  134. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +125 -0
  135. data/vendor/pygments-main/pygments/styles/paraiso_light.py +125 -0
  136. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  137. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  138. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  139. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  140. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  141. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  142. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  143. data/vendor/pygments-main/pygments/styles/xcode.py +51 -0
  144. data/vendor/pygments-main/pygments/token.py +4 -1
  145. data/vendor/pygments-main/pygments/unistring.py +6 -5
  146. data/vendor/pygments-main/pygments/util.py +35 -21
  147. data/vendor/pygments-main/scripts/check_sources.py +28 -44
  148. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +5 -4
  149. data/vendor/pygments-main/scripts/find_codetags.py +27 -19
  150. data/vendor/pygments-main/scripts/find_error.py +16 -13
  151. data/vendor/pygments-main/scripts/get_vimkw.py +3 -3
  152. data/vendor/pygments-main/scripts/vim2pygments.py +9 -7
  153. data/vendor/pygments-main/setup.py +19 -19
  154. data/vendor/pygments-main/tests/examplefiles/99_bottles_of_beer.chpl +118 -0
  155. data/vendor/pygments-main/tests/examplefiles/Error.pmod +38 -0
  156. data/vendor/pygments-main/tests/examplefiles/FakeFile.pike +360 -0
  157. data/vendor/pygments-main/tests/examplefiles/{ANTLRv3.g → antlr_ANTLRv3.g} +0 -0
  158. data/vendor/pygments-main/tests/examplefiles/clojure-weird-keywords.clj +5 -0
  159. data/vendor/pygments-main/tests/examplefiles/core.cljs +52 -0
  160. data/vendor/pygments-main/tests/examplefiles/demo.cfm +13 -1
  161. data/vendor/pygments-main/tests/examplefiles/demo.hbs +12 -0
  162. data/vendor/pygments-main/tests/examplefiles/ember.handlebars +33 -0
  163. data/vendor/pygments-main/tests/examplefiles/example.als +217 -0
  164. data/vendor/pygments-main/tests/examplefiles/example.c +1 -1
  165. data/vendor/pygments-main/tests/examplefiles/example.chai +6 -0
  166. data/vendor/pygments-main/tests/examplefiles/example.coffee +27 -0
  167. data/vendor/pygments-main/tests/examplefiles/example.e +124 -0
  168. data/vendor/pygments-main/tests/examplefiles/example.f90 +8 -0
  169. data/vendor/pygments-main/tests/examplefiles/example.feature +16 -0
  170. data/vendor/pygments-main/tests/examplefiles/example.gd +23 -0
  171. data/vendor/pygments-main/tests/examplefiles/example.gi +64 -0
  172. data/vendor/pygments-main/tests/examplefiles/example.groovy +2 -0
  173. data/vendor/pygments-main/tests/examplefiles/example.hs +27 -0
  174. data/vendor/pygments-main/tests/examplefiles/example.hx +44 -1
  175. data/vendor/pygments-main/tests/examplefiles/example.i6t +32 -0
  176. data/vendor/pygments-main/tests/examplefiles/example.i7x +45 -0
  177. data/vendor/pygments-main/tests/examplefiles/example.inf +374 -0
  178. data/vendor/pygments-main/tests/examplefiles/example.j +564 -0
  179. data/vendor/pygments-main/tests/examplefiles/example.java +16 -0
  180. data/vendor/pygments-main/tests/examplefiles/example.kal +75 -0
  181. data/vendor/pygments-main/tests/examplefiles/example.liquid +42 -0
  182. data/vendor/pygments-main/tests/examplefiles/example.ma +8 -0
  183. data/vendor/pygments-main/tests/examplefiles/example.mq4 +187 -0
  184. data/vendor/pygments-main/tests/examplefiles/example.mqh +123 -0
  185. data/vendor/pygments-main/tests/examplefiles/example.ni +57 -0
  186. data/vendor/pygments-main/tests/examplefiles/example.nix +80 -0
  187. data/vendor/pygments-main/tests/examplefiles/example.pp +8 -0
  188. data/vendor/pygments-main/tests/examplefiles/example.red +257 -0
  189. data/vendor/pygments-main/tests/examplefiles/example.reds +150 -0
  190. data/vendor/pygments-main/tests/examplefiles/example.rkt +677 -29
  191. data/vendor/pygments-main/tests/examplefiles/example.sh +22 -0
  192. data/vendor/pygments-main/tests/examplefiles/example.slim +31 -0
  193. data/vendor/pygments-main/tests/examplefiles/example.sls +51 -0
  194. data/vendor/pygments-main/tests/examplefiles/example.stan +2 -0
  195. data/vendor/pygments-main/tests/examplefiles/example.todotxt +9 -0
  196. data/vendor/pygments-main/tests/examplefiles/exampleScript.cfc +241 -0
  197. data/vendor/pygments-main/tests/examplefiles/exampleTag.cfc +18 -0
  198. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +192 -350
  199. data/vendor/pygments-main/tests/examplefiles/hash_syntax.rb +5 -0
  200. data/vendor/pygments-main/tests/examplefiles/hello.at +6 -0
  201. data/vendor/pygments-main/tests/examplefiles/hello.golo +5 -0
  202. data/vendor/pygments-main/tests/examplefiles/hello.lsl +12 -0
  203. data/vendor/pygments-main/tests/examplefiles/{File.hy → hybris_File.hy} +0 -0
  204. data/vendor/pygments-main/tests/examplefiles/{mg_sample.pro → idl_sample.pro} +0 -0
  205. data/vendor/pygments-main/tests/examplefiles/iex_example +23 -0
  206. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +24 -24
  207. data/vendor/pygments-main/tests/examplefiles/language.hy +165 -0
  208. data/vendor/pygments-main/tests/examplefiles/limbo.b +456 -0
  209. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +3 -1
  210. data/vendor/pygments-main/tests/examplefiles/main.cmake +2 -0
  211. data/vendor/pygments-main/tests/examplefiles/objc_example.m +163 -16
  212. data/vendor/pygments-main/tests/examplefiles/{example.p → openedge_example} +0 -0
  213. data/vendor/pygments-main/tests/examplefiles/pawn_example +25 -0
  214. data/vendor/pygments-main/tests/examplefiles/qbasic_example +2 -0
  215. data/vendor/pygments-main/tests/examplefiles/r6rs-comments.scm +23 -0
  216. data/vendor/pygments-main/tests/examplefiles/{robotframework.txt → robotframework_test.txt} +0 -0
  217. data/vendor/pygments-main/tests/examplefiles/rql-queries.rql +34 -0
  218. data/vendor/pygments-main/tests/examplefiles/scope.cirru +43 -0
  219. data/vendor/pygments-main/tests/examplefiles/sparql.rq +23 -0
  220. data/vendor/pygments-main/tests/examplefiles/test.R +37 -5
  221. data/vendor/pygments-main/tests/examplefiles/test.apl +26 -0
  222. data/vendor/pygments-main/tests/examplefiles/test.cyp +123 -0
  223. data/vendor/pygments-main/tests/examplefiles/test.idr +93 -0
  224. data/vendor/pygments-main/tests/examplefiles/test.mask +41 -0
  225. data/vendor/pygments-main/tests/examplefiles/test.pan +54 -0
  226. data/vendor/pygments-main/tests/examplefiles/test.php +3 -1
  227. data/vendor/pygments-main/tests/examplefiles/test.pig +148 -0
  228. data/vendor/pygments-main/tests/examplefiles/test.pwn +253 -0
  229. data/vendor/pygments-main/tests/examplefiles/test.r3 +27 -7
  230. data/vendor/pygments-main/tests/examplefiles/test.rsl +111 -0
  231. data/vendor/pygments-main/tests/examplefiles/test.swift +65 -0
  232. data/vendor/pygments-main/tests/examplefiles/test.zep +33 -0
  233. data/vendor/pygments-main/tests/examplefiles/unicode.go +10 -0
  234. data/vendor/pygments-main/tests/examplefiles/{test.bas → vbnet_test.bas} +0 -0
  235. data/vendor/pygments-main/tests/examplefiles/vctreestatus_hg +4 -0
  236. data/vendor/pygments-main/tests/examplefiles/vimrc +21 -0
  237. data/vendor/pygments-main/tests/run.py +14 -19
  238. data/vendor/pygments-main/tests/string_asserts.py +22 -0
  239. data/vendor/pygments-main/tests/test_basic_api.py +28 -14
  240. data/vendor/pygments-main/tests/test_cfm.py +46 -0
  241. data/vendor/pygments-main/tests/test_clexer.py +208 -3
  242. data/vendor/pygments-main/tests/test_cmdline.py +6 -5
  243. data/vendor/pygments-main/tests/test_examplefiles.py +30 -19
  244. data/vendor/pygments-main/tests/test_html_formatter.py +15 -13
  245. data/vendor/pygments-main/tests/test_latex_formatter.py +4 -2
  246. data/vendor/pygments-main/tests/test_lexers_other.py +11 -11
  247. data/vendor/pygments-main/tests/test_objectiveclexer.py +81 -0
  248. data/vendor/pygments-main/tests/test_perllexer.py +1 -1
  249. data/vendor/pygments-main/tests/test_qbasiclexer.py +43 -0
  250. data/vendor/pygments-main/tests/test_regexlexer.py +8 -1
  251. data/vendor/pygments-main/tests/test_rtf_formatter.py +109 -0
  252. data/vendor/pygments-main/tests/test_string_asserts.py +39 -0
  253. data/vendor/pygments-main/tests/test_token.py +3 -3
  254. data/vendor/pygments-main/tests/test_using_api.py +1 -1
  255. data/vendor/pygments-main/tests/test_util.py +1 -1
  256. metadata +138 -51
  257. data/vendor/pygments-main/docs/generate.py +0 -472
  258. data/vendor/pygments-main/docs/src/api.txt +0 -270
  259. data/vendor/pygments-main/docs/src/authors.txt +0 -5
  260. data/vendor/pygments-main/docs/src/changelog.txt +0 -5
  261. data/vendor/pygments-main/docs/src/index.txt +0 -69
  262. data/vendor/pygments-main/docs/src/installation.txt +0 -71
  263. data/vendor/pygments-main/external/rst-directive-old.py +0 -77
  264. data/vendor/pygments-main/scripts/reindent.py +0 -291
  265. data/vendor/pygments-main/tests/examplefiles/import.hs +0 -4
  266. data/vendor/pygments-main/tests/examplefiles/objc_example2.m +0 -24
  267. data/vendor/pygments-main/tests/old_run.py +0 -138
@@ -0,0 +1,38 @@
1
+ #pike __REAL_VERSION__
2
+
3
+ constant Generic = __builtin.GenericError;
4
+
5
+ constant Index = __builtin.IndexError;
6
+
7
+ constant BadArgument = __builtin.BadArgumentError;
8
+
9
+ constant Math = __builtin.MathError;
10
+
11
+ constant Resource = __builtin.ResourceError;
12
+
13
+ constant Permission = __builtin.PermissionError;
14
+
15
+ constant Decode = __builtin.DecodeError;
16
+
17
+ constant Cpp = __builtin.CppError;
18
+
19
+ constant Compilation = __builtin.CompilationError;
20
+
21
+ constant MasterLoad = __builtin.MasterLoadError;
22
+
23
+ constant ModuleLoad = __builtin.ModuleLoadError;
24
+
25
+ //! Returns an Error object for any argument it receives. If the
26
+ //! argument already is an Error object or is empty, it does nothing.
27
+ object mkerror(mixed error)
28
+ {
29
+ if (error == UNDEFINED)
30
+ return error;
31
+ if (objectp(error) && error->is_generic_error)
32
+ return error;
33
+ if (arrayp(error))
34
+ return Error.Generic(@error);
35
+ if (stringp(error))
36
+ return Error.Generic(error);
37
+ return Error.Generic(sprintf("%O", error));
38
+ }
@@ -0,0 +1,360 @@
1
+ #pike __REAL_VERSION__
2
+
3
+ //! A string wrapper that pretends to be a @[Stdio.File] object
4
+ //! in addition to some features of a @[Stdio.FILE] object.
5
+
6
+
7
+ //! This constant can be used to distinguish a FakeFile object
8
+ //! from a real @[Stdio.File] object.
9
+ constant is_fake_file = 1;
10
+
11
+ protected string data;
12
+ protected int ptr;
13
+ protected int(0..1) r;
14
+ protected int(0..1) w;
15
+ protected int mtime;
16
+
17
+ protected function read_cb;
18
+ protected function read_oob_cb;
19
+ protected function write_cb;
20
+ protected function write_oob_cb;
21
+ protected function close_cb;
22
+
23
+ //! @seealso
24
+ //! @[Stdio.File()->close()]
25
+ int close(void|string direction) {
26
+ direction = lower_case(direction||"rw");
27
+ int cr = has_value(direction, "r");
28
+ int cw = has_value(direction, "w");
29
+
30
+ if(cr) {
31
+ r = 0;
32
+ }
33
+
34
+ if(cw) {
35
+ w = 0;
36
+ }
37
+
38
+ // FIXME: Close callback
39
+ return 1;
40
+ }
41
+
42
+ //! @decl void create(string data, void|string type, void|int pointer)
43
+ //! @seealso
44
+ //! @[Stdio.File()->create()]
45
+ void create(string _data, void|string type, int|void _ptr) {
46
+ if(!_data) error("No data string given to FakeFile.\n");
47
+ data = _data;
48
+ ptr = _ptr;
49
+ mtime = time();
50
+ if(type) {
51
+ type = lower_case(type);
52
+ if(has_value(type, "r"))
53
+ r = 1;
54
+ if(has_value(type, "w"))
55
+ w = 1;
56
+ }
57
+ else
58
+ r = w = 1;
59
+ }
60
+
61
+ protected string make_type_str() {
62
+ string type = "";
63
+ if(r) type += "r";
64
+ if(w) type += "w";
65
+ return type;
66
+ }
67
+
68
+ //! @seealso
69
+ //! @[Stdio.File()->dup()]
70
+ this_program dup() {
71
+ return this_program(data, make_type_str(), ptr);
72
+ }
73
+
74
+ //! Always returns 0.
75
+ //! @seealso
76
+ //! @[Stdio.File()->errno()]
77
+ int errno() { return 0; }
78
+
79
+ //! Returns size and the creation time of the string.
80
+ Stdio.Stat stat() {
81
+ Stdio.Stat st = Stdio.Stat();
82
+ st->size = sizeof(data);
83
+ st->mtime=st->ctime=mtime;
84
+ st->atime=time();
85
+ return st;
86
+ }
87
+
88
+ //! @seealso
89
+ //! @[Stdio.File()->line_iterator()]
90
+ String.SplitIterator line_iterator(int|void trim) {
91
+ if(trim)
92
+ return String.SplitIterator( data-"\r", '\n' );
93
+ return String.SplitIterator( data, '\n' );
94
+ }
95
+
96
+ protected mixed id;
97
+
98
+ //! @seealso
99
+ //! @[Stdio.File()->query_id()]
100
+ mixed query_id() { return id; }
101
+
102
+ //! @seealso
103
+ //! @[Stdio.File()->set_id()]
104
+ void set_id(mixed _id) { id = _id; }
105
+
106
+ //! @seealso
107
+ //! @[Stdio.File()->read_function()]
108
+ function(:string) read_function(int nbytes) {
109
+ return lambda() { return read(nbytes); };
110
+ }
111
+
112
+ //! @seealso
113
+ //! @[Stdio.File()->peek()]
114
+ int(-1..1) peek(int|float|void timeout) {
115
+ if(!r) return -1;
116
+ if(ptr >= sizeof(data)) return 0;
117
+ return 1;
118
+ }
119
+
120
+ //! Always returns 0.
121
+ //! @seealso
122
+ //! @[Stdio.File()->query_address()]
123
+ string query_address(void|int(0..1) is_local) { return 0; }
124
+
125
+ //! @seealso
126
+ //! @[Stdio.File()->read()]
127
+ string read(void|int(0..) len, void|int(0..1) not_all) {
128
+ if(!r) return 0;
129
+ if (len < 0) error("Cannot read negative number of characters.\n");
130
+ int start=ptr;
131
+ ptr += len;
132
+ if(zero_type(len) || ptr>sizeof(data))
133
+ ptr = sizeof(data);
134
+
135
+ // FIXME: read callback
136
+ return data[start..ptr-1];
137
+ }
138
+
139
+ //! @seealso
140
+ //! @[Stdio.FILE()->gets()]
141
+ string gets() {
142
+ if(!r) return 0;
143
+ string ret;
144
+ sscanf(data,"%*"+(string)ptr+"s%[^\n]",ret);
145
+ if(ret)
146
+ {
147
+ ptr+=sizeof(ret)+1;
148
+ if(ptr>sizeof(data))
149
+ {
150
+ ptr=sizeof(data);
151
+ if(!sizeof(ret))
152
+ ret = 0;
153
+ }
154
+ }
155
+
156
+ // FIXME: read callback
157
+ return ret;
158
+ }
159
+
160
+ //! @seealso
161
+ //! @[Stdio.FILE()->getchar()]
162
+ int getchar() {
163
+ if(!r) return 0;
164
+ int c;
165
+ if(catch(c=data[ptr]))
166
+ c=-1;
167
+ else
168
+ ptr++;
169
+
170
+ // FIXME: read callback
171
+ return c;
172
+ }
173
+
174
+ //! @seealso
175
+ //! @[Stdio.FILE()->unread()]
176
+ void unread(string s) {
177
+ if(!r) return;
178
+ if(data[ptr-sizeof(s)..ptr-1]==s)
179
+ ptr-=sizeof(s);
180
+ else
181
+ {
182
+ data=s+data[ptr..];
183
+ ptr=0;
184
+ }
185
+ }
186
+
187
+ //! @seealso
188
+ //! @[Stdio.File()->seek()]
189
+ int seek(int pos, void|int mult, void|int add) {
190
+ if(mult)
191
+ pos = pos*mult+add;
192
+ if(pos<0)
193
+ {
194
+ pos = sizeof(data)+pos;
195
+ if( pos < 0 )
196
+ pos = 0;
197
+ }
198
+ ptr = pos;
199
+ if( ptr > strlen( data ) )
200
+ ptr = strlen(data);
201
+ return ptr;
202
+ }
203
+
204
+ //! Always returns 1.
205
+ //! @seealso
206
+ //! @[Stdio.File()->sync()]
207
+ int(1..1) sync() { return 1; }
208
+
209
+ //! @seealso
210
+ //! @[Stdio.File()->tell()]
211
+ int tell() { return ptr; }
212
+
213
+ //! @seealso
214
+ //! @[Stdio.File()->truncate()]
215
+ int(0..1) truncate(int length) {
216
+ data = data[..length-1];
217
+ return sizeof(data)==length;
218
+ }
219
+
220
+ //! @seealso
221
+ //! @[Stdio.File()->write()]
222
+ int(-1..) write(string|array(string) str, mixed ... extra) {
223
+ if(!w) return -1;
224
+ if(arrayp(str)) str=str*"";
225
+ if(sizeof(extra)) str=sprintf(str, @extra);
226
+
227
+ if(ptr==sizeof(data)) {
228
+ data += str;
229
+ ptr = sizeof(data);
230
+ }
231
+ else if(sizeof(str)==1)
232
+ data[ptr++] = str[0];
233
+ else {
234
+ data = data[..ptr-1] + str + data[ptr+sizeof(str)..];
235
+ ptr += sizeof(str);
236
+ }
237
+
238
+ // FIXME: write callback
239
+ return sizeof(str);
240
+ }
241
+
242
+ //! @seealso
243
+ //! @[Stdio.File()->set_blocking]
244
+ void set_blocking() {
245
+ close_cb = 0;
246
+ read_cb = 0;
247
+ read_oob_cb = 0;
248
+ write_cb = 0;
249
+ write_oob_cb = 0;
250
+ }
251
+
252
+ //! @seealso
253
+ //! @[Stdio.File()->set_blocking_keep_callbacks]
254
+ void set_blocking_keep_callbacks() { }
255
+
256
+ //! @seealso
257
+ //! @[Stdio.File()->set_blocking]
258
+ void set_nonblocking(function rcb, function wcb, function ccb,
259
+ function rocb, function wocb) {
260
+ read_cb = rcb;
261
+ write_cb = wcb;
262
+ close_cb = ccb;
263
+ read_oob_cb = rocb;
264
+ write_oob_cb = wocb;
265
+ }
266
+
267
+ //! @seealso
268
+ //! @[Stdio.File()->set_blocking_keep_callbacks]
269
+ void set_nonblocking_keep_callbacks() { }
270
+
271
+
272
+ //! @seealso
273
+ //! @[Stdio.File()->set_close_callback]
274
+ void set_close_callback(function cb) { close_cb = cb; }
275
+
276
+ //! @seealso
277
+ //! @[Stdio.File()->set_read_callback]
278
+ void set_read_callback(function cb) { read_cb = cb; }
279
+
280
+ //! @seealso
281
+ //! @[Stdio.File()->set_read_oob_callback]
282
+ void set_read_oob_callback(function cb) { read_oob_cb = cb; }
283
+
284
+ //! @seealso
285
+ //! @[Stdio.File()->set_write_callback]
286
+ void set_write_callback(function cb) { write_cb = cb; }
287
+
288
+ //! @seealso
289
+ //! @[Stdio.File()->set_write_oob_callback]
290
+ void set_write_oob_callback(function cb) { write_oob_cb = cb; }
291
+
292
+
293
+ //! @seealso
294
+ //! @[Stdio.File()->query_close_callback]
295
+ function query_close_callback() { return close_cb; }
296
+
297
+ //! @seealso
298
+ //! @[Stdio.File()->query_read_callback]
299
+ function query_read_callback() { return read_cb; }
300
+
301
+ //! @seealso
302
+ //! @[Stdio.File()->query_read_oob_callback]
303
+ function query_read_oob_callback() { return read_oob_cb; }
304
+
305
+ //! @seealso
306
+ //! @[Stdio.File()->query_write_callback]
307
+ function query_write_callback() { return write_cb; }
308
+
309
+ //! @seealso
310
+ //! @[Stdio.File()->query_write_oob_callback]
311
+ function query_write_oob_callback() { return write_oob_cb; }
312
+
313
+ string _sprintf(int t) {
314
+ return t=='O' && sprintf("%O(%d,%O)", this_program, sizeof(data),
315
+ make_type_str());
316
+ }
317
+
318
+
319
+ // FakeFile specials.
320
+
321
+ //! A FakeFile can be casted to a string.
322
+ mixed cast(string to) {
323
+ switch(to) {
324
+ case "string": return data;
325
+ case "object": return this;
326
+ }
327
+ error("Can not cast object to %O.\n", to);
328
+ }
329
+
330
+ //! Sizeof on a FakeFile returns the size of its contents.
331
+ int(0..) _sizeof() {
332
+ return sizeof(data);
333
+ }
334
+
335
+ //! @ignore
336
+
337
+ #define NOPE(X) mixed X (mixed ... args) { error("This is a FakeFile. %s is not available.\n", #X); }
338
+ NOPE(assign);
339
+ NOPE(async_connect);
340
+ NOPE(connect);
341
+ NOPE(connect_unix);
342
+ NOPE(open);
343
+ NOPE(open_socket);
344
+ NOPE(pipe);
345
+ NOPE(tcgetattr);
346
+ NOPE(tcsetattr);
347
+
348
+ // Stdio.Fd
349
+ NOPE(dup2);
350
+ NOPE(lock); // We could implement this
351
+ NOPE(mode); // We could implement this
352
+ NOPE(proxy); // We could implement this
353
+ NOPE(query_fd);
354
+ NOPE(read_oob);
355
+ NOPE(set_close_on_exec);
356
+ NOPE(set_keepalive);
357
+ NOPE(trylock); // We could implement this
358
+ NOPE(write_oob);
359
+
360
+ //! @endignore
@@ -0,0 +1,5 @@
1
+ ; Note, clojure lexer is here (and is a good deal more liberal than the language spec:
2
+ ; https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/LispReader.java#L62
3
+
4
+ (defn valid [#^java.lang.reflect.Method meth]
5
+ [:keyword :#initial-hash :h#sh-in-middle :hash-at-end# #js {:keyword "value"}])
@@ -0,0 +1,52 @@
1
+
2
+ (ns bounder.core
3
+ (:require [bounder.html :as html]
4
+ [domina :refer [value set-value! single-node]]
5
+ [domina.css :refer [sel]]
6
+ [lowline.functions :refer [debounce]]
7
+ [enfocus.core :refer [at]]
8
+ [cljs.reader :as reader]
9
+ [clojure.string :as s])
10
+ (:require-macros [enfocus.macros :as em]))
11
+
12
+ (def filter-input
13
+ (single-node
14
+ (sel ".search input")))
15
+
16
+ (defn project-matches [query project]
17
+ (let [words (cons (:name project)
18
+ (map name (:categories project)))
19
+ to-match (->> words
20
+ (s/join "")
21
+ (s/lower-case))]
22
+ (<= 0 (.indexOf to-match (s/lower-case query)))))
23
+
24
+ (defn apply-filter-for [projects]
25
+ (let [query (value filter-input)]
26
+ (html/render-projects
27
+ (filter (partial project-matches query)
28
+ projects))))
29
+
30
+ (defn filter-category [projects evt]
31
+ (let [target (.-currentTarget evt)]
32
+ (set-value! filter-input
33
+ (.-innerHTML target))
34
+ (apply-filter-for projects)))
35
+
36
+ (defn init-listeners [projects]
37
+ (at js/document
38
+ ["input"] (em/listen
39
+ :keyup
40
+ (debounce
41
+ (partial apply-filter-for projects)
42
+ 500))
43
+ [".category-links li"] (em/listen
44
+ :click
45
+ (partial filter-category projects))))
46
+
47
+ (defn init [projects-edn]
48
+ (let [projects (reader/read-string projects-edn)]
49
+ (init-listeners projects)
50
+ (html/render-projects projects)
51
+ (html/loaded)))
52
+