rescodegen 0.1.1 → 0.1.2
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 +4 -4
- data/Gemfile.lock +11 -3
- data/README.md +4 -3
- data/bin/rescodegen +12 -12
- data/lib/rescodegen/code_formatter/code_formatter.rb +6 -1
- data/lib/rescodegen/code_generator/objc_header_strings_generator.rb +9 -4
- data/lib/rescodegen/code_generator/objc_main_strings_generator.rb +10 -5
- data/lib/rescodegen/code_generator/strings_generator.rb +4 -0
- data/lib/rescodegen/version.rb +1 -1
- data/rescodegen.gemspec +1 -0
- metadata +16 -4
- data/lib/rescodegen/code_formatter/objc_code_formatter.rb +0 -11
- data/lib/rescodegen/code_formatter/swift_code_formatter.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1cc0746cc5d75abad97618260d6ffde5db9d0d6
|
4
|
+
data.tar.gz: 67019eadc6cbeea942d08a196076bd66cc25988e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f697b4fdfed3a5ae98ab871538cdea35f349619146ce1a815d6c4e1e02601c1165d27ab04f826b216821c316c7dcf66eabe37e58b7aa8c9d0a9e72d5b734613
|
7
|
+
data.tar.gz: 0ce98a4477650c9f99924dbcee497847cde935fba36675b01d924709f443fcd684532d495f5283f834da695a8e9350e9df32b6f8551fe7f6107eeaec503e45a8
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,20 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rescodegen (0.1.
|
4
|
+
rescodegen (0.1.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
|
10
|
-
|
9
|
+
docile (1.1.5)
|
10
|
+
json (1.8.3)
|
11
|
+
minitest (5.8.4)
|
12
|
+
rake (10.5.0)
|
13
|
+
simplecov (0.11.2)
|
14
|
+
docile (~> 1.1.0)
|
15
|
+
json (~> 1.8)
|
16
|
+
simplecov-html (~> 0.10.0)
|
17
|
+
simplecov-html (0.10.0)
|
11
18
|
|
12
19
|
PLATFORMS
|
13
20
|
ruby
|
@@ -17,6 +24,7 @@ DEPENDENCIES
|
|
17
24
|
minitest (~> 5.0)
|
18
25
|
rake (~> 10.0)
|
19
26
|
rescodegen!
|
27
|
+
simplecov (~> 0.11)
|
20
28
|
|
21
29
|
BUNDLED WITH
|
22
30
|
1.11.2
|
data/README.md
CHANGED
@@ -10,8 +10,9 @@ A command line tool for creating Swift and Objective-C code from localizable str
|
|
10
10
|
|
11
11
|
|Option|Value|Description |
|
12
12
|
|---|---|---|
|
13
|
-
|-l|swift\|objc|The language of the generated code
|
14
|
-
|-o|directory|Where to generate the files
|
13
|
+
|-l|swift\|objc|The language of the generated code.|
|
14
|
+
|-o|relative/path/to/output/directory|Where to generate the files.|
|
15
|
+
|-p|e.g. SH|An optional prefix to apply to Objective-C types.|
|
15
16
|
## Example
|
16
17
|
### Localizable.strings
|
17
18
|
|
@@ -35,4 +36,4 @@ Access localised strings using the `localizedString` property.
|
|
35
36
|
`Strings.Singular.homeScreen_alert_loadErrorMessage.localizedString`
|
36
37
|
### Objective-C
|
37
38
|
Access localised strings using the `LocalizedSingularString` function.
|
38
|
-
`LocalizedSingularString(
|
39
|
+
`LocalizedSingularString(SingularString_homeScreen_alert_loadErrorMessage);`
|
data/bin/rescodegen
CHANGED
@@ -12,10 +12,9 @@ require 'rescodegen/code_generator/swift_strings_generator'
|
|
12
12
|
require 'rescodegen/code_generator/objc_header_strings_generator'
|
13
13
|
require 'rescodegen/code_generator/objc_main_strings_generator'
|
14
14
|
require 'rescodegen/key_generator/strings_key_generator'
|
15
|
-
require 'rescodegen/code_formatter/
|
16
|
-
require 'rescodegen/code_formatter/objc_code_formatter'
|
15
|
+
require 'rescodegen/code_formatter/code_formatter'
|
17
16
|
|
18
|
-
options = { output: ".", language: "swift" }
|
17
|
+
options = { output: ".", language: "swift", prefix: "" }
|
19
18
|
|
20
19
|
parser = OptionParser.new do |opts|
|
21
20
|
opts.banner = "Usage: rescodegen [options] input_file"
|
@@ -27,29 +26,30 @@ parser = OptionParser.new do |opts|
|
|
27
26
|
opts.on("-o", "--output=directory", "Directory to create file.") do |o|
|
28
27
|
options[:output] = o
|
29
28
|
end
|
29
|
+
opts.on("-p", "--prefix=PREFIX", "Optional prefix for Objective-C types.") do |p|
|
30
|
+
options[:prefix] = p
|
31
|
+
end
|
30
32
|
end
|
31
33
|
parser.parse!
|
32
34
|
|
33
35
|
abort "Invalid -l argument. Expects swift or objc." if !options[:language].match("swift|objc")
|
34
36
|
input_file = ARGV.last
|
35
37
|
abort "Missing input_file.\n\n#{parser.help}" if input_file.nil?
|
36
|
-
output_file = options[:output] + "/Strings"
|
38
|
+
output_file = options[:output] + "/" + options[:prefix] + "Strings"
|
37
39
|
|
38
40
|
def generate_swift_file(code_safe_keys, keys, output_file)
|
39
|
-
formatter = Rescodegen::SwiftCodeFormatter.new
|
40
|
-
code_safe_keys = code_safe_keys.map { |k| formatter.format_string(k) }
|
41
41
|
File.write(output_file + ".swift", Rescodegen::SwiftStringsGenerator.new.generate(code_safe_keys, keys))
|
42
42
|
end
|
43
43
|
|
44
|
-
def generate_objc_files(code_safe_keys, keys, output_file)
|
45
|
-
|
46
|
-
|
47
|
-
File.write(output_file + ".h", Rescodegen::ObjcHeaderStringsGenerator.new.generate(code_safe_keys, keys))
|
48
|
-
File.write(output_file + ".m", Rescodegen::ObjcMainStringsGenerator.new.generate(code_safe_keys, keys))
|
44
|
+
def generate_objc_files(code_safe_keys, keys, output_file, prefix)
|
45
|
+
File.write(output_file + ".h", Rescodegen::ObjcHeaderStringsGenerator.new(prefix).generate(code_safe_keys, keys))
|
46
|
+
File.write(output_file + ".m", Rescodegen::ObjcMainStringsGenerator.new(prefix).generate(code_safe_keys, keys))
|
49
47
|
end
|
50
48
|
|
51
49
|
generator = Rescodegen::StringsKeyGenerator.create_from_file(input_file)
|
52
50
|
keys = generator.keys
|
53
51
|
code_safe_keys = generator.code_safe_keys
|
52
|
+
formatter = Rescodegen::CodeFormatter.new
|
53
|
+
code_safe_keys = code_safe_keys.map { |k| formatter.format_string(k) }
|
54
54
|
generate_swift_file(code_safe_keys, keys, output_file) if options[:language] == "swift"
|
55
|
-
generate_objc_files(code_safe_keys, keys, output_file) if options[:language] == "objc"
|
55
|
+
generate_objc_files(code_safe_keys, keys, output_file, options[:prefix]) if options[:language] == "objc"
|
@@ -2,7 +2,12 @@
|
|
2
2
|
module Rescodegen
|
3
3
|
class CodeFormatter
|
4
4
|
|
5
|
-
|
5
|
+
def format_string(string)
|
6
|
+
string.sub(/^[A-Z]+/) { |s| downcase_string_unless_acronym(s) }
|
7
|
+
.gsub(/_[A-Z]+/) { |s| downcase_string_unless_acronym(s) }
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
6
11
|
def downcase_string_unless_acronym(string)
|
7
12
|
string.downcase! unless string.tr("_", "").size > 1
|
8
13
|
string
|
@@ -3,13 +3,18 @@ require_relative 'strings_generator'
|
|
3
3
|
module Rescodegen
|
4
4
|
class ObjcHeaderStringsGenerator < StringsGenerator
|
5
5
|
|
6
|
+
def initialize(prefix)
|
7
|
+
@prefix = prefix
|
8
|
+
end
|
9
|
+
|
6
10
|
def generate(keys, values)
|
7
11
|
super(keys, values)
|
12
|
+
enum_name = prefix "SingularString"
|
8
13
|
import_module("Foundation")
|
9
|
-
.start_enum(
|
10
|
-
.add_cases(
|
14
|
+
.start_enum(enum_name, "NSInteger")
|
15
|
+
.add_cases(enum_name, keys)
|
11
16
|
.finish_enum
|
12
|
-
.add_c_method("NSString*", "LocalizedSingularString",
|
17
|
+
.add_c_method("NSString*", prefix("LocalizedSingularString"), enum_name, "singularString")
|
13
18
|
.newline
|
14
19
|
@output
|
15
20
|
end
|
@@ -38,7 +43,7 @@ module Rescodegen
|
|
38
43
|
def add_cases(enum_name, keys)
|
39
44
|
keys.each do |key|
|
40
45
|
indent
|
41
|
-
@output += "#{enum_name}#{key},"
|
46
|
+
@output += "#{enum_name}_#{key},"
|
42
47
|
newline
|
43
48
|
end
|
44
49
|
self
|
@@ -3,14 +3,19 @@ require_relative 'strings_generator'
|
|
3
3
|
module Rescodegen
|
4
4
|
class ObjcMainStringsGenerator < StringsGenerator
|
5
5
|
|
6
|
+
def initialize(prefix)
|
7
|
+
@prefix = prefix
|
8
|
+
end
|
9
|
+
|
6
10
|
def generate(keys, values)
|
7
11
|
super(keys, values)
|
12
|
+
enum_name = prefix "SingularString"
|
8
13
|
newline
|
9
|
-
.import_header("Strings.h")
|
14
|
+
.import_header(prefix("Strings.h"))
|
10
15
|
.newline
|
11
|
-
.start_c_method("NSString*", "LocalizedSingularString",
|
16
|
+
.start_c_method("NSString*", prefix("LocalizedSingularString"), enum_name, "singularString")
|
12
17
|
.start_switch("singularString")
|
13
|
-
.add_cases(keys.map { |k| "
|
18
|
+
.add_cases(keys.map { |k| enum_name + "_" + k }, values)
|
14
19
|
.close_brackets
|
15
20
|
.close_brackets
|
16
21
|
.newline
|
@@ -39,7 +44,7 @@ module Rescodegen
|
|
39
44
|
def add_cases(keys, values)
|
40
45
|
i = 0
|
41
46
|
until i == keys.size
|
42
|
-
start_case(keys[i]
|
47
|
+
start_case(keys[i])
|
43
48
|
.return_value(localized_string(values[i]))
|
44
49
|
.finish_case
|
45
50
|
i += 1
|
@@ -54,7 +59,7 @@ module Rescodegen
|
|
54
59
|
.finish_case
|
55
60
|
end
|
56
61
|
|
57
|
-
def start_case(key
|
62
|
+
def start_case(key)
|
58
63
|
indent
|
59
64
|
@output += "case #{key}:"
|
60
65
|
newline
|
data/lib/rescodegen/version.rb
CHANGED
data/rescodegen.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rescodegen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Henry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.11'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.11'
|
55
69
|
description:
|
56
70
|
email:
|
57
71
|
- hello@seanhenry.codes
|
@@ -69,8 +83,6 @@ files:
|
|
69
83
|
- bin/rescodegen
|
70
84
|
- lib/rescodegen.rb
|
71
85
|
- lib/rescodegen/code_formatter/code_formatter.rb
|
72
|
-
- lib/rescodegen/code_formatter/objc_code_formatter.rb
|
73
|
-
- lib/rescodegen/code_formatter/swift_code_formatter.rb
|
74
86
|
- lib/rescodegen/code_generator/objc_header_strings_generator.rb
|
75
87
|
- lib/rescodegen/code_generator/objc_main_strings_generator.rb
|
76
88
|
- lib/rescodegen/code_generator/strings_generator.rb
|
@@ -1,11 +0,0 @@
|
|
1
|
-
require_relative 'code_formatter'
|
2
|
-
|
3
|
-
module Rescodegen
|
4
|
-
class SwiftCodeFormatter < CodeFormatter
|
5
|
-
|
6
|
-
def format_string(string)
|
7
|
-
string.sub(/^[A-Z]+/) { |s| downcase_string_unless_acronym(s) }
|
8
|
-
.gsub(/_[A-Z]+/) { |s| downcase_string_unless_acronym(s) }
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|