class Mkxms::Mssql::IndentedStringBuilder::DSL
Public Class Methods
for(builder, block)
click to toggle source
# File lib/mkxms/mssql/indented_string_builder.rb, line 35 def self.for(builder, block) new(builder, block.binding).instance_eval(&block) end
new(builder, outer_binding)
click to toggle source
# 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
Public Instance Methods
puts(*args, &blk)
click to toggle source
# File lib/mkxms/mssql/indented_string_builder.rb, line 49 def puts(*args, &blk) if blk if args[0].kind_of? Range @builder.puts(args[0].begin, *args[1..-1]) indented(&blk) @builder.puts(args[0].end, *args[1..-1]) else @builder.puts(*args) {IndentedStringBuilder.new.tap {|i| i.dsl(&blk)}} end else @builder.puts(*args) end end
Private Instance Methods
method_missing(sym, *args, &blk)
click to toggle source
# File lib/mkxms/mssql/indented_string_builder.rb, line 64 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
surrounding_binding(b)
click to toggle source
# File lib/mkxms/mssql/indented_string_builder.rb, line 72 def surrounding_binding(b) if (b_self = b.eval("self")).kind_of? DSL b_self.instance_variable_get(:@outer_binding) end end