Class: Locraft::CSVParser

Inherits:
Object
  • Object
show all
Defined in:
lib/locraft/csv_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ CSVParser

Returns a new instance of CSVParser.



7
8
9
# File 'lib/locraft/csv_parser.rb', line 7

def initialize(config)
  @config = config
end

Instance Method Details

#csv_rows(body) ⇒ Object



11
12
13
14
# File 'lib/locraft/csv_parser.rb', line 11

def csv_rows(body)
  csv = CSV.new(body, headers: true)
  csv.to_a.map(&:to_hash)
end

#parse_csv(csv_body) ⇒ Object

return localizations hash like #{ ‘Lang’ => [array of localizations] }



17
18
19
20
21
22
23
24
# File 'lib/locraft/csv_parser.rb', line 17

def parse_csv(csv_body)
  rows = csv_rows(csv_body)
  localizations_hash = {}
  @config.langs.each_key do |lang|
    localizations_hash[lang] = parse_rows_for_lang(rows, lang) || []
  end
  localizations_hash
end

#parse_rows_for_lang(rows, lang) ⇒ Object

return localizations array



27
28
29
30
31
32
33
# File 'lib/locraft/csv_parser.rb', line 27

def parse_rows_for_lang(rows, lang)
  if rows.first.keys.include? lang
    rows.map { |row| Localization.load_with_csv_row(row, @config, lang) }
  else
    warn "WARNING: there is no such a language in doc file: [#{lang}]"
  end
end