Module: RubyScriptProvider::RubyScripts
- Defined in:
- lib/rubyscriptprovider.rb
Overview
keeps loaded scripts
Constant Summary collapse
- @@scripts =
{}
Class Method Summary collapse
-
.add(name, datetime, capsule) ⇒ Object
add(name, datetime, capsule) -> Hash Register new script with update time.
-
.delete(name) ⇒ Object
delete(name) -> Hash Delete specific script.
-
.get(name, datetime) ⇒ Object
get(name, datetime) -> RubyScript|nil Try to get script.
-
.get_script(storage, script_context, url, uri) ⇒ Object
get_script(storage, script_context, url, uri) -> RubyScript Creates capsulated script.
Class Method Details
.add(name, datetime, capsule) ⇒ Object
add(name, datetime, capsule) -> Hash Register new script with update time.
76 77 78 |
# File 'lib/rubyscriptprovider.rb', line 76 def self.add(name, datetime, capsule) @@scripts[name] = {:timestamp => datetime, :module => capsule} end |
.delete(name) ⇒ Object
delete(name) -> Hash Delete specific script.
82 83 84 |
# File 'lib/rubyscriptprovider.rb', line 82 def self.delete(name) @@scripts.delete(name) end |
.get(name, datetime) ⇒ Object
get(name, datetime) -> RubyScript|nil Try to get script. If the script is updated, nil is returned. Otherwise found script is returned.
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/rubyscriptprovider.rb', line 62 def self.get(name, datetime) item = @@scripts[name] if item if item[:timestamp] >= datetime return item[:module] else @@scripts.delete(name) return nil end end end |
.get_script(storage, script_context, url, uri) ⇒ Object
get_script(storage, script_context, url, uri) -> RubyScript Creates capsulated script.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/rubyscriptprovider.rb', line 88 def self.get_script(storage, script_context, url, uri) script = nil capsule = nil file_name, func_name = url.to_url(uri) if storage.exists?(file_name) if file_name.start_with?(DOC_PROTOCOL) t = Time.new # avoide illegal error else t = RubyScripts.datetime_to_time(storage.modified_time(file_name)) end capsule = RubyScripts.get(uri, t) unless capsule klass = Class.new klass.const_set(:XSCRIPTCONTEXT, script_context) text = storage.file_content(file_name) klass.class_eval(text, Uno.to_system_path(file_name)) capsule = klass.new RubyScripts.add(uri, t, capsule) end end unless capsule ex = ScriptFrameworkErrorException.new( "script not found", nil, uri, LANGUAGE, 2) raise ex end if capsule.public_methods(false).include?(func_name.intern) script = RubyScript.new(capsule, file_name, func_name) end return script end |