i15r 0.5.3 → 0.5.4

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: 965d29646f88148511e0b5d10839c54919ed6e24
4
- data.tar.gz: 97bcadce3d7c7f2b4c62e4b6cab3a8b5ea82a302
3
+ metadata.gz: e303ee01d27aa5ce0b71216113452365d496c3d6
4
+ data.tar.gz: 8fc8be8c85e3eebfe40e63afb2c63d2e527e07bc
5
5
  SHA512:
6
- metadata.gz: 64291623e56c7f61074ad368e9e2f0381542e90a64b9a4b627a43531aa678301653f0e80eb14fcda89c9ef7fa24770e117e040a576d5239ef62f45e137003e8b
7
- data.tar.gz: 77d29172cb821b20fb44b5d9d220ea3e43f162ad73c641bc1ac1d63f9db334d8a8d4db801ca599150c51ac42e411dc07190160a116e508844a60ec9a06577eb7
6
+ metadata.gz: d25cc9528e8fb9e441d5b6169bc3c6ac810438ed975bfa404cb3d8d8fb8b61f64915a5bdbc28537d68b2c4cc59cbdefe70a122860d940a788f8ef1920586f285
7
+ data.tar.gz: 443e6940d929f4d5f38cb31887d86362059863a39d6df8bbc570b5947dc419905f6da6cc1184b6ef8fad1feadced490c183646eb14b0041b9184ea7a82ee7146
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- i15r (0.5.3)
4
+ i15r (0.5.4)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
data/bin/i15r CHANGED
@@ -30,6 +30,9 @@ def parse_options(args)
30
30
  opts.on("--override_i18n_method METHOD", "Replace I18n.t with METHOD") do |m|
31
31
  options[:override_i18n_method] = m
32
32
  end
33
+ opts.on("--create-locale-file FILE_NAME", "Create a locale file with the given name.") do |m|
34
+ options[:create_locale_file] = m
35
+ end
33
36
 
34
37
  opts.on_tail("-h", "--help", "Show this message") do
35
38
  puts opts
@@ -1,4 +1,5 @@
1
1
  require 'i15r/pattern_matcher'
2
+ require 'i15r/locale_creator'
2
3
 
3
4
  class I15R
4
5
  class AppFolderNotFound < Exception; end
@@ -35,6 +36,7 @@ class I15R
35
36
  @reader = reader
36
37
  @writer = writer
37
38
  @printer = printer
39
+ @locale_creator = I15R::LocaleCreator.new(config[:create_locale_file])
38
40
  @config = I15R::Config.new(config)
39
41
  end
40
42
 
@@ -79,7 +81,10 @@ class I15R
79
81
  end
80
82
 
81
83
  def sub_plain_strings(text, prefix, file_type)
82
- pm = I15R::PatternMatcher.new(prefix, file_type, :add_default => config.add_default,
84
+ pm = I15R::PatternMatcher.new(prefix,
85
+ file_type,
86
+ @locale_creator,
87
+ :add_default => config.add_default,
83
88
  :override_i18n_method => config.override_i18n_method)
84
89
  transformed_text = pm.run(text) do |old_line, new_line|
85
90
  @printer.print_diff(old_line, new_line)
@@ -92,6 +97,7 @@ class I15R
92
97
  path = "app" if path.nil?
93
98
  files = File.directory?(path) ? Dir.glob("#{path}/**/*.{erb,haml}") : [path]
94
99
  files.each { |file| internationalize_file(file) }
100
+ @locale_creator.save_file
95
101
  end
96
102
 
97
103
  def include_path?
@@ -0,0 +1,67 @@
1
+ require 'yaml'
2
+
3
+ class I15R
4
+ class LocaleCreator
5
+ def initialize(file_name = nil)
6
+ @file_name = file_name
7
+ @structure = LocaleStructure.new
8
+ end
9
+
10
+ def add(path, value)
11
+ if @file_name
12
+ @structure.add(path, value)
13
+ end
14
+ end
15
+
16
+ def save_file
17
+ if @file_name
18
+ yaml = @structure.to_yaml(:en)
19
+ File.write("#{@file_name}.yml", yaml)
20
+ end
21
+ end
22
+
23
+ class LocaleStructure
24
+ attr_reader :structure
25
+
26
+ def initialize
27
+ @structure = {}
28
+ end
29
+
30
+ def add(path, value)
31
+ keys = path.dup.split('.')
32
+
33
+ h = nested_hash_for(keys, value)
34
+
35
+ @structure = deep_merge(self.structure, h)
36
+ end
37
+
38
+ def to_yaml(language)
39
+ { language.to_s => @structure }.to_yaml
40
+ end
41
+
42
+ private
43
+
44
+ def nested_hash_for(keys, value)
45
+ if keys.size == 1
46
+ { keys.delete_at(0) => value }
47
+ else
48
+ { keys.delete_at(0) => nested_hash_for(keys, value) }
49
+ end
50
+ end
51
+
52
+ def deep_merge(hash, other_hash)
53
+ other_hash.each_pair do |current_key, other_value|
54
+ this_value = hash[current_key]
55
+
56
+ hash[current_key] = if this_value.is_a?(Hash) && other_value.is_a?(Hash)
57
+ deep_merge(this_value, other_value)
58
+ else
59
+ other_value
60
+ end
61
+ end
62
+
63
+ hash
64
+ end
65
+ end
66
+ end
67
+ end
@@ -26,11 +26,15 @@ class I15R
26
26
  ]
