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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 136d0b761e58c2f09bb8bb731158e274489a7934
4
- data.tar.gz: 32fa0490730335d87ab6c81112a896cca7e6e0b5
3
+ metadata.gz: a1cc0746cc5d75abad97618260d6ffde5db9d0d6
4
+ data.tar.gz: 67019eadc6cbeea942d08a196076bd66cc25988e
5
5
  SHA512:
6
- metadata.gz: 461b685f603733ddd318bb16cff004a1ea6dbea1deffe5a233bb17d39370884868e4845882b66219692cd5f949d4835e4a5ccd1e214523653c72e45e7a2469a4
7
- data.tar.gz: 68ee217657dfc31488661db3a3c6d8169a9bedafee8fca043a79ec0ea8a3c5e7d67aa11c89c55b99c4e1e956f163a0f217a67be027c03e0cc126b953210726be
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.0)
4
+ rescodegen (0.1.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- minitest (5.4.3)
10
- rake (10.4.2)
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(SingularStringHomeScreen_alert_loadErrorMessage);`
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/swift_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
- formatter = Rescodegen::ObjcCodeFormatter.new
46
- code_safe_keys = code_safe_keys.map { |k| formatter.format_string(k) }
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
- protected
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("SingularString", "NSInteger")
10
- .add_cases("SingularString", keys)
14
+ .start_enum(enum_name, "NSInteger")
15
+ .add_cases(enum_name, keys)
11
16
  .finish_enum
12
- .add_c_method("NSString*", "LocalizedSingularString", "SingularString", "singularString")
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", "SingularString", "singularString")
16
+ .start_c_method("NSString*", prefix("LocalizedSingularString"), enum_name, "singularString")
12
17
  .start_switch("singularString")
13
- .add_cases(keys.map { |k| "SingularString" + k }, values)
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], values[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, value)
62
+ def start_case(key)
58
63
  indent
59
64
  @output += "case #{key}:"
60
65
  newline
@@ -10,6 +10,10 @@ module Rescodegen
10
10
 
11
11
  protected
12
12
 
13
+ def prefix(string)
14
+ @prefix + string
15
+ end
16
+
13
17
  def newline
14
18
  @output += "\n"
15
19
  self
@@ -1,3 +1,3 @@
1
1
  module Rescodegen
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/rescodegen.gemspec CHANGED
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.11"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "minitest", "~> 5.0"
24
+ spec.add_development_dependency "simplecov", "~> 0.11"
24
25
  end
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.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-01 00:00:00.000000000 Z
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 ObjcCodeFormatter < CodeFormatter
5
-
6
- def format_string(string)
7
- string.sub(/^[a-z]/, &:upcase)
8
- .gsub(/_[A-Z]+/) { |s| downcase_string_unless_acronym(s) }
9
- end
10
- end
11
- end
@@ -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