Class: Middleman::DataSource::Extension

Inherits:
Extension
  • Object
show all
Defined in:
lib/middleman/data_source/extension.rb

Defined Under Namespace

Classes: UnsupportedDataExtension

Instance Method Summary collapse

Instance Method Details

#after_configurationObject

files = [

'/url' => 'data/name'

]



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/middleman/data_source/extension.rb', line 19

def after_configuration
  remote_datas = if options.files.respond_to? :keys
    options.files
  else
    Hash[options.files.map do |remote_file|
      [remote_file, remote_file]
    end]
  end

  remote_datas.each do |remote_file, local_representation|
    extension = File.extname remote_file
    parts     = local_representation.split(File::SEPARATOR)
    basename  = File.basename parts.pop, extension

    if parts.empty?
      original_callback = app.data.callbacks[basename]
      app.data.callbacks[basename] = Proc.new do
        attempt_merge_then_enhance decode_data(remote_file, extension), original_callback
      end
    else
      original_callback = app.data.callbacks[parts.first]
      app.data.callbacks[parts.first] = Proc.new do
        built_data = { basename => decode_data(remote_file, extension) }
        parts[1..-1].reverse.each do |part|
          built_data = { part => built_data }
        end

        attempt_merge_then_enhance built_data, original_callback
      end
    end
  end
end

#rack_appObject



11
12
13
# File 'lib/middleman/data_source/extension.rb', line 11

def rack_app
  @_rack_app ||= ::Rack::Test::Session.new( ::Rack::MockSession.new( options.rack_app ) )
end