Sha256: 53e39a72c6bed2fe46240131e711a90c29ba6074a5191ba54e0db8ed5adc5ebd

Contents?: true

Size: 1 KB

Versions: 7

Compression:

Stored size: 1 KB

Contents

module ContentfulMiddleman
  class Context < BasicObject
    def initialize
      @variables = {}
    end

    def method_missing(symbol, *args, &block)
      if symbol =~ /\A.+=\z/
        variable_name  = symbol.to_s.gsub('=','')
        variable_value = args.first

        set variable_name, variable_value
      else
        get symbol
      end
    end

    def set(name, value)
      @variables[name.to_sym] = value
    end

    def get(name)
      @variables.fetch(name.to_sym)
    end

    def is_a?(klass)
      Context == klass
    end

    def to_yaml
      hashize.to_yaml
    end

    def hashize
      variables = @variables.dup
      variables.update(variables) do |variable_name, variable_value|
        ensure_primitive_data_types(variable_value)
      end
    end

    def ensure_primitive_data_types(value)
      case value
      when Context
        value.hashize
      when ::Array
        value.map {|element| ensure_primitive_data_types(element)}
      else
        value
      end
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
contentful_middleman-1.4.0 lib/contentful_middleman/commands/context.rb
contentful_middleman-1.3.2 lib/contentful_middleman/commands/context.rb
contentful_middleman-1.3.1 lib/contentful_middleman/commands/context.rb
contentful_middleman-1.2.0 lib/contentful_middleman/commands/context.rb
contentful_middleman-1.1.1 lib/contentful_middleman/commands/context.rb
contentful_middleman-1.1.0 lib/contentful_middleman/commands/context.rb
contentful_middleman-1.0.4 lib/contentful_middleman/commands/context.rb