Module: VResource
- Extended by:
- Observable2
- Defined in:
- lib/vresource/vresource.rb,
lib/vresource/class_loader.rb,
lib/vresource/file_system_provider.rb,
lib/vresource/file_system_reloader.rb
Defined Under Namespace
Modules: ClassLoader Classes: FileSystemProvider, FileSystemReloader, NotExist
Class Method Summary collapse
- .add_resource_provider(provider) ⇒ Object
-
.class_delete(class_name) ⇒ Object
Deletes in each Providers.
- .class_exist?(class_name) ⇒ Boolean
-
.class_get(class_name) ⇒ Object
Returns from first Provider that contains this Class.
-
.class_set(class_name, data, *args) ⇒ Object
Search for first Provider that contains Class Namespace and creates Class in it, then exits.
- .class_to_virtual_file(class_name) ⇒ Object
- .hook! ⇒ Object
- .providers ⇒ Object
- .register_resource_extension(extension, load, save) ⇒ Object
-
.resource_delete(klass, resource_name) ⇒ Object
Deletes Resource in all Providers.
-
.resource_exist?(klass, resource_name) ⇒ Boolean
Check also for Class existence.
- .resource_extensions ⇒ Object
-
.resource_get(klass, resource_name) ⇒ Object
Search each Provider that contains this Class and returns first found Resource.
-
.resource_set(klass, resource_name, data) ⇒ Object
Set Resource in fist Provider that contains this Class.
- .unhook! ⇒ Object
- .unregister_resource_extension(extension) ⇒ Object
Methods included from Observable2
add_observer, delete_observer, delete_observers, notify_observers, observers_count
Class Method Details
.add_resource_provider(provider) ⇒ Object
12 13 14 |
# File 'lib/vresource/vresource.rb', line 12 def add_resource_provider provider @providers.unshift provider end |
.class_delete(class_name) ⇒ Object
Deletes in each Providers.
59 60 61 |
# File 'lib/vresource/vresource.rb', line 59 def class_delete class_name providers.each{|p| p.class_delete class_name} end |
.class_exist?(class_name) ⇒ Boolean
54 55 56 |
# File 'lib/vresource/vresource.rb', line 54 def class_exist? class_name providers.any?{|p| p.class_exist? class_name} end |
.class_get(class_name) ⇒ Object
Returns from first Provider that contains this Class.
30 31 32 33 34 35 36 37 38 |
# File 'lib/vresource/vresource.rb', line 30 def class_get class_name providers.each do |p| begin return p.class_get(class_name) rescue NotExist; end end raise "Class '#{class_name}' doesn't exist!" end |
.class_set(class_name, data, *args) ⇒ Object
Search for first Provider that contains Class Namespace and creates Class in it, then exits.
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/vresource/vresource.rb', line 41 def class_set class_name, data, *args namespace = Module.namespace_for class_name namespace = namespace ? namespace.to_s : nil found = false providers.each do |p| next unless !namespace or p.class_exist?(namespace) p.class_set class_name, data, *args found = true break end raise "Namespace '#{namespace}' doesn't exist!" unless found end |
.class_to_virtual_file(class_name) ⇒ Object
126 127 128 129 130 131 132 133 134 |
# File 'lib/vresource/vresource.rb', line 126 def class_to_virtual_file class_name providers.each do |p| begin return p.class_to_virtual_file class_name rescue NotExist; end end raise "Class '#{class_name}' doesn't exist!" end |
.hook! ⇒ Object
136 |
# File 'lib/vresource/vresource.rb', line 136 def hook!; ClassLoader.hook! end |
.providers ⇒ Object
16 17 18 19 |
# File 'lib/vresource/vresource.rb', line 16 def providers raise "There's no any Resource Provider!" if @providers.empty? @providers end |
.register_resource_extension(extension, load, save) ⇒ Object
21 22 23 |
# File 'lib/vresource/vresource.rb', line 21 def register_resource_extension extension, load, save resource_extensions[extension] = load, save end |
.resource_delete(klass, resource_name) ⇒ Object
Deletes Resource in all Providers.
92 93 94 95 96 97 |
# File 'lib/vresource/vresource.rb', line 92 def resource_delete klass, resource_name providers.each do |p| next unless p.class_exist?(klass.name) p.resource_delete klass.name, resource_name end end |
.resource_exist?(klass, resource_name) ⇒ Boolean
Check also for Class existence.
119 120 121 122 123 124 |
# File 'lib/vresource/vresource.rb', line 119 def resource_exist? klass, resource_name providers.any? do |p| next unless p.class_exist?(klass.name) p.resource_exist? klass.name, resource_name end end |
.resource_extensions ⇒ Object
10 |
# File 'lib/vresource/vresource.rb', line 10 def resource_extensions; @resource_extensions ||= {} end |
.resource_get(klass, resource_name) ⇒ Object
Search each Provider that contains this Class and returns first found Resource.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/vresource/vresource.rb', line 70 def resource_get klass, resource_name providers.each do |p| next unless p.class_exist?(klass.name) begin data = p.resource_get(klass.name, resource_name) if data extension = File.extname(resource_name) if resource_extensions.include? extension load, save = resource_extensions[extension] data = load.call data, klass, resource_name end end return data rescue NotExist; end end raise "Resource '#{resource_name}' for Class '#{klass.name}' doesn't exist!" end |
.resource_set(klass, resource_name, data) ⇒ Object
Set Resource in fist Provider that contains this Class.
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/vresource/vresource.rb', line 100 def resource_set klass, resource_name, data extension = File.extname(resource_name) if resource_extensions.include? extension load, save = resource_extensions[extension] data = save.call data, klass, resource_name end found = false providers.each do |p| next unless p.class_exist?(klass.name) p.resource_set klass.name, resource_name, data found = true break end raise "Class '#{klass.name}' doesn't exist!" unless found end |
.unhook! ⇒ Object
137 |
# File 'lib/vresource/vresource.rb', line 137 def unhook!; ClassLoader.unhook! end |
.unregister_resource_extension(extension) ⇒ Object
25 26 27 |
# File 'lib/vresource/vresource.rb', line 25 def unregister_resource_extension extension resource_extensions.delete extension end |