envjs 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,8 @@
1
+ === 0.3.0 / 2010-03-29
2
+
3
+ * minor changes for dependences and cleanup
4
+ * Tweak reload on about:blank and default waiting
5
+
1
6
  === 0.1.0 / 2010-03-11
2
7
 
3
8
  * First Hoe build
data/Manifest.txt CHANGED
@@ -281,7 +281,5 @@ test/unit/proxy.js
281
281
  test/unit/scope.js
282
282
  test/unit/timer.js
283
283
  test/unit/window.js
284
- test/vendor/jQuery/README
285
- test/vendor/prototype-1.6.0.3.js
286
284
  test/x.js
287
285
  test/y.js
data/Wakefile CHANGED
@@ -1,24 +1,7 @@
1
- begin; require 'wake/event_handlers/em'; rescue LoadError; end
2
- begin; require 'wake/deps'; rescue LoadError; end
1
+ # -*- mode: ruby -*-
3
2
 
4
- watch( %r(.*), :modified, lambda { |md| File.directory? md[0] } ) do |md|
5
- File.directory? md[0] and raise Wake::Refresh
6
- end
7
-
8
- watch( %r(env-js.wake), :modified ) do |md|
9
- raise Wake::Refresh
10
- end
11
-
12
- watch( %r((^src/.*)\.js$), [:load, :created, :modified], nil, :batch => :js ) do
3
+ watch %r{(^src/.*)\.js$} do
13
4
  cmd = "rake johnson:compile"
14
5
  puts cmd
15
6
  system cmd
16
7
  end
17
-
18
- Signal.trap('QUIT') do
19
- EM.stop
20
- end
21
-
22
- # Local Variables:
23
- # mode:ruby
24
- # End:
data/bin/envjsrb CHANGED
@@ -138,25 +138,20 @@ if ARGV.length > 0
138
138
  uri_s = uri.to_s.sub %r(^file:/([^/])), 'file:///\1'
139
139
 
140
140
  if uri.scheme == "about" and uri.opaque == "blank"
141
+ # $stderr.puts "wait before set about"
141
142
  RUNTIME.wait
142
143
  RUNTIME.evaluate("window.location = 'about:blank'", "(comand line)", 1)
143
144
  about_blank = true
144
145
  elsif uri.path =~ /\.x?html?$/ || uri.scheme =~ %r(^https?)
145
-
146
- # this might want to go alway; jazrb does it manually now, which I think was the use case
147
- # that wanted this
148
- if !about_blank
149
- RUNTIME.wait
150
- RUNTIME.evaluate("window.location = 'about:blank'", "(comand line)", 1)
151
- end
152
-
153
- RUNTIME.wait
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"
154
148
  # RUNTIME.evaluate("window.location = 'file://#{Pathname.new(file).realpath}'", file, 1)
155
149
  RUNTIME.evaluate("window.location = '#{uri_s}'", file, 1)
156
150
  about_blank = false
157
151
  else
158
152
  RUNTIME.top_level_load uri_s
159
153
  RUNTIME.load uri_s
154
+ RUNTIME.top_level_load nil
160
155
  end
161
156
  end
162
157
  rescue Johnson::Error => je
@@ -168,6 +163,14 @@ if ARGV.length > 0
168
163
 
169
164
  RUNTIME.wait
170
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
+
171
174
  else
172
175
 
173
176
  prep
data/lib/envjs/env.js CHANGED
@@ -1868,7 +1868,8 @@ $w.__defineSetter__("location", function(url){
1868
1868
  }
1869
1869
  // print("ft",window.location.href,$location,url);
1870
1870
  }
