i18n_checker 0.4.1 → 0.4.2
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 +4 -4
- data/.rubocop.yml +16 -0
- data/Gemfile.lock +17 -1
- data/i18n-checker.gemspec +9 -7
- data/lib/i18n_checker/cache.rb +4 -4
- data/lib/i18n_checker/detector/locale_text_not_found.rb +9 -9
- data/lib/i18n_checker/detector/text_result.rb +1 -1
- data/lib/i18n_checker/locale/collector/haml.rb +33 -33
- data/lib/i18n_checker/locale/collector/ruby.rb +17 -17
- data/lib/i18n_checker/locale/file.rb +12 -11
- data/lib/i18n_checker/locale/files.rb +1 -1
- data/lib/i18n_checker/locale/texts.rb +1 -2
- data/lib/i18n_checker/locale.rb +4 -4
- data/lib/i18n_checker/locale_text_not_found_checker.rb +4 -4
- data/lib/i18n_checker/rake_task.rb +15 -15
- data/lib/i18n_checker/reporter/default_reporter.rb +2 -2
- data/lib/i18n_checker/reporter/detect_result_reporter.rb +1 -1
- data/lib/i18n_checker/reporter.rb +2 -2
- data/lib/i18n_checker/version.rb +1 -1
- data/lib/i18n_checker.rb +19 -19
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e08756c40c9973e96273b947878ea07a69a3b21a
|
4
|
+
data.tar.gz: d417195a6885d7fb64148d352f938300d1f6ece9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89c3096213692740b547721a0786fa83451c0ee4413ceb74de005d0a5e52fc20f20cda19f2fa5273d99326e49a7e01072443f93ef7b7314472d6162d0d43e197
|
7
|
+
data.tar.gz: 01f3a8b758ae009f4aae289c47e524ffdbed18cdb768733af8bff92c0c94620e6a2f1b0616590b5f5d316d88c2261507f9035fa4f05b89a1834092b910394e76
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
inherit_gem:
|
2
|
+
onkcop:
|
3
|
+
- "config/rubocop.yml"
|
4
|
+
# uncomment if use rails cops
|
5
|
+
# - "config/rails.yml"
|
6
|
+
# uncomment if use rspec cops
|
7
|
+
# - "config/rspec.yml"
|
8
|
+
|
9
|
+
AllCops:
|
10
|
+
TargetRubyVersion: 2.4
|
11
|
+
|
12
|
+
Style/PreferredHashMethods:
|
13
|
+
EnforcedStyle: short
|
14
|
+
|
15
|
+
Style/StringLiterals:
|
16
|
+
EnforcedStyle: single_quotes
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
i18n_checker (0.4.
|
4
|
+
i18n_checker (0.4.2)
|
5
5
|
colorator (~> 1.1.0)
|
6
6
|
haml_parser (~> 0.4)
|
7
7
|
parser
|
@@ -23,8 +23,13 @@ GEM
|
|
23
23
|
haml_parser (0.4.1)
|
24
24
|
hirb (0.7.3)
|
25
25
|
json (2.0.3)
|
26
|
+
onkcop (0.47.1.2)
|
27
|
+
rubocop (~> 0.47.1)
|
28
|
+
rubocop-rspec (>= 1.12.0)
|
26
29
|
parser (2.4.0.0)
|
27
30
|
ast (~> 2.2)
|
31
|
+
powerpack (0.1.1)
|
32
|
+
rainbow (2.2.1)
|
28
33
|
rake (10.5.0)
|
29
34
|
rspec (3.5.0)
|
30
35
|
rspec-core (~> 3.5.0)
|
@@ -39,6 +44,15 @@ GEM
|
|
39
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
40
45
|
rspec-support (~> 3.5.0)
|
41
46
|
rspec-support (3.5.0)
|
47
|
+
rubocop (0.47.1)
|
48
|
+
parser (>= 2.3.3.1, < 3.0)
|
49
|
+
powerpack (~> 0.1)
|
50
|
+
rainbow (>= 1.99.1, < 3.0)
|
51
|
+
ruby-progressbar (~> 1.7)
|
52
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
53
|
+
rubocop-rspec (1.13.0)
|
54
|
+
rubocop (>= 0.42.0)
|
55
|
+
ruby-progressbar (1.8.1)
|
42
56
|
simplecov (0.12.0)
|
43
57
|
docile (~> 1.1.0)
|
44
58
|
json (>= 1.8, < 3)
|
@@ -52,6 +66,7 @@ GEM
|
|
52
66
|
tins (~> 1.0)
|
53
67
|
thor (0.19.4)
|
54
68
|
tins (1.13.2)
|
69
|
+
unicode-display_width (1.1.3)
|
55
70
|
|
56
71
|
PLATFORMS
|
57
72
|
ruby
|
@@ -60,6 +75,7 @@ DEPENDENCIES
|
|
60
75
|
bundler (~> 1.14)
|
61
76
|
coveralls
|
62
77
|
i18n_checker!
|
78
|
+
onkcop
|
63
79
|
rake (~> 10.0)
|
64
80
|
rspec
|
65
81
|
simplecov
|
data/i18n-checker.gemspec
CHANGED
@@ -4,13 +4,14 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'i18n_checker/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'i18n_checker'
|
8
8
|
spec.version = I18nChecker::VERSION
|
9
|
-
spec.
|
10
|
-
spec.
|
11
|
-
spec.
|
12
|
-
spec.
|
13
|
-
spec.
|
9
|
+
spec.licenses = ['MIT']
|
10
|
+
spec.authors = ['holyshared']
|
11
|
+
spec.email = ['holy.shared.design@gmail.com']
|
12
|
+
spec.summary = 'Verification of translation of Ruby source and Haml template'
|
13
|
+
spec.description = 'Verification of translation of Ruby source and Haml template'
|
14
|
+
spec.homepage = 'https://github.com/holyshared/i18n-checker'
|
14
15
|
|
15
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
16
17
|
f.match(%r{^(test|spec|features)/})
|
@@ -21,10 +22,11 @@ Gem::Specification.new do |spec|
|
|
21
22
|
spec.add_dependency 'haml_parser', '~> 0.4'
|
22
23
|
spec.add_dependency 'colorator', '~> 1.1.0'
|
23
24
|
spec.add_dependency 'parser'
|
24
|
-
spec.add_development_dependency 'bundler','~> 1.14'
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.14'
|
25
26
|
spec.add_development_dependency 'rake', '~> 10.0'
|
26
27
|
spec.add_development_dependency 'rspec'
|
27
28
|
spec.add_development_dependency 'simplecov'
|
28
29
|
spec.add_development_dependency 'simplecov-console'
|
29
30
|
spec.add_development_dependency 'coveralls'
|
31
|
+
spec.add_development_dependency 'onkcop'
|
30
32
|
end
|
data/lib/i18n_checker/cache.rb
CHANGED
@@ -17,7 +17,7 @@ module I18nChecker
|
|
17
17
|
|
18
18
|
def read(file)
|
19
19
|
return files[file] if files.key?(file)
|
20
|
-
files[file] = I18nChecker::Cache::File
|
20
|
+
files[file] = I18nChecker::Cache::File.of(file)
|
21
21
|
files[file]
|
22
22
|
end
|
23
23
|
end
|
@@ -27,7 +27,7 @@ module I18nChecker
|
|
27
27
|
|
28
28
|
class << self
|
29
29
|
def of(file)
|
30
|
-
new(file, Lines
|
30
|
+
new(file, Lines.of(::File.read(file)))
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -72,8 +72,8 @@ module I18nChecker
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def [](scope)
|
75
|
-
return lines_of(scope) if scope.
|
76
|
-
return line_of(scope) if scope.
|
75
|
+
return lines_of(scope) if scope.is_a?(Range)
|
76
|
+
return line_of(scope) if scope.is_a?(Integer)
|
77
77
|
end
|
78
78
|
|
79
79
|
def line_of(line_number)
|
@@ -12,16 +12,16 @@ module I18nChecker
|
|
12
12
|
|
13
13
|
private
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
15
|
+
def detect_not_found(locale_text)
|
16
|
+
locale_files = @locale_files.dup
|
17
|
+
locale_files.delete_if { |locale_file| locale_file.include?(locale_text) }
|
18
|
+
locale_files.map do |locale_file|
|
19
|
+
TextResult.new(
|
20
|
+
locale_text: locale_text,
|
21
|
+
locale_file: locale_file
|
22
|
+
)
|
23
|
+
end
|
23
24
|
end
|
24
|
-
end
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -23,39 +23,39 @@ module I18nChecker
|
|
23
23
|
|
24
24
|
private
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
26
|
+
def read_template_file(template_file)
|
27
|
+
file_caches.read(template_file).to_s
|
28
|
+
end
|
29
|
+
|
30
|
+
def collect_locale_texts(ast)
|
31
|
+
locale_texts = []
|
32
|
+
locale_texts << collect_locale_text(ast)
|
33
|
+
return unless ast.respond_to?(:children)
|
34
|
+
locale_texts << ast.children.map { |child| collect_locale_texts(child) }
|
35
|
+
locale_texts.flatten.compact
|
36
|
+
end
|
37
|
+
|
38
|
+
def collect_locale_text(ast)
|
39
|
+
return locale_text_from_script(ast) if ast.is_a?(HamlParser::Ast::Script)
|
40
|
+
return unless ast.respond_to?(:oneline_child)
|
41
|
+
return unless ast.oneline_child.is_a?(HamlParser::Ast::Script)
|
42
|
+
locale_text_from_script(ast.oneline_child)
|
43
|
+
end
|
44
|
+
|
45
|
+
def locale_text_from_script(script_node)
|
46
|
+
return unless translate_script = script_node.script.match(/^t\(\'+(.+)\'+\)$/)
|
47
|
+
|
48
|
+
locale_text = translate_script[1]
|
49
|
+
file_cache = file_caches.read(script_node.filename)
|
50
|
+
column = file_cache[script_node.lineno].start_of(locale_text)
|
51
|
+
|
52
|
+
I18nChecker::Locale::Text.new(
|
53
|
+
file: script_node.filename,
|
54
|
+
line: script_node.lineno,
|
55
|
+
column: column,
|
56
|
+
text: locale_text
|
57
|
+
)
|
58
|
+
end
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -22,23 +22,23 @@ module I18nChecker
|
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
25
|
+
def buffer_of(source_file)
|
26
|
+
source = file_caches.read(source_file).to_s
|
27
|
+
source_buffer = Parser::Source::Buffer.new('(string)')
|
28
|
+
source_buffer.source = source
|
29
|
+
source_buffer
|
30
|
+
end
|
31
|
+
|
32
|
+
def parse_source(source_file)
|
33
|
+
parser = Parser::CurrentRuby.new
|
34
|
+
parser.parse(buffer_of(source_file))
|
35
|
+
end
|
36
|
+
|
37
|
+
def process(source_file)
|
38
|
+
processor = I18nChecker::Locale::TextProcessor.new(file: source_file)
|
39
|
+
processor.process(parse_source(source_file))
|
40
|
+
processor.locale_texts
|
41
|
+
end
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
@@ -9,6 +9,7 @@ module I18nChecker
|
|
9
9
|
def load_yaml(s)
|
10
10
|
new(YAML.load(s))
|
11
11
|
end
|
12
|
+
|
12
13
|
def load_yaml_file(yaml_file)
|
13
14
|
load_yaml(::File.open(yaml_file, &:read))
|
14
15
|
end
|
@@ -26,19 +27,19 @@ module I18nChecker
|
|
26
27
|
|
27
28
|
private
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
30
|
+
def compact_of(values = {}, path = KeyPath.new)
|
31
|
+
result = {}
|
32
|
+
values.each_with_index do |(i, v)|
|
33
|
+
path.move_to(i)
|
34
|
+
if v.is_a?(Hash)
|
35
|
+
result.merge!(compact_of(v, path))
|
36
|
+
else
|
37
|
+
result[path.to_s] = v
|
38
|
+
end
|
39
|
+
path.leave
|
37
40
|
end
|
38
|
-
|
41
|
+
result
|
39
42
|
end
|
40
|
-
result
|
41
|
-
end
|
42
43
|
end
|
43
44
|
end
|
44
45
|
end
|
data/lib/i18n_checker/locale.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require 'i18n_checker/locale/key_path'
|
2
|
+
require 'i18n_checker/locale/file'
|
3
|
+
require 'i18n_checker/locale/files'
|
4
|
+
require 'i18n_checker/locale/collector'
|
5
5
|
|
6
6
|
module I18nChecker
|
7
7
|
module Locale
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require 'i18n_checker/detector/locale_text_not_found'
|
2
|
+
require 'i18n_checker/detector/text_result'
|
3
|
+
require 'i18n_checker/detector/detected_result'
|
4
4
|
|
5
5
|
module I18nChecker
|
6
6
|
class LocaleTextNotFoundChecker
|
@@ -12,7 +12,7 @@ module I18nChecker
|
|
12
12
|
|
13
13
|
def check
|
14
14
|
not_found_detector = I18nChecker::Detector::LocaleTextNotFound.new(@locale_files)
|
15
|
-
not_found_result = @locale_texts.detect(not_found_detector)
|
15
|
+
not_found_result = @locale_texts.detect(not_found_detector)
|
16
16
|
@reporter.report not_found_result
|
17
17
|
yield not_found_result if block_given?
|
18
18
|
end
|
@@ -3,7 +3,7 @@ require 'rake/tasklib'
|
|
3
3
|
require 'i18n_checker/cache'
|
4
4
|
require 'i18n_checker/locale'
|
5
5
|
require 'i18n_checker/reporter'
|
6
|
-
require
|
6
|
+
require 'i18n_checker/locale_text_not_found_checker'
|
7
7
|
|
8
8
|
module I18nChecker
|
9
9
|
class RakeTask < ::Rake::TaskLib
|
@@ -18,7 +18,7 @@ module I18nChecker
|
|
18
18
|
@source_paths = FileList['app/views/*', 'app/controllers/*', 'app/jobs/*', 'app/models/*', 'app/helpers/*']
|
19
19
|
@locale_file_paths = FileList['config/locales/*']
|
20
20
|
@logger = Logger.new(STDOUT)
|
21
|
-
@logger.formatter = proc {|
|
21
|
+
@logger.formatter = proc { |_severity, _datetime, _progname, message|
|
22
22
|
"#{message}\n"
|
23
23
|
}
|
24
24
|
@reporter = I18nChecker::Reporter::DefaultReporter.new(logger: logger)
|
@@ -28,20 +28,20 @@ module I18nChecker
|
|
28
28
|
|
29
29
|
private
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
def define
|
32
|
+
desc 'Check language files and templates.'
|
33
|
+
task(name) { run_task }
|
34
|
+
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
36
|
+
def run_task
|
37
|
+
checker = I18nChecker::LocaleTextNotFoundChecker.new(
|
38
|
+
reporter: reporter,
|
39
|
+
source_paths: source_paths,
|
40
|
+
locale_file_paths: locale_file_paths
|
41
|
+
)
|
42
|
+
checker.check do |result|
|
43
|
+
exit 1 unless result.empty?
|
44
|
+
end
|
44
45
|
end
|
45
|
-
end
|
46
46
|
end
|
47
47
|
end
|
@@ -3,7 +3,7 @@ require 'colorator'
|
|
3
3
|
module I18nChecker
|
4
4
|
module Reporter
|
5
5
|
class DefaultReporter < DetectResultReporter
|
6
|
-
CHECK_COMPLETED = 'Translation text checking is complete.'
|
6
|
+
CHECK_COMPLETED = 'Translation text checking is complete.'.freeze
|
7
7
|
|
8
8
|
def report(result)
|
9
9
|
return passed if result.empty?
|
@@ -19,7 +19,7 @@ module I18nChecker
|
|
19
19
|
logger.info CHECK_COMPLETED.red
|
20
20
|
logger.info "There are settings where translated text can not be found\n".red
|
21
21
|
result.locale_texts.each do |locale_text|
|
22
|
-
logger.info
|
22
|
+
logger.info locale_text.file.cyan.to_s
|
23
23
|
logger.info " line:#{locale_text.line}, column:#{locale_text.column} - #{locale_text.lang}.#{locale_text.text}"
|
24
24
|
end
|
25
25
|
end
|
data/lib/i18n_checker/version.rb
CHANGED
data/lib/i18n_checker.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
19
|
-
require
|
1
|
+
require 'i18n_checker/version'
|
2
|
+
require 'i18n_checker/rake_task'
|
3
|
+
require 'i18n_checker/collectible'
|
4
|
+
require 'i18n_checker/cache'
|
5
|
+
require 'i18n_checker/locale'
|
6
|
+
require 'i18n_checker/locale/text_processor'
|
7
|
+
require 'i18n_checker/locale/collector/haml'
|
8
|
+
require 'i18n_checker/locale/collector/ruby'
|
9
|
+
require 'i18n_checker/locale/text'
|
10
|
+
require 'i18n_checker/locale/texts'
|
11
|
+
require 'i18n_checker/locale/key_path'
|
12
|
+
require 'i18n_checker/locale/file'
|
13
|
+
require 'i18n_checker/locale/files'
|
14
|
+
require 'i18n_checker/detector/locale_text_not_found'
|
15
|
+
require 'i18n_checker/detector/text_result'
|
16
|
+
require 'i18n_checker/detector/detected_result'
|
17
|
+
require 'i18n_checker/reporter/detect_result_reporter'
|
18
|
+
require 'i18n_checker/reporter/default_reporter'
|
19
|
+
require 'i18n_checker/locale_text_not_found_checker'
|
20
20
|
|
21
21
|
module I18nChecker
|
22
22
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n_checker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- holyshared
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: onkcop
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
139
153
|
description: Verification of translation of Ruby source and Haml template
|
140
154
|
email:
|
141
155
|
- holy.shared.design@gmail.com
|
@@ -147,6 +161,7 @@ files:
|
|
147
161
|
- ".editorconfig"
|
148
162
|
- ".gitignore"
|
149
163
|
- ".rspec"
|
164
|
+
- ".rubocop.yml"
|
150
165
|
- ".travis.yml"
|
151
166
|
- Gemfile
|
152
167
|
- Gemfile.lock
|
@@ -178,7 +193,8 @@ files:
|
|
178
193
|
- lib/i18n_checker/version.rb
|
179
194
|
- screenshot.png
|
180
195
|
homepage: https://github.com/holyshared/i18n-checker
|
181
|
-
licenses:
|
196
|
+
licenses:
|
197
|
+
- MIT
|
182
198
|
metadata: {}
|
183
199
|
post_install_message:
|
184
200
|
rdoc_options: []
|