envjs19 0.3.8.20101029121421
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.
- data/.jslintrbrc +30 -0
- data/.project +17 -0
- data/CHANGELOG.rdoc +57 -0
- data/DTD/xhtml-lat1.ent +196 -0
- data/DTD/xhtml-special.ent +80 -0
- data/DTD/xhtml-symbol.ent +237 -0
- data/DTD/xhtml.soc +14 -0
- data/DTD/xhtml1-frameset.dtd +1235 -0
- data/DTD/xhtml1-strict.dtd +978 -0
- data/DTD/xhtml1-transitional.dtd +1201 -0
- data/DTD/xhtml1.dcl +192 -0
- data/Makefile +7 -0
- data/Manifest.txt +280 -0
- data/README.rdoc +65 -0
- data/Rakefile +196 -0
- data/Wakefile +11 -0
- data/bin/envjsrb +257 -0
- data/build.properties +9 -0
- data/build.xml +247 -0
- data/gm/jquery.js +6002 -0
- data/gm/mainx.js +2648 -0
- data/gm/sensx.js +135 -0
- data/gm/t.js +6 -0
- data/gm/x.html +76 -0
- data/htmlparser/BrowserTreeBuilder.java +456 -0
- data/htmlparser/README +34 -0
- data/htmlparser/build.sh +38 -0
- data/jsl/jsl +0 -0
- data/jsl/jsl.default.conf +129 -0
- data/jsl/jsl.exe +0 -0
- data/lib/envjs.rb +35 -0
- data/lib/envjs/event_loop.js +206 -0
- data/lib/envjs/net.rb +3 -0
- data/lib/envjs/net/cgi.rb +94 -0
- data/lib/envjs/net/file.rb +69 -0
- data/lib/envjs/options.rb +11 -0
- data/lib/envjs/runtime.rb +346 -0
- data/lib/envjs/tempfile.rb +24 -0
- data/licenses/GPL-LICENSE.txt +278 -0
- data/licenses/MIT-LICENSE.txt +20 -0
- data/src/base64.js +80 -0
- data/src/build.js +6 -0
- data/src/cruft/bad.html +24 -0
- data/src/cruft/dom.js +606 -0
- data/src/cruft/element.js +297 -0
- data/src/cruft/good.html +30 -0
- data/src/cruft/good.js +32 -0
- data/src/cruft/internal.js +81 -0
- data/src/cruft/parser.js +458 -0
- data/src/css/properties.js +293 -0
- data/src/css/rule.js +22 -0
- data/src/css/sizzle.js +717 -0
- data/src/css/stylesheet.js +52 -0
- data/src/dom/attr.js +55 -0
- data/src/dom/cdatasection.js +31 -0
- data/src/dom/characterdata.js +119 -0
- data/src/dom/comment.js +30 -0
- data/src/dom/doctype.js +9 -0
- data/src/dom/document.js +1023 -0
- data/src/dom/dom.js +134 -0
- data/src/dom/element.js +217 -0
- data/src/dom/entities.js +273 -0
- data/src/dom/exception.js +28 -0
- data/src/dom/fragment.js +37 -0
- data/src/dom/implementation.js +140 -0
- data/src/dom/instruction.js +51 -0
- data/src/dom/namednodemap.js +374 -0
- data/src/dom/namespace.js +50 -0
- data/src/dom/node.js +618 -0
- data/src/dom/nodelist.js +195 -0
- data/src/dom/parser.js +1207 -0
- data/src/dom/text.js +73 -0
- data/src/event/event.js +47 -0
- data/src/event/mouseevent.js +4 -0
- data/src/event/uievent.js +8 -0
- data/src/html/a.js +110 -0
- data/src/html/anchor.js +80 -0
- data/src/html/area.js +57 -0
- data/src/html/base.js +26 -0
- data/src/html/blockquote-q.js +19 -0
- data/src/html/body.js +19 -0
- data/src/html/button.js +21 -0
- data/src/html/canvas.js +14 -0
- data/src/html/col-colgroup.js +49 -0
- data/src/html/collection.js +72 -0
- data/src/html/cookie.js +153 -0
- data/src/html/del-ins.js +25 -0
- data/src/html/div.js +28 -0
- data/src/html/document.js +364 -0
- data/src/html/element.js +382 -0
- data/src/html/fieldset.js +19 -0
- data/src/html/form.js +484 -0
- data/src/html/frame.js +89 -0
- data/src/html/frameset.js +25 -0
- data/src/html/head.js +44 -0
- data/src/html/html.js +0 -0
- data/src/html/htmlparser.js +340 -0
- data/src/html/iframe.js +26 -0
- data/src/html/image.js +0 -0
- data/src/html/img.js +62 -0
- data/src/html/input-elements.js +307 -0
- data/src/html/input.js +65 -0
- data/src/html/label.js +26 -0
- data/src/html/legend.js +19 -0
- data/src/html/link.js +82 -0
- data/src/html/map.js +22 -0
- data/src/html/meta.js +37 -0
- data/src/html/object.js +89 -0
- data/src/html/optgroup.js +25 -0
- data/src/html/option.js +103 -0
- data/src/html/param.js +38 -0
- data/src/html/script.js +122 -0
- data/src/html/select.js +132 -0
- data/src/html/style.js +31 -0
- data/src/html/table.js +199 -0
- data/src/html/tbody-thead-tfoot.js +92 -0
- data/src/html/td-th.js +18 -0
- data/src/html/textarea.js +31 -0
- data/src/html/title.js +20 -0
- data/src/html/tr.js +114 -0
- data/src/intro.js +141 -0
- data/src/outro.js +70 -0
- data/src/parser/html5.detailed.js +10762 -0
- data/src/parser/html5.min.js +503 -0
- data/src/parser/html5.pretty.js +10815 -0
- data/src/parser/intro.js +42 -0
- data/src/parser/outro.js +9 -0
- data/src/platform/core.js +323 -0
- data/src/platform/johnson.js +484 -0
- data/src/platform/rhino.js +327 -0
- data/src/platform/static/intro.js +41 -0
- data/src/platform/static/outro.js +30 -0
- data/src/profile/aop.js +238 -0
- data/src/profile/profile.js +402 -0
- data/src/serializer/xml.js +21 -0
- data/src/svg/animatedstring.js +25 -0
- data/src/svg/document.js +25 -0
- data/src/svg/element.js +22 -0
- data/src/svg/locatable.js +17 -0
- data/src/svg/rect.js +18 -0
- data/src/svg/rectelement.js +24 -0
- data/src/svg/stylable.js +49 -0
- data/src/svg/svgelement.js +22 -0
- data/src/svg/transformable.js +15 -0
- data/src/window/css.js +15 -0
- data/src/window/dialog.js +16 -0
- data/src/window/document.js +28 -0
- data/src/window/event.js +265 -0
- data/src/window/history.js +62 -0
- data/src/window/location.js +156 -0
- data/src/window/navigator.js +48 -0
- data/src/window/screen.js +53 -0
- data/src/window/timer.js +21 -0
- data/src/window/window.js +284 -0
- data/src/window/xhr.js +135 -0
- data/src/xpath/expression.js +49 -0
- data/src/xpath/implementation.js +2505 -0
- data/src/xpath/result.js +67 -0
- data/src/xpath/util.js +551 -0
- data/src/xpath/xmltoken.js +149 -0
- data/src/xslt/COPYING +34 -0
- data/src/xslt/ajaxslt-0.8.1/AUTHORS +1 -0
- data/src/xslt/ajaxslt-0.8.1/ChangeLog +136 -0
- data/src/xslt/ajaxslt-0.8.1/Makefile +49 -0
- data/src/xslt/ajaxslt-0.8.1/README +102 -0
- data/src/xslt/ajaxslt-0.8.1/TODO +15 -0
- data/src/xslt/ajaxslt-0.8.1/dom.js +566 -0
- data/src/xslt/ajaxslt-0.8.1/dom_unittest.html +24 -0
- data/src/xslt/ajaxslt-0.8.1/dom_unittest.js +131 -0
- data/src/xslt/ajaxslt-0.8.1/simplelog.js +79 -0
- data/src/xslt/ajaxslt-0.8.1/test/xpath.html +18 -0
- data/src/xslt/ajaxslt-0.8.1/test/xpath_script.js +45 -0
- data/src/xslt/ajaxslt-0.8.1/test/xslt.html +58 -0
- data/src/xslt/ajaxslt-0.8.1/test/xslt_script.js +33 -0
- data/src/xslt/ajaxslt-0.8.1/unittestsuite.html +26 -0
- data/src/xslt/ajaxslt-0.8.1/xmltoken.js +149 -0
- data/src/xslt/ajaxslt-0.8.1/xmltoken_unittest.html +18 -0
- data/src/xslt/ajaxslt-0.8.1/xmltoken_unittest.js +811 -0
- data/src/xslt/ajaxslt-0.8.1/xpath_unittest.html +39 -0
- data/src/xslt/ajaxslt-0.8.1/xpath_unittest.js +557 -0
- data/src/xslt/ajaxslt-0.8.1/xpathdebug.js +234 -0
- data/src/xslt/ajaxslt-0.8.1/xslt_unittest.html +138 -0
- data/src/xslt/ajaxslt-0.8.1/xslt_unittest.js +68 -0
- data/src/xslt/implementation.js +625 -0
- data/src/xslt/processor.js +37 -0
- data/src/xslt/util.js +449 -0
- data/test/base64.js +80 -0
- data/test/call-load-test.js +15 -0
- data/test/data.js +45 -0
- data/test/debug.js +53 -0
- data/test/firebug/errorIcon.png +0 -0
- data/test/firebug/firebug.css +209 -0
- data/test/firebug/firebug.html +23 -0
- data/test/firebug/firebug.js +672 -0
- data/test/firebug/firebugx.js +10 -0
- data/test/firebug/infoIcon.png +0 -0
- data/test/firebug/warningIcon.png +0 -0
- data/test/fixtures/html/events.html +171 -0
- data/test/fixtures/html/iframe1.html +46 -0
- data/test/fixtures/html/iframe1a.html +46 -0
- data/test/fixtures/html/iframe2.html +45 -0
- data/test/fixtures/html/iframe3.html +28 -0
- data/test/fixtures/html/iframeN.html +57 -0
- data/test/fixtures/html/malformed.html +181 -0
- data/test/fixtures/html/scope.html +81 -0
- data/test/fixtures/html/trivial.html +19 -0
- data/test/fixtures/html/with_js.html +26 -0
- data/test/fixtures/images/icon-blue.png +0 -0
- data/test/fixtures/js/external_script.js +1 -0
- data/test/fixtures/js/script.js +1 -0
- data/test/fixtures/js/script_error.js +2 -0
- data/test/foo.html +8 -0
- data/test/foo.js +40 -0
- data/test/html/events.html +171 -0
- data/test/html/iframe1.html +46 -0
- data/test/html/iframe1a.html +46 -0
- data/test/html/iframe2.html +45 -0
- data/test/html/iframe3.html +30 -0
- data/test/html/iframeN.html +57 -0
- data/test/html/malformed.html +181 -0
- data/test/html/scope.html +87 -0
- data/test/html/script.js +1 -0
- data/test/html/trivial.html +19 -0
- data/test/html/with_js.html +26 -0
- data/test/index.html +328 -0
- data/test/java-prototype.js +9 -0
- data/test/jquery.js +6002 -0
- data/test/primary-tests.js +26 -0
- data/test/prototype-test.js +13 -0
- data/test/qunit.js +61 -0
- data/test/qunit/qunit/qunit.css +17 -0
- data/test/qunit/qunit/qunit.js +997 -0
- data/test/scope.html +19 -0
- data/test/scope.rb +24 -0
- data/test/smp/dmathieu/index.html +8 -0
- data/test/specs/dist/env.spec.js +1534 -0
- data/test/specs/envjs.spec.css +46 -0
- data/test/specs/parser/html.js +31 -0
- data/test/specs/parser/spec.html +40 -0
- data/test/specs/parser/xml.js +31 -0
- data/test/specs/qunit.bdd.js +210 -0
- data/test/specs/qunit.css +17 -0
- data/test/specs/qunit.js +997 -0
- data/test/specs/template/spec-0.js +31 -0
- data/test/specs/template/spec-1.js +31 -0
- data/test/specs/template/spec.html +40 -0
- data/test/specs/window/css.js +23 -0
- data/test/specs/window/dialog.js +25 -0
- data/test/specs/window/document.js +23 -0
- data/test/specs/window/event.js +25 -0
- data/test/specs/window/history.js +34 -0
- data/test/specs/window/location.js +34 -0
- data/test/specs/window/navigator.js +71 -0
- data/test/specs/window/screen.js +42 -0
- data/test/specs/window/spec.html +48 -0
- data/test/specs/window/timer.js +26 -0
- data/test/specs/window/window.js +53 -0
- data/test/specs/xhr/spec.html +47 -0
- data/test/specs/xhr/xhr.js +31 -0
- data/test/test.js +10 -0
- data/test/unit/dom.js +44 -0
- data/test/unit/elementmembers.js +92 -0
- data/test/unit/events.js +195 -0
- data/test/unit/fixtures/external_script.js +1 -0
- data/test/unit/form.js +40 -0
- data/test/unit/iframe.js +234 -0
- data/test/unit/insertion.js +23 -0
- data/test/unit/multi-window.js +212 -0
- data/test/unit/nu.validator.js +34 -0
- data/test/unit/onload.js +90 -0
- data/test/unit/parser.js +122 -0
- data/test/unit/prototypecompat.js +22 -0
- data/test/unit/proxy.js +6 -0
- data/test/unit/scope.js +209 -0
- data/test/unit/timer.js +115 -0
- data/test/unit/window.js +57 -0
- data/test/x.js +1 -0
- data/test/y.js +1 -0
- metadata +367 -0
data/README.rdoc
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
= THIS FORK OF ENV.JS IS MOTHBALLED
|
2
|
+
|
3
|
+
The Johnson fork of env.js is pretty much mothballed (which is already pretty much true of Johnson, given the rise of v8
|
4
|
+
and the difficulty moving Johnson to 1.9.*). The current best practices seem to be based on a headless webkit.
|
5
|
+
|
6
|
+
= env.js
|
7
|
+
|
8
|
+
* http://github.com/smparkes/env-js
|
9
|
+
* http://groups.google.com/group/envjs
|
10
|
+
* #envjs @ freenode
|
11
|
+
|
12
|
+
== Description
|
13
|
+
|
14
|
+
A browser environment for javascript interpreters.
|
15
|
+
|
16
|
+
This is a fork of the env.js project (http://github.com/thatcher/env-js/). See that link for env.js details.
|
17
|
+
This fork is based on the Johnson Ruby gem
|
18
|
+
(http://github.com/jbarnette/johnson).
|
19
|
+
|
20
|
+
== Installation
|
21
|
+
|
22
|
+
For now, you can install the envjs gem by installing Johnson:
|
23
|
+
|
24
|
+
gem install johnson --prerelease
|
25
|
+
|
26
|
+
and then installing the envjs gem with
|
27
|
+
|
28
|
+
gem install envjs
|
29
|
+
|
30
|
+
== Using envjs interactively
|
31
|
+
|
32
|
+
The envjs gem provides the envjsrb command, which functions as an extended version of the Johnson javascript shell. For example:
|
33
|
+
|
34
|
+
mbp:env-js smparkes$ envjsrb
|
35
|
+
js> this
|
36
|
+
=> [object Window 0]
|
37
|
+
js> window.location
|
38
|
+
=> about:blank
|
39
|
+
js> document.innerHTML
|
40
|
+
=> "<html><head><title></title></head><body></body></html>"
|
41
|
+
js>
|
42
|
+
|
43
|
+
== Embedding envjs
|
44
|
+
|
45
|
+
It's also possible to embed the envjs interpreter similar to the way it's done in Johnson, e.g.,
|
46
|
+
|
47
|
+
require 'rubygems' # if necessary
|
48
|
+
require 'johnson/tracemonkey'
|
49
|
+
require 'envjs/runtime'
|
50
|
+
|
51
|
+
envjs = Johnson::Runtime.new
|
52
|
+
envjs.extend Envjs::Runtime
|
53
|
+
window = envjs.evaluate("window")
|
54
|
+
puts window.location.to_s # == "about:blank"
|
55
|
+
puts window.document.innerHTML # == "<html><head><title></title></head><body></body></html>"
|
56
|
+
envjs.wait
|
57
|
+
|
58
|
+
You need the Runtime#wait at the end to give env.js's event loop a chance to execute queued events and timers. You may need to do this at other times as well, depending on the asynchronous nature of your application.
|
59
|
+
|
60
|
+
== License
|
61
|
+
|
62
|
+
See
|
63
|
+
http://github.com/smparkes/env-js/blob/envjsrb/licenses/MIT-LICENSE.txt
|
64
|
+
and
|
65
|
+
http://github.com/smparkes/env-js/blob/envjsrb/licenses/GPL-LICENSE.txt.
|
data/Rakefile
ADDED
@@ -0,0 +1,196 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
gem 'hoe', '>= 2.5'
|
4
|
+
require 'hoe'
|
5
|
+
|
6
|
+
Hoe.plugin :debugging, :doofus, :git, :gemspec
|
7
|
+
Hoe.plugins.delete :rubyforge
|
8
|
+
|
9
|
+
Hoe.spec "envjs" do
|
10
|
+
|
11
|
+
developer 'John Resig', 'jeresig@gmail.com'
|
12
|
+
developer 'Chris Thatcher', 'thatcher.christopher@gmail.com'
|
13
|
+
developer 'Steven Parkes', 'smparkes@smparkes.net'
|
14
|
+
|
15
|
+
self.readme_file = 'README.rdoc'
|
16
|
+
self.extra_rdoc_files = Dir['*.rdoc']
|
17
|
+
self.history_file = "CHANGELOG.rdoc"
|
18
|
+
self.readme_file = "README.rdoc"
|
19
|
+
|
20
|
+
self.extra_deps = [
|
21
|
+
['johnson', '>= 2.0.0.pre3']
|
22
|
+
]
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
# task :test => :check_dependencies
|
27
|
+
|
28
|
+
namespace :gemspec do
|
29
|
+
task :generate => "johnson:compile"
|
30
|
+
end
|
31
|
+
|
32
|
+
task :default => :test
|
33
|
+
|
34
|
+
namespace :rhino do
|
35
|
+
desc "run tests aginst rhino"
|
36
|
+
task :test do
|
37
|
+
classpath = [
|
38
|
+
File.join(".", "rhino", "ant.jar"),
|
39
|
+
File.join(".", "rhino", "ant-launcher.jar")
|
40
|
+
].join(File::PATH_SEPARATOR)
|
41
|
+
exec "java -cp #{classpath} org.apache.tools.ant.Main -emacs all"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
namespace :johnson do
|
46
|
+
|
47
|
+
desc "create a file that loads the individual source files"
|
48
|
+
task :load
|
49
|
+
|
50
|
+
desc "compile johnson files into a single js file"
|
51
|
+
task :compile do
|
52
|
+
require 'rexml/document'
|
53
|
+
include REXML
|
54
|
+
doc = Document.new( File.new( "build.xml" ) ).root
|
55
|
+
groups = {}
|
56
|
+
XPath.each( doc, "//concat" ) do |concat|
|
57
|
+
name = concat.attributes["destfile"]
|
58
|
+
files =
|
59
|
+
XPath.match( concat, "fileset/attribute::includes" ).
|
60
|
+
map { |a| a.value }
|
61
|
+
groups[name] = files
|
62
|
+
end
|
63
|
+
|
64
|
+
files = groups["${ENV_RHINO}"];
|
65
|
+
files.map! { |f| f == "env.js" ? groups["${ENV_DIST}"] : f }.flatten!
|
66
|
+
files.map! { |f| f.sub!( "rhino", "johnson" ); "src/" + f }
|
67
|
+
|
68
|
+
static = [
|
69
|
+
"src/platform/static/intro.js",
|
70
|
+
"src/base64.js",
|
71
|
+
"src/dom/nodelist.js",
|
72
|
+
"src/dom/namednodemap.js",
|
73
|
+
"src/dom/node.js",
|
74
|
+
"src/dom/namespace.js",
|
75
|
+
"src/dom/characterdata.js",
|
76
|
+
"src/dom/text.js",
|
77
|
+
"src/dom/cdatasection.js",
|
78
|
+
"src/dom/comment.js",
|
79
|
+
"src/dom/doctype.js",
|
80
|
+
"src/dom/attr.js",
|
81
|
+
"src/dom/element.js",
|
82
|
+
"src/dom/exception.js",
|
83
|
+
"src/dom/fragment.js",
|
84
|
+
"src/dom/instruction.js",
|
85
|
+
"src/dom/parser.js",
|
86
|
+
"src/dom/entities.js",
|
87
|
+
# "src/dom/implementation.js",
|
88
|
+
"src/dom/document.js",
|
89
|
+
"src/html/html.js",
|
90
|
+
"src/html/document.js",
|
91
|
+
"src/html/element.js",
|
92
|
+
"src/html/collection.js",
|
93
|
+
"src/html/input-elements.js",
|
94
|
+
"src/html/a.js",
|
95
|
+
"src/html/anchor.js",
|
96
|
+
"src/html/area.js",
|
97
|
+
"src/html/base.js",
|
98
|
+
"src/html/blockquote-q.js",
|
99
|
+
"src/html/body.js",
|
100
|
+
"src/html/button.js",
|
101
|
+
"src/html/col-colgroup.js",
|
102
|
+
"src/html/del-ins.js",
|
103
|
+
"src/html/div.js",
|
104
|
+
"src/html/legend.js",
|
105
|
+
"src/html/fieldset.js",
|
106
|
+
"src/html/form.js",
|
107
|
+
"src/html/frame.js",
|
108
|
+
"src/html/frameset.js",
|
109
|
+
"src/html/head.js",
|
110
|
+
"src/html/iframe.js",
|
111
|
+
"src/html/img.js",
|
112
|
+
"src/html/input.js",
|
113
|
+
"src/html/label.js",
|
114
|
+
"src/html/link.js",
|
115
|
+
"src/html/map.js",
|
116
|
+
"src/html/meta.js",
|
117
|
+
"src/html/object.js",
|
118
|
+
"src/html/optgroup.js",
|
119
|
+
"src/html/option.js",
|
120
|
+
"src/html/param.js",
|
121
|
+
"src/html/script.js",
|
122
|
+
"src/html/select.js",
|
123
|
+
"src/html/style.js",
|
124
|
+
"src/html/table.js",
|
125
|
+
"src/html/tbody-thead-tfoot.js",
|
126
|
+
"src/html/td-th.js",
|
127
|
+
"src/html/textarea.js",
|
128
|
+
"src/html/title.js",
|
129
|
+
"src/html/tr.js",
|
130
|
+
"src/svg/document.js",
|
131
|
+
"src/svg/element.js",
|
132
|
+
"src/svg/animatedstring.js",
|
133
|
+
"src/svg/stylable.js",
|
134
|
+
"src/svg/rect.js",
|
135
|
+
"src/svg/locatable.js",
|
136
|
+
"src/svg/transformable.js",
|
137
|
+
"src/svg/svgelement.js",
|
138
|
+
"src/svg/rectelement.js",
|
139
|
+
"src/parser/intro.js",
|
140
|
+
"src/parser/html5.pretty.js",
|
141
|
+
"src/parser/outro.js",
|
142
|
+
"src/xpath/xmltoken.js",
|
143
|
+
"src/xpath/expression.js",
|
144
|
+
"src/xpath/result.js",
|
145
|
+
"src/xpath/implementation.js",
|
146
|
+
"src/xpath/util.js",
|
147
|
+
"src/serializer/xml.js",
|
148
|
+
"src/event/event.js",
|
149
|
+
"src/event/mouseevent.js",
|
150
|
+
"src/event/uievent.js",
|
151
|
+
"src/css/properties.js",
|
152
|
+
"src/css/rule.js",
|
153
|
+
"src/css/stylesheet.js",
|
154
|
+
"src/html/cookie.js",
|
155
|
+
"src/platform/static/outro.js"
|
156
|
+
]
|
157
|
+
_static = [
|
158
|
+
"src/platform/static/intro.js",
|
159
|
+
"src/dom/node.js",
|
160
|
+
"src/platform/static/outro.js"
|
161
|
+
]
|
162
|
+
|
163
|
+
files.reject! { |f| static.include? f }
|
164
|
+
|
165
|
+
# puts files.join(" ")
|
166
|
+
|
167
|
+
system "rm -f lib/envjs/env.js"
|
168
|
+
system "cat #{files.join(' ')} > lib/envjs/env.js"
|
169
|
+
system "chmod 444 lib/envjs/env.js"
|
170
|
+
|
171
|
+
system "rm -f lib/envjs/static.js.tmp"
|
172
|
+
system "cat /dev/null > lib/envjs/static.js.tmp"
|
173
|
+
static.each do |f|
|
174
|
+
system "cat #{f} >> lib/envjs/static.js.tmp; echo >> lib/envjs/static.js.tmp"
|
175
|
+
end
|
176
|
+
system "chmod 444 lib/envjs/static.js.tmp"
|
177
|
+
system "mv -f lib/envjs/static.js.tmp lib/envjs/static.js"
|
178
|
+
|
179
|
+
end
|
180
|
+
|
181
|
+
desc "run tests against johnson"
|
182
|
+
task :test => :compile do
|
183
|
+
ruby "-Ilib bin/envjsrb test/primary-tests.js"
|
184
|
+
ruby "-Ilib bin/envjsrb test/prototype-test.js"
|
185
|
+
ruby "-Ilib bin/envjsrb test/call-load-test.js"
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
189
|
+
|
190
|
+
desc "run tests on all platforms"
|
191
|
+
# task :test => "rhino:test"
|
192
|
+
task :test => "johnson:test"
|
193
|
+
|
194
|
+
# Local Variables:
|
195
|
+
# mode:ruby
|
196
|
+
# End:
|
data/Wakefile
ADDED
data/bin/envjsrb
ADDED
@@ -0,0 +1,257 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'pathname'
|
5
|
+
|
6
|
+
require 'envjs/options'
|
7
|
+
|
8
|
+
require 'johnson/tracemonkey'
|
9
|
+
require 'johnson/cli'
|
10
|
+
require 'envjs/runtime'
|
11
|
+
|
12
|
+
RUNTIME = js = Johnson::Runtime.new
|
13
|
+
RUNTIME.extend Envjs::Runtime
|
14
|
+
|
15
|
+
# RUNTIME.load Envjs::ENVJS
|
16
|
+
|
17
|
+
EXIT_VERBS = [nil] + %w(exit quit)
|
18
|
+
|
19
|
+
prepped = false
|
20
|
+
ruby_readline = []
|
21
|
+
js_readline = []
|
22
|
+
local_binding = binding
|
23
|
+
mode = nil
|
24
|
+
|
25
|
+
(class<<self; self; end).send :define_method, :prep do
|
26
|
+
|
27
|
+
return if prepped
|
28
|
+
prepped = true
|
29
|
+
|
30
|
+
require "readline"
|
31
|
+
require "johnson/cli"
|
32
|
+
|
33
|
+
RUNTIME.evaluate(Johnson::CLI::JS)
|
34
|
+
|
35
|
+
def copy_history
|
36
|
+
new_history = []
|
37
|
+
until Readline::HISTORY.empty?
|
38
|
+
new_history.push(Readline::HISTORY.pop)
|
39
|
+
end
|
40
|
+
new_history
|
41
|
+
end
|
42
|
+
|
43
|
+
def paste_history(old_history)
|
44
|
+
until old_history.empty?
|
45
|
+
Readline::HISTORY << old_history.pop
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def handle_exit(input)
|
50
|
+
return EXIT_VERBS.include?(input)
|
51
|
+
end
|
52
|
+
|
53
|
+
def rescued(&block)
|
54
|
+
yield
|
55
|
+
rescue Exception => e
|
56
|
+
exit if SystemExit === e
|
57
|
+
|
58
|
+
puts e.message
|
59
|
+
puts e.backtrace.reject { |l| l =~ /bin\/johnson/ }
|
60
|
+
end
|
61
|
+
|
62
|
+
def eval_in_js(expression,stream)
|
63
|
+
rescued do
|
64
|
+
v = RUNTIME.evaluate(expression, "(console)")
|
65
|
+
stream.result { "=> " + v.inspect }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def eval_in_ruby(expression, bind_to, stream)
|
70
|
+
rescued do
|
71
|
+
v = eval(expression, bind_to)
|
72
|
+
stream.result { "=> " + v.inspect }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
(class<<self; self; end).send :define_method, :do_loop do |stream|
|
77
|
+
# def foo
|
78
|
+
|
79
|
+
catch "Breakout" do
|
80
|
+
loop do
|
81
|
+
mode = :js
|
82
|
+
input = stream.next("js> ")
|
83
|
+
input and input.chomp!
|
84
|
+
begin stream.exit(input); throw "Breakout" end if handle_exit(input)
|
85
|
+
|
86
|
+
if input =~ /^rb\s+(.+)$/
|
87
|
+
eval_in_ruby($1, local_binding, stream)
|
88
|
+
next
|
89
|
+
end
|
90
|
+
|
91
|
+
if input == "rb"
|
92
|
+
js_readline = copy_history
|
93
|
+
paste_history(ruby_readline)
|
94
|
+
|
95
|
+
loop do
|
96
|
+
mode = :rb
|
97
|
+
# input = Readline.readline("rb> ", true)
|
98
|
+
input = stream.next("rb> ")
|
99
|
+
begin stream.exit(input); throw "Breakout" end if handle_exit(input)
|
100
|
+
|
101
|
+
break if input == "js"
|
102
|
+
|
103
|
+
if input =~ /^js\s+(.+)$/
|
104
|
+
eval_in_js($1)
|
105
|
+
next
|
106
|
+
end
|
107
|
+
|
108
|
+
eval_in_ruby(input, local_binding, stream)
|
109
|
+
end
|
110
|
+
|
111
|
+
ruby_readline = copy_history
|
112
|
+
paste_history(js_readline)
|
113
|
+
next
|
114
|
+
end
|
115
|
+
|
116
|
+
eval_in_js(input, stream)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
if ARGV.length > 0
|
123
|
+
|
124
|
+
begin
|
125
|
+
about_blank = true
|
126
|
+
ARGV.each do |file|
|
127
|
+
|
128
|
+
uri = URI.parse file
|
129
|
+
|
130
|
+
if uri.scheme == nil
|
131
|
+
uri.scheme = "file"
|
132
|
+
begin
|
133
|
+
uri.path = Pathname.new(uri.path).realpath.to_s
|
134
|
+
rescue Errno::ENOENT; end
|
135
|
+
uri = URI.parse uri.to_s
|
136
|
+
end
|
137
|
+
|
138
|
+
uri_s = uri.to_s.sub %r(^file:/([^/])), 'file:///\1'
|
139
|
+
|
140
|
+
if uri.scheme == "about" and uri.opaque == "blank"
|
141
|
+
# $stderr.puts "wait before set about"
|
142
|
+
RUNTIME.wait
|
143
|
+
RUNTIME.evaluate("window.location = 'about:blank'", "(comand line)", 1)
|
144
|
+
about_blank = true
|
145
|
+
elsif uri.path =~ /\.x?html?$/ || uri.scheme =~ %r(^https?)
|
146
|
+
# $stderr.puts "wait before set real" if RUNTIME.evaluate("window.location.href") != "about:blank"
|
147
|
+
RUNTIME.wait if RUNTIME.evaluate("window.location.href") != "about:blank"
|
148
|
+
# RUNTIME.evaluate("window.location = 'file://#{Pathname.new(file).realpath}'", file, 1)
|
149
|
+
RUNTIME.evaluate("window.location = '#{uri_s}'", file, 1)
|
150
|
+
about_blank = false
|
151
|
+
else
|
152
|
+
RUNTIME.top_level_load uri_s
|
153
|
+
RUNTIME.load uri_s
|
154
|
+
RUNTIME.top_level_load nil
|
155
|
+
end
|
156
|
+
end
|
157
|
+
rescue Johnson::Error => je
|
158
|
+
if je.message.match /<SystemExit: exit>/
|
159
|
+
exit
|
160
|
+
end
|
161
|
+
raise je
|
162
|
+
end
|
163
|
+
|
164
|
+
RUNTIME.wait
|
165
|
+
|
166
|
+
if !$wake_info.empty?
|
167
|
+
puts "<wake><![CDATA["
|
168
|
+
puts $wake_info.join("\n")
|
169
|
+
puts "]]></wake>"
|
170
|
+
$stdout.flush
|
171
|
+
end
|
172
|
+
|
173
|
+
|
174
|
+
else
|
175
|
+
|
176
|
+
prep
|
177
|
+
|
178
|
+
if !(files = Dir[".envjsrbrc",File.join(ENV["HOME"],".envjsrbrc")]).empty?
|
179
|
+
file = Class.new do
|
180
|
+
def initialize f
|
181
|
+
@file = open f
|
182
|
+
end
|
183
|
+
def next prompt
|
184
|
+
@file.gets
|
185
|
+
end
|
186
|
+
def result &block
|
187
|
+
end
|
188
|
+
def exit v; end
|
189
|
+
end.new files[0]
|
190
|
+
|
191
|
+
do_loop file
|
192
|
+
end
|
193
|
+
|
194
|
+
options = Johnson::CLI::Options.parse!(ARGV)
|
195
|
+
|
196
|
+
options.load_paths.each { |d| $LOAD_PATH << d }
|
197
|
+
options.paths_to_require.each { |p| RUNTIME.evaluate("Johnson.require('#{p}')") }
|
198
|
+
options.files_to_preload.each { |f| RUNTIME.load(f) }
|
199
|
+
|
200
|
+
unless options.expressions.empty?
|
201
|
+
options.expressions.each { |e| RUNTIME.evaluate(e, '-e') }
|
202
|
+
exit if options.files_to_evaluate.empty?
|
203
|
+
end
|
204
|
+
|
205
|
+
unless options.files_to_evaluate.empty?
|
206
|
+
RUNTIME[:arguments] = options.arguments
|
207
|
+
|
208
|
+
options.files_to_evaluate.each do |file|
|
209
|
+
RUNTIME.load(file)
|
210
|
+
end
|
211
|
+
|
212
|
+
exit
|
213
|
+
end
|
214
|
+
|
215
|
+
reader = Class.new do
|
216
|
+
def next prompt
|
217
|
+
Readline.readline(prompt, true)
|
218
|
+
end
|
219
|
+
def result
|
220
|
+
puts yield
|
221
|
+
end
|
222
|
+
def exit v; puts if v.nil?; end
|
223
|
+
end.new
|
224
|
+
|
225
|
+
begin
|
226
|
+
open(File.join(ENV["HOME"],".envjsrb.js")) do |f|
|
227
|
+
js_readline = f.read.split("\n")
|
228
|
+
end
|
229
|
+
rescue; end
|
230
|
+
|
231
|
+
begin
|
232
|
+
open(File.join(ENV["HOME"],".envjsrb.ruby")) do |f|
|
233
|
+
ruby_readline = f.read.split("\n")
|
234
|
+
end
|
235
|
+
rescue; end
|
236
|
+
|
237
|
+
case mode
|
238
|
+
when :js; paste_history js_readline
|
239
|
+
when :rb; paste_history ruby_readline
|
240
|
+
end
|
241
|
+
|
242
|
+
do_loop reader
|
243
|
+
|
244
|
+
case mode
|
245
|
+
when :js; js_readline = copy_history
|
246
|
+
when :rb; ruby_readline = copy_history
|
247
|
+
end
|
248
|
+
|
249
|
+
open(File.join(ENV["HOME"],".envjsrb.js"),"w") do |f|
|
250
|
+
f.write js_readline[0..100].join("\n")+"\n"
|
251
|
+
end
|
252
|
+
|
253
|
+
open(File.join(ENV["HOME"],".envjsrb.ruby"),"w") do |f|
|
254
|
+
f.write ruby_readline[0..100].join("\n")+"\n"
|
255
|
+
end
|
256
|
+
|
257
|
+
end
|