missing_translations 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9f81e8bb7d51996963ebe802fa63aecaceb883c3
4
+ data.tar.gz: 31c61ff5d0c2ebf917f274763d74075a0e82a1bb
5
+ SHA512:
6
+ metadata.gz: 33de57ef759c7a2f36b21e9935e2c420e91bc85e7dc1de452ac818338840b019d1a1ff10a5a473c0d1be532ea8e8c41d16ba925827f91d522cb6a963c94ff450
7
+ data.tar.gz: 94eed62da756ff1058d4c6acf01c54e230a55f700f608a5914814fcc1abe2d756da8eed1263634829744e66a5d95c7fec3013d1451585cd249bee38f16729d06
@@ -1,12 +1,14 @@
1
- class HashKeysDumper
2
- def self.dump(hash)
3
- hash.map do |k, v|
4
- if v.is_a? Hash
5
- keys = dump(v)
6
- keys.map { |k1| [k, k1].join('.') }
7
- else
8
- k.to_s
9
- end
10
- end.flatten
1
+ module MissingTranslations
2
+ class HashKeysDumper
3
+ def self.dump(hash)
4
+ hash.map do |k, v|
5
+ if v.is_a? Hash
6
+ keys = dump(v)
7
+ keys.map { |k1| [k, k1].join('.') }
8
+ else
9
+ k.to_s
10
+ end
11
+ end.flatten
12
+ end
11
13
  end
12
14
  end
data/lib/rake_task.rb ADDED
@@ -0,0 +1,29 @@
1
+ require 'templates_parser'
2
+ require 'hash_keys_dumper'
3
+ require 'yaml'
4
+
5
+ module MissingTranslations
6
+ class RakeTask
7
+ def missing_keys
8
+ parser.keys - available_keys
9
+ end
10
+
11
+ def search_files
12
+ %w(app/**/*.haml app/**/*.erb app/**/*.slim).freeze
13
+ end
14
+
15
+ private
16
+
17
+ def available_keys
18
+ Dir.glob('config/locales/*.yml').map { |locale| HashKeysDumper.dump(read_yaml(locale)) }.flatten
19
+ end
20
+
21
+ def read_yaml(file)
22
+ YAML.load(File.read(file))
23
+ end
24
+
25
+ def parser
26
+ @parser ||= TemplatesParser.new search_files.map { |mask| Dir.glob(mask) }.inject(:+)
27
+ end
28
+ end
29
+ end
@@ -1,22 +1,14 @@
1
- require 'hash_keys_dumper'
2
- require 'templates_parser'
3
-
4
- namespace :missing_translations do
5
- desc 'Shows I18n translation keys which are missing (according to view parsing)'
6
- task :show => :environment do
7
- parser = TemplatesParser.new Dir.glob('app/**/*.haml') + Dir.glob('app/**/*.erb')
8
- used_keys = parser.keys
9
-
10
- keys = Dir.glob('config/locales/*.yml').map { |locale| HashKeysDumper.dump YAML.load(File.read(locale)) }
11
- available_keys = keys.flatten
12
-
13
- missing_keys = (used_keys - available_keys)
14
-
15
- if missing_keys.any?
16
- puts 'Missing translations'
17
- puts missing_keys
18
- else
19
- puts 'You have no missing translations'
20
- end
1
+ require 'rake_task'
2
+
3
+ desc 'Shows I18n translation keys which are missing (according to view parsing)'
4
+ task :missing_translations do
5
+ rake_task = MissingTranslations::RakeTask.new
6
+ missing_keys = rake_task.missing_keys
7
+
8
+ if missing_keys.any?
9
+ puts 'Missing translations'
10
+ puts missing_keys
11
+ else
12
+ puts 'You have no missing translations'
21
13
  end
22
14
  end
@@ -1,31 +1,37 @@
1
- class TemplatesParser
2
- def initialize(files)
3
- @files = files
4
- end
1
+ module MissingTranslations
2
+ class TemplatesParser
3
+ def initialize(files)
4
+ @files = files
5
+ end
5
6
 
6
- def keys
7
- keys = @files.map do |template|
8
- file = File.basename(template).gsub /^_?(.+?)\..+$/, '\1'
9
- dir = template.split('/')[-2]
10
- context = "#{dir}.#{file}"
7
+ def keys
8
+ keys = @files.map do |template|
9
+ puts "Searching in #{template}"
11
10
 
12
- File.readlines(template).map { |line| line_keys(line, context) }
13
- end
11
+ file = File.basename(template).gsub /^_?(.+?)\..+$/, '\1'
12
+ dir = template.split('/')[-2]
13
+ context = "#{dir}.#{file}"
14
14
 
15
- keys.compact.flatten.compact.uniq
16
- end
15
+ File.readlines(template).map { |line| line_keys(line, context) }
16
+ end
17
17
 
18
- private
18
+ puts
19
19
 
20
- def locale
21
- 'en'.freeze
22
- end
20
+ keys.compact.flatten.compact.uniq
21
+ end
22
+
23
+ private
24
+
25
+ def locale
26
+ 'en'.freeze
27
+ end
23
28
 
24
- def line_keys(line, context)
25
- line.scan(/\W+t(ranslate)?\s*\(?['"]([^#]+?)['"]/i).map do |m|
26
- arg = m[1]
27
- if arg != '.'
28
- arg[0] == '.' ? "#{locale}.#{context}#{arg}" : "#{locale}.#{arg}"
29
+ def line_keys(line, context)
30
+ line.scan(/\W+t(ranslate)?\s*\(?['"]([^#]+?)['"]/i).map do |m|
31
+ arg = m[1]
32
+ if arg != '.'
33
+ arg[0] == '.' ? "#{locale}.#{context}#{arg}" : "#{locale}.#{arg}"
34
+ end
29
35
  end
30
36
  end
31
37
  end
@@ -1,66 +1,18 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
1
  Gem::Specification.new do |s|
7
- s.name = "missing_translations"
8
- s.version = "1.0.0"
2
+ s.name = 'missing_translations'
3
+ s.version = '1.1.0'
9
4
 
10
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Andrey Chernih"]
12
- s.date = "2012-12-04"
13
- s.email = "andrey.chernih@gmail.com"
14
- s.extra_rdoc_files = [
15
- "LICENSE.txt",
16
- "README.md"
17
- ]
18
- s.files = [
19
- ".document",
20
- ".rspec",
21
- "Gemfile",
22
- "Gemfile.lock",
23
- "LICENSE.txt",
24
- "README.md",
25
- "Rakefile",
26
- "VERSION",
27
- "lib/hash_keys_dumper.rb",
28
- "lib/missing_translations.rb",
29
- "lib/railtie.rb",
30
- "lib/tasks/missing_translations.rb",
31
- "lib/templates_parser.rb",
32
- "missing_translations.gemspec",
33
- "spec/fixtures/template.erb",
34
- "spec/fixtures/template.haml",
35
- "spec/lib/hash_keys_dumper_spec.rb",
36
- "spec/spec_helper.rb",
37
- "spec/templates_parser_spec.rb"
38
- ]
39
- s.homepage = "http://github.com/AndreyChernyh/missing_translations"
40
- s.licenses = ["MIT"]
41
- s.require_paths = ["lib"]
42
- s.rubygems_version = "1.8.24"
43
- s.summary = "Show missing I18n keys in Rails applications"
6
+
7
+ s.authors = ['Andrey Chernih']
8
+ s.email = 'andrey.chernih@gmail.com'
44
9
 
45
- if s.respond_to? :specification_version then
46
- s.specification_version = 3
10
+ s.files = %w(missing_translations.gemspec)
11
+ s.files += Dir.glob('lib/**/*.rb')
12
+ s.files += Dir.glob('spec/**/*')
47
13
 
48
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
- s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
50
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
51
- s.add_development_dependency(%q<bundler>, ["~> 1.2.0"])
52
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
53
- else
54
- s.add_dependency(%q<rspec>, ["~> 2.8.0"])
55
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
56
- s.add_dependency(%q<bundler>, ["~> 1.2.0"])
57
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
58
- end
59
- else
60
- s.add_dependency(%q<rspec>, ["~> 2.8.0"])
61
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
62
- s.add_dependency(%q<bundler>, ["~> 1.2.0"])
63
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
64
- end
14
+ s.homepage = 'http://github.com/andreychernih/missing_translations'
15
+ s.licenses = ['Apache 2.0']
16
+ s.require_paths = %w(lib)
17
+ s.summary = 'Show missing I18n keys in Rails applications'
65
18
  end
66
-
@@ -1,28 +1,30 @@
1
1
  require 'spec_helper'
2
2
  require 'hash_keys_dumper'
3
3
 
4
- describe HashKeysDumper do
5
- describe '.dump' do
6
- subject { described_class.dump(hash) }
4
+ module MissingTranslations
5
+ describe HashKeysDumper do
6
+ describe '.dump' do
7
+ subject { described_class.dump(hash) }
7
8
 
8
- context 'leaf element' do
9
- let(:hash) { { key: 'value' } }
10
- it { should == ['key'] }
11
- end
9
+ context 'leaf element' do
10
+ let(:hash) { { key: 'value' } }
11
+ it { should == ['key'] }
12
+ end
12
13
 
13
- context '2-level hash' do
14
- let(:hash) { { level1: { level2: 'value' } } }
15
- it { should == ['level1.level2'] }
16
- end
14
+ context '2-level hash' do
15
+ let(:hash) { { level1: { level2: 'value' } } }
16
+ it { should == ['level1.level2'] }
17
+ end
17
18
 
18
- context '2-level hash with 2 branches' do
19
- let(:hash) { { level1: { level21: 'value1', level22: 'value2' } } }
20
- it { should == ['level1.level21', 'level1.level22'] }
21
- end
19
+ context '2-level hash with 2 branches' do
20
+ let(:hash) { { level1: { level21: 'value1', level22: 'value2' } } }
21
+ it { should == ['level1.level21', 'level1.level22'] }
22
+ end
22
23
 
23
- context '3-level hash with 3 branches' do
24
- let(:hash) { { level1: { level21: 'val', level22: { level31: 'value1', level32: 'value2' } } } }
25
- it { should == ['level1.level21', 'level1.level22.level31', 'level1.level22.level32'] }
24
+ context '3-level hash with 3 branches' do
25
+ let(:hash) { { level1: { level21: 'val', level22: { level31: 'value1', level32: 'value2' } } } }
26
+ it { should == ['level1.level21', 'level1.level22.level31', 'level1.level22.level32'] }
27
+ end
26
28
  end
27
29
  end
28
30
  end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+ require 'rake_task'
3
+
4
+ module MissingTranslations
5
+ describe RakeTask do
6
+ describe '#search_files' do
7
+ subject { described_class.new.search_files }
8
+
9
+ it { should include 'app/**/*.haml' }
10
+ it { should include 'app/**/*.erb' }
11
+ it { should include 'app/**/*.slim' }
12
+ end
13
+
14
+ describe '#missing_keys' do
15
+ let(:available_keys) { %w(key1 key2 key3) }
16
+ let(:used_keys) { %w(key1 key3 key4) }
17
+ let(:parser) { instance_double 'TemplatesParser', keys: used_keys }
18
+ let(:yaml_contents) { 'yaml contents' }
19
+
20
+ it 'returns the difference between used keys and available keys' do
21
+ allow(TemplatesParser).to receive(:new).and_return parser
22
+ allow(HashKeysDumper).to receive(:dump).with(yaml_contents).and_return available_keys
23
+
24
+ allow(Dir).to receive(:glob).and_call_original
25
+ allow(Dir).to receive(:glob).with('config/locales/*.yml').and_return ['config/locales/en.yml']
26
+
27
+ allow(subject).to receive(:read_yaml).with('config/locales/en.yml').and_return yaml_contents
28
+
29
+ expect(subject.missing_keys).to eq %w(key4)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+ require 'templates_parser'
3
+
4
+ module MissingTranslations
5
+ describe TemplatesParser do
6
+ let(:templates) { ['spec/fixtures/template.erb', 'spec/fixtures/template.haml'] }
7
+
8
+ subject do
9
+ silence_stream(STDOUT) do
10
+ described_class.new(templates).keys
11
+ end
12
+ end
13
+
14
+ it { should include 'en.fixtures.template.testing' }
15
+ it { should include 'en.fixtures.template.erb_translation' }
16
+ it { should include 'en.fixtures.template.whatever' }
17
+ it { should include 'en.fixtures.template.with_double_quotes' }
18
+ it { should include 'en.global_scoped' }
19
+ it { should include 'en.long_helper_name' }
20
+ it { should include 'en.multiple_occurences' }
21
+ it { should include 'en.on_the_same_string' }
22
+
23
+ it 'does not includes keys with string interpolation' do
24
+ subject.each { |key| expect(key).not_to include 'interpolation' }
25
+ end
26
+ end
27
+ end
data/spec/spec_helper.rb CHANGED
@@ -6,7 +6,3 @@ require 'missing_translations'
6
6
  # Requires supporting files with custom matchers and macros, etc,
7
7
  # in ./support/ and its subdirectories.
8
8
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
-
10
- RSpec.configure do |config|
11
-
12
- end
@@ -0,0 +1,14 @@
1
+ module SilenceStream
2
+ def silence_stream(stream)
3
+ old_stream = stream.dup
4
+ stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
5
+ stream.sync = true
6
+ yield
7
+ ensure
8
+ stream.reopen(old_stream)
9
+ end
10
+ end
11
+
12
+ RSpec.configure do |config|
13
+ config.include SilenceStream
14
+ end
metadata CHANGED
@@ -1,133 +1,58 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: missing_translations
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.0.0
4
+ version: 1.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Andrey Chernih
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-04 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- prerelease: false
16
- type: :development
17
- name: rspec
18
- requirement: !ruby/object:Gem::Requirement
19
- requirements:
20
- - - ~>
21
- - !ruby/object:Gem::Version
22
- version: 2.8.0
23
- none: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- version: 2.8.0
29
- none: false
30
- - !ruby/object:Gem::Dependency
31
- prerelease: false
32
- type: :development
33
- name: rdoc
34
- requirement: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - ~>
37
- - !ruby/object:Gem::Version
38
- version: '3.12'
39
- none: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - ~>
43
- - !ruby/object:Gem::Version
44
- version: '3.12'
45
- none: false
46
- - !ruby/object:Gem::Dependency
47
- prerelease: false
48
- type: :development
49
- name: bundler
50
- requirement: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ~>
53
- - !ruby/object:Gem::Version
54
- version: 1.2.0
55
- none: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ~>
59
- - !ruby/object:Gem::Version
60
- version: 1.2.0
61
- none: false
62
- - !ruby/object:Gem::Dependency
63
- prerelease: false
64
- type: :development
65
- name: jeweler
66
- requirement: !ruby/object:Gem::Requirement
67
- requirements:
68
- - - ~>
69
- - !ruby/object:Gem::Version
70
- version: 1.8.4
71
- none: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ~>
75
- - !ruby/object:Gem::Version
76
- version: 1.8.4
77
- none: false
11
+ date: 2014-06-29 00:00:00.000000000 Z
12
+ dependencies: []
78
13
  description:
79
14
  email: andrey.chernih@gmail.com
80
15
  executables: []
81
16
  extensions: []
82
- extra_rdoc_files:
83
- - LICENSE.txt
84
- - README.md
17
+ extra_rdoc_files: []
85
18
  files:
86
- - .document
87
- - .rspec
88
- - Gemfile
89
- - Gemfile.lock
90
- - LICENSE.txt
91
- - README.md
92
- - Rakefile
93
- - VERSION
94
19
  - lib/hash_keys_dumper.rb
95
20
  - lib/missing_translations.rb
96
21
  - lib/railtie.rb
22
+ - lib/rake_task.rb
97
23
  - lib/tasks/missing_translations.rb
98
24
  - lib/templates_parser.rb
99
25
  - missing_translations.gemspec
100
26
  - spec/fixtures/template.erb
101
27
  - spec/fixtures/template.haml
102
28
  - spec/lib/hash_keys_dumper_spec.rb
29
+ - spec/lib/rake_task_spec.rb
30
+ - spec/lib/templates_parser_spec.rb
103
31
  - spec/spec_helper.rb
104
- - spec/templates_parser_spec.rb
105
- homepage: http://github.com/AndreyChernyh/missing_translations
32
+ - spec/support/silence_stream.rb
33
+ homepage: http://github.com/andreychernih/missing_translations
106
34
  licenses:
107
- - MIT
35
+ - Apache 2.0
36
+ metadata: {}
108
37
  post_install_message:
109
38
  rdoc_options: []
110
39
  require_paths:
111
40
  - lib
112
41
  required_ruby_version: !ruby/object:Gem::Requirement
113
42
  requirements:
114
- - - ! '>='
43
+ - - ">="
115
44
  - !ruby/object:Gem::Version
116
45
  version: '0'
117
- segments:
118
- - 0
119
- hash: -513714428489032317
120
- none: false
121
46
  required_rubygems_version: !ruby/object:Gem::Requirement
122
47
  requirements:
123
- - - ! '>='
48
+ - - ">="
124
49
  - !ruby/object:Gem::Version
125
50
  version: '0'
126
- none: false
127
51
  requirements: []
128
52
  rubyforge_project:
129
- rubygems_version: 1.8.24
53
+ rubygems_version: 2.2.1
130
54
  signing_key:
131
- specification_version: 3
55
+ specification_version: 4
132
56
  summary: Show missing I18n keys in Rails applications
133
57
  test_files: []
58
+ has_rdoc:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --color
data/Gemfile DELETED
@@ -1,13 +0,0 @@
1
- source "http://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
5
-
6
- # Add dependencies to develop your gem here.
7
- # Include everything needed to run rake, tests, features, etc.
8
- group :development do
9
- gem "rspec", "~> 2.8.0"
10
- gem "rdoc", "~> 3.12"
11
- gem "bundler", "~> 1.2.0"
12
- gem "jeweler", "~> 1.8.4"
13
- end
data/Gemfile.lock DELETED
@@ -1,31 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- diff-lcs (1.1.3)
5
- git (1.2.5)
6
- jeweler (1.8.4)
7
- bundler (~> 1.0)
8
- git (>= 1.2.5)
9
- rake
10
- rdoc
11
- json (1.7.5)
12
- rake (10.0.2)
13
- rdoc (3.12)
14
- json (~> 1.4)
15
- rspec (2.8.0)
16
- rspec-core (~> 2.8.0)
17
- rspec-expectations (~> 2.8.0)
18
- rspec-mocks (~> 2.8.0)
19
- rspec-core (2.8.0)
20
- rspec-expectations (2.8.0)
21
- diff-lcs (~> 1.1.2)
22
- rspec-mocks (2.8.0)
23
-
24
- PLATFORMS
25
- ruby
26
-
27
- DEPENDENCIES
28
- bundler (~> 1.2.0)
29
- jeweler (~> 1.8.4)
30
- rdoc (~> 3.12)
31
- rspec (~> 2.8.0)
data/LICENSE.txt DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2012 Andrey Chernih
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md DELETED
@@ -1,33 +0,0 @@
1
- # missing_translations
2
-
3
- Shows missing I18n keys for Rails 3 application. It parses all view files searching for ```t``` helper invocation. ```HAML``` and ```ERB``` views are supported.
4
-
5
- ## Installation
6
-
7
- Add the following line to your ```Gemfile```:
8
-
9
- ```ruby
10
- gem 'missing_translations'
11
- ```
12
-
13
- ## How to run
14
-
15
- ```
16
- bundle exec rake missing_translations:show
17
- ```
18
-
19
- ## Contributing to missing_translations
20
-
21
- * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
22
- * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
23
- * Fork the project.
24
- * Start a feature/bugfix branch.
25
- * Commit and push until you are happy with your contribution.
26
- * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
27
- * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
28
-
29
- ## Copyright
30
-
31
- Copyright (c) 2012 Andrey Chernih. See LICENSE.txt for
32
- further details.
33
-
data/Rakefile DELETED
@@ -1,49 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "missing_translations"
18
- gem.homepage = "http://github.com/AndreyChernyh/missing_translations"
19
- gem.license = "MIT"
20
- gem.summary = %Q{Show missing I18n keys in Rails applications}
21
- # gem.description = %Q{TODO: longer description of your gem}
22
- gem.email = "andrey.chernih@gmail.com"
23
- gem.authors = ["Andrey Chernih"]
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
27
-
28
- require 'rspec/core'
29
- require 'rspec/core/rake_task'
30
- RSpec::Core::RakeTask.new(:spec) do |spec|
31
- spec.pattern = FileList['spec/**/*_spec.rb']
32
- end
33
-
34
- RSpec::Core::RakeTask.new(:rcov) do |spec|
35
- spec.pattern = 'spec/**/*_spec.rb'
36
- spec.rcov = true
37
- end
38
-
39
- task :default => :spec
40
-
41
- require 'rdoc/task'
42
- Rake::RDocTask.new do |rdoc|
43
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
44
-
45
- rdoc.rdoc_dir = 'rdoc'
46
- rdoc.title = "missing_translations #{version}"
47
- rdoc.rdoc_files.include('README*')
48
- rdoc.rdoc_files.include('lib/**/*.rb')
49
- end
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.0.0
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
- require 'templates_parser'
3
-
4
- describe TemplatesParser do
5
- let(:templates) { ['spec/fixtures/template.erb', 'spec/fixtures/template.haml'] }
6
-
7
- subject { described_class.new templates }
8
-
9
- its(:keys) { should include 'en.fixtures.template.testing' }
10
- its(:keys) { should include 'en.fixtures.template.erb_translation' }
11
- its(:keys) { should include 'en.fixtures.template.whatever' }
12
- its(:keys) { should include 'en.fixtures.template.with_double_quotes' }
13
- its(:keys) { should include 'en.global_scoped' }
14
- its(:keys) { should include 'en.long_helper_name' }
15
- its(:keys) { should include 'en.multiple_occurences' }
16
- its(:keys) { should include 'en.on_the_same_string' }
17
-
18
- it 'does not includes keys with string interpolation' do
19
- subject.keys.each { |key| key.should_not include 'interpolation' }
20
- end
21
- end