Module: Ibge::Reader::Helpers
- Included in:
- Base
- Defined in:
- lib/ibge/reader/helpers.rb
Constant Summary collapse
- SOURCES =
{ dtb: "DTB_2014_subdistrito.xls", sidra: "sidra.xls" }
Instance Attribute Summary collapse
-
#defined_columns ⇒ Object
readonly
Returns the value of attribute defined_columns.
-
#selected_source ⇒ Object
readonly
Returns the value of attribute selected_source.
Instance Method Summary collapse
- #columns(columns) ⇒ Object
- #source(selected_source = :dtb) ⇒ Object
- #sources ⇒ Object
- #valid_informed_source(informed_source) ⇒ Object
Instance Attribute Details
#defined_columns ⇒ Object (readonly)
Returns the value of attribute defined_columns.
9 10 11 |
# File 'lib/ibge/reader/helpers.rb', line 9 def defined_columns @defined_columns end |
#selected_source ⇒ Object (readonly)
Returns the value of attribute selected_source.
9 10 11 |
# File 'lib/ibge/reader/helpers.rb', line 9 def selected_source @selected_source end |
Instance Method Details
#columns(columns) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/ibge/reader/helpers.rb', line 11 def columns(columns) if columns.empty? raise ArgumentError, "Columns must be provided as hash which contains " / "the index and field name" end @defined_columns ||= {} @selected_source ||= :dtb distinct_sources = [] columns.each do |_, v| if v.is_a?(Hash) hash_column_definition = v.values.first unless hash_column_definition.key?(:from_source) raise ArgumentError, "#{v.key} must have the key from_source" end valid_informed_source(hash_column_definition[:from_source]) distinct_sources << hash_column_definition[:from_source] end end distinct_sources = distinct_sources.compact.uniq.sort distinct_sources.each do |source| extracted_columns = columns.select do |_, v| v.is_a?(Hash) && v.values.first[:from_source] == source end @defined_columns[source] = extracted_columns.inject({}) do |h, (k, v)| h.merge!(k.to_s.to_sym => v.is_a?(Hash) ? v.keys.first : v) h end end if @selected_source @defined_columns[@selected_source] = columns.select do |_, v| v.is_a?(Symbol) end end end |
#source(selected_source = :dtb) ⇒ Object
58 59 60 61 62 |
# File 'lib/ibge/reader/helpers.rb', line 58 def source(selected_source = :dtb) valid_informed_source(selected_source) @selected_source = selected_source end |
#sources ⇒ Object
64 65 66 |
# File 'lib/ibge/reader/helpers.rb', line 64 def sources SOURCES end |
#valid_informed_source(informed_source) ⇒ Object
68 69 70 71 72 73 74 75 |
# File 'lib/ibge/reader/helpers.rb', line 68 def valid_informed_source(informed_source) source_keys = sources.keys unless source_keys.include?(informed_source) raise ArgumentError, "Source must be one of those '#{source_keys.join(', ')}'" end end |