Sha256: a5e0567a0990d095469684f72c44df479ee35fa631600260d4b26502b2bfa449

Contents?: true

Size: 869 Bytes

Versions: 3

Compression:

Stored size: 869 Bytes

Contents

module Tokamak
  module Builder
  
    # This is a Blank Slate class to support the renderization of the values block of Builder DSLs
    # Every Media type should implement a Builder with a insert_value method that renders the values block to a specific format
    class Values
      attr_accessor :builder

      # BlankSlate
      instance_methods.each do |m|
        undef_method m unless m.to_s =~ /\[\]|method_missing|object_id|respond_to\?|^__/
      end

      def initialize(builder)
        @builder = builder
        @current_prefix = nil
      end

      def [](prefix)
        @current_prefix = prefix
        self
      end

      def method_missing(symbol, *args, &block)
        name = symbol.to_s
        prefix = @current_prefix
        @current_prefix = nil
        @builder.insert_value(name, prefix, *args, &block)
      end
    end
    
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tokamak-1.2.1 lib/tokamak/builder/values.rb
tokamak-1.2.0 lib/tokamak/builder/values.rb
tokamak-1.1.5 lib/tokamak/builder/values.rb