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