Skip to content

Commit

Permalink
Add and use --auto-escape-percent option to cli command
Browse files Browse the repository at this point in the history
  • Loading branch information
alexandre-pod committed Aug 17, 2023
1 parent 09c3d47 commit 01442ce
Show file tree
Hide file tree
Showing 9 changed files with 35 additions and 10 deletions.
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.call(wording: wording, export_request: export_request)
GenerateLocalizableStringsDict.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)
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
super(serializer: Serializers::LocalizableStringsSerializer.new)
def initialize(export_request:)
super(serializer: Serializers::LocalizableStringsSerializer.new(export_request: export_request))
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
super(serializer: Serializers::LocalizableStringsdictSerializer.new)
def initialize(export_request:)
super(serializer: Serializers::LocalizableStringsdictSerializer.new(export_request: export_request))
end

private
Expand Down
1 change: 1 addition & 0 deletions lib/ad_localize/mappers/options_to_export_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ def map(options:)
request = Requests::ExportRequest.new
request.locales = options[:locales]
request.bypass_empty_values = options[:'non-empty-values']
request.auto_escape_percent = options[:'auto-escape-percent']
request.csv_paths = options[:csv_paths]
request.merge_policy = options[:'merge-policy']
request.output_path = options[:'target-dir']
Expand Down
2 changes: 2 additions & 0 deletions lib/ad_localize/option_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ class OptionHandler
DEFAULT_OPTIONS = {
locales: Requests::ExportRequest::DEFAULTS[:locales],
:'non-empty-values' => Requests::ExportRequest::DEFAULTS[:bypass_empty_values],
:'auto-escape-percent' => Requests::ExportRequest::DEFAULTS[:auto_escape_percent],
csv_paths: Requests::ExportRequest::DEFAULTS[:csv_paths],
:'merge-policy' => Requests::ExportRequest::DEFAULTS[:merge_policy],
:'target-dir' => Requests::ExportRequest::DEFAULTS[:output_path],
Expand Down Expand Up @@ -53,6 +54,7 @@ def self.parse!(options)
exit
end
parser.on("-x", "--non-empty-values", TrueClass, 'Do not export keys with empty values (iOS only)')
parser.on("--auto-escape-percent", TrueClass, 'Add escaping for % symbol to support wording use with String formatting (iOS only)')
end.parse!(options, into: args)

args[:csv_paths] = options
Expand Down
8 changes: 8 additions & 0 deletions lib/ad_localize/requests/export_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ class ExportRequest
DEFAULTS = {
locales: [],
bypass_empty_values: false,
auto_escape_percent: false,
csv_paths: [],
merge_policy: Interactors::MergeWordings::DEFAULT_POLICY,
output_path: Pathname.new('exports'),
Expand All @@ -21,6 +22,7 @@ class ExportRequest
attr_reader(
:locales,
:bypass_empty_values,
:auto_escape_percent,
:csv_paths,
:merge_policy,
:output_path,
Expand All @@ -35,6 +37,7 @@ class ExportRequest
def initialize
@locales = DEFAULTS[:locales]
@bypass_empty_values = DEFAULTS[:bypass_empty_values]
@auto_escape_percent = DEFAULTS[:auto_escape_percent]
@csv_paths = DEFAULTS[:csv_paths]
@merge_policy = DEFAULTS[:merge_policy]
@output_path = DEFAULTS[:output_path]
Expand All @@ -56,6 +59,10 @@ def bypass_empty_values=(value)
@bypass_empty_values = [true, 'true'].include?(value)
end

def auto_escape_percent=(value)
@auto_escape_percent = [true, 'true'].include?(value)
end

def csv_paths=(value)
return unless value.is_a? Array

Expand Down Expand Up @@ -119,6 +126,7 @@ def all_csv_paths
def to_s
"locales: #{locales}, " \
"bypass_empty_values: #{bypass_empty_values}, " \
"auto_escape_percent: #{auto_escape_percent}, " \
"csv_paths: #{csv_paths}, " \
"merge_policy: #{merge_policy}, " \
"output_path: #{output_path}, " \
Expand Down
4 changes: 2 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,8 @@ module Serializers
class LocalizableStringsSerializer < TemplatedSerializer
LOCALIZABLE_STRINGS_FILENAME = "Localizable.strings".freeze

def initialize
super(sanitizer: Sanitizers::IOSSanitizer.new)
def initialize(export_request:)
super(sanitizer: Sanitizers::IOSSanitizer.new(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,8 @@ module Serializers
class LocalizableStringsdictSerializer < TemplatedSerializer
LOCALIZABLE_STRINGSDICT_FILENAME = "Localizable.stringsdict".freeze

def initialize
super(sanitizer: Sanitizers::IOSSanitizer.new)
def initialize(export_request:)
super(sanitizer: Sanitizers::IOSSanitizer.new(auto_escape_percent: export_request.auto_escape_percent))
end

private
Expand Down
14 changes: 14 additions & 0 deletions test/requests/export_request_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,20 @@ class ExportRequestTest < TestCase
assert_not @request.bypass_empty_values
end

test 'should detect if request auto escape empty values' do
@request.auto_escape_percent = true
assert @request.auto_escape_percent

@request.auto_escape_percent = false
assert_not @request.auto_escape_percent

@request.auto_escape_percent = nil
assert_not @request.auto_escape_percent

@request.auto_escape_percent = ''
assert_not @request.auto_escape_percent
end

test 'should get csv paths' do
@request.csv_paths = []
assert_empty @request.csv_paths
Expand Down

0 comments on commit 01442ce

Please sign in to comment.