Sha256: 32802ebe32518ac79ba582ce9f67856bac5d7c2b6ff4c7ffaf15ada6bcbaac29

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

module ToFactory
  class FileWriter
    def initialize
      FileUtils.mkdir_p(ToFactory.factories)
    end

    def write(definitions)
      definitions.each do |klass, representations|
        write_to(name_from klass) do
          wrap_factories(representations.map(&:definition))
        end
      end
    end

    private

    def name_from(klass)
      klass.name.underscore.gsub /^"|"$/, ""
    end

    def write_to(name)
      mkdir(name)

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

    def wrap_factories(definitions)
      if ToFactory.new_syntax?
        modern_header(definitions)
      else
        definitions.join("\n\n")
      end
    end

    def modern_header(definitions)
      out = "FactoryGirl.define do\n"
      out << definitions.join("\n")
      out << "\nend\n"
    end

    def mkdir(name)
      return unless name.to_s["/"]
      dir = name.to_s.split("/")[0..-2]
      FileUtils.mkdir_p File.join(ToFactory.factories, dir)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
to_factory-0.2.0 lib/to_factory/file_writer.rb