i18n_generator 0.0.1 → 1.0.0

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: 772f9f32d17277d30dc3aa1e4298e1977a75109c
4
- data.tar.gz: 0c2f3605bbea977f1512721544e7db23b6f27acb
3
+ metadata.gz: 1e1f43dfbb751e181d7cdc029673c0e47c24eb56
4
+ data.tar.gz: cc8744af56779e20f83675b97abd4160d23a8bbd
5
5
  SHA512:
6
- metadata.gz: 935201dd79cf72add33ed59b42cd36b2764c9392761ab43e9468b4c8a1cf0c50a6d9caec967f443c7cf9e1aa373c7c765a049682f78c2df8b5684a01e5967123
7
- data.tar.gz: 618ed8c7bea2e8d83e569d757c898f46ffc7b0dba4e56853a92cde69fb7783e3dae50cf644355e559d745f56c3613edcc27651f25569e1bcfe39b756d67fc2bb
6
+ metadata.gz: 950c38f5637280eea7c833971a253411fa42fbea7fe1feeb8c12f991309607d09dda680afdeeb80ca908c6d64b8cbf8ed2db2886e89f9ba530f7a0421aec21e3
7
+ data.tar.gz: 6987ae860d1cedf5d2f5d49d3bb0c921a4196ef73f49bbf52ae5b1686eed18366639ff79cd228bff1386a4c6f0b3d78c2f5cbc89319e016252e49b848bd543da
data/Gemfile CHANGED
@@ -1,10 +1,15 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "roo", "~>1.11.2" # Excel Parsing
3
+ gem "roo", "~>1.12.1" # Excel Parsing
4
+ gem "thor", "~>0.18.1" # Snazzy CLI
5
+
6
+ # Temporary fix for roo's compatibility with rubyzup
7
+ # See https://github.com/Empact/roo/pull/65
8
+ gem "rubyzip", '< 1.0.0'
4
9
 
5
10
  group :development do
6
11
  gem "minitest", "~> 5.0.6"
7
- gem "rdoc", "~> 3.12"
12
+ gem "rdoc", "~> 4.0.1"
8
13
  gem "bundler", "~> 1.3.5"
9
14
  gem "jeweler", "~> 1.8.4"
10
15
  end
@@ -1,12 +1,11 @@
1
1
  ### i18n_generator
2
2
 
3
3
  Generates locale-specific resource bundles (.properties) from an Excel spreadsheet containing translations.
4
- `ruby i18n_generator.rb </path/to/spreadsheet> </output_directory>`
5
4
 
6
5
  #### How to run
7
6
 
8
- 1. `bundle install`
9
- 1. `ruby i18n_generator.rb </path/to/spreadsheet> </output_directory>`
7
+ 1. `gem install i18n_generator`
8
+ 1. `i18n_generate process </path/to/spreadsheet> </output_directory>`
10
9
 
11
10
  ### Spreadsheet format
12
11
 
@@ -31,4 +30,4 @@ Tested on:
31
30
  ### Copyright
32
31
 
33
32
  Copyright (c) 2013 Rule Financial. See LICENSE.txt for
34
- further details.
33
+ further details.
data/Rakefile CHANGED
@@ -40,6 +40,5 @@ Rake::RDocTask.new do |rdoc|
40
40
 
41
41
  rdoc.rdoc_dir = 'rdoc'
42
42
  rdoc.title = "i18n_generator #{version}"
43
- rdoc.rdoc_files.include('README*')
44
43
  rdoc.rdoc_files.include('lib/**/*.rb')
45
44
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 1.0.0
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'i18n_generator'
4
+ require 'i18n_generator/cli'
5
+
6
+ I18nGenerator::CLI.start
@@ -5,30 +5,29 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "i18n_generator"
8
- s.version = "0.0.1"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Rob Young"]
12
- s.date = "2013-08-07"
12
+ s.date = "2013-09-08"
13
13
  s.description = "Generates locale-specific resource bundles (.properties files) from translations held in an Excel spreadsheet"
14
14
  s.email = "robyoung26@gmail.com"
15
- s.executables = ["i18n_generator"]
15
+ s.executables = ["i18n_generate"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE.txt",
18
- "README.rdoc"
18
+ "README.md"
19
19
  ]
