class Applyrics::Project_iOS
Public Class Methods
new(path)
click to toggle source
# File lib/applyrics/project_ios.rb, line 10 def initialize(path) if path.to_s.length == 0 path = Dir["./*.xcworkspace"].first end if path.to_s.length == 0 path = Dir["./*.xcodeproj"].first end @path = path @platform_settings = nil @langs = [] @default_language = nil end
Public Instance Methods
apply_languages(data)
click to toggle source
# File lib/applyrics/project_ios.rb, line 117 def apply_languages(data) folder = self.platform_project_settings("SOURCE_ROOT") data.each do |lang, files| files.each do |file, data| lang_folder = Dir[File.join(folder, "**", (lang == default_language ? "Base" : lang) + ".lproj")].first if !Dir.exist?(lang_folder) Dir.mkdir(lang_folder, 0700) puts "Created #{lang_folder}".yellow end strings = StringsFile.new(File.join(lang_folder, file), data) strings.write end end end
default_language()
click to toggle source
# File lib/applyrics/project_ios.rb, line 53 def default_language if @default_language.nil? @default_language = I18nData.language_code(self.platform_project_settings("DEVELOPMENT_LANGUAGE")).downcase end @default_language end
detected_languages()
click to toggle source
Return a list of detected languages in the project
# File lib/applyrics/project_ios.rb, line 24 def detected_languages @langs = [] folder = self.platform_project_settings("SOURCE_ROOT") lang_folders = Dir.glob(File.join(folder, "**", "*.lproj")) lang_folders.each do |lang_folder| lang = /([A-Za-z\-]*?)\.lproj/.match(lang_folder)[1] lang = (lang == "Base" ? default_language : lang) @langs << lang end return @langs end
language_files()
click to toggle source
# File lib/applyrics/project_ios.rb, line 36 def language_files folder = self.platform_project_settings("SOURCE_ROOT") unless !folder.nil? out = {} Dir[File.join(folder, "**", "*.lproj", "*.strings")].each do |file| lang = /(\w*).lproj/.match(file)[1] lang = (lang == "Base" ? default_language : lang) if !out.key?(lang) out[lang] = [] end out[lang] << file end out end
platform_project_settings(name)
click to toggle source
# File lib/applyrics/project_ios.rb, line 60 def platform_project_settings(name) if @platform_settings.nil? cmd = ["set -o pipefail && xcrun xcodebuild -showBuildSettings"] cmd << "-project '#{@path}'" @platform_settings = Command.execute(cmd, false) end result = @platform_settings.split("\n").find { |c| c.split(" = ").first.strip == name } return result.split(" = ").last end
rebuild_files()
click to toggle source
NOTE: This will only rebuild the base language
# File lib/applyrics/project_ios.rb, line 92 def rebuild_files folder = self.platform_project_settings("SOURCE_ROOT") tmp_folder = "./tmp/" if !Dir.exist?(tmp_folder) Dir.mkdir(tmp_folder, 0700) end GenStrings.run("#{folder}", tmp_folder) IBTool.run("#{folder}", tmp_folder) lang = default_language out = {"#{lang}" => {}} langHash = out["#{lang}"] Dir[File.join(tmp_folder, "*.strings")].each do |file| strings = StringsFile.new(file) langHash[File.basename(file)] = strings.to_hash end FileUtils.remove_dir(tmp_folder) out end
string_files(folder=nil)
click to toggle source
# File lib/applyrics/project_ios.rb, line 71 def string_files(folder=nil) folder = self.platform_project_settings("SOURCE_ROOT") unless !folder.nil? out = {} Dir[File.join(folder, "**", "*.lproj", "*.strings")].each do |file| strings = StringsFile.new(file) lang = /(\w*).lproj/.match(file)[1] lang = (lang == "Base" ? default_language : lang) if !out.key?(lang) out[lang] = {} end out[lang][File.basename(file)] = strings.to_hash end out end