1871
- if( !$location || $location == "about:blank" ) {
1871
+ // debug("l",url,$w.location);
1872
+ if( !$location || ( $location == "about:blank" && url !== "about:blank" ) ) {
1872
1873
  // $w.__loadAWindowsDocument__(url);
1873
1874
  $env.load(url);
1874
1875
  } else {
@@ -2326,13 +2327,11 @@ $w.dispatchEvent = function(event, bubbles){
2326
2327
  };
2327
2328
 
2328
2329
  $w.__defineGetter__('onerror', function(){
2329
- return function(){
2330
- //$w.dispatchEvent('error');
2331
- };
2330
+ return $onerror;
2332
2331
  });
2333
2332
 
2334
2333
  $w.__defineSetter__('onerror', function(fn){
2335
- //$w.addEventListener('error', fn);
2334
+ return $onerror = fn;
2336
2335
  });
2337
2336
 
2338
2337
  /*$w.__defineGetter__('onload', function(){
@@ -7,9 +7,9 @@
7
7
  var $env = {};
8
8
  $env.sync = function(f){return f;};
9
9
  $env.error = function(s){
10
- print("timer error: "+s);
10
+ debug("timer error: "+s);
11
11
  if (s.stack) {
12
- print("timer error: "+s.stack);
12
+ debug("timer error: "+s.stack);
13
13
  }
14
14
  };
15
15
  $env.sleep = function(t){ Ruby.sleep(t/1000.); };
@@ -4,10 +4,6 @@ require 'envjs/net'
4
4
 
5
5
  class Envjs::Net::File < Net::Protocol
6
6
 
7
- class << self
8
- attr_accessor :on_open
9
- end
10
-
11
7
  class Get
12
8
  attr_accessor :path
13
9
  def initialize path
@@ -36,8 +32,6 @@ class Envjs::Net::File < Net::Protocol
36
32
  class Response
37
33
  def initialize path
38
34
  @path = path
39
- on_open = Envjs::Net::File.on_open
40
- on_open and on_open.call( path )
41
35
  @file = File.new @path
42
36
  @body = @file.read
43
37
  @code = @file.nil? ? "404" : "200";
data/lib/envjs/options.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  require 'optparse'
2
2
 
3
- $envjsrb_deps = nil
3
+ $envjsrb_wake = false
4
4
 
5
5
  OptionParser.new do |o|
6
6
 
7
- o.on("--deps path") do |path|
8
- $envjsrb_deps = path
7
+ o.on("--wake") do |path|
8
+ $envjsrb_wake = true
9
9
  end
10
10
 
11
11
  end.parse!
data/lib/envjs/runtime.rb CHANGED
@@ -1,11 +1,10 @@
1
1
  require 'envjs'
2
2
  require "open-uri"
3
3
  require 'pathname'
4
- begin
5
- require 'fsdb'
6
- rescue LoadError; end
7
4
  require 'envjs/net/file'
8
5
 
6
+ $wake_info = []
7
+
9
8
  module Envjs::Runtime
10
9
 
11
10
  def self.extended object
@@ -103,6 +102,7 @@ debug = function() {
103
102
  }
104
103
  }
105
104
  Ruby['$stderr'].print("\n");
105
+ Ruby['$stderr'].flush();
106
106
  };
107
107
  EOJS
108
108
 
@@ -141,98 +141,20 @@ EOJS
141
141
  # calling this from JS is hosed; the ruby side is confused, maybe because HTTPHeaders is mixed in?
142
142
  master.add_req_field = lambda { |r,k,v| r.add_field(k,v) }
143
143
 
144
- db = lambda do
145
- $envjsrb_deps && ( @db ||= FSDB::Database.new $envjsrb_deps )
146
- end
147
-
148
144
  top_level_js = nil
149
145
 
150
146
  add_dep = nil
151
147
 
152
- clear_deps = lambda do |w|
153
- begin
154
- if db.call
155
- loc = w
156
- begin loc = w.location; rescue; end
157
- loc && ( loc = loc.to_s )
158
- if ( loc !~ %r((http?s|file|about):) )
159
- begin
160
- loc = "file://" + Pathname(loc).realpath.to_s
161
- rescue Errno::ENOENT; end
162
- end
163
- # $stderr.puts "clear", loc
164
- if loc and loc != "about:blank"
165
- paths = db.call[loc+".on.yml"] || []
166
- paths.each do |path|
167
- # $stderr.print "#{path} not by #{loc}\n";
168
- db.call[path+".by.yml"].delete loc
169
- end
170
- # $stderr.print "#{loc} not on anything\n";
171
- db.call.delete loc+".on.yml"
172
- end
173
- end
174
- add_dep.call( nil, loc )
175
- rescue Exception => e; $stderr.puts e, e.class; $stderr.puts e.backtrace; end
176
- end
177
-
178
- if $envjsrb_deps
179
- Envjs::Net::File.on_open = clear_deps
180
- end
181
-
182
148
  add_dep = lambda do |w, f|
183
- if db.call
184
- loc = nil
185
- begin loc = w.location; rescue Exception; end
186
- loc && ( loc = loc.to_s )
187
- if ( loc && loc !~ %r((http?s|file|about):) )
188
- loc = "file://" + Pathname(loc).realpath.to_s
189
- end
190
- path = f
191
- if ( path !~ %r((http?s|file|about):) )
192
- begin
193
- path = "file://" + Pathname(path).realpath.to_s
194
- rescue Errno::ENOENT
195
- return
196
- end
197
- end
198
- if !loc || loc == "about:blank"
199
- uri = URI.parse top_level_js
200
- if uri.scheme == nil
201
- uri.scheme = "file"
202
- begin
203
- uri.path = Pathname.new(uri.path).realpath.to_s
204
- rescue Errno::ENOENT; end
205
- uri = URI.parse uri.to_s
206
- end
207
- uri_s = uri.to_s.sub %r(^file:/([^/])), 'file:///\1'
208
-
209
- # tll = "file://" + Pathname(top_level_js).realpath.to_s
210
-
211
- tll = uri_s
212
-
213
- if ( tll != path )
214
- loc = tll
215
- end
216
- end
217
- if loc and loc != "about:blank"
218
- on = db.call[loc+".on.yml"] || []
219
- on << path
220
- on.uniq!
221
- db.call[loc+".on.yml"] = on
222
- by = db.call[path+".by.yml"] || []
223
- by << loc
224
- by.uniq!
225
- db.call[path+".by.yml"] = by
226
- # $stderr.print "#{loc} on #{path}: #{db.call[loc+'.on.yml'].join(' ')}\n"
227
- # $stderr.print "#{path} by #{loc}: #{db.call[path+'.by.yml'].join(' ')}\n"
228
- end
149
+ if $envjsrb_wake
150
+ $wake_info << "##file://#{f}"
229
151
  end
230
152
  end
231
153
 
232
154
  (class << self; self; end).send :define_method, :top_level_load do |path|
233
- # $stderr.print "tll #{path}\n"
234
- top_level_js = path
235
- clear_deps.call( path )
155
+ if $envjsrb_wake
156
+ $wake_info << "##{path}" if path
157
+ end
236
158
  end
237
159
 
238
160
  master.load = lambda { |*files|
@@ -270,7 +192,7 @@ EOJS
270
192
  end
271
193
  }
272
194
 
273
- def load *files
195
+ ( class << self; self; end ).send :define_method, :load do |*files|
274
196
  files.map { |f|
275
197
  # Hmmm ...
276
198
 
@@ -285,11 +207,22 @@ EOJS
285
207
  uri_s = uri.to_s.sub %r(^file:/([^/])), 'file:///\1'
286
208
 
287
209
  if uri.scheme == "file"
288
- super uri.path
210
+ begin
211
+ super uri.path
212
+ rescue Exception => e
213
+ if outer["$inner"]["onerror"]
214
+ # outer["$inner"]["onerror"].call e
215
+ evaluate("function(fn,scope,e){fn.call(scope,e)}").call(outer["$inner"]["onerror"], outer["$inner"], e)
216
+ else
217
+ raise e
218
+ end
219
+ end
289
220
  elsif uri.scheme == "data"
290
221
  raise "implement 1"
222
+ elsif uri.scheme == "javascript"
223
+ evaluate(URI.decode(uri.opaque),URI.decode(uri_s),1)
291
224
  else
292
- raise "hell 1"
225
+ raise "hell 1: " + uri.inspect
293
226
  end
294
227
 
295
228
  # v = open(uri_s).read.gsub(/\A#!.*$/, '')
@@ -391,22 +324,6 @@ EOJS
391
324
 
392
325
  master.load.call Envjs::EVENT_LOOP, global
393
326
 
394
- if false
395
- static_outer = new_split_global_outer
396
- static_inner = new_split_global_inner static_outer
397
-
398
- master.symbols.each do |symbol|
399
- static_inner[symbol] = master[symbol]
400
- end
401
-
402
- static_inner["$inner"] = static_inner
403
- static_inner["$master"] = master
404
-
405
- master.load.call Envjs::STATIC, static_inner
406
-
407
- master["static"] = static_inner
408
- end
409
- if true
410
327
  static = new_global
411
328
 
412
329
  master.symbols.each do |symbol|
@@ -418,9 +335,7 @@ if true
418
335
  # fake it ...
419
336
  static["isInner"] = true
420
337
  master.load.call Envjs::STATIC, static
421
-
422
338
  master["static"] = static
423
- end
424
339
 
425
340
  master.load.call Envjs::ENVJS, inner
426
341
 
data/lib/envjs/static.js CHANGED
@@ -18991,6 +18991,7 @@ __extend__(XPathResult.prototype, {
18991
18991
  });
18992
18992
 
18993
18993
 
18994
+ var alert = $error;
18994
18995
  // ENVJS changes:
18995
18996
  // DOM_ => DOMNode.
18996
18997
  // case insensitive test on node names
data/lib/envjs.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Envjs
2
2
 
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
 
5
5
  def self.js_exception_stack e
6
6
  result = %(Exception: )+e.to_s
data/src/window/event.js CHANGED
@@ -224,13 +224,11 @@ $w.dispatchEvent = function(event, bubbles){
224
224
  };
225
225
 
226
226
  $w.__defineGetter__('onerror', function(){
227
- return function(){
228
- //$w.dispatchEvent('error');
229
- };
227
+ return $onerror;
230
228
  });
231
229
 
232
230
  $w.__defineSetter__('onerror', function(fn){
233
- //$w.addEventListener('error', fn);
231
+ return $onerror = fn;
234
232
  });
235
233
 
236
234
  /*$w.__defineGetter__('onload', function(){
@@ -34,7 +34,8 @@ $w.__defineSetter__("location", function(url){
34
34
  }
35
35
  // print("ft",window.location.href,$location,url);
36
36
  }
37
- if( !$location || $location == "about:blank" ) {
37
+ // debug("l",url,$w.location);
38
+ if( !$location || ( $location == "about:blank" && url !== "about:blank" ) ) {
38
39
  // $w.__loadAWindowsDocument__(url);
39
40
  $env.load(url);
40
41
  } else {
@@ -1,3 +1,4 @@
1
+ var alert = $error;
1
2
  // ENVJS changes:
2
3
  // DOM_ => DOMNode.
3
4
  // case insensitive test on node names
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 2
7
+ - 3
8
8
  - 0
9
- version: 0.2.0
9
+ version: 0.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - John Resig
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-03-11 00:00:00 -08:00
19
+ date: 2010-03-29 00:00:00 -07:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -43,9 +43,9 @@ dependencies:
43
43
  - !ruby/object:Gem::Version
44
44
  segments:
45
45
  - 0
46
- - 4
47
- - 1
48
- version: 0.4.1
46
+ - 5
47
+ - 0
48
+ version: 0.5.0
49
49
  type: :development
50
50
  version_requirements: *id002
51
51
  - !ruby/object:Gem::Dependency
@@ -375,8 +375,6 @@ files:
375
375
  - test/unit/scope.js
376
376
  - test/unit/timer.js
377
377
  - test/unit/window.js
378
- - test/vendor/jQuery/README
379
- - test/vendor/prototype-1.6.0.3.js
380
378
  - test/x.js
381
379
  - test/y.js
382
380
  has_rdoc: true
@@ -1,2 +0,0 @@
1
- Note: To avoid adding to Git an entire jQuery development tree for each tag we want to test,
2
- the bin/test-jquery.sh script will checkout the tag into this directory.