Sha256: 168eecee6125c7c36b2d63a7edc439c56a45db2245594a7877877e4cc905981e

Contents?: true

Size: 774 Bytes

Versions: 7

Compression:

Stored size: 774 Bytes

Contents

class Lbrt::Space::DSL::Context
  include Lbrt::Utils::ContextHelper
  include Lbrt::Utils::TemplateHelper

  def self.eval(dsl, path, options = {})
    self.new(path, options) {
      eval(dsl, binding, path)
    }
  end

  attr_reader :result
  attr_reader :context

  def initialize(path, options = {}, &block)
    @path = path
    @options = options
    @result = {}

    @context = Hashie::Mash.new(
      :path => path,
      :options => options,
      :templates => {}
    )

    instance_eval(&block)
  end

  private

  def space(name_or_id, &block)
    if @result[name_or_id]
      raise "Space `#{name_or_id}` is already defined"
    end

    spc = Lbrt::Space::DSL::Context::Space.new(@context, name_or_id, &block).result
    @result[name_or_id] = spc
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lbrt-0.2.1 lib/lbrt/space/dsl/context.rb
lbrt-0.2.0 lib/lbrt/space/dsl/context.rb
lbrt-0.1.9 lib/lbrt/space/dsl/context.rb
lbrt-0.1.8 lib/lbrt/space/dsl/context.rb
lbrt-0.1.7 lib/lbrt/space/dsl/context.rb
lbrt-0.1.6 lib/lbrt/space/dsl/context.rb
lbrt-0.1.5 lib/lbrt/space/dsl/context.rb