rescodegen 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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