class Bookbinder::Config::Configuration

Constants

CONFIG_OPTIONAL_KEYS
CONFIG_REQUIRED_KEYS

Attributes

config[R]
products[R]

Public Class Methods

new(config) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 54
def initialize(config)
  @config = config
  @products = assemble_products || []
end
parse(input_config) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 11
def parse(input_config)
  section_configs = to_section_configs(combined_sections(input_config))
  parse_sections(input_config, section_configs)
end

Protected Class Methods

expand_repo_identifiers(input_config) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 28
def expand_repo_identifiers(input_config)
  input_config.select {|k, _| k.match(/_repo$/)}.
    reduce({}) {|h, (k, v)| h.merge(:"#{k}_url" => Ingest::RepoIdentifier.new(v))}
end
parse_sections(input_config, section_configs) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 18
def parse_sections(input_config, section_configs)
  new(symbolize_keys(input_config).
      merge(expand_repo_identifiers(input_config)).
      merge(sections: section_configs))
end
symbolize_keys(h) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 24
def symbolize_keys(h)
  h.reduce({}) {|acc, (k, v)| acc.merge(k.to_sym => v) }
end
to_section_configs(sections) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 33
def to_section_configs sections
  sections.map { |section| Config::SectionConfig.new(section) }
end

Private Class Methods

combined_sections(input_config) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 39
def combined_sections(input_config)
  regular_sections(input_config) + dita_sections(input_config)
end
dita_sections(input_config) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 47
def dita_sections(input_config)
  (input_config['dita_sections'] || []).map { |dita_section|
    DitaConfigGenerator.new(dita_section).to_hash
  }
end
regular_sections(input_config) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 43
def regular_sections(input_config)
  input_config['sections'] || []
end

Public Instance Methods

==(o) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 98
def ==(o)
  o.class == self.class && o.instance_variable_get(:@config) == @config
end
Also aliased as: eql?
elastic_search?() click to toggle source
# File lib/bookbinder/config/configuration.rb, line 94
def elastic_search?
  config.fetch(:elastic_search, false)
end
eql?(o)
Alias for: ==
has_option?(key) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 90
def has_option?(key)
  !!config[key.to_sym]
end
merge(other_configuration) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 82
def merge(other_configuration)
  Configuration.new(config.merge(other_configuration.instance_variable_get(:@config)))
end
merge_sections(incoming_sections) click to toggle source
# File lib/bookbinder/config/configuration.rb, line 86
def merge_sections(incoming_sections)
  merge(Configuration.new(sections: sections + incoming_sections))
end
template_variables() click to toggle source
# File lib/bookbinder/config/configuration.rb, line 78
def template_variables
  config.fetch(:template_variables, {})
end

Private Instance Methods

assemble_products() click to toggle source
# File lib/bookbinder/config/configuration.rb, line 108
def assemble_products
  if config[:products]
    config[:products].map do |product|
      Config::ProductConfig.new(product)
    end
  end
end