class Pakyow::Data::Adapters::Sql::Migrators::Finalizer::Writer

Public Class Methods

new(root: false) click to toggle source
# File lib/pakyow/data/adapters/sql/migrators/finalizer.rb, line 44
def initialize(root: false)
  @root, @content = root, String.new
end

Public Instance Methods

method_missing(name, *args, **kwargs, &block) click to toggle source
# File lib/pakyow/data/adapters/sql/migrators/finalizer.rb, line 64
              def method_missing(name, *args, **kwargs, &block)
                method_call = "#{name} #{args_to_string(args, kwargs)}"

                if block_given?
                  @content << <<~CONTENT
                    #{method_call} do
                    #{indent(Writer.new.tap { |writer| writer.instance_exec(&block) }.to_s)}
                    end
                  CONTENT
                else
                  @content << <<~CONTENT
                    #{method_call}
                  CONTENT
                end
              end
to_ary() click to toggle source
# File lib/pakyow/data/adapters/sql/migrators/finalizer.rb, line 60
def to_ary
  [to_s]
end
to_s() click to toggle source
# File lib/pakyow/data/adapters/sql/migrators/finalizer.rb, line 48
              def to_s
                if @root
                  <<~CONTENT
                    change do
                    #{indent(@content.strip)}
                    end
                  CONTENT
                else
                  @content.strip
                end
              end

Private Instance Methods

args_to_string(args, kwargs) click to toggle source
# File lib/pakyow/data/adapters/sql/migrators/finalizer.rb, line 82
def args_to_string(args, kwargs)
  kwargs.each_with_object(args.map(&:inspect).join(", ")) { |(key, value), string|
    string << ", #{key}: #{value.inspect}"
  }
end
indent(content) click to toggle source
# File lib/pakyow/data/adapters/sql/migrators/finalizer.rb, line 88
def indent(content)
  content.split("\n").map { |line| "  #{line}" }.join("\n")
end