distil 0.7.0

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 (552) hide show
  1. data/Rakefile +28 -0
  2. data/VERSION +1 -0
  3. data/bin/distil +45 -0
  4. data/distil.gemspec +586 -0
  5. data/lib/bootstrap-template.js +56 -0
  6. data/lib/configurable.rb +125 -0
  7. data/lib/file-set.rb +42 -0
  8. data/lib/file-types/css-file.rb +75 -0
  9. data/lib/file-types/html-file.rb +11 -0
  10. data/lib/file-types/javascript-file.rb +98 -0
  11. data/lib/file-types/json-file.rb +14 -0
  12. data/lib/file-types/nib-file.rb +9 -0
  13. data/lib/jsdoc.conf +18 -0
  14. data/lib/jsl.conf +121 -0
  15. data/lib/project.rb +96 -0
  16. data/lib/source-file.rb +181 -0
  17. data/lib/target.rb +96 -0
  18. data/lib/task.rb +239 -0
  19. data/lib/tasks/copy-task.rb +21 -0
  20. data/lib/tasks/css-task.rb +18 -0
  21. data/lib/tasks/javascript-task.rb +125 -0
  22. data/lib/tasks/multiple-output-task.rb +134 -0
  23. data/lib/tasks/nib-task.rb +83 -0
  24. data/lib/tasks/output-task.rb +73 -0
  25. data/lib/tasks/single-output-task.rb +83 -0
  26. data/lib/tasks/test-task.rb +280 -0
  27. data/lib/test/HtmlTestReporter.js +127 -0
  28. data/lib/test/Test.js +248 -0
  29. data/lib/test/TestReporter.js +79 -0
  30. data/lib/test/TestRunner.js +132 -0
  31. data/lib/test/browser.rb +97 -0
  32. data/lib/test/scriptwrapper.html +10 -0
  33. data/lib/test/unittest.html +127 -0
  34. data/vendor/Makefile +35 -0
  35. data/vendor/extconf.rb +3 -0
  36. data/vendor/jsdoc-extras/plugins/distil-plugin.js +142 -0
  37. data/vendor/jsdoc-extras/plugins/interface-plugin.js +36 -0
  38. data/vendor/jsdoc-extras/templates/coherent/allclasses.tmpl +17 -0
  39. data/vendor/jsdoc-extras/templates/coherent/allfiles.tmpl +53 -0
  40. data/vendor/jsdoc-extras/templates/coherent/class.tmpl +803 -0
  41. data/vendor/jsdoc-extras/templates/coherent/index.tmpl +37 -0
  42. data/vendor/jsdoc-extras/templates/coherent/publish.js +242 -0
  43. data/vendor/jsdoc-extras/templates/coherent/showdown.js +421 -0
  44. data/vendor/jsdoc-extras/templates/coherent/static/code-footer.html +3 -0
  45. data/vendor/jsdoc-extras/templates/coherent/static/code-header.html +7 -0
  46. data/vendor/jsdoc-extras/templates/coherent/static/default.css +297 -0
  47. data/vendor/jsdoc-extras/templates/coherent/static/header.html +2 -0
  48. data/vendor/jsdoc-extras/templates/coherent/static/index.html +19 -0
  49. data/vendor/jsdoc-extras/templates/coherent/symbol.tmpl +35 -0
  50. data/vendor/jsdoc-toolkit/README.txt +183 -0
  51. data/vendor/jsdoc-toolkit/app/frame/Chain.js +102 -0
  52. data/vendor/jsdoc-toolkit/app/frame/Dumper.js +144 -0
  53. data/vendor/jsdoc-toolkit/app/frame/Hash.js +84 -0
  54. data/vendor/jsdoc-toolkit/app/frame/Link.js +171 -0
  55. data/vendor/jsdoc-toolkit/app/frame/Namespace.js +10 -0
  56. data/vendor/jsdoc-toolkit/app/frame/Opt.js +134 -0
  57. data/vendor/jsdoc-toolkit/app/frame/Reflection.js +26 -0
  58. data/vendor/jsdoc-toolkit/app/frame/String.js +93 -0
  59. data/vendor/jsdoc-toolkit/app/frame/Testrun.js +129 -0
  60. data/vendor/jsdoc-toolkit/app/frame.js +33 -0
  61. data/vendor/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
  62. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
  63. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
  64. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
  65. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
  66. data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +204 -0
  67. data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +300 -0
  68. data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +126 -0
  69. data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
  70. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
  71. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Parser.js +144 -0
  72. data/vendor/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
  73. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +644 -0
  74. data/vendor/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +241 -0
  75. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
  76. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
  77. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
  78. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
  79. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
  80. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Walker.js +499 -0
  81. data/vendor/jsdoc-toolkit/app/lib/JSDOC.js +106 -0
  82. data/vendor/jsdoc-toolkit/app/main.js +129 -0
  83. data/vendor/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
  84. data/vendor/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
  85. data/vendor/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
  86. data/vendor/jsdoc-toolkit/app/plugins/publishSrcHilite.js +54 -0
  87. data/vendor/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
  88. data/vendor/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
  89. data/vendor/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
  90. data/vendor/jsdoc-toolkit/app/run.js +348 -0
  91. data/vendor/jsdoc-toolkit/app/t/TestDoc.js +144 -0
  92. data/vendor/jsdoc-toolkit/app/t/runner.js +13 -0
  93. data/vendor/jsdoc-toolkit/app/test/addon.js +24 -0
  94. data/vendor/jsdoc-toolkit/app/test/anon_inner.js +14 -0
  95. data/vendor/jsdoc-toolkit/app/test/augments.js +31 -0
  96. data/vendor/jsdoc-toolkit/app/test/augments2.js +26 -0
  97. data/vendor/jsdoc-toolkit/app/test/borrows.js +46 -0
  98. data/vendor/jsdoc-toolkit/app/test/borrows2.js +23 -0
  99. data/vendor/jsdoc-toolkit/app/test/config.js +22 -0
  100. data/vendor/jsdoc-toolkit/app/test/constructs.js +18 -0
  101. data/vendor/jsdoc-toolkit/app/test/encoding.js +10 -0
  102. data/vendor/jsdoc-toolkit/app/test/encoding_other.js +12 -0
  103. data/vendor/jsdoc-toolkit/app/test/event.js +54 -0
  104. data/vendor/jsdoc-toolkit/app/test/exports.js +14 -0
  105. data/vendor/jsdoc-toolkit/app/test/functions_anon.js +39 -0
  106. data/vendor/jsdoc-toolkit/app/test/functions_nested.js +33 -0
  107. data/vendor/jsdoc-toolkit/app/test/global.js +13 -0
  108. data/vendor/jsdoc-toolkit/app/test/globals.js +25 -0
  109. data/vendor/jsdoc-toolkit/app/test/ignore.js +10 -0
  110. data/vendor/jsdoc-toolkit/app/test/inner.js +16 -0
  111. data/vendor/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
  112. data/vendor/jsdoc-toolkit/app/test/lend.js +33 -0
  113. data/vendor/jsdoc-toolkit/app/test/memberof.js +19 -0
  114. data/vendor/jsdoc-toolkit/app/test/memberof2.js +38 -0
  115. data/vendor/jsdoc-toolkit/app/test/memberof3.js +33 -0
  116. data/vendor/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
  117. data/vendor/jsdoc-toolkit/app/test/module.js +17 -0
  118. data/vendor/jsdoc-toolkit/app/test/name.js +19 -0
  119. data/vendor/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
  120. data/vendor/jsdoc-toolkit/app/test/nocode.js +13 -0
  121. data/vendor/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
  122. data/vendor/jsdoc-toolkit/app/test/overview.js +20 -0
  123. data/vendor/jsdoc-toolkit/app/test/param_inline.js +37 -0
  124. data/vendor/jsdoc-toolkit/app/test/params_optional.js +8 -0
  125. data/vendor/jsdoc-toolkit/app/test/prototype.js +17 -0
  126. data/vendor/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
  127. data/vendor/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
  128. data/vendor/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
  129. data/vendor/jsdoc-toolkit/app/test/public.js +10 -0
  130. data/vendor/jsdoc-toolkit/app/test/scripts/code.js +5 -0
  131. data/vendor/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
  132. data/vendor/jsdoc-toolkit/app/test/shared.js +42 -0
  133. data/vendor/jsdoc-toolkit/app/test/shared2.js +2 -0
  134. data/vendor/jsdoc-toolkit/app/test/shortcuts.js +22 -0
  135. data/vendor/jsdoc-toolkit/app/test/static_this.js +13 -0
  136. data/vendor/jsdoc-toolkit/app/test/synonyms.js +31 -0
  137. data/vendor/jsdoc-toolkit/app/test/tosource.js +23 -0
  138. data/vendor/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
  139. data/vendor/jsdoc-toolkit/app/test.js +342 -0
  140. data/vendor/jsdoc-toolkit/changes.txt +116 -0
  141. data/vendor/jsdoc-toolkit/conf/sample.conf +31 -0
  142. data/vendor/jsdoc-toolkit/java/build.xml +36 -0
  143. data/vendor/jsdoc-toolkit/java/build_1.4.xml +36 -0
  144. data/vendor/jsdoc-toolkit/java/classes/js.jar +0 -0
  145. data/vendor/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
  146. data/vendor/jsdoc-toolkit/java/src/JsRun.java +21 -0
  147. data/vendor/jsdoc-toolkit/jsdebug.jar +0 -0
  148. data/vendor/jsdoc-toolkit/jsrun.jar +0 -0
  149. data/vendor/jsdoc-toolkit/jsrun.sh +53 -0
  150. data/vendor/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
  151. data/vendor/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
  152. data/vendor/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
  153. data/vendor/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
  154. data/vendor/jsdoc-toolkit/templates/jsdoc/publish.js +201 -0
  155. data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-footer.html +3 -0
  156. data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-header.html +14 -0
  157. data/vendor/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
  158. data/vendor/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
  159. data/vendor/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
  160. data/vendor/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
  161. data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.cpp +333 -0
  162. data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.h +86 -0
  163. data/vendor/jsl-0.3.0/src/Makefile.in +375 -0
  164. data/vendor/jsl-0.3.0/src/Makefile.ref +372 -0
  165. data/vendor/jsl-0.3.0/src/README.html +826 -0
  166. data/vendor/jsl-0.3.0/src/SpiderMonkey.rsp +12 -0
  167. data/vendor/jsl-0.3.0/src/_jsl_online.php +223 -0
  168. data/vendor/jsl-0.3.0/src/config/AIX4.1.mk +65 -0
  169. data/vendor/jsl-0.3.0/src/config/AIX4.2.mk +64 -0
  170. data/vendor/jsl-0.3.0/src/config/AIX4.3.mk +65 -0
  171. data/vendor/jsl-0.3.0/src/config/Darwin.mk +81 -0
  172. data/vendor/jsl-0.3.0/src/config/Darwin1.3.mk +81 -0
  173. data/vendor/jsl-0.3.0/src/config/Darwin1.4.mk +41 -0
  174. data/vendor/jsl-0.3.0/src/config/Darwin5.2.mk +81 -0
  175. data/vendor/jsl-0.3.0/src/config/Darwin5.3.mk +81 -0
  176. data/vendor/jsl-0.3.0/src/config/HP-UXB.10.10.mk +77 -0
  177. data/vendor/jsl-0.3.0/src/config/HP-UXB.10.20.mk +77 -0
  178. data/vendor/jsl-0.3.0/src/config/HP-UXB.11.00.mk +80 -0
  179. data/vendor/jsl-0.3.0/src/config/IRIX.mk +87 -0
  180. data/vendor/jsl-0.3.0/src/config/IRIX5.3.mk +44 -0
  181. data/vendor/jsl-0.3.0/src/config/IRIX6.1.mk +44 -0
  182. data/vendor/jsl-0.3.0/src/config/IRIX6.2.mk +44 -0
  183. data/vendor/jsl-0.3.0/src/config/IRIX6.3.mk +44 -0
  184. data/vendor/jsl-0.3.0/src/config/IRIX6.5.mk +44 -0
  185. data/vendor/jsl-0.3.0/src/config/Linux_All.mk +103 -0
  186. data/vendor/jsl-0.3.0/src/config/Mac_OS10.0.mk +82 -0
  187. data/vendor/jsl-0.3.0/src/config/OSF1V4.0.mk +72 -0
  188. data/vendor/jsl-0.3.0/src/config/OSF1V5.0.mk +69 -0
  189. data/vendor/jsl-0.3.0/src/config/SunOS4.1.4.mk +101 -0
  190. data/vendor/jsl-0.3.0/src/config/SunOS5.3.mk +91 -0
  191. data/vendor/jsl-0.3.0/src/config/SunOS5.4.mk +92 -0
  192. data/vendor/jsl-0.3.0/src/config/SunOS5.5.1.mk +44 -0
  193. data/vendor/jsl-0.3.0/src/config/SunOS5.5.mk +87 -0
  194. data/vendor/jsl-0.3.0/src/config/SunOS5.6.mk +89 -0
  195. data/vendor/jsl-0.3.0/src/config/SunOS5.7.mk +44 -0
  196. data/vendor/jsl-0.3.0/src/config/SunOS5.8.mk +44 -0
  197. data/vendor/jsl-0.3.0/src/config/SunOS5.9.mk +44 -0
  198. data/vendor/jsl-0.3.0/src/config/WINNT4.0.mk +112 -0
  199. data/vendor/jsl-0.3.0/src/config/WINNT5.0.mk +112 -0
  200. data/vendor/jsl-0.3.0/src/config/WINNT5.1.mk +112 -0
  201. data/vendor/jsl-0.3.0/src/config/WINNT5.2.mk +112 -0
  202. data/vendor/jsl-0.3.0/src/config/dgux.mk +64 -0
  203. data/vendor/jsl-0.3.0/src/config.mk +166 -0
  204. data/vendor/jsl-0.3.0/src/editline/Makefile.ref +144 -0
  205. data/vendor/jsl-0.3.0/src/editline/README +83 -0
  206. data/vendor/jsl-0.3.0/src/editline/editline.3 +175 -0
  207. data/vendor/jsl-0.3.0/src/editline/editline.c +1369 -0
  208. data/vendor/jsl-0.3.0/src/editline/editline.h +135 -0
  209. data/vendor/jsl-0.3.0/src/editline/sysunix.c +182 -0
  210. data/vendor/jsl-0.3.0/src/editline/unix.h +82 -0
  211. data/vendor/jsl-0.3.0/src/fdlibm/Makefile.in +127 -0
  212. data/vendor/jsl-0.3.0/src/fdlibm/Makefile.ref +192 -0
  213. data/vendor/jsl-0.3.0/src/fdlibm/e_acos.c +147 -0
  214. data/vendor/jsl-0.3.0/src/fdlibm/e_acosh.c +105 -0
  215. data/vendor/jsl-0.3.0/src/fdlibm/e_asin.c +156 -0
  216. data/vendor/jsl-0.3.0/src/fdlibm/e_atan2.c +165 -0
  217. data/vendor/jsl-0.3.0/src/fdlibm/e_atanh.c +110 -0
  218. data/vendor/jsl-0.3.0/src/fdlibm/e_cosh.c +133 -0
  219. data/vendor/jsl-0.3.0/src/fdlibm/e_exp.c +202 -0
  220. data/vendor/jsl-0.3.0/src/fdlibm/e_fmod.c +184 -0
  221. data/vendor/jsl-0.3.0/src/fdlibm/e_gamma.c +71 -0
  222. data/vendor/jsl-0.3.0/src/fdlibm/e_gamma_r.c +70 -0
  223. data/vendor/jsl-0.3.0/src/fdlibm/e_hypot.c +173 -0
  224. data/vendor/jsl-0.3.0/src/fdlibm/e_j0.c +524 -0
  225. data/vendor/jsl-0.3.0/src/fdlibm/e_j1.c +523 -0
  226. data/vendor/jsl-0.3.0/src/fdlibm/e_jn.c +315 -0
  227. data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma.c +71 -0
  228. data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma_r.c +347 -0
  229. data/vendor/jsl-0.3.0/src/fdlibm/e_log.c +184 -0
  230. data/vendor/jsl-0.3.0/src/fdlibm/e_log10.c +134 -0
  231. data/vendor/jsl-0.3.0/src/fdlibm/e_pow.c +386 -0
  232. data/vendor/jsl-0.3.0/src/fdlibm/e_rem_pio2.c +221 -0
  233. data/vendor/jsl-0.3.0/src/fdlibm/e_remainder.c +120 -0
  234. data/vendor/jsl-0.3.0/src/fdlibm/e_scalb.c +89 -0
  235. data/vendor/jsl-0.3.0/src/fdlibm/e_sinh.c +122 -0
  236. data/vendor/jsl-0.3.0/src/fdlibm/e_sqrt.c +497 -0
  237. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.dsp +160 -0
  238. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.h +273 -0
  239. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mak +1453 -0
  240. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mdp +0 -0
  241. data/vendor/jsl-0.3.0/src/fdlibm/k_cos.c +134 -0
  242. data/vendor/jsl-0.3.0/src/fdlibm/k_rem_pio2.c +354 -0
  243. data/vendor/jsl-0.3.0/src/fdlibm/k_sin.c +114 -0
  244. data/vendor/jsl-0.3.0/src/fdlibm/k_standard.c +785 -0
  245. data/vendor/jsl-0.3.0/src/fdlibm/k_tan.c +170 -0
  246. data/vendor/jsl-0.3.0/src/fdlibm/s_asinh.c +101 -0
  247. data/vendor/jsl-0.3.0/src/fdlibm/s_atan.c +175 -0
  248. data/vendor/jsl-0.3.0/src/fdlibm/s_cbrt.c +133 -0
  249. data/vendor/jsl-0.3.0/src/fdlibm/s_ceil.c +120 -0
  250. data/vendor/jsl-0.3.0/src/fdlibm/s_copysign.c +72 -0
  251. data/vendor/jsl-0.3.0/src/fdlibm/s_cos.c +118 -0
  252. data/vendor/jsl-0.3.0/src/fdlibm/s_erf.c +356 -0
  253. data/vendor/jsl-0.3.0/src/fdlibm/s_expm1.c +267 -0
  254. data/vendor/jsl-0.3.0/src/fdlibm/s_fabs.c +70 -0
  255. data/vendor/jsl-0.3.0/src/fdlibm/s_finite.c +71 -0
  256. data/vendor/jsl-0.3.0/src/fdlibm/s_floor.c +121 -0
  257. data/vendor/jsl-0.3.0/src/fdlibm/s_frexp.c +99 -0
  258. data/vendor/jsl-0.3.0/src/fdlibm/s_ilogb.c +85 -0
  259. data/vendor/jsl-0.3.0/src/fdlibm/s_isnan.c +74 -0
  260. data/vendor/jsl-0.3.0/src/fdlibm/s_ldexp.c +66 -0
  261. data/vendor/jsl-0.3.0/src/fdlibm/s_lib_version.c +73 -0
  262. data/vendor/jsl-0.3.0/src/fdlibm/s_log1p.c +211 -0
  263. data/vendor/jsl-0.3.0/src/fdlibm/s_logb.c +79 -0
  264. data/vendor/jsl-0.3.0/src/fdlibm/s_matherr.c +64 -0
  265. data/vendor/jsl-0.3.0/src/fdlibm/s_modf.c +132 -0
  266. data/vendor/jsl-0.3.0/src/fdlibm/s_nextafter.c +124 -0
  267. data/vendor/jsl-0.3.0/src/fdlibm/s_rint.c +131 -0
  268. data/vendor/jsl-0.3.0/src/fdlibm/s_scalbn.c +107 -0
  269. data/vendor/jsl-0.3.0/src/fdlibm/s_signgam.c +40 -0
  270. data/vendor/jsl-0.3.0/src/fdlibm/s_significand.c +68 -0
  271. data/vendor/jsl-0.3.0/src/fdlibm/s_sin.c +118 -0
  272. data/vendor/jsl-0.3.0/src/fdlibm/s_tan.c +112 -0
  273. data/vendor/jsl-0.3.0/src/fdlibm/s_tanh.c +122 -0
  274. data/vendor/jsl-0.3.0/src/fdlibm/w_acos.c +78 -0
  275. data/vendor/jsl-0.3.0/src/fdlibm/w_acosh.c +78 -0
  276. data/vendor/jsl-0.3.0/src/fdlibm/w_asin.c +80 -0
  277. data/vendor/jsl-0.3.0/src/fdlibm/w_atan2.c +79 -0
  278. data/vendor/jsl-0.3.0/src/fdlibm/w_atanh.c +81 -0
  279. data/vendor/jsl-0.3.0/src/fdlibm/w_cosh.c +77 -0
  280. data/vendor/jsl-0.3.0/src/fdlibm/w_exp.c +88 -0
  281. data/vendor/jsl-0.3.0/src/fdlibm/w_fmod.c +78 -0
  282. data/vendor/jsl-0.3.0/src/fdlibm/w_gamma.c +85 -0
  283. data/vendor/jsl-0.3.0/src/fdlibm/w_gamma_r.c +81 -0
  284. data/vendor/jsl-0.3.0/src/fdlibm/w_hypot.c +78 -0
  285. data/vendor/jsl-0.3.0/src/fdlibm/w_j0.c +105 -0
  286. data/vendor/jsl-0.3.0/src/fdlibm/w_j1.c +106 -0
  287. data/vendor/jsl-0.3.0/src/fdlibm/w_jn.c +128 -0
  288. data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma.c +85 -0
  289. data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma_r.c +81 -0
  290. data/vendor/jsl-0.3.0/src/fdlibm/w_log.c +78 -0
  291. data/vendor/jsl-0.3.0/src/fdlibm/w_log10.c +81 -0
  292. data/vendor/jsl-0.3.0/src/fdlibm/w_pow.c +99 -0
  293. data/vendor/jsl-0.3.0/src/fdlibm/w_remainder.c +77 -0
  294. data/vendor/jsl-0.3.0/src/fdlibm/w_scalb.c +95 -0
  295. data/vendor/jsl-0.3.0/src/fdlibm/w_sinh.c +77 -0
  296. data/vendor/jsl-0.3.0/src/fdlibm/w_sqrt.c +77 -0
  297. data/vendor/jsl-0.3.0/src/js.c +2447 -0
  298. data/vendor/jsl-0.3.0/src/js.dsp +420 -0
  299. data/vendor/jsl-0.3.0/src/js.mak +4025 -0
  300. data/vendor/jsl-0.3.0/src/js.mdp +0 -0
  301. data/vendor/jsl-0.3.0/src/js.msg +291 -0
  302. data/vendor/jsl-0.3.0/src/js.pkg +2 -0
  303. data/vendor/jsl-0.3.0/src/js3240.rc +79 -0
  304. data/vendor/jsl-0.3.0/src/jsOS240.def +654 -0
  305. data/vendor/jsl-0.3.0/src/jsapi.c +4405 -0
  306. data/vendor/jsl-0.3.0/src/jsapi.h +1856 -0
  307. data/vendor/jsl-0.3.0/src/jsarena.c +567 -0
  308. data/vendor/jsl-0.3.0/src/jsarena.h +302 -0
  309. data/vendor/jsl-0.3.0/src/jsarray.c +1428 -0
  310. data/vendor/jsl-0.3.0/src/jsarray.h +77 -0
  311. data/vendor/jsl-0.3.0/src/jsatom.c +927 -0
  312. data/vendor/jsl-0.3.0/src/jsatom.h +426 -0
  313. data/vendor/jsl-0.3.0/src/jsbit.h +113 -0
  314. data/vendor/jsl-0.3.0/src/jsbool.c +220 -0
  315. data/vendor/jsl-0.3.0/src/jsbool.h +62 -0
  316. data/vendor/jsl-0.3.0/src/jsclist.h +139 -0
  317. data/vendor/jsl-0.3.0/src/jscntxt.c +1036 -0
  318. data/vendor/jsl-0.3.0/src/jscntxt.h +608 -0
  319. data/vendor/jsl-0.3.0/src/jscompat.h +57 -0
  320. data/vendor/jsl-0.3.0/src/jsconfig.h +489 -0
  321. data/vendor/jsl-0.3.0/src/jsconfig.mk +181 -0
  322. data/vendor/jsl-0.3.0/src/jscpucfg.c +377 -0
  323. data/vendor/jsl-0.3.0/src/jscpucfg.h +204 -0
  324. data/vendor/jsl-0.3.0/src/jsdate.c +2238 -0
  325. data/vendor/jsl-0.3.0/src/jsdate.h +118 -0
  326. data/vendor/jsl-0.3.0/src/jsdbgapi.c +1260 -0
  327. data/vendor/jsl-0.3.0/src/jsdbgapi.h +345 -0
  328. data/vendor/jsl-0.3.0/src/jsdhash.c +763 -0
  329. data/vendor/jsl-0.3.0/src/jsdhash.h +579 -0
  330. data/vendor/jsl-0.3.0/src/jsdtoa.c +3135 -0
  331. data/vendor/jsl-0.3.0/src/jsdtoa.h +130 -0
  332. data/vendor/jsl-0.3.0/src/jsemit.c +4851 -0
  333. data/vendor/jsl-0.3.0/src/jsemit.h +576 -0
  334. data/vendor/jsl-0.3.0/src/jsexn.c +1084 -0
  335. data/vendor/jsl-0.3.0/src/jsexn.h +102 -0
  336. data/vendor/jsl-0.3.0/src/jsfile.c +2610 -0
  337. data/vendor/jsl-0.3.0/src/jsfile.h +50 -0
  338. data/vendor/jsl-0.3.0/src/jsfile.msg +89 -0
  339. data/vendor/jsl-0.3.0/src/jsfun.c +2015 -0
  340. data/vendor/jsl-0.3.0/src/jsfun.h +158 -0
  341. data/vendor/jsl-0.3.0/src/jsgc.c +1441 -0
  342. data/vendor/jsl-0.3.0/src/jsgc.h +230 -0
  343. data/vendor/jsl-0.3.0/src/jshash.c +471 -0
  344. data/vendor/jsl-0.3.0/src/jshash.h +152 -0
  345. data/vendor/jsl-0.3.0/src/jsify.pl +485 -0
  346. data/vendor/jsl-0.3.0/src/jsinterp.c +4797 -0
  347. data/vendor/jsl-0.3.0/src/jsinterp.h +302 -0
  348. data/vendor/jsl-0.3.0/src/jsl-test.js +28 -0
  349. data/vendor/jsl-0.3.0/src/jsl.c +2371 -0
  350. data/vendor/jsl-0.3.0/src/jsl.conf +127 -0
  351. data/vendor/jsl-0.3.0/src/jsl.conf.old +124 -0
  352. data/vendor/jsl-0.3.0/src/jsl.dsp +242 -0
  353. data/vendor/jsl-0.3.0/src/jsl.dsw +59 -0
  354. data/vendor/jsl-0.3.0/src/jslibmath.h +290 -0
  355. data/vendor/jsl-0.3.0/src/jslock.c +1261 -0
  356. data/vendor/jsl-0.3.0/src/jslock.h +289 -0
  357. data/vendor/jsl-0.3.0/src/jslocko.asm +59 -0
  358. data/vendor/jsl-0.3.0/src/jslog2.c +83 -0
  359. data/vendor/jsl-0.3.0/src/jslong.c +281 -0
  360. data/vendor/jsl-0.3.0/src/jslong.h +437 -0
  361. data/vendor/jsl-0.3.0/src/jsmath.c +477 -0
  362. data/vendor/jsl-0.3.0/src/jsmath.h +55 -0
  363. data/vendor/jsl-0.3.0/src/jsnum.c +1148 -0
  364. data/vendor/jsl-0.3.0/src/jsnum.h +257 -0
  365. data/vendor/jsl-0.3.0/src/jsobj.c +4066 -0
  366. data/vendor/jsl-0.3.0/src/jsobj.h +475 -0
  367. data/vendor/jsl-0.3.0/src/jsopcode.c +2730 -0
  368. data/vendor/jsl-0.3.0/src/jsopcode.h +275 -0
  369. data/vendor/jsl-0.3.0/src/jsopcode.tbl +344 -0
  370. data/vendor/jsl-0.3.0/src/jsosdep.h +127 -0
  371. data/vendor/jsl-0.3.0/src/jsotypes.h +211 -0
  372. data/vendor/jsl-0.3.0/src/jsparse.c +4438 -0
  373. data/vendor/jsl-0.3.0/src/jsparse.h +345 -0
  374. data/vendor/jsl-0.3.0/src/jsprf.c +1212 -0
  375. data/vendor/jsl-0.3.0/src/jsprf.h +148 -0
  376. data/vendor/jsl-0.3.0/src/jsprvtd.h +174 -0
  377. data/vendor/jsl-0.3.0/src/jspubtd.h +586 -0
  378. data/vendor/jsl-0.3.0/src/jsregexp.c +3831 -0
  379. data/vendor/jsl-0.3.0/src/jsregexp.h +180 -0
  380. data/vendor/jsl-0.3.0/src/jsscan.c +1814 -0
  381. data/vendor/jsl-0.3.0/src/jsscan.h +267 -0
  382. data/vendor/jsl-0.3.0/src/jsscope.c +1639 -0
  383. data/vendor/jsl-0.3.0/src/jsscope.h +389 -0
  384. data/vendor/jsl-0.3.0/src/jsscript.c +1284 -0
  385. data/vendor/jsl-0.3.0/src/jsscript.h +179 -0
  386. data/vendor/jsl-0.3.0/src/jsshell.msg +50 -0
  387. data/vendor/jsl-0.3.0/src/jsstddef.h +83 -0
  388. data/vendor/jsl-0.3.0/src/jsstr.c +4502 -0
  389. data/vendor/jsl-0.3.0/src/jsstr.h +448 -0
  390. data/vendor/jsl-0.3.0/src/jstypes.h +391 -0
  391. data/vendor/jsl-0.3.0/src/jsutil.c +157 -0
  392. data/vendor/jsl-0.3.0/src/jsutil.h +75 -0
  393. data/vendor/jsl-0.3.0/src/jsxdrapi.c +686 -0
  394. data/vendor/jsl-0.3.0/src/jsxdrapi.h +193 -0
  395. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnect.dsp +157 -0
  396. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsp +120 -0
  397. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsw +44 -0
  398. data/vendor/jsl-0.3.0/src/liveconnect/Makefile.in +106 -0
  399. data/vendor/jsl-0.3.0/src/liveconnect/Makefile.ref +169 -0
  400. data/vendor/jsl-0.3.0/src/liveconnect/README.html +719 -0
  401. data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSException.h +14 -0
  402. data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSObject.h +155 -0
  403. data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.in +89 -0
  404. data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.ref +57 -0
  405. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/Makefile.ref +47 -0
  406. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSException.java +140 -0
  407. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSObject.java +183 -0
  408. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSProxy.java +58 -0
  409. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSRunnable.java +70 -0
  410. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSUtil.java +59 -0
  411. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/Makefile.ref +53 -0
  412. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.1.mk +45 -0
  413. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.2.mk +45 -0
  414. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.3.mk +50 -0
  415. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.10.mk +43 -0
  416. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.20.mk +43 -0
  417. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.11.00.mk +43 -0
  418. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.2.mk +43 -0
  419. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.3.mk +43 -0
  420. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.5.mk +43 -0
  421. data/vendor/jsl-0.3.0/src/liveconnect/config/Linux_All.mk +73 -0
  422. data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V4.0.mk +65 -0
  423. data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V5.0.mk +62 -0
  424. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.5.1.mk +55 -0
  425. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.6.mk +39 -0
  426. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.7.mk +39 -0
  427. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.8.mk +39 -0
  428. data/vendor/jsl-0.3.0/src/liveconnect/config/WINNT4.0.mk +53 -0
  429. data/vendor/jsl-0.3.0/src/liveconnect/jsj.c +884 -0
  430. data/vendor/jsl-0.3.0/src/liveconnect/jsj.msg +98 -0
  431. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JSObject.c +1379 -0
  432. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaArray.c +481 -0
  433. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaClass.c +749 -0
  434. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaMember.c +186 -0
  435. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaObject.c +1099 -0
  436. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaPackage.c +548 -0
  437. data/vendor/jsl-0.3.0/src/liveconnect/jsj_array.c +207 -0
  438. data/vendor/jsl-0.3.0/src/liveconnect/jsj_class.c +765 -0
  439. data/vendor/jsl-0.3.0/src/liveconnect/jsj_convert.c +954 -0
  440. data/vendor/jsl-0.3.0/src/liveconnect/jsj_field.c +421 -0
  441. data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.c +504 -0
  442. data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.h +161 -0
  443. data/vendor/jsl-0.3.0/src/liveconnect/jsj_method.c +1823 -0
  444. data/vendor/jsl-0.3.0/src/liveconnect/jsj_nodl.c +1 -0
  445. data/vendor/jsl-0.3.0/src/liveconnect/jsj_private.h +689 -0
  446. data/vendor/jsl-0.3.0/src/liveconnect/jsj_simpleapi.c +219 -0
  447. data/vendor/jsl-0.3.0/src/liveconnect/jsj_utils.c +513 -0
  448. data/vendor/jsl-0.3.0/src/liveconnect/jsjava.h +313 -0
  449. data/vendor/jsl-0.3.0/src/liveconnect/liveconnect.pkg +3 -0
  450. data/vendor/jsl-0.3.0/src/liveconnect/netscape_javascript_JSObject.h +155 -0
  451. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.cpp +785 -0
  452. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.h +197 -0
  453. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.cpp +163 -0
  454. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.h +76 -0
  455. data/vendor/jsl-0.3.0/src/liveconnect/nsILiveconnect.h +195 -0
  456. data/vendor/jsl-0.3.0/src/liveconnect/nsISecureLiveconnect.h +84 -0
  457. data/vendor/jsl-0.3.0/src/liveconnect/nsISecurityContext.h +135 -0
  458. data/vendor/jsl-0.3.0/src/liveconnect/win32.order +6 -0
  459. data/vendor/jsl-0.3.0/src/lock_SunOS.s +114 -0
  460. data/vendor/jsl-0.3.0/src/perfect.js +39 -0
  461. data/vendor/jsl-0.3.0/src/perlconnect/JS.def +6 -0
  462. data/vendor/jsl-0.3.0/src/perlconnect/JS.dsp +107 -0
  463. data/vendor/jsl-0.3.0/src/perlconnect/JS.pm +318 -0
  464. data/vendor/jsl-0.3.0/src/perlconnect/JS.xs +1050 -0
  465. data/vendor/jsl-0.3.0/src/perlconnect/Makefile.PL +67 -0
  466. data/vendor/jsl-0.3.0/src/perlconnect/Makefile.ref +152 -0
  467. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsp +103 -0
  468. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsw +59 -0
  469. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.pm +126 -0
  470. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnectShell.dsp +89 -0
  471. data/vendor/jsl-0.3.0/src/perlconnect/README.html +345 -0
  472. data/vendor/jsl-0.3.0/src/perlconnect/bg.jpg +0 -0
  473. data/vendor/jsl-0.3.0/src/perlconnect/jsperl.c +1100 -0
  474. data/vendor/jsl-0.3.0/src/perlconnect/jsperl.h +52 -0
  475. data/vendor/jsl-0.3.0/src/perlconnect/jsperlbuild.pl +81 -0
  476. data/vendor/jsl-0.3.0/src/perlconnect/jsperlpvt.h +57 -0
  477. data/vendor/jsl-0.3.0/src/perlconnect/test.js +73 -0
  478. data/vendor/jsl-0.3.0/src/perlconnect/test.pl +244 -0
  479. data/vendor/jsl-0.3.0/src/perlconnect/typemap +121 -0
  480. data/vendor/jsl-0.3.0/src/plify_jsdhash.sed +31 -0
  481. data/vendor/jsl-0.3.0/src/prmjtime.c +646 -0
  482. data/vendor/jsl-0.3.0/src/prmjtime.h +95 -0
  483. data/vendor/jsl-0.3.0/src/resource.h +15 -0
  484. data/vendor/jsl-0.3.0/src/rules.mk +193 -0
  485. data/vendor/jsl-0.3.0/src/win32.order +391 -0
  486. data/vendor/jsl-0.3.0/tests/conf/always_use_option_explicit.js +4 -0
  487. data/vendor/jsl-0.3.0/tests/conf/define.js +8 -0
  488. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-1.js +7 -0
  489. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-2.js +8 -0
  490. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-3.js +27 -0
  491. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-4.js +4 -0
  492. data/vendor/jsl-0.3.0/tests/conf/lambda_assign_requires_semicolon.js +24 -0
  493. data/vendor/jsl-0.3.0/tests/conf/legacy_control_comments.js +8 -0
  494. data/vendor/jsl-0.3.0/tests/control_comments/control_comments.js +33 -0
  495. data/vendor/jsl-0.3.0/tests/control_comments/declare.js +26 -0
  496. data/vendor/jsl-0.3.0/tests/control_comments/import-overflow.js +9 -0
  497. data/vendor/jsl-0.3.0/tests/control_comments/import.js +5 -0
  498. data/vendor/jsl-0.3.0/tests/control_comments/import2.js +2 -0
  499. data/vendor/jsl-0.3.0/tests/control_comments/invalid_fallthru.js +13 -0
  500. data/vendor/jsl-0.3.0/tests/control_comments/option_explicit-with.js +12 -0
  501. data/vendor/jsl-0.3.0/tests/control_comments/option_explicit.js +64 -0
  502. data/vendor/jsl-0.3.0/tests/errors/unterminated_comment.js +8 -0
  503. data/vendor/jsl-0.3.0/tests/html/script_tag_in_js_literal.html +14 -0
  504. data/vendor/jsl-0.3.0/tests/run_tests.pl +71 -0
  505. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_else_stmt.js +21 -0
  506. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_nested_stmt.js +66 -0
  507. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_newline.js +261 -0
  508. data/vendor/jsl-0.3.0/tests/warnings/anon_no_return_value.js +26 -0
  509. data/vendor/jsl-0.3.0/tests/warnings/assign_to_function_call.js +16 -0
  510. data/vendor/jsl-0.3.0/tests/warnings/block_without_braces.js +13 -0
  511. data/vendor/jsl-0.3.0/tests/warnings/comma_separated_stmts.js +17 -0
  512. data/vendor/jsl-0.3.0/tests/warnings/comparison_type_conv.js +44 -0
  513. data/vendor/jsl-0.3.0/tests/warnings/default_not_at_end.js +15 -0
  514. data/vendor/jsl-0.3.0/tests/warnings/dup_option_explicit.js +5 -0
  515. data/vendor/jsl-0.3.0/tests/warnings/duplicate_case_in_switch.js +62 -0
  516. data/vendor/jsl-0.3.0/tests/warnings/duplicate_formal.js +5 -0
  517. data/vendor/jsl-0.3.0/tests/warnings/empty_statement.js +29 -0
  518. data/vendor/jsl-0.3.0/tests/warnings/equal_as_assign.js +7 -0
  519. data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt-ignore.js +21 -0
  520. data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt.js +63 -0
  521. data/vendor/jsl-0.3.0/tests/warnings/jsl_cc_not_understood.js +5 -0
  522. data/vendor/jsl-0.3.0/tests/warnings/leading_decimal_point.js +7 -0
  523. data/vendor/jsl-0.3.0/tests/warnings/legacy_cc_not_understood.js +9 -0
  524. data/vendor/jsl-0.3.0/tests/warnings/meaningless_block.js +12 -0
  525. data/vendor/jsl-0.3.0/tests/warnings/misplaced_regex.js +20 -0
  526. data/vendor/jsl-0.3.0/tests/warnings/missing_break.js +87 -0
  527. data/vendor/jsl-0.3.0/tests/warnings/missing_break_for_last_case.js +19 -0
  528. data/vendor/jsl-0.3.0/tests/warnings/missing_default_case.js +51 -0
  529. data/vendor/jsl-0.3.0/tests/warnings/missing_option_explicit.js +5 -0
  530. data/vendor/jsl-0.3.0/tests/warnings/missing_semicolon.js +19 -0
  531. data/vendor/jsl-0.3.0/tests/warnings/multiple_plus_minus.js +10 -0
  532. data/vendor/jsl-0.3.0/tests/warnings/nested_comment.js +6 -0
  533. data/vendor/jsl-0.3.0/tests/warnings/no_return_value.js +25 -0
  534. data/vendor/jsl-0.3.0/tests/warnings/octal_number.js +5 -0
  535. data/vendor/jsl-0.3.0/tests/warnings/parseint_missing_radix.js +15 -0
  536. data/vendor/jsl-0.3.0/tests/warnings/partial_option_explicit.js +5 -0
  537. data/vendor/jsl-0.3.0/tests/warnings/redeclared_var.js +10 -0
  538. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/bad_backref.js +5 -0
  539. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/deprecated_usage.js +11 -0
  540. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/invalid_backref.js +5 -0
  541. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/trailing_comma.js +5 -0
  542. data/vendor/jsl-0.3.0/tests/warnings/trailing_comma_in_array.js +8 -0
  543. data/vendor/jsl-0.3.0/tests/warnings/trailing_decimal_point.js +7 -0
  544. data/vendor/jsl-0.3.0/tests/warnings/unreachable_code.js +29 -0
  545. data/vendor/jsl-0.3.0/tests/warnings/use_of_label.js +19 -0
  546. data/vendor/jsl-0.3.0/tests/warnings/useless_assign.js +20 -0
  547. data/vendor/jsl-0.3.0/tests/warnings/useless_comparison.js +55 -0
  548. data/vendor/jsl-0.3.0/tests/warnings/useless_void.js +6 -0
  549. data/vendor/jsl-0.3.0/tests/warnings/var_hides_arg.js +4 -0
  550. data/vendor/jsl-0.3.0/tests/warnings/with_statement.js +7 -0
  551. data/vendor/yuicompressor-2.4.2.jar +0 -0
  552. metadata +605 -0
