Sha256: f63fe7f82dbe4c1b560b776390f1cd34fd9f7d2ac41db8c551d0c12af523455a
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
module SAXMachine class SAXConfig class ElementConfig attr_reader :name, :setter, :data_class, :collection def initialize(name, options) @name = name.to_s @with = options.fetch(:with, {}) @value = if options.has_key?(:value) options[:value].to_s else nil end @as = options[:as] @collection = options[:collection] @setter = if @collection "add_#{options[:as]}" else "#{@as}=" end @data_class = options[:class] @required = options[:required] end def value_configured? !@value.nil? end def to_s "name: #{@name} dataclass: #{@data_class} setter: #{@setter} required: #{@required} value: #{@value} as:#{@as} collection: #{@collection} with: #{@with}" end def column @as || @name.to_sym end def required? !!@required end def value_from_attrs(attrs) attrs.fetch(@value, nil) end def attrs_match?(attrs) @with.all? do |key, value| value === attrs[key.to_s] end end def has_value_and_attrs_match?(attrs) !@value.nil? && attrs_match?(attrs) end def collection? !!@collection end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sax-machine-0.3.0 | lib/sax-machine/config/sax_element.rb |