Class: Middleman::DataSource::Extension

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

Defined Under Namespace

Classes: UnsupportedDataExtension

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, options_hash = {}, &block) ⇒ Extension



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
# File 'lib/middleman/data_source/extension.rb', line 20

def initialize app, options_hash={}, &block
  super app, options_hash, &block

  @app_inst = app.respond_to?(:inst) ? app.inst : app
  @sources  = options.sources.dup + convert_files_to_sources(options.files)
  @decoders = default_decoders.merge(options.decoders)

  sources.each do |source|
    add_data_callback_for_source source
  end

  if !options.collection.empty?
    collection = { index: 'all' }.merge options.collection

    if collection[:index]
      add_data_callback_for_source collection.merge alias: File.join( collection[:alias], collection[:index] )
      collection_data_callback = lambda { app_inst.data[collection[:alias]][collection[:index]] }
    else
      collection_data_callback = lambda { get_data(collection) }
    end

    collection[:items].call( collection_data_callback.call() ).map do |source|
      source[:alias] = File.join(collection[:alias], source[:alias])
      source
    end.each do |source|
      add_data_callback_for_source(source)
    end
  end
end

Instance Attribute Details

#app_instObject (readonly)

Returns the value of attribute app_inst.



14
15
16
# File 'lib/middleman/data_source/extension.rb', line 14

def app_inst
  @app_inst
end

#decodersObject (readonly)

Returns the value of attribute decoders.



14
15
16
# File 'lib/middleman/data_source/extension.rb', line 14

def decoders
  @decoders
end

#sourcesObject (readonly)

Returns the value of attribute sources.



14
15
16
# File 'lib/middleman/data_source/extension.rb', line 14

def sources
  @sources
end

Instance Method Details

#rack_appObject



16
17
18
# File 'lib/middleman/data_source/extension.rb', line 16

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