fastlane-plugin-google_sheet_localize 0.3.04 → 0.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fced4de18f8a5080a5434880e0cfaf1a913b94ce99fa0cf616d4c3aef17841e
|
4
|
+
data.tar.gz: a31f53557155e56132a9591069c9f145deeadcb43cb1c1de26c21b577c832dc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20e49808b8a3c5a3ea3570ce9d87d833ea4d152136e8c792d1571d1a61b227051d9d046e1db533ad1a3968fb09b292ab7cf05ea973e42edf848c556e26081e60
|
7
|
+
data.tar.gz: 403dc72598654501cd42e7acca89a98e7d6963513c03cbd5b5d79e542163b9cfff0df5aaa39e4ced4163656cc81508a45a4120ece9237746109e4b117602e876
|
data/README.md
CHANGED
@@ -41,6 +41,11 @@ other|%d artists
|
|
41
41
|
#### String Array: (Android)
|
42
42
|
["Monday", "Tuesday", "Wednesday"]
|
43
43
|
|
44
|
+
## iOS specifics
|
45
|
+
|
46
|
+
In order to support Objective-C, the plugin provides the `support_objc` argument, which is default `false`.
|
47
|
+
Therefore, if you need Objective-C support pass `support_objc: true`.
|
48
|
+
|
44
49
|
## Example
|
45
50
|
|
46
51
|
```ruby
|
@@ -20,6 +20,8 @@ module Fastlane
|
|
20
20
|
code_generation_path = params[:code_generation_path]
|
21
21
|
identifier_name = params[:identifier_name]
|
22
22
|
comment_example_language = params[:comment_example_language]
|
23
|
+
support_objc = params[:support_objc]
|
24
|
+
support_spm = params[:support_spm]
|
23
25
|
|
24
26
|
if identifier_name.to_s.empty?
|
25
27
|
if platform == "ios"
|
@@ -85,7 +87,7 @@ module Fastlane
|
|
85
87
|
end
|
86
88
|
end
|
87
89
|
}
|
88
|
-
self.createFiles(result, platform, path, default_language, base_language, code_generation_path, comment_example_language)
|
90
|
+
self.createFiles(result, platform, path, default_language, base_language, code_generation_path, comment_example_language, support_objc, support_spm)
|
89
91
|
end
|
90
92
|
|
91
93
|
def self.generateJSONObject(contentRows, index, identifierIndex)
|
@@ -131,7 +133,7 @@ module Fastlane
|
|
131
133
|
}
|
132
134
|
end
|
133
135
|
|
134
|
-
def self.createFiles(languages, platform, destinationPath, defaultLanguage, base_language, codeGenerationPath, comment_example_language)
|
136
|
+
def self.createFiles(languages, platform, destinationPath, defaultLanguage, base_language, codeGenerationPath, comment_example_language, support_objc, support_spm)
|
135
137
|
self.createFilesForLanguages(languages, platform, destinationPath, defaultLanguage, base_language)
|
136
138
|
|
137
139
|
if platform == "web"
|
@@ -187,7 +189,7 @@ module Fastlane
|
|
187
189
|
swiftFilepath = "#{swiftPath}/#{swiftFilename}"
|
188
190
|
|
189
191
|
File.open(swiftFilepath, "w") do |f|
|
190
|
-
f.write("import Foundation\n\n// swiftlint:disable all\
|
192
|
+
f.write("import Foundation\n\n// swiftlint:disable all\n#{getiOSTypeDefinition(support_objc)} {\n")
|
191
193
|
filteredItems.each { |item|
|
192
194
|
|
193
195
|
identifier = item['identifier']
|
@@ -220,14 +222,14 @@ module Fastlane
|
|
220
222
|
|
221
223
|
if arguments.count == 0
|
222
224
|
f.write(self.createComment(item['comment'], item['text']))
|
223
|
-
f.write("public static let #{constantName} = localized(identifier: \"#{identifier}\")\n")
|
225
|
+
f.write("#{getiOSAttributes(support_objc)}public static let #{constantName} = localized(identifier: \"#{identifier}\")\n")
|
224
226
|
else
|
225
227
|
f.write(self.createComment(item['comment'], item['text']))
|
226
|
-
f.write(self.createiOSFunction(constantName, identifier, arguments))
|
228
|
+
f.write(self.createiOSFunction(constantName, identifier, arguments, support_objc))
|
227
229
|
end
|
228
230
|
}
|
229
231
|
f.write("\n}")
|
230
|
-
f.write(self.createiOSFileEndString(destinationPath))
|
232
|
+
f.write(self.createiOSFileEndString(destinationPath, support_spm))
|
231
233
|
end
|
232
234
|
|
233
235
|
end
|
@@ -288,7 +290,6 @@ module Fastlane
|
|
288
290
|
line = "\n\n#{identifier}\n"
|
289
291
|
else
|
290
292
|
|
291
|
-
if !text.include?("one|")
|
292
293
|
|
293
294
|
if (text == "" || text == "TBD") && !defaultLanguage.to_s.empty?
|
294
295
|
default_language_object = languages.select { |languageItem| languageItem['language'] == defaultLanguage }.first["items"]
|
@@ -299,6 +300,8 @@ module Fastlane
|
|
299
300
|
text = self.mapInvalidPlaceholder(defaultLanguageText)
|
300
301
|
end
|
301
302
|
|
303
|
+
if !text.include?("one|")
|
304
|
+
|
302
305
|
matches = text.scan(/%[0-9][sdf]/)
|
303
306
|
|
304
307
|
matches.each { |match|
|
@@ -329,7 +332,6 @@ module Fastlane
|
|
329
332
|
text = self.mapInvalidPlaceholder(item['text'])
|
330
333
|
identifier = item['identifier']
|
331
334
|
|
332
|
-
if !identifier.include?('//') && text.include?("one|")
|
333
335
|
if (text == "" || text == "TBD") && !defaultLanguage.to_s.empty?
|
334
336
|
default_language_object = languages.select { |languageItem| languageItem['language'] == defaultLanguage }.first["items"]
|
335
337
|
default_language_object = self.filterUnusedRows(default_language_object,'identifier', "false")
|
@@ -339,6 +341,8 @@ module Fastlane
|
|
339
341
|
text = self.mapInvalidPlaceholder(defaultLanguageText)
|
340
342
|
end
|
341
343
|
|
344
|
+
if !identifier.include?('//') && text.include?("one|")
|
345
|
+
|
342
346
|
text = text.gsub("\n", "|")
|
343
347
|
|
344
348
|
formatIdentifier = identifier.gsub(".", "")
|
@@ -450,9 +454,9 @@ module Fastlane
|
|
450
454
|
}
|
451
455
|
end
|
452
456
|
|
453
|
-
def self.createiOSFileEndString(destinationPath)
|
457
|
+
def self.createiOSFileEndString(destinationPath, support_spm)
|
454
458
|
|
455
|
-
bundle = "let bundle = Bundle(for: LocalizationHelper.self)"
|
459
|
+
bundle = support_spm ? "let bundle = Bundle.module" : "let bundle = Bundle(for: LocalizationHelper.self)"
|
456
460
|
|
457
461
|
puts destinationPath
|
458
462
|
|
@@ -474,8 +478,8 @@ module Fastlane
|
|
474
478
|
\n})
|
475
479
|
end
|
476
480
|
|
477
|
-
def self.createiOSFunction(constantName, identifier, arguments)
|
478
|
-
functionTitle = "public static func #{constantName}("
|
481
|
+
def self.createiOSFunction(constantName, identifier, arguments, support_objc)
|
482
|
+
functionTitle = "#{getiOSAttributes(support_objc)}public static func #{constantName}("
|
479
483
|
|
480
484
|
arguments.each_with_index do |item, index|
|
481
485
|
functionTitle = functionTitle + "_ arg#{index}: #{item[:type]}"
|
@@ -498,6 +502,14 @@ module Fastlane
|
|
498
502
|
return functionTitle
|
499
503
|
end
|
500
504
|
|
505
|
+
def self.getiOSTypeDefinition(support_objc)
|
506
|
+
return support_objc ? "public class Localization: NSObject" : "public struct Localization"
|
507
|
+
end
|
508
|
+
|
509
|
+
def self.getiOSAttributes(support_objc)
|
510
|
+
return support_objc ? "@objc " : ""
|
511
|
+
end
|
512
|
+
|
501
513
|
def self.findArgumentsInText(text)
|
502
514
|
|
503
515
|
if text.include?("one|")
|
@@ -507,30 +519,40 @@ module Fastlane
|
|
507
519
|
result = Array.new
|
508
520
|
filtered = self.mapInvalidPlaceholder(text)
|
509
521
|
|
510
|
-
stringIndexes =
|
511
|
-
intIndexes =
|
512
|
-
floatIndexes =
|
513
|
-
doubleIndexes =
|
522
|
+
stringIndexes = self.scan_str(filtered, /%[0-9]?[s@]/)
|
523
|
+
intIndexes = self.scan_str(filtered, /%[0-9]?[d]/)
|
524
|
+
floatIndexes = self.scan_str(filtered, /%[0-9]?[f]/)
|
525
|
+
doubleIndexes = self.scan_str(filtered, /%[0-9]?ld/)
|
514
526
|
|
515
527
|
if stringIndexes.count > 0
|
516
|
-
result = result.concat(stringIndexes.map { |e| { "index": e, "type": "String" }})
|
528
|
+
result = result.concat(stringIndexes.map { |e| { "index": e[0], "offset": e[1], "type": "String" }})
|
517
529
|
end
|
518
530
|
|
519
531
|
if intIndexes.count > 0
|
520
|
-
result = result.concat(intIndexes.map { |e| { "index": e, "type": "Int" }})
|
532
|
+
result = result.concat(intIndexes.map { |e| { "index": e[0], "offset": e[1], "type": "Int" }})
|
521
533
|
end
|
522
534
|
|
523
535
|
if floatIndexes.count > 0
|
524
|
-
result = result.concat(floatIndexes.map { |e| { "index": e, "type": "Float" }})
|
536
|
+
result = result.concat(floatIndexes.map { |e| { "index": e[0], "offset": e[1], "type": "Float" }})
|
525
537
|
end
|
526
538
|
|
527
539
|
if doubleIndexes.count > 0
|
528
|
-
result = result.concat(doubleIndexes.map { |e| { "index": e, "type": "Double" }})
|
540
|
+
result = result.concat(doubleIndexes.map { |e| { "index": e[0], "offset": e[1], "type": "Double" }})
|
529
541
|
end
|
530
542
|
|
543
|
+
result = result.sort_by! { |k| k["offset"] }.reverse!
|
544
|
+
|
531
545
|
return result
|
532
546
|
end
|
533
547
|
|
548
|
+
def self.scan_str(str, pattern)
|
549
|
+
res = []
|
550
|
+
(0..str.length).each do |i|
|
551
|
+
res << [Regexp.last_match.to_s, i] if str[i..-1] =~ /^#{pattern}/
|
552
|
+
end
|
553
|
+
res
|
554
|
+
end
|
555
|
+
|
534
556
|
def self.mapInvalidPlaceholder(text)
|
535
557
|
filtered = text.gsub('%s', '%@').gsub('"', '\"')
|
536
558
|
return filtered
|
@@ -578,6 +600,11 @@ module Fastlane
|
|
578
600
|
default_value: [],
|
579
601
|
optional: true,
|
580
602
|
type: Array),
|
603
|
+
FastlaneCore::ConfigItem.new(key: :support_spm,
|
604
|
+
env_name: "SUPPORT_SPM",
|
605
|
+
description: "Is Swift Package",
|
606
|
+
default_value: false,
|
607
|
+
type: Boolean),
|
581
608
|
FastlaneCore::ConfigItem.new(key: :language_titles,
|
582
609
|
env_name: "LANGUAGE_TITLES",
|
583
610
|
description: "Alle language titles",
|
@@ -612,7 +639,12 @@ module Fastlane
|
|
612
639
|
env_name: "CODEGENERATIONPATH",
|
613
640
|
description: "Code generation path for the Swift file",
|
614
641
|
optional: true,
|
615
|
-
type: String)
|
642
|
+
type: String),
|
643
|
+
FastlaneCore::ConfigItem.new(key: :support_objc,
|
644
|
+
env_name: "OBJC_SUPPORT",
|
645
|
+
description: "Whether the generated code should support Obj-C. Only relevant for the ios platform",
|
646
|
+
type: Boolean,
|
647
|
+
default_value: false)
|
616
648
|
]
|
617
649
|
end
|
618
650
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-google_sheet_localize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario Hahn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google_drive
|
@@ -181,8 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
181
|
- !ruby/object:Gem::Version
|
182
182
|
version: '0'
|
183
183
|
requirements: []
|
184
|
-
|
185
|
-
rubygems_version: 2.7.7
|
184
|
+
rubygems_version: 3.0.3
|
186
185
|
signing_key:
|
187
186
|
specification_version: 4
|
188
187
|
summary: Creates .strings files for iOS and strings.xml files for Android
|