Class: Csv2hash::Definition
- Inherits:
-
Object
- Object
- Csv2hash::Definition
- Defined in:
- lib/csv2hash/definition.rb
Constant Summary collapse
- MAPPING =
'mapping'- COLLECTION =
'collection'- TYPES =
[MAPPING, COLLECTION]
Instance Attribute Summary collapse
-
#header_size ⇒ Object
Returns the value of attribute header_size.
-
#rules ⇒ Object
Returns the value of attribute rules.
-
#structure_rules ⇒ Object
Returns the value of attribute structure_rules.
-
#type ⇒ Object
Returns the value of attribute type.
Instance Method Summary collapse
- #default! ⇒ Object
-
#initialize(rules, type, options = {}) ⇒ Definition
constructor
A new instance of Definition.
- #validate! ⇒ Object
Constructor Details
#initialize(rules, type, options = {}) ⇒ Definition
Returns a new instance of Definition.
11 12 13 14 |
# File 'lib/csv2hash/definition.rb', line 11 def initialize rules, type, = {} self.rules, self.type = rules, type self.header_size, self.structure_rules = .fetch(:header_size) { 0 }, .fetch(:structure_rules) { {} } end |
Instance Attribute Details
#header_size ⇒ Object
Returns the value of attribute header_size.
9 10 11 |
# File 'lib/csv2hash/definition.rb', line 9 def header_size @header_size end |
#rules ⇒ Object
Returns the value of attribute rules.
9 10 11 |
# File 'lib/csv2hash/definition.rb', line 9 def rules @rules end |
#structure_rules ⇒ Object
Returns the value of attribute structure_rules.
9 10 11 |
# File 'lib/csv2hash/definition.rb', line 9 def structure_rules @structure_rules end |
#type ⇒ Object
Returns the value of attribute type.
9 10 11 |
# File 'lib/csv2hash/definition.rb', line 9 def type @type end |
Instance Method Details
#default! ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/csv2hash/definition.rb', line 24 def default! rules.each do |rule| default_position rule unless rule.has_key? :message if rule.has_key? :values rule.merge! message: ':key not supported, please use one of :values' else rule.merge! message: 'undefined :key on :position' end end rule.merge! mappable: true unless rule.has_key? :mappable rule.merge! type: 'string' unless rule.has_key? :type rule.merge! values: nil unless rule.has_key? :values rule.merge! nested: nil unless rule.has_key? :nested rule.merge! allow_blank: false unless rule.has_key? :allow_blank rule.merge! extra_validator: nil unless rule.has_key? :extra_validator end end |
#validate! ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/csv2hash/definition.rb', line 16 def validate! unless TYPES.include?(type) raise "not suitable type, please use '#{MAPPING}' or '#{COLLECTION}'" end raise 'rules must be an Array of rules' unless rules.class == Array raise 'structure rules must be a Hash of rules' unless structure_rules.class == Hash end |