Sha256: fa8de14759e4dadc5cd2261b1846869349f33c9bc84e36ee3aaaebda6ad3d8fd

Contents?: true

Size: 1.55 KB

Versions: 4

Compression:

Stored size: 1.55 KB

Contents

module ExcelTemplating
  # A registry for validation data sources within the excel spreadsheet DSL
  # Supports Enumerable#each for iterating the registry entries.
  class Document::DataSourceRegistry
    include Enumerable
    extend Forwardable

    # Create an empty DataSourceRegistry
    def initialize
      @source_symbols = {}
    end

    # @param [Hash] data
    # @return [RegistryRenderer]
    def renderer(data:)
      RegistryRenderer.new(self, data)
    end

    # @param [Symbol] source_symbol
    # @param [String] title
    # @param [Array<String>|Symbol] list
    # @param [TrueClass|FalseClass] inline
    def add_list(source_symbol, title, list, inline)
      source_symbols[source_symbol] = RegistryList.new(source_symbols.size + 1, source_symbol, title, list, inline)
    end

    # @param [Symbol] source_symbol
    # @return [RegistryList]
    def [](source_symbol)
      source_symbols[source_symbol]
    end

    # @param [Symbol] source_symbol
    def has_registry?(source_symbol)
      source_symbols.has_key?(source_symbol)
    end

    # @return [TrueClass|FalseClass]
    def any_data_sheet_symbols?
      select {|info|
        info.data_sheet?
      }.any?
    end

    # @return [Array<Symbol>]
    def supported_registries
      source_symbols.keys
    end

    delegate [:each] => :ordered_registries

    private

    attr_reader :source_symbols

    def ordered_registries
      source_symbols.values.sort_by(&:order)
    end

  end
end

require_relative 'data_source_registry/registry_renderer'
require_relative 'data_source_registry/registry_list'

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
excel_templating-0.4.2 lib/excel_templating/document/data_source_registry.rb
excel_templating-0.4.1 lib/excel_templating/document/data_source_registry.rb
excel_templating-0.4.0 lib/excel_templating/document/data_source_registry.rb
excel_templating-0.3.2 lib/excel_templating/document/data_source_registry.rb