i18n-tasks 0.2.12 → 0.2.13

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: 2c0656504d782b473cf5f6af625b9c9192ab1a3b
4
- data.tar.gz: 96add6aaaf63bf5403d24aa1824e95bf9b42037d
3
+ metadata.gz: 49fa662d252e8f812eedc6b79d0ecdf4e55b6979
4
+ data.tar.gz: 97deaf64038b50772fa22ea2c997f8997550fe3f
5
5
  SHA512:
6
- metadata.gz: 7ef87ed54318dc731fe2122a76cf7a5bd3b6c4fd17ccbaf2b74ee6cdc7b8eaea506f89d93ebbbcc14ede756c4e7040bc22ce98021f68584d451180f6829213ac
7
- data.tar.gz: dfd8dc48f5684027dd474cd460dac25018697cd29c50d08511022f4ea430133ede4e5aaca577f0dc90cde6b3e3140c2fce56036a2d1c065be76211de23a3feb1
6
+ metadata.gz: 0edb92a5f181c337826b617ca8d4d2d6d7d8a7299d6ba1fd7580eb2bf304e6789f69c842dcb8ddfbab57aa44b267e6bbf9d0852be18fb1fc33a683e8bb93dd9f
7
+ data.tar.gz: 576b66877ab863f4c06f2dffb351d11968e7ea73593c87390108227ba319b3618317f5c63b84697f94d057c4276b76771d20bc92018c9d03eddfdba26a43f347
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
1
  source 'https://rubygems.org'
2
-
2
+ #gem 'byebug'
3
3
  # Specify your gem's dependencies in i18n-tasks.gemspec
4
4
  gemspec
5
5
 
data/README.md CHANGED
@@ -81,21 +81,11 @@ Simply add to Gemfile:
81
81
  gem 'i18n-tasks', '~> 0.2.10'
82
82
  ```
83
83
 
84
- If you do not use Rails, you will also need to require the tasks in your Rakefile:
84
+ If not using Rails, require the tasks in Rakefile:
85
85
 
86
86
  ```ruby
87
87
  # Rakefile
88
88
  load 'tasks/i18n-tasks.rake'
89
-
90
- # to prepare the environment add dependency to i18n:setup:
91
- namespace :i18n do
92
- task :setup => 'environment'
93
- end
94
-
95
- task :environment do
96
- # set `I18n.avaliable_locales` and `I18.default_locale`, etc
97
- # ...
98
- end
99
89
  ```
100
90
 
101
91
  ## Configuration
@@ -171,6 +161,18 @@ search:
171
161
  pattern: "\\bt[( ]\\s*(:?\".+?\"|:?'.+?'|:\\w+)"
172
162
  ```
173
163
 
164
+ To configure paths for relative key resolution:
165
+
166
+ ```yaml
167
+ # directories containing relative keys
168
+ relative_roots:
169
+ # default:
170
+ - app/views
171
+ # add a custom one:
172
+ - app/views-mobile
173
+ ```
174
+
175
+
174
176
  ### Fine-tuning
175
177
 
176
178
  Tasks may incorrectly report framework i18n keys as missing, also some patterns may not be detected.
@@ -38,6 +38,7 @@ module I18n::Tasks::Configuration
38
38
  search_config = (config[:search] || {}).with_indifferent_access
39
39
  search_config.tap do |conf|
40
40
  conf[:paths] = %w(app/) if conf[:paths].blank?
41
+ conf[:relative_roots] = %w( app/views ) if conf[:relative_roots].blank?
41
42
  conf[:include] = Array(conf[:include]) if conf[:include].present?
42
43
  conf[:exclude] = Array(conf[:exclude])
43
44
  conf[:pattern] = conf[:pattern].present? ? Regexp.new(conf[:pattern]) : DEFAULT_PATTERN
@@ -45,6 +46,14 @@ module I18n::Tasks::Configuration
45
46
  end
46
47
  end
47
48
 
49
+ def relative_roots
50
+ @config_sections[:relative_roots] ||= config[:relative_roots].presence || %w(app/views)
51
+ end
52
+
53
+ def relative_roots=(paths)
54
+ @config_sections[:relative_roots] = paths
55
+ end
56
+
48
57
  # translation config
49
58
  # @return [Hash{String => String,Hash,Array}]
50
59
  def translation_config
@@ -54,4 +63,4 @@ module I18n::Tasks::Configuration
54
63
  conf
55
64
  end
56
65
  end
57
- end
66
+ end
@@ -1,7 +1,7 @@
1
1
  module I18n::Tasks::FillTasks
2
2
  def add_missing!(locale = base_locale, placeholder = nil)
3
3
  normalize_store! locale
4
- set_blank_values! locale, locale == base_locale do |keys|
4
+ set_blank_values! locale do |keys|
5
5
  keys.map { |key|
6
6
  placeholder || key.split('.').last.to_s.humanize
7
7
  }
@@ -22,8 +22,13 @@ module I18n::Tasks::FillTasks
22
22
  locales = non_base_locales(locales)
23
23
  normalize_store! locales
24
24
  locales.each do |locale|