27
27
  }
28
28
 
29
- def initialize(prefix, file_type, options={})
29
+ def initialize(prefix, file_type, locale_creator = I15R::LocaleCreator.new, options={})
30
+ if locale_creator.is_a? Hash
31
+ options = locale_creator
32
+ locale_creator = I15R::LocaleCreator.new
33
+ end
30
34
  @prefix = prefix
31
35
  @file_type = file_type
32
36
  transformer_class = self.class.const_get("#{file_type.to_s.capitalize}Transformer")
33
- @transformer = transformer_class.new(options[:add_default], options[:override_i18n_method] || 'I18n.t')
37
+ @transformer = transformer_class.new(options[:add_default], options[:override_i18n_method] || 'I18n.t', locale_creator)
34
38
  end
35
39
 
36
40
  def translation_key(text)
@@ -66,13 +70,16 @@ class I15R
66
70
  end
67
71
 
68
72
  class Transformer
69
- def initialize(add_default, i18n_method)
73
+ def initialize(add_default, i18n_method, locale_creator)
70
74
  @add_default = add_default
71
75
  @i18n_method = i18n_method
76
+ @locale_creator = locale_creator
72
77
  end
73
78
 
74
79
  private
75
80
  def i18n_string(key, original)
81
+ @locale_creator.add(key, original)
82
+
76
83
  if @add_default
77
84
  if original.to_s[0] == ':'
78
85
  original = original.to_s[1..-1]
@@ -1,3 +1,3 @@
1
1
  class I15R
2
- VERSION = "0.5.3"
2
+ VERSION = "0.5.4"
3
3
  end
@@ -118,7 +118,7 @@ describe I15R do
118
118
  end
119
119
  specify do
120
120
  I15R::PatternMatcher.should_receive(:new)
121
- .with(anything, anything, hash_including(:add_default => true))
121
+ .with(anything, anything, anything, hash_including(:add_default => true))
122
122
  .and_return(patter_matcher)
123
123
  subject.internationalize_file(path)
124
124
  end
@@ -130,7 +130,7 @@ describe I15R do
130
130
  end
131
131
  specify do
132
132
  I15R::PatternMatcher.should_receive(:new)
133
- .with(anything, anything, hash_including(:add_default => false))
133
+ .with(anything, anything, anything, hash_including(:add_default => false))
134
134
  .and_return(patter_matcher)
135
135
  subject.internationalize_file(path)
136
136
  end
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i15r
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Balint Erdi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-21 00:00:00.000000000 Z
11
+ date: 2015-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 10.0.3
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 10.0.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.12.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 2.12.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: guard
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.5.4
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.5.4
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: guard-rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 2.3.1
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 2.3.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rb-fsevent
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.9.1
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.9.1
83
83
  description: The internationalizer. Replaces plain text strings in your views and
@@ -89,8 +89,8 @@ executables:
89
89
  extensions: []
90
90
  extra_rdoc_files: []
91
91
  files:
92
- - .gitignore
93
- - .travis.yml
92
+ - ".gitignore"
93
+ - ".travis.yml"
94
94
  - CHANGELOG.md
95
95
  - CONTRIBUTING.md
96
96
  - Gemfile
@@ -107,6 +107,7 @@ files:
107
107
  - lib/i15r/console_printer.rb
108
108
  - lib/i15r/file_reader.rb
109
109
  - lib/i15r/file_writer.rb
110
+ - lib/i15r/locale_creator.rb
110
111
  - lib/i15r/pattern_matcher.rb
111
112
  - lib/i15r/version.rb
112
113
  - spec/i15r_spec.rb
@@ -127,17 +128,17 @@ require_paths:
127
128
  - lib
128
129
  required_ruby_version: !ruby/object:Gem::Requirement
129
130
  requirements:
130
- - - '>='
131
+ - - ">="
131
132
  - !ruby/object:Gem::Version
132
133
  version: '0'
133
134
  required_rubygems_version: !ruby/object:Gem::Requirement
134
135
  requirements:
135
- - - '>='
136
+ - - ">="
136
137
  - !ruby/object:Gem::Version
137
138
  version: '0'
138
139
  requirements: []
139
140
  rubyforge_project:
140
- rubygems_version: 2.0.14
141
+ rubygems_version: 2.4.6
141
142
  signing_key:
142
143
  specification_version: 4
143
144
  summary: Eases the pain of moving to I18n view templates