20
20
  s.files = [
21
21
  "Gemfile",
22
- "Gemfile.lock",
23
22
  "LICENSE.txt",
24
- "README.rdoc",
23
+ "README.md",
25
24
  "Rakefile",
26
25
  "VERSION",
27
- "bin/i18n_generator",
26
+ "bin/i18n_generate",
28
27
  "examples/example_labels.xlsx",
29
28
  "i18n_generator.gemspec",
30
- "i18n_generator.rb",
31
29
  "lib/i18n_generator.rb",
30
+ "lib/i18n_generator/cli.rb",
32
31
  "lib/i18n_generator/excel_parser.rb",
33
32
  "lib/i18n_generator/label.rb",
34
33
  "lib/i18n_generator/label_writer.rb",
@@ -47,22 +46,28 @@ Gem::Specification.new do |s|
47
46
  s.specification_version = 4
48
47
 
49
48
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
- s.add_runtime_dependency(%q<roo>, ["~> 1.11.2"])
49
+ s.add_runtime_dependency(%q<roo>, ["~> 1.12.1"])
50
+ s.add_runtime_dependency(%q<thor>, ["~> 0.18.1"])
51
+ s.add_runtime_dependency(%q<rubyzip>, ["< 1.0.0"])
51
52
  s.add_development_dependency(%q<minitest>, ["~> 5.0.6"])
52
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
53
+ s.add_development_dependency(%q<rdoc>, ["~> 4.0.1"])
53
54
  s.add_development_dependency(%q<bundler>, ["~> 1.3.5"])
54
55
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
55
56
  else
56
- s.add_dependency(%q<roo>, ["~> 1.11.2"])
57
+ s.add_dependency(%q<roo>, ["~> 1.12.1"])
58
+ s.add_dependency(%q<thor>, ["~> 0.18.1"])
59
+ s.add_dependency(%q<rubyzip>, ["< 1.0.0"])
57
60
  s.add_dependency(%q<minitest>, ["~> 5.0.6"])
58
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
61
+ s.add_dependency(%q<rdoc>, ["~> 4.0.1"])
59
62
  s.add_dependency(%q<bundler>, ["~> 1.3.5"])
60
63
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
61
64
  end
62
65
  else
63
- s.add_dependency(%q<roo>, ["~> 1.11.2"])
66
+ s.add_dependency(%q<roo>, ["~> 1.12.1"])
67
+ s.add_dependency(%q<thor>, ["~> 0.18.1"])
68
+ s.add_dependency(%q<rubyzip>, ["< 1.0.0"])
64
69
  s.add_dependency(%q<minitest>, ["~> 5.0.6"])
65
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
70
+ s.add_dependency(%q<rdoc>, ["~> 4.0.1"])
66
71
  s.add_dependency(%q<bundler>, ["~> 1.3.5"])
67
72
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
68
73
  end
@@ -3,13 +3,13 @@ require 'i18n_generator/label'
3
3
  require 'i18n_generator/label_writer'
4
4
 
5
5
  module I18nGenerator
6
- class << self
7
- def process(source_spreadsheet, output_directory)
8
- excel_parser = I18nGenerator::ExcelParser.new(ARGV[0])
9
- label_writer = I18nGenerator::LabelWriter.new(ARGV[1])
6
+ class << self
7
+ def process(source_spreadsheet, output_directory, bundle_prefix)
8
+ excel_parser = I18nGenerator::ExcelParser.new(source_spreadsheet)
9
+ label_writer = I18nGenerator::LabelWriter.new(output_directory, bundle_prefix)
10
10
 
11
11
  labels = excel_parser.parse
12
12
  label_writer.write_labels(labels, excel_parser.translation_languages)
13
13
  end
14
- end
15
- end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ require 'thor'
2
+
3
+ module I18nGenerator
4
+ class CLI < Thor
5
+ desc "process INPUT, OUTPUT_DIR", "convert INPUT xlsx to resource bundles in OUTPUT_DIR"
6
+ method_option :prefix,
7
+ :default => "labels_",
8
+ :aliases => "-p",
9
+ :desc => "Specify the file prefix for generated bundle filenames (format <prefix><lang>.properties)"
10
+ def process(input_file, output_directory)
11
+ I18nGenerator.process(input_file, output_directory, options[:prefix])
12
+ end
13
+ end
14
+ end
@@ -8,15 +8,16 @@ module I18nGenerator
8
8
  # and writing them to output files
9
9
  class LabelWriter
10
10
 
11
- FILENAME_PREFIX = "labels_"
12
-
13
11
  FILE_HEADER_TEXT = <<-HEADER
14
- # THIS FILE IS GENERATED - PLEASE DO NOT EDIT (https://github.com/rulefinancial/i18n_generator)
12
+ # THIS FILE IS GENERATED - PLEASE DO NOT EDIT (https://github.com/rulefinancial/i18n_generator)
15
13
  HEADER
16
14
 
17
- def initialize(output_directory)
15
+ def initialize(output_directory, bundle_prefix)
18
16
  raise 'LabelWriter requires an output path' unless output_directory
17
+ raise 'LabelWriter requires a filename prefix' unless bundle_prefix
18
+
19
19
  @output_path = output_directory
20
+ @bundle_prefix = bundle_prefix
20
21
  end
21
22
 
22
23
  ##
@@ -72,7 +73,7 @@ module I18nGenerator
72
73
  ##
73
74
  # Produces the filename for a resource bundle
74
75
  def label_filename(language)
75
- FILENAME_PREFIX + language.to_s + ".properties"
76
+ @bundle_prefix + language.to_s + ".properties"
76
77
  end
77
78
  end
78
79
  end
@@ -4,7 +4,7 @@ require 'helper'
4
4
 
5
5
  class LabelWriterTest < Minitest::Test
6
6
  def setup
7
- @label_writer = I18nGenerator::LabelWriter.new("output_path")
7
+ @label_writer = I18nGenerator::LabelWriter.new("output_path", "labels_")
8
8
  end
9
9
 
10
10
  def test_not_null
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18n_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Young
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-07 00:00:00.000000000 Z
11
+ date: 2013-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: roo
@@ -16,14 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 1.11.2
19
+ version: 1.12.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 1.11.2
26
+ version: 1.12.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.18.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 0.18.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubyzip
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - <
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - <
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.0
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: minitest
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +72,14 @@ dependencies:
44
72
  requirements:
45
73
  - - ~>
46
74
  - !ruby/object:Gem::Version
47
- version: '3.12'
75
+ version: 4.0.1
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
80
  - - ~>
53
81
  - !ruby/object:Gem::Version
54
- version: '3.12'
82
+ version: 4.0.1
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: bundler
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -84,23 +112,22 @@ description: Generates locale-specific resource bundles (.properties files) from
84
112
  held in an Excel spreadsheet
85
113
  email: robyoung26@gmail.com
86
114
  executables:
87
- - i18n_generator
115
+ - i18n_generate
88
116
  extensions: []
89
117
  extra_rdoc_files:
90
118
  - LICENSE.txt
91
- - README.rdoc
119
+ - README.md
92
120
  files:
93
121
  - Gemfile
94
- - Gemfile.lock
95
122
  - LICENSE.txt
96
- - README.rdoc
123
+ - README.md
97
124
  - Rakefile
98
125
  - VERSION
99
- - bin/i18n_generator
126
+ - bin/i18n_generate
100
127
  - examples/example_labels.xlsx
101
128
  - i18n_generator.gemspec
102
- - i18n_generator.rb
103
129
  - lib/i18n_generator.rb
130
+ - lib/i18n_generator/cli.rb
104
131
  - lib/i18n_generator/excel_parser.rb
105
132
  - lib/i18n_generator/label.rb
106
133
  - lib/i18n_generator/label_writer.rb
@@ -1,64 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- addressable (2.3.5)
5
- builder (3.2.2)
6
- faraday (0.8.8)
7
- multipart-post (~> 1.2.0)
8
- git (1.2.5)
9
- github_api (0.10.1)
10
- addressable
11
- faraday (~> 0.8.1)
12
- hashie (>= 1.2)
13
- multi_json (~> 1.4)
14
- nokogiri (~> 1.5.2)
15
- oauth2
16
- hashie (2.0.5)
17
- highline (1.6.19)
18
- httpauth (0.2.0)
19
- jeweler (1.8.6)
20
- builder
21
- bundler (~> 1.0)
22
- git (>= 1.2.5)
23
- github_api (= 0.10.1)
24
- highline (>= 1.6.15)
25
- nokogiri (= 1.5.10)
26
- rake
27
- rdoc
28
- json (1.8.0)
29
- jwt (0.1.8)
30
- multi_json (>= 1.5)
31
- minitest (5.0.6)
32
- multi_json (1.7.8)
33
- multi_xml (0.5.5)
34
- multipart-post (1.2.0)
35
- nokogiri (1.5.10)
36
- oauth2 (0.9.2)
37
- faraday (~> 0.8)
38
- httpauth (~> 0.2)
39
- jwt (~> 0.1.4)
40
- multi_json (~> 1.0)
41
- multi_xml (~> 0.5)
42
- rack (~> 1.2)
43
- rack (1.5.2)
44
- rake (10.1.0)
45
- rdoc (3.12.2)
46
- json (~> 1.4)
47
- roo (1.11.2)
48
- nokogiri
49
- rubyzip
50
- spreadsheet (> 0.6.4)
51
- ruby-ole (1.2.11.7)
52
- rubyzip (0.9.9)
53
- spreadsheet (0.8.8)
54
- ruby-ole (>= 1.0)
55
-
56
- PLATFORMS
57
- ruby
58
-
59
- DEPENDENCIES
60
- bundler (~> 1.3.5)
61
- jeweler (~> 1.8.4)
62
- minitest (~> 5.0.6)
63
- rdoc (~> 3.12)
64
- roo (~> 1.11.2)
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'i18n_generator'
4
-
5
- unless ARGV.size == 2
6
- puts "Usage : label_generator.rb <input.xlsx> </path/to/output/dir>"
7
- exit
8
- end
9
-
10
- I18nGenerator.process(ARGV[0], ARGV[1])
@@ -1,17 +0,0 @@
1
- # encoding: utf-8
2
- #!/usr/bin/env ruby
3
-
4
- require_relative 'lib/label'
5
- require_relative 'lib/excel_parser'
6
- require_relative 'lib/label_writer'
7
-
8
- unless ARGV.size == 2
9
- puts "Usage : label_generator.rb <input.xlsx> </path/to/output/dir>"
10
- exit
11
- end
12
-
13
- excel_parser = ExcelParser.new(ARGV[0])
14
- label_writer = LabelWriter.new(ARGV[1])
15
-
16
- labels = excel_parser.parse
17
- label_writer.write_labels(labels, excel_parser.translation_languages)