25
- set_blank_values! locale do |blank_keys|
26
- google_translate blank_keys.map { |k| t(k) }, to: locale, from: base_locale
25
+ blank_keys = find_blank_keys(locale).select { |k|
26
+ tr = t(k)
27
+ tr.present? && tr.is_a?(String)
28
+ }
29
+ if blank_keys.present?
30
+ translated = blank_keys.zip google_translate(blank_keys.map { |k| t(k) }, to: locale, from: base_locale)
31
+ data[locale] = data[locale].deep_merge(list_to_tree translated)
27
32
  end
28
33
  end
29
34
  end
@@ -41,14 +46,18 @@ module I18n::Tasks::FillTasks
41
46
 
42
47
  # fill blank values with values from passed block
43
48
  # @param [String] locale
44
- # @param [true, false] include_missing Include keys present in source but missing from base locale
45
- def set_blank_values!(locale = base_locale, include_missing = (locale == base_locale), &fill_with)
49
+ def set_blank_values!(locale = base_locale, &fill_with)
50
+ blank_keys = find_blank_keys locale
51
+ list = blank_keys.zip fill_with.call(blank_keys)
52
+ data[locale] = data[locale].deep_merge(list_to_tree(list))
53
+ end
54
+
55
+
56
+ def find_blank_keys(locale, include_missing = (locale == base_locale))
46
57
  blank_keys = traverse_map_if(data[base_locale]) { |key, value|
47
58
  key if !key_value?(key, locale) && !ignore_key?(key, :missing)
48
59
  }
49
60
  blank_keys += keys_not_in_base if include_missing
50
-
51
- list = blank_keys.uniq.zip fill_with.call(blank_keys)
52
- data[locale] = data[locale].deep_merge(list_to_tree(list))
61
+ blank_keys.uniq
53
62
  end
54
- end
63
+ end
@@ -3,11 +3,13 @@ module I18n::Tasks::RelativeKeys
3
3
  # @param key [String] relative i18n key (starts with a .)
4
4
  # @param path [String] path to the file containing the key
5
5
  # @return [String] absolute version of the key
6
- def absolutize_key(key, path)
6
+ def absolutize_key(key, path, roots = relative_roots)
7
7
  # normalized path
8
- path = Pathname.new(File.expand_path path).relative_path_from(Pathname.new(Dir.pwd)).to_s
8
+ path = File.expand_path path
9
+ (path_root = roots.map { |path| File.expand_path path }.sort.reverse.detect { |root| path.start_with?(root + '/') }) or
10
+ raise "No relative key root detected for \"#{key}\" at #{path}. Please set relative_roots in config/i18n-tasks.yml (currently set to #{relative_roots})"
9
11
  # key prefix based on path
10
- prefix = path.gsub(%r(app/views/|(\.[^/]+)*$), '').tr('/', '.').gsub(%r(\._), '.')
12
+ prefix = path.gsub(%r(#{path_root}/|(\.[^/]+)*$), '').tr('/', '.').gsub(%r(\._), '.')
11
13
  "#{prefix}#{key}"
12
14
  end
13
- end
15
+ end
@@ -22,7 +22,7 @@ module I18n
22
22
  base_value = ''
23
23
  else
24
24
  locale = magenta rec[:locale]
25
- base_value = cyan rec[:base_value].to_s.strip || ''
25
+ base_value = cyan rec[:base_value].to_s.strip
26
26
  end
27
27
  [{value: locale, alignment: :center},
28
28
  {value: glyph, alignment: :center},
@@ -1,5 +1,5 @@
1
1
  module I18n
2
2
  module Tasks
3
- VERSION = '0.2.12'
3
+ VERSION = '0.2.13'
4
4
  end
5
5
  end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ describe 'Relative keys' do
3
+ let(:task) { I18n::Tasks::BaseTask.new }
4
+
5
+ describe 'absolutize_key' do
6
+
7
+ context 'default settings' do
8
+ it 'works' do
9
+ task.absolutize_key('.title', 'app/views/movies/show.html.slim').should == 'movies.show.title'
10
+ end
11
+ end
12
+
13
+ context 'custom roots' do
14
+ it 'works' do
15
+ task.relative_roots = %w(app/views-mobile)
16
+ task.absolutize_key('.title', 'app/views-mobile/movies/show.html.slim').should == 'movies.show.title'
17
+ end
18
+ end
19
+
20
+ end
21
+
22
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18n-tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.12
4
+ version: 0.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - glebm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-10 00:00:00.000000000 Z
11
+ date: 2013-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -227,6 +227,7 @@ files:
227
227
  - spec/i18n_tasks_spec.rb
228
228
  - spec/key_pattern_matching_spec.rb
229
229
  - spec/readme_spec.rb
230
+ - spec/relative_keys_spec.rb
230
231
  - spec/source_keys_spec.rb
231
232
  - spec/spec_helper.rb
232
233
  - spec/support/fixtures.rb
@@ -270,6 +271,7 @@ test_files:
270
271
  - spec/i18n_tasks_spec.rb
271
272
  - spec/key_pattern_matching_spec.rb
272
273
  - spec/readme_spec.rb
274
+ - spec/relative_keys_spec.rb
273
275
  - spec/source_keys_spec.rb
274
276
  - spec/spec_helper.rb
275
277
  - spec/support/fixtures.rb