helloh 0.1 → 0.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.
- data/bin/helloh +2 -13
- data/lib/helloh.rb +9 -42
- data/lib/helloh/compare.rb +54 -0
- data/lib/helloh/railtie.rb +12 -0
- metadata +6 -4
data/bin/helloh
CHANGED
@@ -11,18 +11,7 @@ require "helloh"
|
|
11
11
|
|
12
12
|
directory = ARGV[0] || "./config/locales"
|
13
13
|
|
14
|
-
helloh = Helloh.new
|
14
|
+
helloh = Helloh::Compare.new
|
15
15
|
helloh.files = Dir.glob(File.join(directory, "*.yml"))
|
16
16
|
helloh.compare!
|
17
|
-
|
18
|
-
status_code = 0
|
19
|
-
|
20
|
-
helloh.results.each_pair do |file, errors|
|
21
|
-
if errors[:missing].any?
|
22
|
-
status_code = 1
|
23
|
-
puts "\nMissing keys in #{file}"
|
24
|
-
puts errors[:missing].map{ |key| "- #{key}" }
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
exit status_code
|
17
|
+
helloh.output_results!
|
data/lib/helloh.rb
CHANGED
@@ -1,48 +1,15 @@
|
|
1
1
|
require "yaml"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
attr_reader :results
|
3
|
+
module Helloh
|
4
|
+
VERSION = "0.2"
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
@files = []
|
10
|
-
end # }}}
|
6
|
+
autoload :Compare, "helloh/compare"
|
7
|
+
autoload :Railtie, "helloh/railtie"
|
11
8
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
files.each do |other_file|
|
17
|
-
next if file == other_file
|
18
|
-
@other_file = File.basename(other_file)
|
19
|
-
@results[@other_file] ||= { :missing => [] }
|
20
|
-
compare_yaml_hash(YAML.load_file(file)[Helloh.lang_from_filename(file)], YAML.load_file(other_file)[Helloh.lang_from_filename(other_file)])
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
end # }}}
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def compare_yaml_hash(content1, content2, context = []) # {{{
|
29
|
-
content1.each do |key, value|
|
30
|
-
|
31
|
-
path = "#{(context+[key]).join(".")}"
|
32
|
-
unless content2.include?(key)
|
33
|
-
@results[@other_file][:missing] << path unless @results[@other_file][:missing].include?(path)
|
34
|
-
next
|
35
|
-
end
|
36
|
-
|
37
|
-
if value.is_a?(Hash)
|
38
|
-
compare_yaml_hash(value, content2[key], (context.dup << key))
|
39
|
-
next
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end # }}}
|
43
|
-
|
44
|
-
def self.lang_from_filename(file) # {{{
|
45
|
-
file.match(/([^\/]+)\.yml$/)[1]
|
46
|
-
end # }}}
|
9
|
+
def self.lang_from_filename(file) # {{{
|
10
|
+
file.match(/([^\/]+)\.yml$/)[1]
|
11
|
+
end # }}}
|
47
12
|
|
48
13
|
end
|
14
|
+
|
15
|
+
require "helloh/railtie" if defined?(Rails)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Helloh
|
2
|
+
class Compare
|
3
|
+
|
4
|
+
attr_accessor :files
|
5
|
+
attr_reader :results
|
6
|
+
|
7
|
+
def initialize # {{{
|
8
|
+
@results = {}
|
9
|
+
@files = []
|
10
|
+
end # }}}
|
11
|
+
|
12
|
+
def compare! # {{{
|
13
|
+
files.each do |file|
|
14
|
+
@file = File.basename(file)
|
15
|
+
|
16
|
+
files.each do |other_file|
|
17
|
+
next if file == other_file
|
18
|
+
@other_file = File.basename(other_file)
|
19
|
+
@results[@other_file] ||= { :missing => [] }
|
20
|
+
compare_yaml_hash(YAML.load_file(file)[Helloh.lang_from_filename(file)], YAML.load_file(other_file)[Helloh.lang_from_filename(other_file)])
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end # }}}
|
25
|
+
|
26
|
+
def output_results! # {{{
|
27
|
+
@results.each_pair do |file, errors|
|
28
|
+
if errors[:missing].any?
|
29
|
+
puts "\nMissing keys in #{file}"
|
30
|
+
puts errors[:missing].map{ |key| "- #{key}" }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end # }}}
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def compare_yaml_hash(content1, content2, context = []) # {{{
|
38
|
+
content1.each do |key, value|
|
39
|
+
|
40
|
+
path = "#{(context+[key]).join(".")}"
|
41
|
+
unless content2.include?(key)
|
42
|
+
@results[@other_file][:missing] << path unless @results[@other_file][:missing].include?(path)
|
43
|
+
next
|
44
|
+
end
|
45
|
+
|
46
|
+
if value.is_a?(Hash)
|
47
|
+
compare_yaml_hash(value, content2[key], (context.dup << key))
|
48
|
+
next
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end # }}}
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: helloh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 2
|
9
|
+
version: "0.2"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "R\xC3\xA9mi Pr\xC3\xA9vost"
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-09-
|
17
|
+
date: 2011-09-04 00:00:00 Z
|
18
18
|
dependencies: []
|
19
19
|
|
20
20
|
description: Helloh compares Rails localization files and looks for missing keys.
|
@@ -26,6 +26,8 @@ extensions: []
|
|
26
26
|
extra_rdoc_files: []
|
27
27
|
|
28
28
|
files:
|
29
|
+
- lib/helloh/compare.rb
|
30
|
+
- lib/helloh/railtie.rb
|
29
31
|
- lib/helloh.rb
|
30
32
|
- README.mkd
|
31
33
|
- LICENSE
|