class ToFactory::FileWriter

Public Class Methods

new() click to toggle source
# File lib/to_factory/file_writer.rb, line 3
def initialize
  FileUtils.mkdir_p(ToFactory.factories)
end

Public Instance Methods

write(definitions) click to toggle source
# File lib/to_factory/file_writer.rb, line 7
def write(definitions)
  definitions.each do |klass_name, representations|
    write_to(klass_name) do
      wrap_factories(representations.map(&:definition))
    end
  end
end

Private Instance Methods

indent(definitions) click to toggle source
# File lib/to_factory/file_writer.rb, line 33
def indent(definitions)
  definitions.map do |d|
    if d[/\A\s\s/]
      d
    else
      lines = d.split("\n").map do |l|
        "  #{l}"
      end

      lines.join("\n")
    end
  end
end
mkdir(name) click to toggle source
# File lib/to_factory/file_writer.rb, line 47
def mkdir(name)
  return unless name.to_s["/"]
  dir = name.to_s.split("/")[0..-2]
  FileUtils.mkdir_p File.join(ToFactory.factories, dir)
end
wrap_factories(definitions) click to toggle source
# File lib/to_factory/file_writer.rb, line 25
def wrap_factories(definitions)
  out =  "FactoryGirl.define do\n"
  out << indent(definitions).join("\n\n")
  out << "\n" unless out[-1] == "\n"
  out << "end"
  out << "\n" unless out[-1] == "\n"
end
write_to(name) { || ... } click to toggle source
# File lib/to_factory/file_writer.rb, line 17
def write_to(name)
  mkdir(name)

  File.open(File.join(ToFactory.factories, "#{name}.rb"), "w") do |f|
    f << yield
  end
end