diff --git a/lib/ad_localize/interactors/base_generate_files.rb b/lib/ad_localize/interactors/base_generate_files.rb index 5614219..a2bdc11 100644 --- a/lib/ad_localize/interactors/base_generate_files.rb +++ b/lib/ad_localize/interactors/base_generate_files.rb @@ -10,6 +10,7 @@ def initialize(serializer:) end def call(wording:, export_request:) + @serializer.configure(export_request: export_request) if @serializer.respond_to?(:configure) wording.each do |locale, locale_wording| next unless has_wording?(locale_wording: locale_wording) diff --git a/lib/ad_localize/interactors/generate_ios_files.rb b/lib/ad_localize/interactors/generate_ios_files.rb index fde85a6..d8de820 100644 --- a/lib/ad_localize/interactors/generate_ios_files.rb +++ b/lib/ad_localize/interactors/generate_ios_files.rb @@ -4,8 +4,8 @@ module Interactors class GenerateIOSFiles def call(wording:, export_request:) GenerateInfoPlist.new.call(wording: wording, export_request: export_request) - GenerateLocalizableStrings.new(export_request: export_request).call(wording: wording, export_request: export_request) - GenerateLocalizableStringsDict.new(export_request: export_request).call(wording: wording, export_request: export_request) + GenerateLocalizableStrings.new.call(wording: wording, export_request: export_request) + GenerateLocalizableStringsDict.new.call(wording: wording, export_request: export_request) end end end diff --git a/lib/ad_localize/interactors/generate_localizable_strings.rb b/lib/ad_localize/interactors/generate_localizable_strings.rb index 12b4494..e1a3378 100644 --- a/lib/ad_localize/interactors/generate_localizable_strings.rb +++ b/lib/ad_localize/interactors/generate_localizable_strings.rb @@ -5,8 +5,8 @@ class GenerateLocalizableStrings < BaseGenerateFiles LOCALIZABLE_STRINGS_FILENAME = "Localizable.strings".freeze LOCALE_DIRECTORY_CONVENTION = "%{locale}.lproj".freeze - def initialize(export_request:) - super(serializer: Serializers::LocalizableStringsSerializer.new(export_request: export_request)) + def initialize + super(serializer: Serializers::LocalizableStringsSerializer.new) end private diff --git a/lib/ad_localize/interactors/generate_localizable_strings_dict.rb b/lib/ad_localize/interactors/generate_localizable_strings_dict.rb index e39250a..7c70137 100644 --- a/lib/ad_localize/interactors/generate_localizable_strings_dict.rb +++ b/lib/ad_localize/interactors/generate_localizable_strings_dict.rb @@ -5,8 +5,8 @@ class GenerateLocalizableStringsDict < BaseGenerateFiles LOCALIZABLE_STRINGSDICT_FILENAME = "Localizable.stringsdict".freeze LOCALE_DIRECTORY_CONVENTION = "%{locale}.lproj".freeze - def initialize(export_request:) - super(serializer: Serializers::LocalizableStringsdictSerializer.new(export_request: export_request)) + def initialize + super(serializer: Serializers::LocalizableStringsdictSerializer.new) end private diff --git a/lib/ad_localize/sanitizers/ios_sanitizer.rb b/lib/ad_localize/sanitizers/ios_sanitizer.rb index f33f3e1..a9e4509 100644 --- a/lib/ad_localize/sanitizers/ios_sanitizer.rb +++ b/lib/ad_localize/sanitizers/ios_sanitizer.rb @@ -2,8 +2,10 @@ module AdLocalize module Sanitizers class IOSSanitizer - def initialize(auto_escape_percent: false) - @should_auto_escape_percent = auto_escape_percent + attr_accessor :should_auto_escape_percent + + def initialize + @should_auto_escape_percent = false end def sanitize(value:) diff --git a/lib/ad_localize/serializers/localizable_strings_serializer.rb b/lib/ad_localize/serializers/localizable_strings_serializer.rb index ad30c07..8d3aa37 100644 --- a/lib/ad_localize/serializers/localizable_strings_serializer.rb +++ b/lib/ad_localize/serializers/localizable_strings_serializer.rb @@ -4,8 +4,12 @@ module Serializers class LocalizableStringsSerializer < TemplatedSerializer LOCALIZABLE_STRINGS_FILENAME = "Localizable.strings".freeze - def initialize(export_request:) - super(sanitizer: Sanitizers::IOSSanitizer.new(auto_escape_percent: export_request.auto_escape_percent)) + def initialize + super(sanitizer: Sanitizers::IOSSanitizer.new) + end + + def configure(export_request:) + @sanitizer.should_auto_escape_percent = export_request.auto_escape_percent end private diff --git a/lib/ad_localize/serializers/localizable_stringsdict_serializer.rb b/lib/ad_localize/serializers/localizable_stringsdict_serializer.rb index ee57a75..d440324 100644 --- a/lib/ad_localize/serializers/localizable_stringsdict_serializer.rb +++ b/lib/ad_localize/serializers/localizable_stringsdict_serializer.rb @@ -4,8 +4,12 @@ module Serializers class LocalizableStringsdictSerializer < TemplatedSerializer LOCALIZABLE_STRINGSDICT_FILENAME = "Localizable.stringsdict".freeze - def initialize(export_request:) - super(sanitizer: Sanitizers::IOSSanitizer.new(auto_escape_percent: export_request.auto_escape_percent)) + def initialize + super(sanitizer: Sanitizers::IOSSanitizer.new) + end + + def configure(export_request:) + @sanitizer.should_auto_escape_percent = export_request.auto_escape_percent end private diff --git a/lib/ad_localize/serializers/templated_serializer.rb b/lib/ad_localize/serializers/templated_serializer.rb index 18cb078..d7eddeb 100644 --- a/lib/ad_localize/serializers/templated_serializer.rb +++ b/lib/ad_localize/serializers/templated_serializer.rb @@ -13,6 +13,10 @@ def render(locale_wording:) render_template(template_path: template_path, variable_binding: variable_binding) end + def configure(export_request:) + # override if you need flags from export_request + end + protected TEMPLATES_DIRECTORY = __dir__ + "/../templates" diff --git a/test/sanitizers/ios_sanitizer_test.rb b/test/sanitizers/ios_sanitizer_test.rb index eefcf05..d40182f 100644 --- a/test/sanitizers/ios_sanitizer_test.rb +++ b/test/sanitizers/ios_sanitizer_test.rb @@ -36,19 +36,25 @@ class IOSSanitizerTest < TestCase test 'should escape "%" when needed' do percentage_value = "% abcdef 100% %1$@% %10$@ %$@ 10 %. abcdef %" - sanitized_value = IOSSanitizer.new(auto_escape_percent: true).sanitize(value: percentage_value) + sanitizer = IOSSanitizer.new + sanitizer.should_auto_escape_percent = true + sanitized_value = sanitizer.sanitize(value: percentage_value) assert_equal "%% abcdef 100%% %1$@%% %10$@ %%$@ 10 %%. abcdef %%", sanitized_value end test 'should not escape "%" when not needed for ios' do percentage_value = "%@ %1$@ %s %i %d %X %ld" - sanitized_value = IOSSanitizer.new(auto_escape_percent: true).sanitize(value: percentage_value) + sanitizer = IOSSanitizer.new + sanitizer.should_auto_escape_percent = true + sanitized_value = sanitizer.sanitize(value: percentage_value) assert_equal "%@ %1$@ %s %i %d %X %ld", sanitized_value end test 'should escape "%" even when repeated for ios' do percentage_value = "% %% %%% %%%%" - sanitized_value = IOSSanitizer.new(auto_escape_percent: true).sanitize(value: percentage_value) + sanitizer = IOSSanitizer.new + sanitizer.should_auto_escape_percent = true + sanitized_value = sanitizer.sanitize(value: percentage_value) assert_equal "%% %%%% %%%%%% %%%%%%%%", sanitized_value end end