i18n-tasks 0.8.7 → 0.9.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -5
- data/CHANGES.md +3 -3
- data/Gemfile +1 -1
- data/README.md +4 -4
- data/bin/i18n-tasks +0 -1
- data/config/locales/en.yml +103 -102
- data/config/locales/ru.yml +1 -1
- data/i18n-tasks.gemspec +1 -2
- data/lib/i18n/tasks.rb +0 -1
- data/lib/i18n/tasks/base_task.rb +0 -1
- data/lib/i18n/tasks/cli.rb +1 -1
- data/lib/i18n/tasks/command/commander.rb +0 -1
- data/lib/i18n/tasks/command/commands/missing.rb +3 -15
- data/lib/i18n/tasks/command/commands/usages.rb +5 -6
- data/lib/i18n/tasks/command/option_parsers/locale.rb +1 -8
- data/lib/i18n/tasks/command_error.rb +5 -1
- data/lib/i18n/tasks/commands.rb +0 -1
- data/lib/i18n/tasks/configuration.rb +1 -9
- data/lib/i18n/tasks/console_context.rb +2 -2
- data/lib/i18n/tasks/data.rb +0 -1
- data/lib/i18n/tasks/data/adapter/json_adapter.rb +0 -1
- data/lib/i18n/tasks/data/adapter/yaml_adapter.rb +0 -1
- data/lib/i18n/tasks/data/file_formats.rb +0 -1
- data/lib/i18n/tasks/data/file_system.rb +0 -1
- data/lib/i18n/tasks/data/file_system_base.rb +0 -1
- data/lib/i18n/tasks/data/router/conservative_router.rb +0 -1
- data/lib/i18n/tasks/data/router/pattern_router.rb +0 -1
- data/lib/i18n/tasks/data/tree/node.rb +6 -7
- data/lib/i18n/tasks/data/tree/nodes.rb +0 -1
- data/lib/i18n/tasks/data/tree/siblings.rb +29 -10
- data/lib/i18n/tasks/data/tree/traversal.rb +0 -3
- data/lib/i18n/tasks/google_translation.rb +0 -1
- data/lib/i18n/tasks/ignore_keys.rb +0 -1
- data/lib/i18n/tasks/key_pattern_matching.rb +0 -1
- data/lib/i18n/tasks/logging.rb +0 -1
- data/lib/i18n/tasks/missing_keys.rb +0 -1
- data/lib/i18n/tasks/plural_keys.rb +0 -1
- data/lib/i18n/tasks/reports/base.rb +1 -2
- data/lib/i18n/tasks/reports/spreadsheet.rb +0 -1
- data/lib/i18n/tasks/reports/terminal.rb +41 -17
- data/lib/i18n/tasks/scanners/files/caching_file_finder.rb +32 -0
- data/lib/i18n/tasks/scanners/files/caching_file_finder_provider.rb +24 -0
- data/lib/i18n/tasks/scanners/files/caching_file_reader.rb +27 -0
- data/lib/i18n/tasks/scanners/files/file_finder.rb +61 -0
- data/lib/i18n/tasks/scanners/files/file_reader.rb +18 -0
- data/lib/i18n/tasks/scanners/key_occurrences.rb +35 -0
- data/lib/i18n/tasks/scanners/occurence.rb +50 -0
- data/lib/i18n/tasks/scanners/pattern_scanner.rb +97 -38
- data/lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb +2 -3
- data/lib/i18n/tasks/scanners/relative_keys.rb +3 -4
- data/lib/i18n/tasks/scanners/scanner.rb +15 -0
- data/lib/i18n/tasks/scanners/scanner_multiplexer.rb +43 -0
- data/lib/i18n/tasks/unused_keys.rb +4 -5
- data/lib/i18n/tasks/used_keys.rb +76 -23
- data/lib/i18n/tasks/version.rb +1 -2
- data/spec/conservative_router_spec.rb +0 -1
- data/spec/file_system_data_spec.rb +0 -1
- data/spec/fixtures/app/controllers/events_controller.rb +1 -2
- data/spec/google_translate_spec.rb +0 -1
- data/spec/i18n_tasks_spec.rb +4 -15
- data/spec/key_pattern_matching_spec.rb +0 -1
- data/spec/locale_tree/siblings_spec.rb +0 -1
- data/spec/pattern_scanner_spec.rb +34 -36
- data/spec/plural_keys_spec.rb +0 -1
- data/spec/readme_spec.rb +0 -1
- data/spec/relative_keys_spec.rb +15 -10
- data/spec/scanners/files/caching_file_finder_provider_spec.rb +18 -0
- data/spec/scanners/files/caching_file_finder_spec.rb +39 -0
- data/spec/scanners/files/caching_file_reader_spec.rb +18 -0
- data/spec/scanners/files/file_finder_spec.rb +52 -0
- data/spec/scanners/files/file_reader_spec.rb +15 -0
- data/spec/scanners/scanner_multiplexer_spec.rb +26 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/capture_std.rb +0 -1
- data/spec/support/fixtures.rb +0 -1
- data/spec/support/i18n_tasks_output_matcher.rb +0 -1
- data/spec/support/key_pattern_matcher.rb +0 -1
- data/spec/support/keys_and_occurrences.rb +27 -0
- data/spec/support/test_codebase.rb +0 -1
- data/spec/support/trees.rb +1 -7
- data/spec/used_keys_spec.rb +15 -16
- data/templates/config/i18n-tasks.yml +9 -2
- metadata +29 -9
- data/lib/i18n/tasks/scanners/base_scanner.rb +0 -149
- data/spec/commands/missing_commands_spec.rb +0 -23
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'i18n/tasks/scanners/files/caching_file_finder'
|
3
|
+
|
4
|
+
RSpec.describe 'CachingFileFinder' do
|
5
|
+
let(:test_files) {
|
6
|
+
%w(a/a/a/a.txt a/a/a.txt a/a/b.txt a/b/a.txt a/b/b.txt a.txt)
|
7
|
+
}
|
8
|
+
describe '#find_files' do
|
9
|
+
it 'accesses the filesystem only once' do
|
10
|
+
begin
|
11
|
+
TestCodebase.setup(test_files.inject({}) { |h, f| h[f] = ''; h })
|
12
|
+
TestCodebase.in_test_app_dir {
|
13
|
+
finder = I18n::Tasks::Scanners::Files::CachingFileFinder.new
|
14
|
+
expect(finder.find_files).to eq test_files.map { |f| File.join('.', f) }
|
15
|
+
TestCodebase.teardown
|
16
|
+
expect(finder.find_files).to eq test_files.map { |f| File.join('.', f) }
|
17
|
+
}
|
18
|
+
ensure
|
19
|
+
TestCodebase.teardown
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#traverse_files' do
|
25
|
+
it 'accesses the filesystem only once' do
|
26
|
+
begin
|
27
|
+
TestCodebase.setup(test_files.inject({}) { |h, f| h[f] = ''; h })
|
28
|
+
TestCodebase.in_test_app_dir {
|
29
|
+
finder = I18n::Tasks::Scanners::Files::CachingFileFinder.new
|
30
|
+
expect(finder.traverse_files { |f| f }).to eq test_files.map { |f| File.join('.', f) }
|
31
|
+
TestCodebase.teardown
|
32
|
+
expect(finder.traverse_files { |f| f }).to eq test_files.map { |f| File.join('.', f) }
|
33
|
+
}
|
34
|
+
ensure
|
35
|
+
TestCodebase.teardown
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'i18n/tasks/scanners/files/caching_file_reader'
|
3
|
+
|
4
|
+
RSpec.describe 'CachingFileReader' do
|
5
|
+
describe '#read_file' do
|
6
|
+
around do |ex|
|
7
|
+
TestCodebase.setup('test.txt' => 'test')
|
8
|
+
TestCodebase.in_test_app_dir { ex.call }
|
9
|
+
TestCodebase.teardown
|
10
|
+
end
|
11
|
+
it 'reads the file only once' do
|
12
|
+
caching_file_reader = I18n::Tasks::Scanners::Files::CachingFileReader.new
|
13
|
+
expect(caching_file_reader.read_file('test.txt')).to eq('test')
|
14
|
+
File.write('test.txt', 'something else')
|
15
|
+
expect(caching_file_reader.read_file('test.txt')).to eq('test')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'i18n/tasks/scanners/files/file_finder'
|
3
|
+
|
4
|
+
RSpec.describe 'FileFinder' do
|
5
|
+
let(:test_files) {
|
6
|
+
%w(a/a/a/a.txt a/a/a.txt a/a/b.txt a/b/a.txt a/b/b.txt a.txt)
|
7
|
+
}
|
8
|
+
around do |ex|
|
9
|
+
TestCodebase.setup(test_files.inject({}) { |h, f| h[f] = ''; h })
|
10
|
+
TestCodebase.in_test_app_dir { ex.call }
|
11
|
+
TestCodebase.teardown
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#find_files' do
|
15
|
+
it 'finds all the files in the current directory with default options' do
|
16
|
+
finder = I18n::Tasks::Scanners::Files::FileFinder.new
|
17
|
+
expect(finder.find_files).to eq test_files.map { |f| File.join('.', f) }
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'finds only the files in paths' do
|
21
|
+
finder = I18n::Tasks::Scanners::Files::FileFinder.new(paths: %w(a/a a/b/a.txt))
|
22
|
+
expect(finder.find_files).to eq test_files.select { |f| f.start_with?('a/a/') || f == 'a/b/a.txt' }
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'find only the files specified by the inclusion patterns' do
|
26
|
+
finder = I18n::Tasks::Scanners::Files::FileFinder.new(
|
27
|
+
paths: %w(a), include: %w(a/a/**))
|
28
|
+
expect(finder.find_files).to eq test_files.select { |f| f.start_with?('a/a/') }
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'finds only the files not specified by the exclusion patterns' do
|
32
|
+
finder = I18n::Tasks::Scanners::Files::FileFinder.new(
|
33
|
+
exclude: %w(./a/a/**))
|
34
|
+
expect(finder.find_files).to eq test_files.select { |f| !f.start_with?('a/a/') }.map { |f| File.join('.', f) }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#traverse_files' do
|
39
|
+
let(:finder) { I18n::Tasks::Scanners::Files::FileFinder.new }
|
40
|
+
|
41
|
+
it 'yields all the files' do
|
42
|
+
actual = []
|
43
|
+
finder.traverse_files { |f| actual << f }
|
44
|
+
expect(actual).to eq(test_files.map { |f| File.join('.', f) })
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'returns the results from the block' do
|
48
|
+
i = 0
|
49
|
+
expect(finder.traverse_files { |_f| i += 1 }).to eq((1..test_files.length).to_a)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'i18n/tasks/scanners/files/file_reader'
|
3
|
+
|
4
|
+
RSpec.describe 'FileReader' do
|
5
|
+
describe '#read_file' do
|
6
|
+
around do |ex|
|
7
|
+
TestCodebase.setup('test.txt' => 'test')
|
8
|
+
TestCodebase.in_test_app_dir { ex.call }
|
9
|
+
TestCodebase.teardown
|
10
|
+
end
|
11
|
+
it 'reads the file' do
|
12
|
+
expect(I18n::Tasks::Scanners::Files::FileReader.new.read_file('test.txt')).to eq('test')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'i18n/tasks/scanners/scanner_multiplexer'
|
3
|
+
|
4
|
+
RSpec.describe 'ScannerMultiplexer' do
|
5
|
+
describe '#keys' do
|
6
|
+
let(:key_a) { make_key_occurrences 'key.a', [{path: 'a'}] }
|
7
|
+
let(:key_b_1) { make_key_occurrences 'key.b', [{path: 'b1'}] }
|
8
|
+
let(:key_b_2) { make_key_occurrences 'key.b', [{path: 'b2'}] }
|
9
|
+
let(:key_c) { make_key_occurrences 'key.c', [{path: 'c'}] }
|
10
|
+
|
11
|
+
scanner_mock = Struct.new(:keys)
|
12
|
+
let(:scanner_one) { scanner_mock.new([key_a, key_b_1]) }
|
13
|
+
let(:scanner_two) { scanner_mock.new([key_b_2, key_c]) }
|
14
|
+
|
15
|
+
let(:expected_key_occurrences) {
|
16
|
+
[key_a,
|
17
|
+
I18n::Tasks::Scanners::KeyOccurrences.new(key: 'key.b', occurrences: key_b_1.occurrences + key_b_2.occurrences),
|
18
|
+
key_c]
|
19
|
+
}
|
20
|
+
|
21
|
+
it 'returns the merged results' do
|
22
|
+
scanner_multiplexer = I18n::Tasks::Scanners::ScannerMultiplexer.new(scanners: [scanner_one, scanner_two])
|
23
|
+
expect(scanner_multiplexer.keys).to eq expected_key_occurrences
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
ENV['RAILS_ENV'] = ENV['RAKE_ENV'] = 'test'
|
3
2
|
|
4
3
|
if ENV['TRAVIS'] && !(defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx')
|
@@ -21,4 +20,5 @@ RSpec.configure do |config|
|
|
21
20
|
config.include FixturesSupport
|
22
21
|
config.include CaptureStd
|
23
22
|
config.include Trees
|
23
|
+
config.include KeysAndOccurrences
|
24
24
|
end
|
data/spec/support/capture_std.rb
CHANGED
data/spec/support/fixtures.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
module KeysAndOccurrences
|
2
|
+
def make_occurrence(path: '', line: '', pos: 1, line_pos: 1, line_num: 1)
|
3
|
+
::I18n::Tasks::Scanners::Occurrence.new(path: path, line: line, pos: pos, line_pos: line_pos, line_num: line_num)
|
4
|
+
end
|
5
|
+
|
6
|
+
def make_occurrences(occurrences)
|
7
|
+
occurrences.map { |attr| make_occurrence(attr) }
|
8
|
+
end
|
9
|
+
|
10
|
+
def make_key_occurrences(key, occurrences)
|
11
|
+
::I18n::Tasks::Scanners::KeyOccurrences.new(key: key, occurrences: make_occurrences(occurrences))
|
12
|
+
end
|
13
|
+
|
14
|
+
# adjust position to account for \r on Windows
|
15
|
+
def adjust_occurrences(data)
|
16
|
+
if Gem.win_platform?
|
17
|
+
data = data.dup
|
18
|
+
data[:occurrences].map! { |occ| adjust_occurrence occ }
|
19
|
+
end
|
20
|
+
data
|
21
|
+
end
|
22
|
+
|
23
|
+
# adjust position to account for \r on Windows
|
24
|
+
def adjust_occurrence(occurrence)
|
25
|
+
occurrence.dup.tap { |o| o.instance_variable_set(:@pos, o.pos + o.line_num - 1) }
|
26
|
+
end
|
27
|
+
end
|
data/spec/support/trees.rb
CHANGED
@@ -1,13 +1,7 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
module Trees
|
3
2
|
def expect_node_key_data(node, key, data)
|
4
3
|
expect(node.full_key(root: false)).to eq key
|
5
|
-
|
6
|
-
# adjust position to account for \r on Windows
|
7
|
-
data = data.dup
|
8
|
-
data[:source_occurrences].map! { |occ| occ.dup.tap { |o| o[:pos] += o[:line_num] - 1 } }
|
9
|
-
end
|
10
|
-
expect(node.data).to eq data
|
4
|
+
expect(node.data).to eq adjust_occurrences(data)
|
11
5
|
end
|
12
6
|
|
13
7
|
def build_tree(hash)
|
data/spec/used_keys_spec.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require 'spec_helper'
|
3
2
|
|
4
3
|
RSpec.describe 'UsedKeys' do
|
@@ -19,34 +18,34 @@ h1 = t 'b'
|
|
19
18
|
TestCodebase.teardown
|
20
19
|
end
|
21
20
|
|
22
|
-
it '#used_keys
|
23
|
-
used = task.used_tree
|
21
|
+
it '#used_keys' do
|
22
|
+
used = task.used_tree
|
24
23
|
leaves = used.leaves.to_a
|
25
24
|
expect(leaves.size).to eq 2
|
26
25
|
expect_node_key_data(
|
27
26
|
leaves[0],
|
28
27
|
'a',
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
occurrences: make_occurrences(
|
29
|
+
[{path: 'a.html.slim', pos: 6, line_num: 1, line_pos: 7, line: "div = t 'a'"},
|
30
|
+
{path: 'a.html.slim', pos: 18, line_num: 2, line_pos: 7, line: " p = t 'a'"}])
|
32
31
|
)
|
33
32
|
|
34
33
|
expect_node_key_data(
|
35
34
|
leaves[1],
|
36
35
|
'b',
|
37
|
-
|
38
|
-
|
36
|
+
occurrences: make_occurrences(
|
37
|
+
[{path: 'a.html.slim', pos: 29, line_num: 3, line_pos: 6, line: "h1 = t 'b'"}])
|
39
38
|
)
|
40
39
|
end
|
41
40
|
|
42
|
-
it '#used_keys(
|
43
|
-
used_keys = task.used_tree(key_filter: 'b*'
|
41
|
+
it '#used_keys(key_filter: "b*")' do
|
42
|
+
used_keys = task.used_tree(key_filter: 'b*')
|
44
43
|
expect(used_keys.size).to eq 1
|
45
44
|
expect_node_key_data(
|
46
45
|
used_keys.leaves.first,
|
47
46
|
'b',
|
48
|
-
|
49
|
-
|
47
|
+
occurrences: make_occurrences(
|
48
|
+
[{path: 'a.html.slim', pos: 29, line_num: 3, line_pos: 6, line: "h1 = t 'b'"}])
|
50
49
|
)
|
51
50
|
end
|
52
51
|
|
@@ -61,14 +60,14 @@ h1 = t 'b'
|
|
61
60
|
end
|
62
61
|
|
63
62
|
it '#used_keys(source_occurences: true)' do
|
64
|
-
used_keys = task.used_tree
|
63
|
+
used_keys = task.used_tree
|
65
64
|
expect(used_keys.size).to eq 1
|
66
65
|
expect_node_key_data(
|
67
66
|
used_keys.leaves.first,
|
68
67
|
'a',
|
69
|
-
|
70
|
-
|
71
|
-
|
68
|
+
occurrences: make_occurrences(
|
69
|
+
[{path: 'a.html.haml', pos: 15, line_num: 1, line_pos: 16, line: "#first{ title: t('a') }"},
|
70
|
+
{path: 'a.html.haml', pos: 40, line_num: 2, line_pos: 17, line: ".second{ title: t('a') }"}])
|
72
71
|
)
|
73
72
|
end
|
74
73
|
end
|
@@ -70,8 +70,15 @@ search:
|
|
70
70
|
## If specified, this settings takes priority over `exclude`, but `exclude` still applies.
|
71
71
|
# include: ["*.rb", "*.html.slim"]
|
72
72
|
|
73
|
-
##
|
74
|
-
#
|
73
|
+
## If `strict` is `false`, guess usages such as t("categories.#{category}.title"). The default is `true`.
|
74
|
+
# strict: true
|
75
|
+
|
76
|
+
## Multiple scanners can be used. Their results are merged.
|
77
|
+
## The options specified above are passed down to each scanner. Per-scanner options can be specified as well.
|
78
|
+
## An array of [scanner class name, scanner options]:
|
79
|
+
# scanners:
|
80
|
+
# - - I18n::Tasks::Scanners::PatternWithScopeScanner
|
81
|
+
# - {}
|
75
82
|
|
76
83
|
## Google Translate
|
77
84
|
# translation:
|
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.
|
4
|
+
version: 0.9.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- glebm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erubis
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 4.0.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 4.0.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: easy_translate
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -253,10 +253,18 @@ files:
|
|
253
253
|
- lib/i18n/tasks/reports/base.rb
|
254
254
|
- lib/i18n/tasks/reports/spreadsheet.rb
|
255
255
|
- lib/i18n/tasks/reports/terminal.rb
|
256
|
-
- lib/i18n/tasks/scanners/
|
256
|
+
- lib/i18n/tasks/scanners/files/caching_file_finder.rb
|
257
|
+
- lib/i18n/tasks/scanners/files/caching_file_finder_provider.rb
|
258
|
+
- lib/i18n/tasks/scanners/files/caching_file_reader.rb
|
259
|
+
- lib/i18n/tasks/scanners/files/file_finder.rb
|
260
|
+
- lib/i18n/tasks/scanners/files/file_reader.rb
|
261
|
+
- lib/i18n/tasks/scanners/key_occurrences.rb
|
262
|
+
- lib/i18n/tasks/scanners/occurence.rb
|
257
263
|
- lib/i18n/tasks/scanners/pattern_scanner.rb
|
258
264
|
- lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb
|
259
265
|
- lib/i18n/tasks/scanners/relative_keys.rb
|
266
|
+
- lib/i18n/tasks/scanners/scanner.rb
|
267
|
+
- lib/i18n/tasks/scanners/scanner_multiplexer.rb
|
260
268
|
- lib/i18n/tasks/split_key.rb
|
261
269
|
- lib/i18n/tasks/stats.rb
|
262
270
|
- lib/i18n/tasks/string_interpolation.rb
|
@@ -264,7 +272,6 @@ files:
|
|
264
272
|
- lib/i18n/tasks/used_keys.rb
|
265
273
|
- lib/i18n/tasks/version.rb
|
266
274
|
- spec/commands/data_commands_spec.rb
|
267
|
-
- spec/commands/missing_commands_spec.rb
|
268
275
|
- spec/commands/tree_commands_spec.rb
|
269
276
|
- spec/conservative_router_spec.rb
|
270
277
|
- spec/file_system_data_spec.rb
|
@@ -285,12 +292,19 @@ files:
|
|
285
292
|
- spec/plural_keys_spec.rb
|
286
293
|
- spec/readme_spec.rb
|
287
294
|
- spec/relative_keys_spec.rb
|
295
|
+
- spec/scanners/files/caching_file_finder_provider_spec.rb
|
296
|
+
- spec/scanners/files/caching_file_finder_spec.rb
|
297
|
+
- spec/scanners/files/caching_file_reader_spec.rb
|
298
|
+
- spec/scanners/files/file_finder_spec.rb
|
299
|
+
- spec/scanners/files/file_reader_spec.rb
|
300
|
+
- spec/scanners/scanner_multiplexer_spec.rb
|
288
301
|
- spec/spec_helper.rb
|
289
302
|
- spec/split_key_spec.rb
|
290
303
|
- spec/support/capture_std.rb
|
291
304
|
- spec/support/fixtures.rb
|
292
305
|
- spec/support/i18n_tasks_output_matcher.rb
|
293
306
|
- spec/support/key_pattern_matcher.rb
|
307
|
+
- spec/support/keys_and_occurrences.rb
|
294
308
|
- spec/support/test_codebase.rb
|
295
309
|
- spec/support/trees.rb
|
296
310
|
- spec/used_keys_spec.rb
|
@@ -316,9 +330,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
316
330
|
version: '0'
|
317
331
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
318
332
|
requirements:
|
319
|
-
- - "
|
333
|
+
- - ">"
|
320
334
|
- !ruby/object:Gem::Version
|
321
|
-
version:
|
335
|
+
version: 1.3.1
|
322
336
|
requirements: []
|
323
337
|
rubyforge_project:
|
324
338
|
rubygems_version: 2.4.5
|
@@ -327,7 +341,6 @@ specification_version: 4
|
|
327
341
|
summary: Manage localization and translation with the awesome power of static analysis
|
328
342
|
test_files:
|
329
343
|
- spec/commands/data_commands_spec.rb
|
330
|
-
- spec/commands/missing_commands_spec.rb
|
331
344
|
- spec/commands/tree_commands_spec.rb
|
332
345
|
- spec/conservative_router_spec.rb
|
333
346
|
- spec/file_system_data_spec.rb
|
@@ -348,12 +361,19 @@ test_files:
|
|
348
361
|
- spec/plural_keys_spec.rb
|
349
362
|
- spec/readme_spec.rb
|
350
363
|
- spec/relative_keys_spec.rb
|
364
|
+
- spec/scanners/files/caching_file_finder_provider_spec.rb
|
365
|
+
- spec/scanners/files/caching_file_finder_spec.rb
|
366
|
+
- spec/scanners/files/caching_file_reader_spec.rb
|
367
|
+
- spec/scanners/files/file_finder_spec.rb
|
368
|
+
- spec/scanners/files/file_reader_spec.rb
|
369
|
+
- spec/scanners/scanner_multiplexer_spec.rb
|
351
370
|
- spec/spec_helper.rb
|
352
371
|
- spec/split_key_spec.rb
|
353
372
|
- spec/support/capture_std.rb
|
354
373
|
- spec/support/fixtures.rb
|
355
374
|
- spec/support/i18n_tasks_output_matcher.rb
|
356
375
|
- spec/support/key_pattern_matcher.rb
|
376
|
+
- spec/support/keys_and_occurrences.rb
|
357
377
|
- spec/support/test_codebase.rb
|
358
378
|
- spec/support/trees.rb
|
359
379
|
- spec/used_keys_spec.rb
|