Class: Frameit::StringsParser
- Inherits:
-
Object
- Object
- Frameit::StringsParser
- Defined in:
- frameit/lib/frameit/strings_parser.rb
Overview
This class will parse the .string files
Class Method Summary collapse
Class Method Details
.parse(path) ⇒ Object
6 7 8 9 10 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 |
# File 'frameit/lib/frameit/strings_parser.rb', line 6 def self.parse(path) UI.user_error!("Couldn't find strings file at path '#{path}'") unless File.exist?(path) UI.user_error!("Must be .strings file, only got '#{path}'") unless path.end_with?(".strings") result = {} # A .strings file is UTF-16 encoded. We only want to deal with UTF-8 content = `iconv -f UTF-16 -t UTF-8 "#{path}" 2>&1` # note: double quotes around path so command also works on Windows content.split("\n").each_with_index do |line, index| begin # We don't care about comments and empty lines if line.start_with?('"') key = line.match(/"(.*)" \= /)[1] value = line.match(/ \= "(.*)"/)[1] result[key] = value end rescue => ex UI.error("Error parsing #{path} line #{index + 1}: '#{line}'") UI.verbose("#{ex.}\n#{ex.backtrace.join('\n')}") end end if result.empty? UI.error("Empty parsing result for #{path}. Please make sure the file is valid and UTF16 Big-endian encoded") end result end |