class StructCore::Specwriter

Public Class Methods

new() click to toggle source
# File lib/spec/writer/spec_writer.rb, line 6
def initialize
        @writers = []
end

Public Instance Methods

register(writer) click to toggle source
# File lib/spec/writer/spec_writer.rb, line 10
def register(writer)
        if writer.respond_to?(:write_spec) && writer.respond_to?(:can_write_version) && writer.respond_to?(:write_target)
                @writers << writer
                return
        end

        raise StandardError.new 'Unsupported writer object. Writer object must support :write and :can_write_version'
end
register_defaults() click to toggle source
# File lib/spec/writer/spec_writer.rb, line 19
def register_defaults
        @writers.unshift(
                StructCore::Specwriter20X.new,
                StructCore::Specwriter30X.new
        )
end
write_configuration(configuration, spec_version, path) click to toggle source

@param configuration [StructCore::Specfile::Configuration] @param spec_version [Semantic::Version] @param path [String]

# File lib/spec/writer/spec_writer.rb, line 44
def write_configuration(configuration, spec_version, path)
        register_defaults if @writers.empty
        raise StandardError.new 'Error: Invalid configuration object. Configuration object was nil.' if configuration.nil?

        writer = @writers.find { |writer|
                writer.can_write_version(spec_version)
        }

        raise StandardError.new "Error: Invalid spec version. Project version #{spec_version} is unsupported by this version of struct." if writer.nil?

        writer.write_configuration(configuration, path)
end
write_spec(spec, path, return_instead_of_write = false) click to toggle source

@param spec [StructCore::Specfile] @param path [String]

# File lib/spec/writer/spec_writer.rb, line 28
def write_spec(spec, path, return_instead_of_write = false)
        register_defaults if @writers.empty?
        raise StandardError.new 'Error: Invalid spec object. Spec object was nil.' if spec.nil?

        writer = @writers.find { |writer|
                writer.can_write_version(spec.version)
        }

        raise StandardError.new "Error: Invalid spec object. Project version #{spec.version} is unsupported by this version of struct." if writer.nil?

        writer.write_spec(spec, path, return_instead_of_write)
end
write_target(target, spec_version, path) click to toggle source

@param target [StructCore::Specfile::Target] @param spec_version [Semantic::Version] @param path [String]

# File lib/spec/writer/spec_writer.rb, line 60
def write_target(target, spec_version, path)
        register_defaults if @writers.empty?
        raise StandardError.new 'Error: Invalid target object. Target object was nil.' if target.nil?

        writer = @writers.find { |writer|
                writer.can_write_version(spec_version)
        }

        raise StandardError.new "Error: Invalid spec version. Project version #{spec_version} is unsupported by this version of struct." if writer.nil?

        writer.write_target(target, path)
end