class Subroutine::Factory::Config
Attributes
options[R]
Public Class Methods
new(options)
click to toggle source
# File lib/subroutine/factory/config.rb, line 12 def initialize(options) @options = options || {} parent(@options.delete(:parent)) if @options[:parent] sanitize! end
Public Instance Methods
after(&block)
click to toggle source
# File lib/subroutine/factory/config.rb, line 47 def after(&block) @options[:afters].push(block) end
before(&block)
click to toggle source
# File lib/subroutine/factory/config.rb, line 43 def before(&block) @options[:befores].push(block) end
extra(name, value = nil)
click to toggle source
# File lib/subroutine/factory/config.rb, line 65 def extra(name, value = nil) @options[:extras][name.to_sym] = value end
input(name, value)
click to toggle source
# File lib/subroutine/factory/config.rb, line 51 def input(name, value) @options[:inputs][name.to_sym] = value end
op(op_class)
click to toggle source
# File lib/subroutine/factory/config.rb, line 28 def op(op_class) @options[:op] = case op_class when String op_class when Class op_class.name else op_class.to_s end end
output(name)
click to toggle source
# File lib/subroutine/factory/config.rb, line 55 def output(name) @options.delete(:outputs) @options[:output] = name end
outputs(*names)
click to toggle source
# File lib/subroutine/factory/config.rb, line 60 def outputs(*names) @options.delete(:output) @options[:outputs] = names end
parent(parent)
click to toggle source
# File lib/subroutine/factory/config.rb, line 20 def parent(parent) inherit_from(parent) end
setup(&block)
click to toggle source
# File lib/subroutine/factory/config.rb, line 39 def setup(&block) @options[:setups].push(block) end
validate!()
click to toggle source
# File lib/subroutine/factory/config.rb, line 24 def validate! raise "Missing op configuration" unless @options[:op] end
Protected Instance Methods
inherit_from(parent)
click to toggle source
# File lib/subroutine/factory/config.rb, line 71 def inherit_from(parent) parent = ::Subroutine::Factory.get_config!(parent) unless parent.is_a?(::Subroutine::Factory::Config) @options.deep_merge!(parent.options) sanitize! end
sanitize!()
click to toggle source
# File lib/subroutine/factory/config.rb, line 77 def sanitize! op(@options[:op]) if @options[:op] @options[:inputs] ||= {} @options[:inputs].each_pair{|k,v| input(k, v) } outputs(*@options[:outputs]) if @options[:outputs] output(@options[:output]) if @options[:output] @options[:setups] = @options[:setups].dup if @options[:setups] @options[:setups] ||= [] @options[:befores] = @options[:befores].dup if @options[:befores] @options[:befores] ||= [] @options[:afters] = @options[:afters].dup if @options[:afters] @options[:afters] ||= [] @options[:extras] ||= {} @options[:extras].each_pair{|k,v| extra(k,v) } end