Sha256: bd639f76e6affb8409116e2001a6f6f465a8060f61e978b3c772d58aa79eda48

Contents?: true

Size: 859 Bytes

Versions: 5

Compression:

Stored size: 859 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|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

5 entries across 5 versions & 1 rubygems

Version Path
tokamak-1.1.4 lib/tokamak/builder/values.rb
tokamak-1.1.3 lib/tokamak/builder/values.rb
tokamak-1.1.2 lib/tokamak/builder/values.rb
tokamak-1.0.0.beta4 lib/tokamak/builder/values.rb
tokamak-1.1.1 lib/tokamak/builder/values.rb