Skip to content

Commit

Permalink
Change how sanitizer is configured
Browse files Browse the repository at this point in the history
  • Loading branch information
alexandre-pod committed Sep 12, 2023
1 parent c5e7133 commit 61286b2
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 15 deletions.
1 change: 1 addition & 0 deletions lib/ad_localize/interactors/base_generate_files.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
4 changes: 2 additions & 2 deletions lib/ad_localize/interactors/generate_ios_files.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions lib/ad_localize/interactors/generate_localizable_strings.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 4 additions & 2 deletions lib/ad_localize/sanitizers/ios_sanitizer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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:)
Expand Down
8 changes: 6 additions & 2 deletions lib/ad_localize/serializers/localizable_strings_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions lib/ad_localize/serializers/templated_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
12 changes: 9 additions & 3 deletions test/sanitizers/ios_sanitizer_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 61286b2

Please sign in to comment.