@@ -0,0 +1,1050 @@
1
+ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
+ *
3
+ * ***** BEGIN LICENSE BLOCK *****
4
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
+ *
6
+ * The contents of this file are subject to the Mozilla Public License Version
7
+ * 1.1 (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ * http://www.mozilla.org/MPL/
10
+ *
11
+ * Software distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
+ * for the specific language governing rights and limitations under the
14
+ * License.
15
+ *
16
+ * The Original Code is Mozilla Communicator client code, released
17
+ * March 31, 1998.
18
+ *
19
+ * The Initial Developer of the Original Code is
20
+ * Netscape Communications Corporation.
21
+ * Portions created by the Initial Developer are Copyright (C) 1998
22
+ * the Initial Developer. All Rights Reserved.
23
+ *
24
+ * Contributor(s):
25
+ *
26
+ * Alternatively, the contents of this file may be used under the terms of
27
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
28
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29
+ * in which case the provisions of the GPL or the LGPL are applicable instead
30
+ * of those above. If you wish to allow use of your version of this file only
31
+ * under the terms of either the GPL or the LGPL, and not to allow others to
32
+ * use your version of this file under the terms of the MPL, indicate your
33
+ * decision by deleting the provisions above and replace them with the notice
34
+ * and other provisions required by the GPL or the LGPL. If you do not delete
35
+ * the provisions above, a recipient may use your version of this file under
36
+ * the terms of any one of the MPL, the GPL or the LGPL.
37
+ *
38
+ * ***** END LICENSE BLOCK ***** */
39
+
40
+ /*
41
+ * PerlConnect. Provides means for OO Perl <==> JS communications
42
+ */
43
+
44
+ /* This is an program written in XSUB. You need to compile it using xsubpp */
45
+ /* usually found in your perl\bin directory. On my machine I do it like this:*/
46
+ /* perl c:\perl\lib\ExtUtils\xsubpp -typemap \ */
47
+ /* c:\perl\lib\extutils\typemap -typemap typemap JS.xs > JS.c */
48
+ /* See perlxs man page for details. */
49
+ /* Don't edit the resulting C file directly. See README.html for more info */
50
+ /* on PerlConnect in general */
51
+
52
+ #ifdef __cplusplus
53
+ extern "C"; {
54
+ #endif
55
+ #include "EXTERN.h"
56
+ #include "perl.h"
57
+ #include "XSUB.h"
58
+ #ifdef __cplusplus
59
+ }
60
+ #endif
61
+
62
+ #include <jsapi.h>
63
+ #include "jsperlpvt.h"
64
+ #include <malloc.h>
65
+
66
+ /* __REMOVE__ */
67
+ /* #include <stdio.h> */
68
+
69
+ /************************************************************/
70
+ /* utils */
71
+
72
+ static JSBool
73
+ checkError(JSContext *cx)
74
+ {
75
+ if(SvTRUE(GvSV(PL_errgv))){
76
+ JS_ReportError(cx, "perl eval failed: %s",
77
+ SvPV(GvSV(PL_errgv), PL_na));
78
+ /* clear error status. there should be a way to do this faster */
79
+ perl_eval_sv(newSVpv("undef $@;", 0), G_KEEPERR);
80
+ return JS_FALSE;
81
+ }
82
+ return JS_TRUE;
83
+ }
84
+
85
+ static void
86
+ clearException(JSContext *cx)
87
+ {
88
+ if (JS_IsExceptionPending(cx)) {
89
+ JS_ClearPendingException(cx);
90
+ }
91
+ }
92
+
93
+ /************************************************************/
94
+ /* calback stub */
95
+
96
+ /* this is internal js structure needed in errorFromPrivate */
97
+ typedef struct JSExnPrivate {
98
+ JSErrorReport *errorReport;
99
+ } JSExnPrivate;
100
+
101
+ static
102
+ JSClass global_class = {
103
+ "Global", 0,
104
+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
105
+ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub
106
+ };
107
+
108
+ /* __PH__BEGIN */
109
+ /* perl callback structure */
110
+ /* prefix PCB means Perl CallBack */
111
+
112
+ struct PerlCallbackItem{
113
+ char* name;
114
+ SV* perl_proc;
115
+ int param_num;
116
+ struct PerlCallbackItem *next;
117
+ };
118
+
119
+ typedef struct PerlCallbackItem PerlCallbackItem;
120
+
121
+
122
+ struct PerlObjectItem {
123
+ char * name;
124
+ SV* pObject;
125
+ //JSObject *jsStub;
126
+ JSObject *jsObject;
127
+ JSClass *jsClass;
128
+ struct PerlCallbackItem* vector;
129
+ struct PerlObjectItem *next;
130
+ };
131
+
132
+ typedef struct PerlObjectItem PerlObjectItem;
133
+
134
+ /* error reporter */
135
+ //struct JSContextItem;
136
+ //struct JSContextItem;
137
+ struct JSContextItem {
138
+ JSContext *cx;
139
+ SV *errorReporter;
140
+ PerlObjectItem *objects;
141
+ int dieFromErrors;
142
+ struct JSContextItem* next;
143
+ };
144
+
145
+ typedef struct JSContextItem JSContextItem;
146
+
147
+ static JSContextItem *context_list = NULL;
148
+
149
+ static JSContextItem*
150
+ PCB_NewContextItem() {
151
+ JSContextItem *ret;
152
+ ret = (JSContextItem*)calloc(1, sizeof(JSContextItem));
153
+ return ret;
154
+ }
155
+
156
+ static JSContextItem*
157
+ PCB_FindContextItem (JSContext *cx) {
158
+ JSContextItem *cxitem = context_list;
159
+ while ( cxitem ) {
160
+ if (cxitem->cx == cx ) return cxitem;
161
+ cxitem = cxitem->next;
162
+ }
163
+ return NULL;
164
+ }
165
+
166
+ static SV*
167
+ PCB_FindErrorReporter (JSContext *cx) {
168
+ JSContextItem *cxitem;
169
+ if (cxitem = PCB_FindContextItem(cx)) {
170
+ return cxitem->errorReporter;
171
+ } else {
172
+ return NULL;
173
+ }
174
+ }
175
+
176
+ static void
177
+ PCB_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report)
178
+ {
179
+ SV *report_proc;
180
+ if ( report_proc = PCB_FindErrorReporter(cx) ) {
181
+ dSP;
182
+ PUSHMARK(SP);
183
+ XPUSHs(sv_2mortal(newSVpv((char*)message, 0)));
184
+ if ( report ) {
185
+ if ( report->filename ) {
186
+ XPUSHs(sv_2mortal(newSVpv((char*)report->filename, 0)));
187
+ }
188
+ XPUSHs(sv_2mortal(newSViv(report->lineno)));
189
+ if (report->linebuf) {
190
+ XPUSHs(sv_2mortal(newSVpv((char*)report->linebuf, 0)));
191
+ XPUSHs(sv_2mortal(newSVpv((char*)report->tokenptr, 0)));
192
+ }
193
+ }
194
+ PUTBACK;
195
+ perl_call_sv(report_proc, G_VOID | G_DISCARD);
196
+ } else {
197
+ warn(message);
198
+ }
199
+ }
200
+
201
+ /* perl object stuff */
202
+
203
+
204
+ /* functions for callback list handling */
205
+ static PerlCallbackItem*
206
+ PCB_AddCallback(PerlObjectItem* object, char *name,
207
+ SV* perl_proc, int param_num) {
208
+ PerlCallbackItem *cbk;
209
+
210
+ cbk = (PerlCallbackItem*)calloc(1, sizeof(PerlCallbackItem));
211
+ cbk->name = (char*) malloc(strlen(name) + 1);
212
+ strcpy(cbk->name, name);
213
+ SvREFCNT_inc(perl_proc);
214
+ cbk->perl_proc = perl_proc;
215
+ cbk->param_num = param_num;
216
+
217
+ cbk->next = object->vector;
218
+ object->vector = cbk;
219
+
220
+ return cbk;
221
+ }
222
+
223
+ /* functions for perl object list handling */
224
+
225
+ static PerlObjectItem*
226
+ PCB_AddObject(char *name, SV *pobj, JSContext *cx, JSObject *jso, JSClass *class) {
227
+ JSContextItem *cxitem;
228
+ PerlObjectItem *object;
229
+
230
+ /* we should always find the item */
231
+ cxitem = PCB_FindContextItem(cx);
232
+ object = (PerlObjectItem*) calloc(1, sizeof(PerlObjectItem));
233
+ object->name = (char*) malloc(strlen(name) + 1);
234
+ strcpy(object->name, name);
235
+ SvREFCNT_inc(pobj);
236
+ object->pObject = pobj;
237
+ object->jsObject = jso;
238
+ object->jsClass = class;
239
+ object->next = cxitem->objects;
240
+ cxitem->objects = object;
241
+
242
+ return object;
243
+ }
244
+
245
+ static PerlObjectItem*
246
+ PCB_FindObject(JSContext *cx, JSObject *jso) {
247
+ JSContextItem *cxitem;
248
+ PerlObjectItem *objitem;
249
+
250
+ cxitem = PCB_FindContextItem(cx);
251
+ objitem = cxitem->objects;
252
+
253
+ while ( objitem ) {
254
+ if ( objitem->jsObject == jso ) return objitem;
255
+ objitem = objitem->next;
256
+ }
257
+ return NULL;
258
+ }
259
+
260
+ static PerlCallbackItem*
261
+ PCB_FindCallback(PerlObjectItem *obj, const char *name) {
262
+ PerlCallbackItem *cbkitem;
263
+
264
+ cbkitem = obj->vector;
265
+ while ( cbkitem ) {
266
+ if ( strcmp(name, cbkitem->name) == 0 ) return cbkitem;
267
+ cbkitem = cbkitem->next;
268
+ }
269
+ return NULL;
270
+ }
271
+
272
+ /* deletion functions */
273
+
274
+ static void
275
+ PCB_FreeCallbackItem(PerlCallbackItem *callback) {
276
+ free(callback->name);
277
+ /* we have to decrease ref. count to proc */
278
+ SvREFCNT_dec(callback->perl_proc);
279
+ free(callback);
280
+ }
281
+
282
+ static void
283
+ PCB_FreeObjectItem(PerlObjectItem *object) {
284
+ PerlCallbackItem *cbkitem, *next;
285
+ JSClass *class;
286
+
287
+ free(object->name);
288
+ free(object->jsClass);
289
+
290
+ SvREFCNT_dec(object->pObject);
291
+ cbkitem = object->vector;
292
+ while ( cbkitem ) {
293
+ next = cbkitem->next;
294
+ PCB_FreeCallbackItem(cbkitem);
295
+ cbkitem = next;
296
+ }
297
+ free(object);
298
+ }
299
+
300
+ static void
301
+ PCB_FreeContextItem(JSContext *cx) {
302
+ JSContextItem *cxitem, *aux;
303
+ PerlObjectItem *objitem, *next;
304
+
305
+ cxitem = PCB_FindContextItem(cx);
306
+ objitem = cxitem->objects;
307
+
308
+ while ( objitem ) {
309
+ next = objitem->next;
310
+ PCB_FreeObjectItem(objitem);
311
+ objitem = next;
312
+ }
313
+
314
+ if (cxitem->errorReporter) {
315
+ SvREFCNT_dec(cxitem->errorReporter);
316
+ }
317
+
318
+ if ( context_list == cxitem ) {
319
+ context_list = cxitem->next;
320
+ } else {
321
+ aux = context_list;
322
+ while ( aux->next != cxitem ) aux = aux->next;
323
+ aux->next = cxitem->next;
324
+ }
325
+ free(cxitem);
326
+ }
327
+
328
+ /* later the object list should be bind to JS Context
329
+ in this case is needed to update destructor PerlFreeObjectList
330
+ */
331
+
332
+ /* property getter and setter - cooperate with AUTOLOAD */
333
+
334
+ static JSBool
335
+ PCB_GetProperty(JSContext *cx, JSObject *obj, jsval name, jsval *rval) {
336
+ PerlObjectItem *po;
337
+ int i, cnt, len;
338
+ I32 ax;
339
+ SV *proc_sv;
340
+ HV *stash;
341
+ char prop_name[256];
342
+ char full_name[256];
343
+ char *foo;
344
+ GV *gv;
345
+ dSP;
346
+
347
+ /* property name */
348
+ strcpy(prop_name, JS_GetStringBytes(JSVAL_TO_STRING(name)));
349
+
350
+ if (! (po = PCB_FindObject(cx, obj)))
351
+ croak("Couldn't find stub for object");
352
+ if ( (PCB_FindCallback(po, prop_name)))
353
+ return(JS_TRUE);
354
+
355
+ stash = SvSTASH(SvRV(po->pObject));
356
+ /* strcpy(full_name, HvNAME(stash));
357
+ strcat(full_name, "::");
358
+ strcat(full_name, prop_name);
359
+
360
+ proc_sv = sv_newmortal();
361
+ sv_setpv(proc_sv, full_name); */
362
+ /* start of perl call stuff */
363
+
364
+ gv = gv_fetchmeth(stash, prop_name, strlen(prop_name), -1);
365
+ /* better check and error report should be done here */
366
+ if (!gv) return JS_FALSE;
367
+
368
+ ENTER;
369
+ SAVETMPS;
370
+ PUSHMARK(SP);
371
+ XPUSHs(po->pObject); /* self for perl AUTOLOAD */
372
+ PUTBACK;
373
+
374
+ /* cnt = perl_call_sv(proc_sv, 0); */
375
+ cnt = perl_call_sv((SV*)GvCV(gv), G_ARRAY);
376
+
377
+ SPAGAIN;
378
+ /* adjust stack for use of ST macro (see perlcall) */
379
+ SP -= cnt;
380
+ ax = (SP - PL_stack_base) + 1;
381
+
382
+ /* read value(s) */
383
+ if (cnt == 1) {
384
+ SVToJSVAL(cx, obj, ST(0), rval);
385
+ } else {
386
+ JSObject *jsarr;
387
+ jsval val;
388
+ int i;
389
+ jsarr = JS_NewArrayObject(cx, 0, NULL);
390
+ for (i = 0; i < cnt; i++) {
391
+ SVToJSVAL(cx, JS_GetGlobalObject(cx), ST(i), &val);
392
+ JS_DefineElement(cx, jsarr, i, val, NULL, NULL, 0);
393
+ }
394
+ *rval = OBJECT_TO_JSVAL(jsarr);
395
+ }
396
+ PUTBACK;
397
+
398
+ FREETMPS;
399
+ LEAVE;
400
+
401
+ return(JS_TRUE);
402
+ }
403
+
404
+ static JSBool
405
+ PCB_SetProperty(JSContext *cx, JSObject *obj, jsval name, jsval *rval) {
406
+ PerlObjectItem *po;
407
+ int i, cnt, len;
408
+ I32 ax;
409
+ SV *proc_sv, *value_sv;
410
+ HV *stash;
411
+ char prop_name[256];
412
+ char full_name[256];
413
+ char *foo;
414
+ dSP;
415
+
416
+ /* property name */
417
+ strcpy(prop_name, JS_GetStringBytes(JSVAL_TO_STRING(name)));
418
+
419
+ if (! (po = PCB_FindObject(cx, obj)))
420
+ croak("Couldn't find stub for object");
421
+ if ( (PCB_FindCallback(po, prop_name)))
422
+ return(JS_TRUE);
423
+
424
+ stash = SvSTASH(SvRV(po->pObject));
425
+ strcpy(full_name, HvNAME(stash));
426
+ strcat(full_name, "::");
427
+ strcat(full_name, prop_name);
428
+
429
+ proc_sv = sv_newmortal();
430
+ sv_setpv(proc_sv, full_name);
431
+ JSVALToSV(cx, obj, *rval, &value_sv);
432
+ /* start of perl call stuff */
433
+ ENTER;
434
+ SAVETMPS;
435
+ PUSHMARK(SP);
436
+ XPUSHs(po->pObject); /* self for perl AUTOLOAD */
437
+ XPUSHs(value_sv);
438
+ PUTBACK;
439
+
440
+ cnt = perl_call_sv(proc_sv, G_ARRAY);
441
+
442
+ SPAGAIN;
443
+ /* adjust stack for use of ST macro (see perlcall) */
444
+ SP -= cnt;
445
+ ax = (SP - PL_stack_base) + 1;
446
+
447
+ /* read value(s) */
448
+ if (cnt == 1) {
449
+ SVToJSVAL(cx, obj, ST(0), rval);
450
+ } else {
451
+ JSObject *jsarr;
452
+ jsval val;
453
+ int i;
454
+ jsarr = JS_NewArrayObject(cx, 0, NULL);
455
+ for (i = 0; i < cnt; i++) {
456
+ SVToJSVAL(cx, JS_GetGlobalObject(cx), ST(i), &val);
457
+ JS_DefineElement(cx, jsarr, i, val, NULL, NULL, 0);
458
+ }
459
+ *rval = OBJECT_TO_JSVAL(jsarr);
460
+ }
461
+ PUTBACK;
462
+
463
+ FREETMPS;
464
+ LEAVE;
465
+
466
+ return(JS_TRUE);
467
+ }
468
+
469
+ /* helper functions */
470
+ /* JSClass pointer is disposed by
471
+ JS engine during context cleanup _PH_
472
+ */
473
+ void
474
+ PCB_FinalizeStub(JSContext *cx, JSObject *obj) {
475
+ }
476
+
477
+ static JSClass*
478
+ PCB_NewStdJSClass(char *name) {
479
+ JSClass *class;
480
+
481
+ class = (JSClass*)calloc(1, sizeof(JSClass));
482
+ class->name = name;
483
+ class->flags = JSCLASS_HAS_PRIVATE;
484
+ class->addProperty = JS_PropertyStub;
485
+ class->delProperty = JS_PropertyStub;
486
+ class->getProperty = PCB_GetProperty;
487
+ class->setProperty = PCB_SetProperty;
488
+ class->enumerate = JS_EnumerateStub;
489
+ class->resolve = JS_ResolveStub;
490
+ class->convert = JS_ConvertStub;
491
+ //class->finalize = JS_FinalizeStub;
492
+ class->finalize = PCB_FinalizeStub;
493
+ return(class);
494
+ }
495
+
496
+ static JSBool
497
+ PCB_UniversalStub (JSContext *cx, JSObject *obj, uintN argc,
498
+ jsval *argv, jsval *rval) {
499
+ JSFunction *fun;
500
+ PerlObjectItem *po;
501
+ PerlCallbackItem *cbk;
502
+ int i, cnt;
503
+ I32 ax;
504
+ SV* sv;
505
+ dSP;
506
+
507
+ fun = JS_ValueToFunction(cx, argv[-2]);
508
+ if (! (po = PCB_FindObject(cx, obj)))
509
+ croak("Couldn't find stub for object");
510
+ if (! (cbk = PCB_FindCallback(po, JS_GetFunctionName(fun))))
511
+ croak("Couldn't find perl callback");
512
+ /* start of perl call stuff */
513
+ ENTER;
514
+ SAVETMPS;
515
+ PUSHMARK(SP);
516
+ XPUSHs(po->pObject); /* self for perl object method */
517
+ for (i = 0; i < argc; i++) {
518
+ JSVALToSV(cx, obj, argv[i], &sv);
519
+ XPUSHs(sv);
520
+ }
521
+ PUTBACK;
522
+ cnt = perl_call_sv(SvRV(cbk->perl_proc), G_ARRAY | G_KEEPERR | G_EVAL);
523
+
524
+ SPAGAIN;
525
+ /* adjust stack for use of ST macro (see perlcall) */
526
+ SP -= cnt;
527
+ ax = (SP - PL_stack_base) + 1;
528
+
529
+ /* read value(s) */
530
+ if (cnt == 1) {
531
+ SVToJSVAL(cx, obj, ST(0), rval);
532
+ } else {
533
+ JSObject *jsarr;
534
+ jsval val;
535
+ int i;
536
+ jsarr = JS_NewArrayObject(cx, 0, NULL);
537
+ for (i = 0; i < cnt; i++) {
538
+ SVToJSVAL(cx, JS_GetGlobalObject(cx), ST(i), &val);
539
+ JS_DefineElement(cx, jsarr, i, val, NULL, NULL, 0);
540
+ }
541
+ *rval = OBJECT_TO_JSVAL(jsarr);
542
+ }
543
+
544
+ PUTBACK;
545
+ FREETMPS;
546
+ LEAVE;
547
+
548
+ /* this solution is not perfect, but usefull when nested call happens */
549
+ return(checkError(cx) && !JS_IsExceptionPending(cx));
550
+ };
551
+
552
+ /* __PH__END */
553
+
554
+
555
+ /* Helper functions needed for most JS API routines */
556
+ /*
557
+ static JSRuntime *
558
+ getRuntime()
559
+ {
560
+ return (JSRuntime *)SvIV((SV*)SvRV(perl_get_sv("JS::Runtime::rt", FALSE)));
561
+ }
562
+
563
+ static JSContext *
564
+ getContext()
565
+ {
566
+ return (JSContext *)SvIV((SV*)SvRV(perl_get_sv("JS::Context::this", FALSE)));
567
+ }
568
+ */ /* commented as obsolete by __PH__ */
569
+
570
+ /*
571
+ The following packages are defined below:
572
+ JS -- main container for all JS functionality
573
+ JS::Runtime -- wrapper around JSRuntime *
574
+ JS::Context -- wrapper around JSContext *
575
+ JS::Object -- wrapper around JSObject *
576
+ */
577
+
578
+ MODULE = JS PACKAGE = JS PREFIX = JS_
579
+ PROTOTYPES: DISABLE
580
+ # package JS
581
+
582
+ # Most of the functions below have names coinsiding with those of the
583
+ # corresponding JS API functions. Thus, they are not commented.
584
+ JSRuntime *
585
+ JS_NewRuntime(maxbytes)
586
+ int maxbytes
587
+ OUTPUT:
588
+ RETVAL
589
+
590
+ void
591
+ JS_DestroyRuntime(rt)
592
+ JSRuntime *rt
593
+ CODE:
594
+ /*
595
+ Make sure that the reference count to the runtime is zero.
596
+ O.w. this sequence of commands will cause double-deallocation:
597
+ $rt = new JS::Runtime(10_000);
598
+ $rt1 = $rt;
599
+ [exit here]
600
+ So both $rt->DESTROY and $rt1->DESTROY will cause runtime destruction.
601
+
602
+ _PH_ Thats not true, I guess. At least for Perl 5.
603
+ */
604
+ /* warn("===> before runtime check\n"); */
605
+ if(SvREFCNT(ST(0)) == 1){
606
+ /* warn("===> really runtime destroing"); */
607
+ /* __PH__ */
608
+ /*__PH__END */
609
+ JS_DestroyRuntime(rt);
610
+ }
611
+
612
+
613
+ # package JS::Runtime
614
+ MODULE = JS PACKAGE = JS::Runtime PREFIX = JS_
615
+
616
+ int
617
+ JS_NewContext(rt, stacksize)
618
+ JSRuntime *rt
619
+ int stacksize
620
+ PREINIT:
621
+ JSContextItem *cxitem;
622
+ CODE:
623
+ {
624
+ JSObject *obj;
625
+ /* jsval v; comment out unused var __PH__*/
626
+ JSContext *cx;
627
+ cx = JS_NewContext(rt, stacksize);
628
+ cxitem = PCB_NewContextItem();
629
+ cxitem->cx = cx;
630
+ cxitem->next = context_list;
631
+ context_list = cxitem;
632
+ /* __PH__ set the error reporter */
633
+ JS_SetErrorReporter(cx, PCB_ErrorReporter);
634
+ obj = JS_NewObject(cx, &global_class, NULL, NULL);
635
+ JS_SetGlobalObject(cx, obj);
636
+ JS_InitStandardClasses(cx, obj);
637
+ RETVAL = (int)cx;
638
+ }
639
+ OUTPUT:
640
+ RETVAL
641
+
642
+ void
643
+ JS_DestroyContext(cx)
644
+ JSContext *cx
645
+ CODE:
646
+ /* See the comment about ref. count above */
647
+ /* warn("===> before context check\n"); */
648
+ if(SvREFCNT(ST(0)) == 1){
649
+ /* warn("===> really destroing context"); */
650
+ if (JS_IsExceptionPending(cx)) {
651
+ JS_ClearPendingException(cx);
652
+ }
653
+ JS_SetErrorReporter(cx, NULL);
654
+ JS_GC(cx); //important
655
+ JS_DestroyContext(cx);
656
+ PCB_FreeContextItem(cx);
657
+ }
658
+
659
+
660
+ # package JS::Context
661
+ MODULE = JS PACKAGE = JS::Context PREFIX = JS_
662
+
663
+ jsval
664
+ JS_eval(cx, bytes, ...)
665
+ JSContext *cx
666
+ char *bytes
667
+ PREINIT:
668
+ JSContextItem *cxitem;
669
+ char *filename = NULL;
670
+ CODE:
671
+ {
672
+ jsval rval;
673
+ if (items > 2) { filename = SvPV(ST(2), PL_na); };
674
+ /* Call on the global object */
675
+ if(!JS_EvaluateScript(cx, JS_GetGlobalObject(cx),
676
+ bytes, strlen(bytes),
677
+ filename ? filename : "Perl",
678
+ 0, &rval)){
679
+ cxitem = PCB_FindContextItem(cx);
680
+ if (!cxitem || cxitem->dieFromErrors)
681
+ croak("JS script evaluation failed");
682
+
683
+ clearException(cx);
684
+ XSRETURN_UNDEF;
685
+ }
686
+ RETVAL = rval;
687
+ }
688
+ clearException(cx);
689
+ OUTPUT:
690
+ RETVAL
691
+
692
+
693
+ jsval
694
+ JS_exec_(cx, script)
695
+ JSContext *cx
696
+ SV *script
697
+ PREINIT:
698
+ JSContextItem *cxitem;
699
+ JSScript *handle;
700
+ CODE:
701
+ {
702
+ jsval rval;
703
+ handle = (JSScript*)SvIV(*hv_fetch((HV*)SvRV(script), "_script", 7, 0));
704
+ /* Call on the global object */
705
+ if(!JS_ExecuteScript(cx, JS_GetGlobalObject(cx),
706
+ handle, &rval)) {
707
+ cxitem = PCB_FindContextItem(cx);
708
+ if (!cxitem || cxitem->dieFromErrors)
709
+ croak("JS script evaluation failed");
710
+
711
+ clearException(cx);
712
+ XSRETURN_UNDEF;
713
+ }
714
+ clearException(cx);
715
+ RETVAL = rval;
716
+ }
717
+ OUTPUT:
718
+ RETVAL
719
+
720
+ #void
721
+ #JS_destroyScript(cx, script)
722
+ # JSContext *cx
723
+ # JSScript *script
724
+ # CODE:
725
+ # JS_DestroyScript(cx, script);
726
+
727
+ # __PH__
728
+ void
729
+ JS_setErrorReporter(cx, reporter)
730
+ JSContext *cx
731
+ SV* reporter
732
+ PREINIT:
733
+ JSContextItem *cxitem;
734
+ CODE:
735
+ cxitem = PCB_FindContextItem(cx);
736
+ SvREFCNT_inc(reporter);
737
+ if ( cxitem ) cxitem->errorReporter = reporter;
738
+
739
+ void
740
+ JS_unsetErrorReporter(cx)
741
+ JSContext *cx
742
+ PREINIT:
743
+ JSContextItem *cxitem;
744
+ CODE:
745
+ cxitem = PCB_FindContextItem(cx);
746
+ if ( cxitem ) {
747
+ if ( cxitem->errorReporter )
748
+ SvREFCNT_dec(cxitem->errorReporter);
749
+ cxitem->errorReporter = NULL;
750
+ }
751
+
752
+ int
753
+ JS_hasException(cx)
754
+ JSContext *cx
755
+ CODE:
756
+ RETVAL = ! JS_IsExceptionPending(cx);
757
+ OUTPUT:
758
+ RETVAL
759
+
760
+ void
761
+ JS_reportError(cx, msg)
762
+ JSContext *cx
763
+ char *msg
764
+ CODE:
765
+ JS_ReportError(cx, msg);
766
+
767
+ void
768
+ JS_errorFromPrivate(cx, msg, ex)
769
+ JSContext *cx
770
+ char *msg
771
+ JSObject *ex
772
+ PREINIT:
773
+ JSErrorReport *rep;
774
+ CODE:
775
+ rep = (JSErrorReport*) JS_GetPrivate(cx, ex);
776
+ if (rep)
777
+ PCB_ErrorReporter(cx, msg, ((JSExnPrivate*)rep)->errorReport);
778
+
779
+ void
780
+ JS_setDieFromErrors(cx, value)
781
+ JSContext *cx
782
+ int value
783
+ PREINIT:
784
+ JSContextItem *cxitem;
785
+ CODE:
786
+ cxitem = PCB_FindContextItem(cx);
787
+ if ( cxitem ) cxitem->dieFromErrors = value;
788
+
789
+ void
790
+ JS_createObject(cx, object, name, methods)
791
+ JSContext *cx
792
+ SV *object
793
+ char *name
794
+ SV *methods
795
+ PREINIT:
796
+ JSObject *jso;
797
+ HV *m_hash;
798
+ I32 len;
799
+ HE *he;
800
+ int i;
801
+ PerlObjectItem *po;
802
+ JSClass *object_class;
803
+ PerlCallbackItem *pcbitem;
804
+ CODE:
805
+ if (SvTYPE(SvRV(methods)) != SVt_PVHV) {
806
+ croak("Second parameter has to be HASHREF");
807
+ }
808
+ /* create js object in given context */
809
+ object_class = PCB_NewStdJSClass(name);
810
+ //jso = JS_NewObject(cx, object_class, NULL, 0);
811
+
812
+ jso = JS_DefineObject(cx, JS_GetGlobalObject(cx), name,
813
+ object_class, NULL,
814
+ JSPROP_ENUMERATE | JSPROP_READONLY |
815
+ JSPROP_PERMANENT);
816
+
817
+
818
+ if (!jso) croak("Unable create JS object");
819
+ /* create callback info */
820
+ po = PCB_AddObject(name, object, cx, jso, object_class);
821
+ m_hash = (HV*)SvRV(methods);
822
+ hv_iterinit(m_hash);
823
+ while ((he = hv_iternext(m_hash))) {
824
+ PCB_AddCallback(po, hv_iterkey(he, &len), hv_iterval(m_hash, he), 0);
825
+ }
826
+ /* set js object methods */
827
+ /* HERE _PH_ */
828
+ pcbitem = po->vector;
829
+ while ( pcbitem ) {
830
+ if (! JS_DefineFunction(cx, jso, pcbitem->name,
831
+ PCB_UniversalStub, 0, 0))
832
+ croak("Unable create JS function");
833
+ pcbitem = pcbitem->next;
834
+ }
835
+
836
+ # __PH__END
837
+
838
+
839
+ # package JS::Object
840
+ MODULE = JS PACKAGE = JS::Object PREFIX = JS_
841
+
842
+ #
843
+ # The methods below get used when hash is tied.
844
+ #
845
+ SV *
846
+ JS_TIEHASH(class, obj)
847
+ char *class
848
+ SV *obj
849
+ PREINIT:
850
+ JSContext* cx;
851
+ CODE:
852
+ RETVAL = SvREFCNT_inc(obj);
853
+ OUTPUT:
854
+ RETVAL
855
+
856
+ SV *
857
+ JS_TIEARRAY(class, obj)
858
+ char *class
859
+ SV *obj
860
+ PREINIT:
861
+ JSContext* cx;
862
+ CODE:
863
+ RETVAL = SvREFCNT_inc(obj);
864
+ OUTPUT:
865
+ RETVAL
866
+
867
+ jsval
868
+ JS_FETCH(obj, key)
869
+ JSObject *obj
870
+ char *key
871
+ PREINIT:
872
+ JSContext* cx;
873
+ jsval rval;
874
+ MAGIC *magic;
875
+ CODE:
876
+ {
877
+ /* printf("+++++++++> FETCH\n"); */
878
+ magic = mg_find(SvRV(ST(0)), '~');
879
+ if (magic) {
880
+ cx = (JSContext *)SvIV(magic->mg_obj);
881
+ } else {
882
+ warn("Tied object has no magic\n");
883
+ }
884
+ JS_GetProperty(cx, obj, key, &rval);
885
+ RETVAL = rval;
886
+ }
887
+ OUTPUT:
888
+ RETVAL
889
+
890
+ int
891
+ JS_FETCHSIZE(obj)
892
+ JSObject *obj
893
+ PREINIT:
894
+ JSContext* cx;
895
+ MAGIC *magic;
896
+ CODE:
897
+ {
898
+ /* printf("+++++++++> FETCHSIZE: %d\n", ST(0)); */
899
+ magic = mg_find(SvRV(ST(0)), '~');
900
+ if (magic) {
901
+ cx = (JSContext *)SvIV(magic->mg_obj);
902
+ } else {
903
+ warn("Tied object has no magic\n");
904
+ }
905
+ JS_IsArrayObject(cx, obj);
906
+ JS_GetArrayLength(cx, obj, &RETVAL);
907
+ }
908
+ OUTPUT:
909
+ RETVAL
910
+
911
+ void
912
+ JS_STORE(obj, key, value)
913
+ JSObject *obj
914
+ char *key
915
+ jsval value
916
+ PREINIT:
917
+ JSContext* cx;
918
+ MAGIC *magic;
919
+ {
920
+ /* printf("+++++++++> STORE\n"); */
921
+ magic = mg_find(SvRV(ST(0)), '~');
922
+ if (magic) {
923
+ cx = (JSContext *)SvIV(magic->mg_obj);
924
+ } else {
925
+ warn("Tied object has no magic\n");
926
+ }
927
+ }
928
+ CODE:
929
+ {
930
+ JS_SetProperty(cx, obj, key, &value);
931
+ }
932
+
933
+ void
934
+ JS_DELETE(obj, key)
935
+ JSObject *obj
936
+ char *key
937
+ PREINIT:
938
+ JSContext* cx;
939
+ MAGIC *magic;
940
+ CODE:
941
+ {
942
+ /* printf("+++++++++> DELETE\n"); */
943
+ magic = mg_find(SvRV(ST(0)), '~');
944
+ if (magic) {
945
+ cx = (JSContext *)SvIV(magic->mg_obj);
946
+ } else {
947
+ warn("Tied object has no magic\n");
948
+ }
949
+ JS_DeleteProperty(cx, obj, key);
950
+ }
951
+
952
+ void
953
+ JS_CLEAR(obj)
954
+ JSObject *obj
955
+ PREINIT:
956
+ JSContext* cx;
957
+ MAGIC *magic;
958
+ CODE:
959
+ {
960
+ /* printf("+++++++++> CLEAR\n"); */
961
+ magic = mg_find(SvRV(ST(0)), '~');
962
+ if (magic) {
963
+ cx = (JSContext *)SvIV(magic->mg_obj);
964
+ } else {
965
+ warn("Tied object has no magic\n");
966
+ }
967
+ JS_ClearScope(cx, obj);
968
+ }
969
+
970
+ int
971
+ JS_EXISTS(obj, key)
972
+ JSObject *obj
973
+ char *key
974
+ PREINIT:
975
+ JSContext* cx;
976
+ MAGIC *magic;
977
+ CODE:
978
+ {
979
+ jsval v;
980
+ /* printf("+++++++++> EXISTS\n"); */
981
+ magic = mg_find(SvRV(ST(0)), '~');
982
+ if (magic) {
983
+ cx = (JSContext *)SvIV(magic->mg_obj);
984
+ } else {
985
+ warn("Tied object has no magic\n");
986
+ }
987
+ JS_LookupProperty(cx, obj, key, &v);
988
+ RETVAL = !JSVAL_IS_VOID(v);
989
+ }
990
+ OUTPUT:
991
+ RETVAL
992
+
993
+ #script
994
+ MODULE = JS PACKAGE = JS::Script PREFIX = JS_
995
+
996
+ int
997
+ JS_compileScript(object, cx, bytes, ...)
998
+ SV *object
999
+ JSContext *cx
1000
+ char *bytes
1001
+ PREINIT:
1002
+ JSContextItem *cxitem;
1003
+ char *filename = NULL;
1004
+ CODE:
1005
+ {
1006
+ if (items > 2) { filename = SvPV(ST(2), PL_na); };
1007
+ /* Call on the global object */
1008
+ if(!(RETVAL = (int)JS_CompileScript(cx, JS_GetGlobalObject(cx),
1009
+ bytes, strlen(bytes),
1010
+ filename ? filename : "Perl",
1011
+ 0)))
1012
+ {
1013
+ cxitem = PCB_FindContextItem(cx);
1014
+ if (!cxitem || cxitem->dieFromErrors)
1015
+ croak("JS script compilation failed");
1016
+ XSRETURN_UNDEF;
1017
+ }
1018
+ }
1019
+ OUTPUT:
1020
+ RETVAL
1021
+
1022
+ int
1023
+ JS_rootScript(object, cx, name)
1024
+ SV *object
1025
+ JSContext *cx
1026
+ char *name
1027
+ PREINIT:
1028
+ JSObject **scrobj;
1029
+ JSScript *handle;
1030
+ CODE:
1031
+ handle = (JSScript*)SvIV(*hv_fetch((HV*)SvRV(object), "_script", 7, 0));
1032
+ scrobj = malloc(sizeof(JSObject*));
1033
+ *scrobj = JS_NewScriptObject(cx, handle);
1034
+ JS_AddNamedRoot(cx, scrobj, name);
1035
+ RETVAL = (int)scrobj;
1036
+ OUTPUT:
1037
+ RETVAL
1038
+
1039
+ void
1040
+ JS_destroyScript(object, cx)
1041
+ SV *object
1042
+ JSContext *cx
1043
+ PREINIT:
1044
+ JSObject **scrobj;
1045
+ JSScript *handle;
1046
+ CODE:
1047
+ handle = (JSScript*)SvIV(*hv_fetch((HV*)SvRV(object), "_script", 7, 0));
1048
+ scrobj = (JSObject**)SvIV(*hv_fetch((HV*)SvRV(object), "_root", 5, 0));
1049
+ JS_RemoveRoot(cx, scrobj);
1050
+