Module: RubyExt::Resource
- Extended by:
- Observable
- Defined in:
- lib/RubyExt/resource.rb
Defined Under Namespace
Classes: 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
- .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_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.
- .unregister_resource_extension(extension) ⇒ Object
Methods included from Observable
add_observer, delete_observer, delete_observers, notify_observers, observers_count
Class Method Details
.add_resource_provider(provider) ⇒ Object
14 15 16 |
# File 'lib/RubyExt/resource.rb', line 14 def add_resource_provider provider @providers.unshift provider end |
.class_delete(class_name) ⇒ Object
Deletes in each Providers.
70 71 72 73 74 |
# File 'lib/RubyExt/resource.rb', line 70 def class_delete class_name @monitor.synchronize do providers.each{|p| p.class_delete class_name} end end |
.class_exist?(class_name) ⇒ Boolean
63 64 65 66 67 |
# File 'lib/RubyExt/resource.rb', line 63 def class_exist? class_name @monitor.synchronize do providers.any?{|p| p.class_exist? class_name} end end |
.class_get(class_name) ⇒ Object
Returns from first Provider that contains this Class.
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/RubyExt/resource.rb', line 36 def class_get class_name @monitor.synchronize do providers.each do |p| begin return p.class_get(class_name) rescue NotExist; end end raise "Class '#{class_name}' doesn't exist!" end end |
.class_set(class_name, data, *args) ⇒ Object
Search for first Provider that contains Class Namespace and creates Class in it, then exits.
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/RubyExt/resource.rb', line 49 def class_set class_name, data, *args @monitor.synchronize do namespace = Module.namespace_for class_name namespace = namespace ? namespace.to_s : nil found = true providers.each do |p| next unless !namespace or p.class_exist?(namespace) p.class_set class_name, data, *args break end raise "Namespace '#{namespace}' doesn't exist!" unless found end end |
.class_to_virtual_file(class_name) ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/RubyExt/resource.rb', line 147 def class_to_virtual_file class_name @monitor.synchronize do 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 end |
.providers ⇒ Object
18 19 20 21 |
# File 'lib/RubyExt/resource.rb', line 18 def providers raise "There's no any Resource Provider!" if @providers.empty? @providers end |
.register_resource_extension(extension, load, save) ⇒ Object
23 24 25 26 27 |
# File 'lib/RubyExt/resource.rb', line 23 def register_resource_extension extension, load, save @monitor.synchronize do @resource_extensions[extension] = load, save end end |
.resource_delete(klass, resource_name) ⇒ Object
Deletes Resource in all Providers.
107 108 109 110 111 112 113 114 |
# File 'lib/RubyExt/resource.rb', line 107 def resource_delete klass, resource_name @monitor.synchronize do providers.each do |p| next unless p.class_exist?(klass.name) p.resource_delete klass.name, resource_name end end end |
.resource_exist?(klass, resource_name) ⇒ Boolean
Check also for Class existence.
138 139 140 141 142 143 144 145 |
# File 'lib/RubyExt/resource.rb', line 138 def resource_exist? klass, resource_name @monitor.synchronize do providers.any? do |p| next unless p.class_exist?(klass.name) p.resource_exist? klass.name, resource_name end end end |
.resource_get(klass, resource_name) ⇒ Object
Search each Provider that contains this Class and returns first found Resource.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/RubyExt/resource.rb', line 83 def resource_get klass, resource_name @monitor.synchronize do 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 end |
.resource_set(klass, resource_name, data) ⇒ Object
Set Resource in fist Provider that contains this Class.
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/RubyExt/resource.rb', line 117 def resource_set klass, resource_name, data @monitor.synchronize do 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 end |
.unregister_resource_extension(extension) ⇒ Object
29 30 31 32 33 |
# File 'lib/RubyExt/resource.rb', line 29 def unregister_resource_extension extension @monitor.synchronize do @resource_extensions.delete extension end end |