Sha256: d8ed5bfc1fc58167f773b8cbcef33876350f8ea2dd5c2be9147b7340da80665c

Contents?: true

Size: 1.11 KB

Versions: 4

Compression:

Stored size: 1.11 KB

Contents

module Cas
  class FormField
    def initialize(section, field_name)
      @section = section
      @field_name = field_name
    end

    def method_missing(name, *args, &block)
      load_field[name]
    end

    private

    def filename
      if Rails.env.test?
        "spec/fixtures/cas.yml"
      else
        "cas.yml"
      end
    end

    def load_field
      @config ||= begin
        config_file = YAML.load_file(filename)
        sites = config_file["sites"]
        site = sites[@section.site.slug]
        section = site["sections"]
        fields = section.find { |key, value|
          key == @section.slug
        }[1]["fields"]

        config = fields.find do |field|
          if field.is_a?(Hash)
            field[@field_name.to_s]
          else
            field == @field_name.to_s
          end
        end

        if config.is_a?(Hash)
          config = config[@field_name.to_s]
          config = config.deep_symbolize_keys
        else
          config = {}
        end

        config.merge(
          format: (config[:format] || [:day, :month, :year]).map(&:to_sym)
        )
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cas-cms-0.1.3 lib/cas/form_field.rb
cas-cms-0.1.2 lib/cas/form_field.rb
cas-cms-0.1.1 lib/cas/form_field.rb
cas-cms-0.1.0 lib/cas/form_field.rb