Class: Gumdrop::Data::Provider

Inherits:
Object
  • Object
show all
Defined in:
lib/gumdrop/data.rb

Overview

Base class for Data Proviers

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extensions(*extnames) ⇒ Object Also known as: extension



155
156
157
158
159
160
161
# File 'lib/gumdrop/data.rb', line 155

def extensions(*extnames)
  provider_class= self
  @@providers ||= {}
  extnames.each do |ext|
    @@providers[ext.to_s]= provider_class
  end
end

.for(ext) ⇒ Object



168
169
170
171
172
173
174
175
176
177
# File 'lib/gumdrop/data.rb', line 168

def for(ext)
  case
    when provider_class= @@providers[ext]
      provider_class.new
    when provider_class= @@providers[".#{ ext }"]
      provider_class.new
    else
      nil
  end
end

.registered_extsObject



164
165
166
# File 'lib/gumdrop/data.rb', line 164

def registered_exts
  @@providers.keys
end

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


128
129
130
# File 'lib/gumdrop/data.rb', line 128

def available?
  raise "available? must be implemented! (#{self.class})"
end

#data_for(filepath) ⇒ Object



132
133
134
# File 'lib/gumdrop/data.rb', line 132

def data_for(filepath)
  raise "data_for must be implemented! (#{self.class})"
end

#supply_data(object) ⇒ Object



136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/gumdrop/data.rb', line 136

def supply_data(object)
  case object
    when Hash
      object = object.clone
      object.each do |key, value|
        object[key] = supply_data(value)
      end
      # OpenStruct.new(object)
      Gumdrop::Util::HashObject.from object
    when Array
      object = object.clone
      object.map! { |item| supply_data(item) }
    else
      object
  end
end