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

Returns a new instance of 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