Sha256: 71c5879c65e3fc98901719dcf75c3327e7209050cddbc53f0718aa04c5e8264d
Contents?: true
Size: 1.56 KB
Versions: 4
Compression:
Stored size: 1.56 KB
Contents
require_relative 'swift_helpers/translation_case' require_relative 'swift_helpers/translation_enum' module PolyglotIos module Serializer module Source class Swift include ERB::Util def initialize(translation_keys) @translation_keys = translation_keys end def render() @root_enum = build_translations() ERB.new(template, nil, '-').result(binding) end def template() <<-TEMPLATE import Foundation <%= @root_enum.serialized() %> public protocol StringsProtocol: RawRepresentable { var localized: String { get } func localized(with args: CVarArg...) -> String } public extension StringsProtocol where RawValue == String { var localized: String { return self.rawValue.localized } func localized(with args: CVarArg...) -> String { return String(format: self.rawValue.localized, arguments: args) } } TEMPLATE end def build_translations() root_enum = TranslationEnum.new("Strings") @translation_keys.each do |translation_key| key_name = translation_key.name next if key_name.nil? components = key_name.split(".") root_enum.insert(components, key_name) end return root_enum end def save(sources_path) FileUtils.mkdir_p sources_path unless File.exist? sources_path output_path = File.join(sources_path, "Strings.swift") File.write(output_path, render) end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems