i18n-spec 0.0.6 → 0.0.7

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/README.md CHANGED
@@ -31,6 +31,12 @@ Even better, you can run all of these tests for every file in a directory like s
31
31
 
32
32
  ## Testing the validity of your translation data
33
33
 
34
+ To test that your locale file is a subset of the default locale file
35
+
36
+ describe "config/locales/fr.yml" do
37
+ it { should be_a_subset_of 'config/locales/en.yml' }
38
+ end
39
+
34
40
  If you need to test that all translations have been completed :
35
41
 
36
42
  describe "config/locales/fr.yml" do
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
data/i18n-spec.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{i18n-spec}
8
- s.version = "0.0.6"
8
+ s.version = "0.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{Christopher Dell}]
12
- s.date = %q{2011-12-14}
12
+ s.date = %q{2011-12-15}
13
13
  s.description = %q{Includes a number of rspec matchers to make specing your locale files easy peasy.}
14
14
  s.email = %q{chris@tigrish.com}
15
15
  s.extra_rdoc_files = [
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  "i18n-spec.gemspec",
31
31
  "lib/i18n-spec.rb",
32
32
  "lib/i18n-spec/matchers/be_a_complete_translation_of_matcher.rb",
33
+ "lib/i18n-spec/matchers/be_a_subset_of_matcher.rb",
33
34
  "lib/i18n-spec/matchers/be_named_like_top_level_namespace_matcher.rb",
34
35
  "lib/i18n-spec/matchers/be_parseable_matcher.rb",
35
36
  "lib/i18n-spec/matchers/have_one_top_level_namespace_matcher.rb",
@@ -41,6 +42,7 @@ Gem::Specification.new do |s|
41
42
  "spec/fixtures/fr.yml",
42
43
  "spec/fixtures/invalid_pluralization_keys.yml",
43
44
  "spec/fixtures/multiple_top_levels.yml",
45
+ "spec/fixtures/not_subset.yml",
44
46
  "spec/fixtures/unparseable.yml",
45
47
  "spec/lib/i18n-spec/matchers_spec.rb",
46
48
  "spec/spec_helper.rb"
@@ -0,0 +1,14 @@
1
+ RSpec::Matchers.define :be_a_subset_of do |expected|
2
+ match do |actual|
3
+ @locale_file = I18nSpec::LocaleFile.new(actual)
4
+ @default_locale = I18nSpec::LocaleFile.new(expected)
5
+ @superset = @locale_file.flattened_translations.keys.reject do |key|
6
+ @default_locale.flattened_translations.keys.include?(key)
7
+ end
8
+ @superset.empty?
9
+ end
10
+
11
+ failure_message_for_should do |player|
12
+ "expected #{@locale_file.filepath} to not include :\n- " << @superset.join("\n- ")#{@superset.join"
13
+ end
14
+ end
@@ -2,10 +2,20 @@ module I18nSpec
2
2
  class LocaleFile
3
3
  PLURALIZATION_KEYS = %w{zero one two few many other}
4
4
 
5
+ attr_accessor :filepath
6
+
5
7
  def initialize(filepath)
6
8
  @filepath = filepath
7
9
  end
8
10
 
11
+ def translations
12
+ @translations ||= Psych.load_file(@filepath)
13
+ end
14
+
15
+ def flattened_translations
16
+ @flattened_translations ||= flatten_tree(translations.values.first)
17
+ end
18
+
9
19
  def is_parseable?
10
20
  begin
11
21
  Psych.load_file(@filepath)
@@ -39,10 +49,6 @@ module I18nSpec
39
49
 
40
50
  protected
41
51
 
42
- def translations
43
- @translations ||= Psych.load_file(@filepath)
44
- end
45
-
46
52
  def flatten_tree(data, prefix = '', result = {})
47
53
  data.each do |key, value|
48
54
  current_prefix = prefix.empty? ? key.to_s : "#{prefix}.#{key}"
@@ -0,0 +1,9 @@
1
+ en:
2
+ dogs:
3
+ zero: 'no dogs'
4
+ one: 'one dog'
5
+ other: '%{count} dogs'
6
+ itteh:
7
+ bitteh:
8
+ ceiling:
9
+ doggeh: 'is asking for trouble'
@@ -9,14 +9,17 @@ describe "Invalid files" do
9
9
  it { 'spec/fixtures/invalid_pluralization_keys.yml'.should_not have_valid_pluralization_keys }
10
10
  it { 'spec/fixtures/multiple_top_levels.yml'.should_not have_one_top_level_namespace }
11
11
  it { 'spec/fixtures/multiple_top_levels.yml'.should_not be_named_like_top_level_namespace }
12
+ it { 'spec/fixtures/not_subset.yml'.should_not be_a_subset_of 'spec/fixtures/en.yml' }
12
13
  end
13
14
 
14
15
  describe "Translated files" do
15
16
  describe 'spec/fixtures/fr.yml' do
17
+ it { should be_a_subset_of 'spec/fixtures/en.yml' }
16
18
  it { should be_a_complete_translation_of 'spec/fixtures/en.yml' }
17
19
  end
18
20
 
19
21
  describe 'spec/fixtures/es.yml' do
22
+ it { should be_a_subset_of 'spec/fixtures/en.yml' }
20
23
  it { should_not be_a_complete_translation_of 'spec/fixtures/en.yml'}
21
24
  end
22
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18n-spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-14 00:00:00.000000000Z
12
+ date: 2011-12-15 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70103894863080 !ruby/object:Gem::Requirement
16
+ requirement: &70124619322000 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.3.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70103894863080
24
+ version_requirements: *70124619322000
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &70103894862600 !ruby/object:Gem::Requirement
27
+ requirement: &70124619321520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.10
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70103894862600
35
+ version_requirements: *70124619321520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &70103894879260 !ruby/object:Gem::Requirement
38
+ requirement: &70124619321040 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.6.4
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70103894879260
46
+ version_requirements: *70124619321040
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rcov
49
- requirement: &70103894878780 !ruby/object:Gem::Requirement
49
+ requirement: &70124619320560 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70103894878780
57
+ version_requirements: *70124619320560
58
58
  description: Includes a number of rspec matchers to make specing your locale files
59
59
  easy peasy.
60
60
  email: chris@tigrish.com
@@ -77,6 +77,7 @@ files:
77
77
  - i18n-spec.gemspec
78
78
  - lib/i18n-spec.rb
79
79
  - lib/i18n-spec/matchers/be_a_complete_translation_of_matcher.rb
80
+ - lib/i18n-spec/matchers/be_a_subset_of_matcher.rb
80
81
  - lib/i18n-spec/matchers/be_named_like_top_level_namespace_matcher.rb
81
82
  - lib/i18n-spec/matchers/be_parseable_matcher.rb
82
83
  - lib/i18n-spec/matchers/have_one_top_level_namespace_matcher.rb
@@ -88,6 +89,7 @@ files:
88
89
  - spec/fixtures/fr.yml
89
90
  - spec/fixtures/invalid_pluralization_keys.yml
90
91
  - spec/fixtures/multiple_top_levels.yml
92
+ - spec/fixtures/not_subset.yml
91
93
  - spec/fixtures/unparseable.yml
92
94
  - spec/lib/i18n-spec/matchers_spec.rb
93
95
  - spec/spec_helper.rb
@@ -106,7 +108,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
108
  version: '0'
107
109
  segments:
108
110
  - 0
109
- hash: -1546623889044819893
111
+ hash: 284635574898228492
110
112
  required_rubygems_version: !ruby/object:Gem::Requirement
111
113
  none: false
112
114
  requirements: