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,719 @@
1
+ <!-- ***** BEGIN LICENSE BLOCK *****
2
+ - Version: MPL 1.1/GPL 2.0/LGPL 2.1
3
+ -
4
+ - The contents of this file are subject to the Mozilla Public License Version
5
+ - 1.1 (the "License"); you may not use this file except in compliance with
6
+ - the License. You may obtain a copy of the License at
7
+ - http://www.mozilla.org/MPL/
8
+ -
9
+ - Software distributed under the License is distributed on an "AS IS" basis,
10
+ - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11
+ - for the specific language governing rights and limitations under the
12
+ - License.
13
+ -
14
+ - The Original Code is Mozilla Communicator client code, released
15
+ - March 31, 1998.
16
+ -
17
+ - The Initial Developer of the Original Code is
18
+ - Netscape Communications Corporation.
19
+ - Portions created by the Initial Developer are Copyright (C) 1998-1999
20
+ - the Initial Developer. All Rights Reserved.
21
+ -
22
+ - Contributor(s):
23
+ -
24
+ - Alternatively, the contents of this file may be used under the terms of
25
+ - either of the GNU General Public License Version 2 or later (the "GPL"),
26
+ - or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27
+ - in which case the provisions of the GPL or the LGPL are applicable instead
28
+ - of those above. If you wish to allow use of your version of this file only
29
+ - under the terms of either the GPL or the LGPL, and not to allow others to
30
+ - use your version of this file under the terms of the MPL, indicate your
31
+ - decision by deleting the provisions above and replace them with the notice
32
+ - and other provisions required by the GPL or the LGPL. If you do not delete
33
+ - the provisions above, a recipient may use your version of this file under
34
+ - the terms of any one of the MPL, the GPL or the LGPL.
35
+ -
36
+ - ***** END LICENSE BLOCK ***** -->
37
+
38
+ <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
39
+ <html>
40
+ <head>
41
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
42
+ <meta name="Author" content="Scott Furman">
43
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
44
+ <title>README for LiveConnect</title>
45
+ </head>
46
+ <body>
47
+ This is the README file for the JavaScript LiveConnect
48
+ Version 3 ("LC3") implementation.
49
+ <h2>
50
+ Table of Contents</h2>
51
+
52
+ <blockquote><a href="#Introduction">Introduction</a>
53
+ <br><a href="#New_Features">New features</a>
54
+ <br><a href="#Compatibility">Compatibility</a>
55
+ <br><a href="#Limitations">Limitations/Bugs/To-Do</a>
56
+ <br><a href="#Build_conventions">Build conventions</a>
57
+ <br><a href="#coding_conventions">Naming and coding conventions</a>
58
+ <br><a href="#API">The LiveConnect API</a>
59
+ <br><a href="#sample_shell_interaction">Sample LiveConnect shell interactions</a></blockquote>
60
+
61
+ <h2>
62
+ <a NAME="Introduction"></a>Introduction</h2>
63
+ <span CLASS=LXRLONGDESC> <span CLASS=LXRSHORTDESC>LiveConnect is a library that
64
+ permits JavaScript and Java virtual machines to interoperate.</span> Specifically,
65
+ it enables JavaScript to access Java fields, invoke Java methods and enables Java
66
+ to access JavaScript object properties and evaluate arbitrary JavaScript.</span>
67
+ LiveConnect was originally an integrated feature of both the Netscape Navigator
68
+ browser and Netscape's server-side JavaScript. Now, it is a standalone library
69
+ that can be embedded within other projects, such as the Mozilla browser. More
70
+ information on LiveConnect can be found by <a href="http://developer.netscape.com/find/find.cgi?scope=LiveConnect&browse-category=&ui=sr&chunk-size=&page=1&taxonomy=DevEdge+Online">searching
71
+ the index on Netscape's DevEdge site</a>.&nbsp; This README assumes basic familiarity
72
+ with <a href="http://lxr.mozilla.org/mozilla/source/js/src/README.html">JSRef</a>,
73
+ the reference implementation of JavaScript, and with the LiveConnect technology.
74
+ <p>The JSRef project/makefiles (located in another directory) build a library
75
+ or DLL containing the JavaScript runtime (compiler, interpreter, decompiler,
76
+ garbage collector, atom manager, standard classes).&nbsp; The LiveConnect project/makefiles
77
+ build a library that links with both JSRef and any Java Virtual Machine (JVM)
78
+ that implements the Java Native Interface (JNI), as specified by JavaSoft.&nbsp;
79
+ It then compiles a small "shell" example program and links that with the library
80
+ to make an interpreter that can be used interactively and with test scripts.&nbsp;
81
+ See the <a href="#sample_shell_interaction">sample shell interactions</a>.
82
+ <p><i>Scott Furman, 10/31/98</i>
83
+ <h2>
84
+ <a NAME="New_Features"></a>New features</h2>
85
+ The following features were not available in the versions of LiveConnect that
86
+ were integrated with Netscape Navigator versions 4.x and earlier.&nbsp; For information
87
+ on LiveConnect version 1, which was used in Navigator versions 3 and 4, and Enterprise
88
+ Server 3, see <a href="http://developer.netscape.com/find/find.cgi?scope=LiveConnect&browse-category=&ui=sr&chunk-size=&page=1&taxonomy=DevEdge+Online">Netscape's
89
+ DevEdge site</a> or any number of 3rd-party publications.)
90
+ <h4> LiveConnect version 3 (8/31/99)</h4>
91
+
92
+ <ul>
93
+ <li> In previous versions of LiveConnect, when more than one overloaded Java
94
+ method was compatible with the types of arguments in an invocation from JS,
95
+ the choice of Java method was made arbitrarily, by using the first one enumerated
96
+ by the Java reflection APIs.&nbsp; Unfortunately, the ordering of methods
97
+ when enumerating is not governed by any specification, so differences between
98
+ JVM vendors could lead to inconsistencies in LiveConnect behavior.&nbsp; Now,
99
+ a <a href="http://www.mozilla.org/js/liveconnect/lc3_method_overloading.html">JVM-independent
100
+ set of rules</a> is used to choose among a set of overloaded methods.&nbsp;&nbsp;
101
+ Informally, the method with Java parameter types that most&nbsp; closely match
102
+ the JavaScript types is chosen.<BR>
103
+ <BR>
104
+ </li>
105
+ <li> The weak correspondence between the JS language typing system and Java's
106
+ may result in ambiguity and/or shadowing when resolving among overloaded Java
107
+ methods, even when using LC3's improved method overload resolution algorithm
108
+ (see above).&nbsp; For example, JS's number type can map to a Java method
109
+ argument that has any floating-point or integral types: byte, char, short,
110
+ int, long, float, double.&nbsp;&nbsp; If necessary, it is now possible to
111
+ bypass the method overload resolution process and explicitly specify the method
112
+ to be invoked:</li>
113
+ <BR>
114
+ <br>
115
+ &nbsp;
116
+ <ul>
117
+ <tt>myPrintMethod = java.io.PrintStream["print(double)"];</tt> <br>
118
+ <tt>myPrintMethod(13);</tt>
119
+ </ul>
120
+ <br>
121
+ <li> Static methods can now be invoked using either the class name or a reference
122
+ to an instance of the class.&nbsp; (Older versions of LiveConnect allow only
123
+ the former.)<BR>
124
+ <BR>
125
+ </li>
126
+ <li> It is no longer necessary to convert Java Strings to JS strings before
127
+ using them as the receivers of JS string methods, which is typically done
128
+ by appending an empty string to the Java string, e.g.
129
+ <BLOCKQUOTE>
130
+ <P> <tt>&nbsp;&nbsp;&nbsp; s = new java.lang.String("foo")</tt> // s contains
131
+ a Java string<br>
132
+ <tt>&nbsp;&nbsp;&nbsp; s = s + "";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
133
+ </tt>// s is now a JS string <br>
134
+ <tt>&nbsp;&nbsp;&nbsp; m = s.match(/o?/)</tt> </P>
135
+ </BLOCKQUOTE>
136
+ </li>
137
+ <p>The explicit conversion to a JS string is no longer required because <i>java.lang.String</i>
138
+ objects are treated as a special case that "inherit" all the methods of JS
139
+ strings, i.e. so that the second statement in the example above is now superfluous.<BR>
140
+ <BR>
141
+ <li> Similarly, JavaArray objects "inherit" the methods of JS's <tt>Array.prototype</tt>,
142
+ so it is possible to apply many, though not all, of the JS array utility methods
143
+ such as <tt>reverse()</tt> and <tt>join()</tt> to JavaArray objects.<BR>
144
+ <BR>
145
+ </li>
146
+ <li> There is now support for the <tt>instanceof</tt> and <tt>in</tt> operators.&nbsp;
147
+ These operators are currently proposed for inclusion in the ECMA-2 standard.<BR>
148
+ <BR>
149
+ </li>
150
+ <li> LiveConnect has been extended to take advantage of JavaScript exceptions,
151
+ a language feature that debuted in JavaScript 1.4.&nbsp; Now, when JavaScript
152
+ calls into Java, any Java exceptions are converted to JS exceptions which
153
+ can be caught using JS try-catch statements.&nbsp; Similarly, JS exceptions
154
+ are propagated to Java wrapped in an instance of <i>netscape.javascript.JSException</i>.<BR>
155
+ <BR>
156
+ </li>
157
+ <li>JavaScript Array objects can now be passed to Java methods that expect a
158
+ Java array as an argument. <BR>
159
+ LiveConnect will create a new Java array of the appropriate type with a length
160
+ equal to that of the JS Array object. Each element of the Java array is filled
161
+ in by converting the corresponding element of the JS array, including undefined
162
+ elements, to an equivalent Java value. Note: Since the contents of the JS
163
+ array are copied, side-effects made by the invoked Java method to the Java
164
+ array will not be reflected in the JS array argument. </li>
165
+ </ul>
166
+
167
+ <h4>
168
+ LiveConnect version 2 (7/31/98)</h4>
169
+
170
+ <blockquote>
171
+ <li> The Java methods of <i>java.lang.Object</i> are now invokeable methods
172
+ of <tt><font size=+1>JavaArray</font></tt> objects, matching the behavior
173
+ of arrays when accessed from Java<i>.</i>&nbsp; (Java arrays are a subclass
174
+ of <i>java.lang.Object</i>.) For example, Java's <tt>getClass()</tt> and <tt>hashCode()</tt>
175
+ methods can now be called on <tt>JavaArray</tt> objects.&nbsp; (In prior versions
176
+ of LiveConnect, the methods of <i>java.lang.Object</i> were only inherited
177
+ by non-array Java objects.)</li>
178
+
179
+ <p>Note that this change has caused the string representation of JavaArray objects
180
+ to change.&nbsp; Previously, the JavaArray toString() method always printed
181
+ "<tt><font size=+1>[object JavaArray]"</font></tt> for all <tt>JavaArray</tt>'s.&nbsp;
182
+ Now, the Java <tt>java.lang.Object.toString()</tt> method is called to convert
183
+ JavaArray objects to strings, just as with other, non-array Java objects that
184
+ are accessible via LiveConnect. <tt>java.lang.Object.toString()</tt>is defined
185
+ in the <i>Java Language Specification</i> to return the value of the following
186
+ expression:
187
+ <p><tt><font size=-1>getClass().getName() + '@' + Integer.toHexString(hashCode())</font></tt><BR>
188
+ <br>
189
+ &nbsp;
190
+ <li> A one-character string is now an acceptable match for an argument to a
191
+ Java method of type <tt>char</tt>.&nbsp; (In earlier versions of LiveConnect,
192
+ the only acceptable match for a <tt>char</tt> had to be a JavaScript value
193
+ that was convertible to a number.)&nbsp; For example, the following is now
194
+ possible:</li>
195
+
196
+ <p><tt><font size=-1>c = new java.lang.Character("F")</font></tt><BR>
197
+ <br>
198
+ &nbsp;
199
+ <li>
200
+ A JavaClass object is now an acceptable match for an argument to a Java
201
+ method of type <i>java.lang.Class</i>.&nbsp; For example, you can now write:</li>
202
+
203
+ <p><tt><font size=-1>java.lang.reflect.Array.newInstance(java.lang.String,
204
+ 3)</font></tt>
205
+ <p>instead of the more verbose:
206
+ <p><tt><font size=-1>jls = java.lang.Class.forName("java.lang.String")</font></tt>
207
+ <br>
208
+ <tt><font size=-1>java.lang.reflect.Array.newInstance(jls, 3)</font></tt>
209
+ <p><br>
210
+ &nbsp;
211
+ </blockquote>
212
+
213
+ <h2>
214
+ <a NAME="Compatibility"></a>Compatibility</h2>
215
+ Unlike this standalone/component release, all previous versions of LiveConnect
216
+ appeared only as an integrated feature of Netscape Navigator or the Enterprise
217
+ Server.&nbsp; The variants of LiveConnect that appeared in Navigator versions
218
+ 3.x and 4.x all behave much the same, modulo bugs.&nbsp; For brevity we refer
219
+ to this classic version of LiveConnect as "LC1" (LiveConnect version 1) and this
220
+ most recent release as "LC3".&nbsp; With a few exceptions LC3 provides a superset
221
+ of LC1 features. (There was an intermediate LiveConnect release known as "LC2"
222
+ in 7/98, but it was not used in any products.)
223
+ <ul>
224
+ <li> As in LC1, JavaScript objects appear to Java as instances of <i>netscape.javascript.JSObject</i>.&nbsp;
225
+ In LC1, two <i>JSObject</i>'s could be tested for equality, i.e. to see if
226
+ they refer to the same instance, by using the `==' operator.&nbsp; Instead,
227
+ developers must now use the <tt>equals()</tt>method of <i>netscape.javascript.JSObject</i>
228
+ for comparison, a method that overrides <tt>java.lang.Object.equals()</tt>.&nbsp;
229
+ Note that using <tt>equals()</tt> instead of `==' will work the same in all
230
+ versions of LiveConnect, including LC3</li>
231
+ <p>[It is not possible to replicate the identity behavior of the `==' operator
232
+ that LC1 provides without the use of "weak" references, i.e. references that
233
+ do not contribute to making a Java object reachable for purposes of garbage
234
+ collection, but which nonetheless allow reference to an object as long as
235
+ it is reachable by other means.&nbsp; The use of weak references is not portable,
236
+ however.&nbsp; It is not part of the JNI or JDK 1.1 and it is not provided
237
+ on all JVMs.&nbsp; The JDK1.2 release includes standard support for weak references.]<BR>
238
+ <br>
239
+ &nbsp;
240
+ <li> It's possible that, in a set of overloaded Java methods, more than one
241
+ method is compatible with the types of the actual arguments in a call from
242
+ JavaScript to Java via LiveConnect.&nbsp; LC1 and LC2 resolved these ambiguities
243
+ in a simplistic manner, by simply invoking whatever method was enumerated
244
+ first by the JVM.&nbsp; The enumeration order of reflected methods using <i>java.lang.reflect</i>&nbsp;
245
+ is not specified by Sun and may differ among vendor's JVMs, i.e. enumeration
246
+ could be in order of classfile appearance, hashtable order, etc.&nbsp; Hence,
247
+ the Java method chosen when there is more than one compatible method may vary
248
+ depending on the JVM.&nbsp; With the Netscape and Sun JVMs, it is possible
249
+ to change the behavior of an LC1/LC2 program by changing the order that Java
250
+ methods appear in a source file, thus changing the method enumeration order.</li>
251
+ <p>In LC3, a new method overload resolution algorithm is used.&nbsp; Informally,
252
+ the method with Java parameter types that most&nbsp; closely match the JavaScript
253
+ types is chosen.&nbsp; You can read all the gorey details in the <a href="http://www.mozilla.org/js/liveconnect/lc3_method_overloading.html">spec</a>.<BR>
254
+ <br>
255
+ &nbsp;
256
+ <li> There are several minor changes in error handling to make LiveConnect more
257
+ conformant to ECMAScript.&nbsp; These include, for example, making any attempt
258
+ to delete JavaObject, JavaClass or JavaPackage properties fail silently, rather
259
+ than causing an error.&nbsp; Also, some error messages have been changed to
260
+ be more informative.&nbsp; These changes should generally be backward-compatible
261
+ with LC1 because few programs that use LiveConnect will depend on the exact
262
+ behavior of LiveConnect when handling errors.</li>
263
+ </ul>
264
+
265
+ <h2> <a NAME="Limitations"></a>Limitations/Bugs/To-Do<BR>
266
+ </h2>
267
+ <ul>
268
+ <li> The efficiency of calling Java methods leaves something to be desired,
269
+ due to the convoluted nature of implementing native methods for JS.&nbsp;
270
+ JS_CloneFunctionObject() is called for every Java method invocation and the
271
+ inability to store private data in a JSFunction object requires that the method
272
+ table be searched twice instead of once for every invocation.<BR>
273
+ <BR>
274
+ </li>
275
+ <li> When Java objects are referenced from JS, they are entered into a hash
276
+ table, so as to ensure that the same JS Object wrapper is used every time
277
+ a particular Java object is reflected into JS.&nbsp; In this way, the behavior
278
+ of the JS '==' and '===' operators are preserved.&nbsp; Unfortunately, the
279
+ hash table may grow quite large (objects are only removed from the hash table
280
+ when finalized).&nbsp; In thread-safe systems, the hash table must be locked
281
+ when accessed, leading to slow performance. One alternate solution would be
282
+ to make it possible to overload JS's equality-test operators, so that the
283
+ hash table would no longer be required.<BR>
284
+ <BR>
285
+ </li>
286
+ <li> Initially, JavaClassDescriptor objectswere reference-counted to permit
287
+ free'ing of unused descriptors.&nbsp; However, it's relatively common to develop
288
+ cycles in the graph of JavaClassDescriptors, which leads to unused JavaClassDescriptors
289
+ that have non-zero reference counts. For that reason, JavaClassDescriptors
290
+ are not free'ed until JSJ_Shutdown().&nbsp; Luckily, the amount of memory
291
+ used by JavaClassDescriptors tends to be relatively small.<BR>
292
+ <BR>
293
+ </li>
294
+ <li> The LiveConnect API is designed to allow multiple JVMs to be used simultaneously
295
+ in the same executable (although each JSContext is limited to interaction
296
+ with at most one JVM).&nbsp; However, the API is not fully implemented.&nbsp;
297
+ For example, many global variables will need to become members of the JSJavaVM
298
+ struct so that they are stored on a per-JVM basis.<BR>
299
+ <BR>
300
+ </li>
301
+ <li> Java and JavaScript use independent garbage collection systems. A reference
302
+ between the two worlds must, therefore, take the form of a GC root. It's possible
303
+ to create uncollectable objects when cyclic graphs cross the boundary between
304
+ JS and Java, e.g. a JS object that refers to a Java object that refers back
305
+ to the original JS object. There is no simple solution to this dual-GC problem.
306
+ Luckily, such cyclic object graphs are extremely rare. </li>
307
+ </ul>
308
+
309
+ <h2>
310
+ <a NAME="Build_conventions"></a>Build conventions</h2>
311
+ <P>The following directions are for building the standalone version of LiveConnect.
312
+ To build the version that's used in the Mozilla browser, see the <A HREF="http://www.mozilla.org/docs/">Mozilla
313
+ build documentation</A>.</P>
314
+ <P>On all platforms, you must update your JVM's <tt>CLASSPATH</tt> to point to
315
+ the <tt>js/src/liveconnect/classes</tt> subdirectory.&nbsp; If you do not, LiveConnect
316
+ will still operate but with the limitation that JS objects may not be passed
317
+ as arguments of Java methods and it will not be possible to call from Java into
318
+ JavaScript, i.e. the <i>netscape.javascript.JSObject</i> class will be inaccessible.&nbsp;
319
+ Another downside of operating without these classes is that Java error messages
320
+ will not include a Java stack trace, when one is available.&nbsp; If your <tt>CLASSPATH</tt>
321
+ is set improperly, you will see a message like, "<tt>initialization error: Can't
322
+ load class netscape/javascript/JSObject</tt>" when starting a LiveConnect debug
323
+ build. </P>
324
+ <p>By default, all platforms build a version of LiveConnect that is <i>not</i>
325
+ threadsafe.&nbsp; If you require thread-safety, you must also populate the <tt>mozilla/dist</tt>
326
+ directory with <a href="http://www.mozilla.org/docs/tplist/catCode/nsprdesc.htm">NSPR</a>
327
+ headers and libraries.&nbsp; (NSPR implements a portable threading library,
328
+ among other things.&nbsp; The source is downloadable via <a href="http://www.mozilla.org/cvs.html">CVS</a>
329
+ from <tt><a href="http://lxr.mozilla.org/mozilla/source/nsprpub">mozilla/nsprpub</a></tt>.)&nbsp;
330
+ Next, you must define <tt>JS_THREADSAFE</tt> when building LiveConnect, either
331
+ on the command-line (gmake/nmake) or in a universal header file.&nbsp; Note
332
+ that JSRef must also be built with <tt>JS_THREADSAFE</tt>.
333
+ <p>One important note about building on Windows: There are two independent build
334
+ systems (in addition to the Mozilla browser build system). One of them uses
335
+ the IDE project files and the other uses gmake and makefiles. The former will
336
+ be preferred by most for debugging and the latter is more complete, since it
337
+ builds the necessary Java classes in addition to compiling the LiveConnect C
338
+ code.
339
+ <ul><b>Windows</b>
340
+ <ul>
341
+ <li>
342
+ Build the JS runtime and interpreter, <tt>js32.dll</tt>, by using the
343
+ <a href="http://lxr.mozilla.org/mozilla/source/js/src/README.html#Build">normal
344
+ JSRef build procedure</a>.</li> <li> Set the <tt>JDK</tt> environment variable to point to the top-level JDK directory,
345
+ e.g. <tt>D:\jdk1.1.5</tt>.&nbsp; This is used to establish paths for header
346
+ file inclusion, linking and execution.&nbsp; If you are not using Sun's
347
+ JVM, the project files may require manual tweaking to set these paths correctly.</li>
348
+
349
+ <li> Use MSVC 5 or MSVC 6 with the <tt>LiveConnectShell.dsw</tt> project file.&nbsp;
350
+ <font color="#993300">NOTE: makefile.win is an nmake file used only for
351
+ building the JS-engine in the Mozilla browser.&nbsp; Don't attempt to use
352
+ it to build the standalone JS-engine.</font></li>
353
+
354
+ <li>
355
+ The output files (DLLs and executables) are placed in either the <tt>js\src\liveconnect\Debug</tt>
356
+ or the <tt>js\src\liveconnect\Release</tt> directory.</li>
357
+
358
+ <li>
359
+ The LiveConnect-enabled shell is named <tt>lcshell.exe</tt> and appears
360
+ in the output directory.</li>
361
+
362
+ <li>
363
+ You must have the JVM DLL in your <tt><font size=+1>PATH</font></tt> environment
364
+ variable in order to run.&nbsp; If you are using the Sun JDK, the DLL appears
365
+ in the JDK's bin directory, e.g. <tt>D:\jdk1.1.5\bin\javai_g.dll</tt>.</li>
366
+
367
+ <li>
368
+ Use any Java compiler to compile the java source files in the <tt>js\src\liveconnect\classes\netscape\javascript</tt>
369
+ directory.</li>
370
+
371
+ <li> Update your JVM's <tt>CLASSPATH</tt> to point to the <tt>js\src\liveconnect\classes</tt>
372
+ subdirectory.&nbsp; (See above)<br>
373
+ <BR></li>
374
+ </ul>
375
+ <b>Mac OS</b>
376
+ <ul>
377
+ <li>
378
+ Using CodeWarrior Pro 3 is recommended, though the project files will probably
379
+ also work with CodeWarrior Pro 4.</li>
380
+
381
+ <li>
382
+ Install Apple's JVM, MRJ 2.0 (or later), and the <a href="ftp://dev.apple.com/devworld/Java/MRJSDK2.0.1EarlyAccess4.hqx">MRJ
383
+ SDK v2.0.1ea4</a>.&nbsp; Note: You do not need to install MRJ if you are
384
+ running a recent version of MacOS 8, since it is shipped with the OS.</li>
385
+
386
+ <li>
387
+ Copy the folders <tt>CIncludes</tt> &amp; <tt>Libraries</tt> from the SDK's
388
+ <tt>Interfaces&amp;Libraries</tt> directory to <tt>js:src:liveconnect:macbuild:JavaSession</tt>.</li>
389
+
390
+ <li>
391
+ Build the LiveConnect test application, <tt>LiveConnectShell</tt>, with
392
+ <tt>js:src:liveconnect:macbuild:LiveConnectShell.mcp</tt>.</li>
393
+
394
+ <li>
395
+ Build <tt>liveconnect.jar</tt> with <tt>js:src:liveconnect:macbuild:LiveConnect.mcp</tt>.</li>
396
+
397
+ <li>
398
+ Make an alias to <tt>liveconnect.jar</tt> and place it in "<tt>{SystemFolder}Extensions:MRJ
399
+ Libraries:MRJClasses</tt>".<br>
400
+ <BR></li>
401
+ </ul>
402
+ <b>Unix</b> (also works on Windows)
403
+ <ul>
404
+ <li> <font color="#000000">Use '<tt>gmake -f Makefile.ref</tt>' to build.
405
+ To compile optimized code, pass <tt>BUILD_OPT=1</tt> on the gmake command
406
+ line or preset it in the environment or <tt>Makefile.ref</tt>.&nbsp; </font><font color="#990000">NOTE:
407
+ Do not attempt to use <tt>Makefile</tt> to build.&nbsp; This file is used
408
+ only for building LiveConnect in the Mozilla browser.</font></li>
409
+ <li> <font color="#000000">Each platform on which LiveConnect is built must
410
+ have a *.mk configuration file in the <tt>js/src/liveconnect/config</tt>
411
+ directory.&nbsp; The configuration file specifies the JVM headers/libraries
412
+ used and allows for customization of command-line options.&nbsp; To date,
413
+ the build system has been tested on Solaris, AIX, HP/UX, OSF, IRIX, x86
414
+ Linux and Windows NT. Most platforms will work with either the vendor compiler
415
+ or gcc.</font></li>
416
+ <li>Update your JVM's <tt><font size=+1>CLASSPATH</font></tt> to point to
417
+ the <tt>js/src/liveconnect/classes</tt> subdirectory.&nbsp; (See above)</li>
418
+ </ul>
419
+ </ul>
420
+
421
+ <h2>
422
+ <a NAME="coding_conventions"></a>Naming and coding conventions:</h2>
423
+
424
+ <ul>
425
+ <li>
426
+ Public function names begin with JSJ_ followed by capitalized "intercaps",&nbsp;
427
+ e.g. JSJ_ConnectToJavaVM.</li>
428
+
429
+ <li>
430
+ Extern but library-private function names use a jsj_ prefix and mixed case,
431
+ e.g. jsj_LookupSymbol.</li>
432
+
433
+ <li>
434
+ Most static function names have unprefixed, underscore-separated names:
435
+ get_char.</li>
436
+
437
+ <li>
438
+ But static native methods of JS objects have intercaps names, e.g., JavaObject_getProperty().</li>
439
+
440
+ <li>
441
+ And library-private and static data use underscores, not intercaps (but
442
+ library-private data do use a js_ prefix).</li>
443
+
444
+ <li>
445
+ Scalar type names are lowercase and js-prefixed: jsdouble.</li>
446
+
447
+ <li>
448
+ Aggregate type names are JS-prefixed and mixed-case: JSObject.</li>
449
+
450
+ <li>
451
+ Macros are generally ALL_CAPS and underscored, to call out potential side
452
+ effects, multiple uses of a formal argument, etc.</li>
453
+
454
+ <li>
455
+ Four spaces of indentation per statement nesting level.&nbsp; The files
456
+ are space-filled, so adjusting of your tab setting should be unnecessary.</li>
457
+
458
+ <li>
459
+ I don't bow down to the ancient "80 columns per line" gods, since most
460
+ of us are not using vt100's to read source code.&nbsp; My rule of thumb
461
+ is to use no more than 95 columns per line, but exceptions are made to
462
+ format tables or table-like code.</li>
463
+
464
+ <li>
465
+ DLL entry points have their return type expanded within a JS_EXPORT_API()&nbsp;
466
+ macro call, to get the right Windows secret type qualifiers in the right
467
+ places for both 16- and 32-bit builds.</li>
468
+
469
+ <li>
470
+ Callback functions that might be called from a DLL are similarly macroized
471
+ with JS_STATIC_DLL_CALLBACK (if the function otherwise would be static
472
+ to hide its name) or JS_DLL_CALLBACK (this macro takes no type argument;
473
+ it should be used after the return type and before the function name).</li>
474
+ </ul>
475
+
476
+ <h2>
477
+ <a NAME="API"></a>The LiveConnect API</h2>
478
+ All public LiveConnect entry points and callbacks are documented in
479
+ <A HREF=http://lxr.mozilla.org/mozilla/source/js/src/liveconnect/jsjava.h>jsjava.h</A>,
480
+ the header file that exports those functions.
481
+ <br>&nbsp;
482
+ <h2>
483
+ <a NAME="File_walkthrough"></a>File walk-through</h2>
484
+ &nbsp;
485
+ <table BORDER=3 CELLSPACING=0 CELLPADDING=4 >
486
+ <tr>
487
+ <td>jsjava.h</td>
488
+
489
+ <td>LiveConnect's only public header file.&nbsp; Defines all public API
490
+ entry points, callbacks and types.&nbsp;</td>
491
+ </tr>
492
+
493
+ <tr>
494
+ <td>jsj_private.h</td>
495
+
496
+ <td>LiveConnect internal header file for intra-module sharing of functions
497
+ and types.</td>
498
+ </tr>
499
+
500
+ <tr>
501
+ <td>jsj.c</td>
502
+
503
+ <td>Public LiveConnect API entry points and initialization code. Handling
504
+ of multiple threads and multiple JVMs.</td>
505
+ </tr>
506
+
507
+ <tr>
508
+ <td>jsj_array.c</td>
509
+
510
+ <td>Read and write elements of a Java array, performing needed conversions
511
+ to/from JS types.</td>
512
+ </tr>
513
+
514
+ <tr>
515
+ <td>jsj_class.c</td>
516
+
517
+ <td>Construct and manipulate JavaClassDescriptor structs, which are the
518
+ native representation for Java classes.&nbsp; JavaClassDescriptors are
519
+ used to describe the methods and fields of a class, including their type
520
+ signatures, and include a reference to the peer <i>java.lang.Class</i>
521
+ object.&nbsp; Since each Java object has a class, there is a JavaClassDescriptor
522
+ associated with the JavaScript reflection of each Java Object.</td>
523
+ </tr>
524
+
525
+ <tr>
526
+ <td>jsj_convert.c</td>
527
+
528
+ <td>Convert between Java and JavaScript values of all types, which may
529
+ require calling routines in other files to wrap JS objects as Java objects
530
+ and vice-versa.</td>
531
+ </tr>
532
+
533
+ <tr>
534
+ <td>jsj_field.c</td>
535
+
536
+ <td>Reflect Java fields as properties of JavaObject objects and implement
537
+ getter/setter access to those fields.</td>
538
+ </tr>
539
+
540
+ <tr>
541
+ <td>jsj_JavaArray.c</td>
542
+
543
+ <td>Implementation of the JavaScript JavaArray class.&nbsp; Instances of
544
+ JavaArray are used to reflect Java arrays.</td>
545
+ </tr>
546
+
547
+ <tr>
548
+ <td>jsj_JavaClass.c</td>
549
+
550
+ <td>Implementation of the JavaScript JavaClass class.&nbsp;&nbsp; Instances
551
+ of JavaClass are used to reflect Java classes.</td>
552
+ </tr>
553
+
554
+ <tr>
555
+ <td>jsj_JavaObject.c</td>
556
+
557
+ <td>Implementation of the JavaScript JavaObject class.&nbsp;&nbsp; Instances
558
+ of JavaObject are used to reflect Java objects, except for Java arrays,
559
+ although some of the code in this file is used by the JavaArray code.</td>
560
+ </tr>
561
+
562
+ <tr>
563
+ <td>jsj_JavaMember.c</td>
564
+
565
+ <td>Implementation of the JavaScript JavaMember class.&nbsp; JavaMember's
566
+ are a strange beast required only to handle the special case of a public
567
+ field and a public method that appear in the same Java class and which
568
+ have the same name.</td>
569
+ </tr>
570
+
571
+ <tr>
572
+ <td>jsj_JavaPackage.c</td>
573
+
574
+ <td>Implementation of the JavaScript JavaPackage class.&nbsp;&nbsp; Instances
575
+ of JavaPackage are used to reflect Java packages.&nbsp; The JS properties
576
+ of a JavaPackage are either nested JavaPackage objects or a JavaClass object.</td>
577
+ </tr>
578
+
579
+ <tr>
580
+ <td>jsj_JSObject.c</td>
581
+
582
+ <td>Implementation of the native methods for the&nbsp; <i>netscape.javascript.JSObject</i>
583
+ Java class, which are used for calling into JavaScript from Java.&nbsp;
584
+ It also contains the code that wraps JS objects as instances of&nbsp; <i>netscape.javascript.JSObject
585
+ </i>and
586
+ the code that handles propagation of exceptions both into and out of Java.</td>
587
+ </tr>
588
+
589
+ <tr>
590
+ <td>jsj_method.c</td>
591
+
592
+ <td>Reflect Java methods as properties of JavaObject objects and make it
593
+ possible to invoke those methods.&nbsp; Includes overloaded method resolution
594
+ and argument/return-value conversion code.</td>
595
+ </tr>
596
+
597
+ <tr>
598
+ <td>jsj_utils.c</td>
599
+
600
+ <td>Low-level utility code for reporting errors, etc.</td>
601
+ </tr>
602
+ </table>
603
+
604
+ <h2>
605
+ <a NAME="sample_shell_interaction"></a>Sample LiveConnect shell interactions</h2>
606
+
607
+ <h4>
608
+ Java packages, classes and constructors</h4>
609
+ <tt>js> java</tt>
610
+ <br><tt>[JavaPackage java]</tt>
611
+ <br><tt>js> awt = java.awt</tt>
612
+ <br><tt>[JavaPackage java.awt]</tt>
613
+ <br><tt>js> Rectangle = awt.Rectangle</tt>
614
+ <br><tt>[JavaClass java.awt.Rectangle]</tt>
615
+ <h4>
616
+ Java instance fields and methods</h4>
617
+ <tt>js> r = new java.awt.Rectangle(34, 23)</tt>
618
+ <br><tt>java.awt.Rectangle[x=0,y=0,width=34,height=23]</tt>
619
+ <br><tt>js> r.width - r.height</tt>
620
+ <br><tt>11</tt>
621
+ <br><tt>js> r.x = 7; r.y = 4</tt>
622
+ <br><tt>4</tt>
623
+ <br><tt>js> r</tt>
624
+ <br><tt>java.awt.Rectangle[x=7,y=4,width=34,height=23]</tt>
625
+ <br><tt>js> r.grow(3)</tt>
626
+ <br><tt>There is no Java method java.awt.Rectangle.grow that matches JavaScript
627
+ argument types (number).</tt>
628
+ <br><tt>Candidate methods with the same name are:</tt>
629
+ <br><tt>&nbsp;&nbsp; void grow(int, int)</tt>
630
+ <p><tt>js> r.grow(3, 3)</tt>
631
+ <br><tt>js> r</tt>
632
+ <br><tt>java.awt.Rectangle[x=4,y=1,width=40,height=29]</tt>
633
+ <h4>
634
+ Java arrays</h4>
635
+ <tt>js> s = new java.lang.String("mastiff")</tt>
636
+ <br><tt>mastiff</tt>
637
+ <br><tt>js> c = s.toCharArray()</tt>
638
+ <br><tt>[C@298e9b</tt>
639
+ <br><tt>js> c[0] = "b"; c[4] = "a"; c[5] = "r"; c[6] = "d"</tt>
640
+ <br><tt>d</tt>
641
+ <br><tt>js> s2 = new java.lang.String(c)</tt>
642
+ <br><tt>bastard</tt>
643
+ <h4>
644
+ Java static fields and methods</h4>
645
+ <tt>js> java.lang.reflect.Modifier.ABSTRACT</tt>
646
+ <br><tt>1024</tt>
647
+ <br><tt>js> java.lang.Math.sin(3) + 2</tt>
648
+ <br><tt>2.1411200080598674</tt>
649
+ <h4>
650
+ Explicit resolution of overloaded Java methods</h4>
651
+ <tt>js> x = "23"</tt>
652
+ <br><tt>23</tt>
653
+ <br><tt>js> java.lang.Math.abs(x)</tt>
654
+ <br><tt>The choice of static Java method java.lang.Math.abs matching JavaScript
655
+ argument types (string) is ambiguous.</tt>
656
+ <br><tt>Candidate methods are:</tt>
657
+ <br><tt>&nbsp;&nbsp; long abs(long)</tt>
658
+ <br><tt>&nbsp;&nbsp; float abs(float)</tt>
659
+ <br><tt>&nbsp;&nbsp; double abs(double)</tt>
660
+ <br><tt>&nbsp;&nbsp; int abs(int)</tt>
661
+ <br><tt>js> abs = java.lang.Math["abs(int)"]</tt>
662
+ <p><tt>function abs(int)() {</tt>
663
+ <br><tt>&nbsp;&nbsp;&nbsp; [native code]</tt>
664
+ <br><tt>}</tt>
665
+ <p><tt>js> abs(x)</tt>
666
+ <br><tt>23</tt>
667
+ <h4>
668
+ Public Method/field enumeration</h4>
669
+ <tt>js> out = java.lang.System.out</tt>
670
+ <br><tt>java.io.PrintStream@2980f5</tt>
671
+ <br><tt>js> for (m in out) print(m)</tt>
672
+ <br><tt>println</tt>
673
+ <br><tt>print</tt>
674
+ <br><tt>checkError</tt>
675
+ <br><tt>close</tt>
676
+ <br><tt>flush</tt>
677
+ <br><tt>write</tt>
678
+ <br><tt>wait</tt>
679
+ <br><tt>notifyAll</tt>
680
+ <br><tt>notify</tt>
681
+ <br><tt>toString</tt>
682
+ <br><tt>equals</tt>
683
+ <br><tt>hashCode</tt>
684
+ <br><tt>getClass</tt>
685
+ <br><tt>js> for (m in java.lang.String) print(m)</tt>
686
+ <br><tt>copyValueOf</tt>
687
+ <br><tt>valueOf</tt>
688
+ <h4>
689
+ 'instanceof' and 'in' operators</h4>
690
+ <tt>js> s = new java.lang.String("foop")</tt>
691
+ <br><tt>foop</tt>
692
+ <br><tt>js> s instanceof java.lang.Class</tt>
693
+ <br><tt>false</tt>
694
+ <br><tt>js> s instanceof java.lang.Object</tt>
695
+ <br><tt>true</tt>
696
+ <br><tt>js> "valueOf" in s</tt>
697
+ <br><tt>true</tt>
698
+ <br><tt>js> "NoSuchThing" in s</tt>
699
+ <br><tt>false</tt>
700
+ <h4>
701
+ Applying JavaScript string methods to Java strings</h4>
702
+ <tt>js> s = new java.lang.String("The rain in Spain falls mainly on my
703
+ head.")</tt>
704
+ <br><tt>The rain in Spain falls mainly on my head.</tt>
705
+ <br><tt>js> s.match(/Spain.*my/)</tt>
706
+ <br><tt>Spain falls mainly on my</tt>
707
+ <h4>
708
+ Applying JavaScript array methods to Java arrays</h4>
709
+ <tt>js> s = new java.lang.String("JavaScript")</tt>
710
+ <br><tt>JavaScript</tt>
711
+ <br><tt>js> c = s.toCharArray()</tt>
712
+ <br><tt>[C@298aef</tt>
713
+ <br><tt>js> c.reverse()</tt>
714
+ <br><tt>[C@298aef</tt>
715
+ <br><tt>js> new java.lang.String(c)</tt>
716
+ <br><tt>tpircSavaJ</tt>
717
+ <br>&nbsp;
718
+ </body>
719
+ </html>