Sha256: 161bd1e7f0e6cbb289ba872aee685d6126c30b8b7643fc66fe34282e097eaa94
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
module Yaoc class ConverterBuilder attr_accessor :build_commands, :command_order def initialize(command_order=:recorded_order, fetcher=:fetch) self.build_commands = [] self.command_order = command_order self.fetcher = fetcher end def add_mapping(&block) instance_eval &block apply_commands! end def converter_class @converter_class ||= Struct.new(:to_convert, :fetcher) do include MappingBase include Strategies::ToHashMapping end end def rule(to: nil, from: to, converter: nil) to_s = Array(to) from_s = Array(from) converter_s = Array(converter) to_s.each_with_index do |to, index| build_commands.push ->{ converter_class.map(to, from_s[index] || to, converter_s[index]) } end end def apply_commands! reset_converters! build_commands_ordered.each &:call end def converter(fetch_able) converter_class.new(fetch_able, fetcher) end def fetcher=(new_fetcher) @fetcher= new_fetcher end protected def fetcher @fetcher ||= :fetch end def fetch_with(new_fetcher) self.fetcher = new_fetcher end def build_commands_ordered if command_order == :recorded_order build_commands else build_commands.reverse end end def reset_converters! @converter_class = nil end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
yaoc-0.0.3 | lib/yaoc/converter_builder.rb |