Class: Mkxms::Mssql::IndentedStringBuilder::DSL

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/mkxms/mssql/indented_string_builder.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(builder, outer_binding) ⇒ DSL

Returns a new instance of DSL.



39
40
41
42
43
44
45
# File 'lib/mkxms/mssql/indented_string_builder.rb', line 39

def initialize(builder, outer_binding)
  @builder = builder
  while sb = surrounding_binding(outer_binding)
    outer_binding = sb
  end
  @outer_binding = outer_binding
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, *args, &blk) ⇒ Object (private)



58
59
60
61
62
63
64
# File 'lib/mkxms/mssql/indented_string_builder.rb', line 58

def method_missing(sym, *args, &blk)
  if args.empty? and blk.nil?
    @outer_binding.eval sym.to_s
  else
    @outer_binding.eval("method(:#{sym})").call(*args, &blk)
  end
end

Class Method Details

.for(builder, block) ⇒ Object



35
36
37
# File 'lib/mkxms/mssql/indented_string_builder.rb', line 35

def self.for(builder, block)
  new(builder, block.binding).instance_eval(&block)
end

Instance Method Details

#puts(*args, &blk) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/mkxms/mssql/indented_string_builder.rb', line 49

def puts(*args, &blk)
  if blk
    @builder.puts(*args) {IndentedStringBuilder.new.tap {|i| i.dsl(&blk)}}
  else
    @builder.puts(*args)
  end
end