rails-i18nterface 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +22 -0
  3. data/README.md +109 -0
  4. data/Rakefile +23 -0
  5. data/app/assets/javascripts/rails_i18nterface/application.js +8 -0
  6. data/app/assets/javascripts/rails_i18nterface/base.js +62 -0
  7. data/app/assets/javascripts/rails_i18nterface/ender.js +3260 -0
  8. data/app/assets/javascripts/rails_i18nterface/ender.min.js +45 -0
  9. data/app/assets/stylesheets/rails_i18nterface/application.css +450 -0
  10. data/app/controllers/rails_i18nterface/application_controller.rb +4 -0
  11. data/app/controllers/rails_i18nterface/translate_controller.rb +255 -0
  12. data/app/helpers/rails_i18nterface/application_helper.rb +4 -0
  13. data/app/helpers/rails_i18nterface/translate_helper.rb +74 -0
  14. data/app/models/translation.rb +4 -0
  15. data/app/views/layouts/rails_i18nterface/translate.html.erb +13 -0
  16. data/app/views/rails_i18nterface/translate/_namespaces.html.erb +1 -0
  17. data/app/views/rails_i18nterface/translate/_pagination.html.erb +18 -0
  18. data/app/views/rails_i18nterface/translate/index.html.erb +132 -0
  19. data/config/routes.rb +7 -0
  20. data/db/migrate/20110921112044_create_translations.rb +18 -0
  21. data/lib/rails-i18nterface.rb +8 -0
  22. data/lib/rails-i18nterface/engine.rb +7 -0
  23. data/lib/rails-i18nterface/file.rb +35 -0
  24. data/lib/rails-i18nterface/keys.rb +192 -0
  25. data/lib/rails-i18nterface/log.rb +35 -0
  26. data/lib/rails-i18nterface/storage.rb +29 -0
  27. data/lib/rails-i18nterface/version.rb +3 -0
  28. data/lib/tasks/rails-i18nterface.rake +4 -0
  29. data/spec/controllers/translate_controller_spec.rb +135 -0
  30. data/spec/internal/app/assets/javascripts/application.js +2 -0
  31. data/spec/internal/app/assets/stylesheets/application.css +3 -0
  32. data/spec/internal/app/controllers/application_controller.rb +4 -0
  33. data/spec/internal/app/models/article.rb +11 -0
  34. data/spec/internal/app/views/application/index.html.erb +5 -0
  35. data/spec/internal/app/views/categories/category.erb +1 -0
  36. data/spec/internal/app/views/categories/category.html +1 -0
  37. data/spec/internal/app/views/categories/category.html.erb +1 -0
  38. data/spec/internal/app/views/categories/category.rhtml +5 -0
  39. data/spec/internal/config/database.yml +3 -0
  40. data/spec/internal/config/routes.rb +4 -0
  41. data/spec/internal/db/combustion_test.sqlite +0 -0
  42. data/spec/internal/db/schema.rb +3 -0
  43. data/spec/internal/log/test.log +521 -0
  44. data/spec/internal/public/favicon.ico +0 -0
  45. data/spec/lib/file_spec.rb +53 -0
  46. data/spec/lib/keys_spec.rb +179 -0
  47. data/spec/lib/log_spec.rb +46 -0
  48. data/spec/lib/storage_spec.rb +33 -0
  49. data/spec/requests/search_spec.rb +62 -0
  50. data/spec/spec_helper.rb +37 -0
  51. metadata +200 -0
File without changes
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe RailsI18nterface::File do
4
+ describe "write" do
5
+ before(:each) do
6
+ @file = RailsI18nterface::File.new(file_path)
7
+ end
8
+
9
+ after(:each) do
10
+ FileUtils.rm(file_path)
11
+ end
12
+
13
+ it "writes all I18n messages for a locale to YAML file" do
14
+ @file.write(translations)
15
+ @file.read.should == RailsI18nterface::File.deep_stringify_keys(translations)
16
+ end
17
+
18
+ def translations
19
+ {
20
+ :en => {
21
+ :article => {
22
+ :title => "One Article"
23
+ },
24
+ :category => "Category"
25
+ }
26
+ }
27
+ end
28
+ end
29
+
30
+ describe "deep_stringify_keys" do
31
+ it "should convert all keys in a hash to strings" do
32
+ RailsI18nterface::File.deep_stringify_keys({
33
+ :en => {
34
+ :article => {
35
+ :title => "One Article"
36
+ },
37
+ :category => "Category"
38
+ }
39
+ }).should == {
40
+ "en" => {
41
+ "article" => {
42
+ "title" => "One Article"
43
+ },
44
+ "category" => "Category"
45
+ }
46
+ }
47
+ end
48
+ end
49
+
50
+ def file_path
51
+ File.join(File.dirname(__FILE__), "files", "en.yml")
52
+ end
53
+ end
@@ -0,0 +1,179 @@
1
+ require 'spec_helper'
2
+
3
+ describe RailsI18nterface::Keys do
4
+ before(:each) do
5
+ #I18n.stub!(:default_locale).and_return(:en)
6
+ #RailsI18nterface::Storage.stub!(:root_dir).and_return(i18n_files_dir)
7
+ @keys = RailsI18nterface::Keys.new
8
+ end
9
+
10
+ describe "to_a" do
11
+ it "extracts keys from I18n lookups in .rb, .html.erb, and .rhtml files" do
12
+ @keys.to_a.map(&:to_s).sort.should == ['article.key1', 'article.key2', 'article.key3', 'article.key4', 'article.key5',
13
+ 'category_erb.key1', 'category_html_erb.key1', 'category_rhtml.key1', 'js.alert']
14
+ end
15
+ end
16
+
17
+ describe "to_hash" do
18
+ it "return a hash with I18n keys and file lists" do
19
+ @keys.to_hash[:'article.key3'].should == ["app/models/article.rb"]
20
+ end
21
+ end
22
+
23
+ describe "i18n_keys" do
24
+ before(:each) do
25
+ I18n.backend.send(:init_translations) unless I18n.backend.initialized?
26
+ end
27
+
28
+ it "should return all keys in the I18n backend translations hash" do
29
+ I18n.backend.should_receive(:translations).and_return(translations)
30
+ @keys.i18n_keys(:en).should == ['articles.new.page_title', 'categories.flash.created', 'empty', 'home.about']
31
+ end
32
+
33
+ describe "untranslated_keys" do
34
+ before(:each) do
35
+ I18n.backend.stub!(:translations).and_return(translations)
36
+ end
37
+
38
+ it "should return a hash with keys with missing translations in each locale" do
39
+ @keys.untranslated_keys.should == {
40
+ :sv => ['articles.new.page_title', 'categories.flash.created', 'empty'],
41
+ :no => ["articles.new.page_title", "categories.flash.created", "empty", "home.about"]
42
+ }
43
+ end
44
+ end
45
+
46
+ describe "missing_keys" do
47
+ before(:each) do
48
+ @file_path = File.join(i18n_files_dir, "config", "locales", "en.yml")
49
+ RailsI18nterface::File.new(@file_path).write({
50
+ :en => {
51
+ :home => {
52
+ :page_title => false,
53
+ :intro => {
54
+ :one => "intro one",
55
+ :other => "intro other"
56
+ }
57
+ }
58
+ }
59
+ })
60
+ end
61
+
62
+ after(:each) do
63
+ FileUtils.rm(@file_path)
64
+ end
65
+
66
+ it "should return a hash with keys that are not in the locale file" do
67
+ @keys.stub!(:files).and_return({
68
+ :'home.page_title' => "app/views/home/index.rhtml",
69
+ :'home.intro' => 'app/views/home/index.rhtml',
70
+ :'home.signup' => "app/views/home/_signup.rhtml",
71
+ :'about.index.page_title' => "app/views/about/index.rhtml"
72
+ })
73
+ @keys.missing_keys.should == {
74
+ :'home.signup' => "app/views/home/_signup.rhtml",
75
+ :'about.index.page_title' => "app/views/about/index.rhtml"
76
+ }
77
+ end
78
+ end
79
+
80
+ describe "contains_key?" do
81
+ it "works" do
82
+ hash = {
83
+ :foo => {
84
+ :bar => {
85
+ :baz => false
86
+ }
87
+ }
88
+ }
89
+ RailsI18nterface::Keys.contains_key?(hash, "").should be_false
90
+ RailsI18nterface::Keys.contains_key?(hash, "foo").should be_true
91
+ RailsI18nterface::Keys.contains_key?(hash, "foo.bar").should be_true
92
+ RailsI18nterface::Keys.contains_key?(hash, "foo.bar.baz").should be_true
93
+ RailsI18nterface::Keys.contains_key?(hash, :"foo.bar.baz").should be_true
94
+ RailsI18nterface::Keys.contains_key?(hash, "foo.bar.baz.bla").should be_false
95
+ end
96
+ end
97
+
98
+ describe "translated_locales" do
99
+ before(:each) do
100
+ I18n.stub!(:default_locale).and_return(:en)
101
+ I18n.stub!(:available_locales).and_return([:sv, :no, :en, :root])
102
+ end
103
+
104
+ it "returns all avaiable except :root and the default" do
105
+ RailsI18nterface::Keys.translated_locales.should == [:sv, :no]
106
+ end
107
+ end
108
+
109
+ describe "to_deep_hash" do
110
+ it "convert shallow hash with dot separated keys to deep hash" do
111
+ RailsI18nterface::Keys.to_deep_hash(shallow_hash).should == deep_hash
112
+ end
113
+ end
114
+
115
+ describe "to_shallow_hash" do
116
+ it "converts a deep hash to a shallow one" do
117
+ RailsI18nterface::Keys.to_shallow_hash(deep_hash).should == shallow_hash
118
+ end
119
+ end
120
+
121
+ ##########################################################################
122
+ #
123
+ # Helper Methods
124
+ #
125
+ ##########################################################################
126
+
127
+ def translations
128
+ {
129
+ :en => {
130
+ :home => {
131
+ :about => "This site is about making money"
132
+ },
133
+ :articles => {
134
+ :new => {
135
+ :page_title => "New Article"
136
+ }
137
+ },
138
+ :categories => {
139
+ :flash => {
140
+ :created => "Category created"
141
+ }
142
+ },
143
+ :empty => nil
144
+ },
145
+ :sv => {
146
+ :home => {
147
+ :about => false
148
+ }
149
+ }
150
+ }
151
+ end
152
+ end
153
+
154
+ def shallow_hash
155
+ {
156
+ 'pressrelease.label.one' => "Pressmeddelande",
157
+ 'pressrelease.label.other' => "Pressmeddelanden",
158
+ 'article' => "Artikel",
159
+ 'category' => ''
160
+ }
161
+ end
162
+
163
+ def deep_hash
164
+ {
165
+ :pressrelease => {
166
+ :label => {
167
+ :one => "Pressmeddelande",
168
+ :other => "Pressmeddelanden"
169
+ }
170
+ },
171
+ :article => "Artikel",
172
+ :category => ''
173
+ }
174
+ end
175
+
176
+ def i18n_files_dir
177
+ File.expand_path(File.join("..", "..", "..", "spec", "internal"), __FILE__)
178
+ end
179
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe RailsI18nterface::Log do
4
+ describe "write_to_file" do
5
+ before(:each) do
6
+ I18n.locale = :sv
7
+ I18n.backend.store_translations(:sv, from_texts)
8
+ keys = RailsI18nterface::Keys.new
9
+ @log = RailsI18nterface::Log.new(:sv, :en, RailsI18nterface::Keys.to_shallow_hash(from_texts).keys)
10
+ @log.stub!(:file_path).and_return(file_path)
11
+ FileUtils.rm_f file_path
12
+ end
13
+
14
+ after(:each) do
15
+ FileUtils.rm_f file_path
16
+ end
17
+
18
+ it "writes new log file with from texts" do
19
+ File.exists?(file_path).should be_false
20
+ @log.write_to_file
21
+ File.exists?(file_path).should be_true
22
+ RailsI18nterface::File.new(file_path).read.should == RailsI18nterface::File.deep_stringify_keys(from_texts)
23
+ end
24
+
25
+ it "merges from texts with current texts in log file and re-writes the log file" do
26
+ @log.write_to_file
27
+ I18n.backend.store_translations(:sv, {:category => "Kategori ny"})
28
+ @log.keys = ['category']
29
+ @log.write_to_file
30
+ RailsI18nterface::File.new(file_path).read['category'].should == "Kategori ny"
31
+ end
32
+
33
+ def file_path
34
+ File.join(File.dirname(__FILE__), "files", "from_sv_to_en.yml")
35
+ end
36
+
37
+ def from_texts
38
+ {
39
+ :article => {
40
+ :title => "En artikel"
41
+ },
42
+ :category => "Kategori"
43
+ }
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe RailsI18nterface::Storage do
4
+ describe "write_to_file" do
5
+ before(:each) do
6
+ @storage = RailsI18nterface::Storage.new(:en)
7
+ end
8
+
9
+ it "writes all I18n messages for a locale to YAML file" do
10
+ I18n.backend.should_receive(:translations).and_return(translations)
11
+ @storage.stub!(:file_path).and_return(file_path)
12
+ file = mock(:file)
13
+ file.should_receive(:write).with(translations)
14
+ RailsI18nterface::File.should_receive(:new).with(file_path).and_return(file)
15
+ @storage.write_to_file
16
+ end
17
+
18
+ def file_path
19
+ File.join(File.dirname(__FILE__), "files", "en.yml")
20
+ end
21
+
22
+ def translations
23
+ {
24
+ :en => {
25
+ :article => {
26
+ :title => "One Article"
27
+ },
28
+ :category => "Category"
29
+ }
30
+ }
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'searching' do
4
+
5
+ describe 'keys' do
6
+
7
+ context 'using contains' do
8
+
9
+ it 'finds the correct keys' do
10
+ visit '/translate'
11
+ select 'Key contains', from: 'key_type'
12
+ fill_in 'key_pattern', with: 'ey2'
13
+ click_button 'Search'
14
+
15
+ page.should have_content 'key2'
16
+ end
17
+
18
+ end
19
+
20
+ context 'using starts with' do
21
+ it 'finds the correct keys' do
22
+ visit '/translate'
23
+ select 'Key starts with', from: 'key_type'
24
+ fill_in 'key_pattern', with: 'article.k'
25
+ click_button 'Search'
26
+
27
+ page.should have_content 'article.key2'
28
+ end
29
+ end
30
+ end
31
+
32
+ describe 'values' do
33
+
34
+ context 'using contains' do
35
+
36
+ it 'finds the correct values' do
37
+ visit '/translate'
38
+ select 'contains', from: 'text_type'
39
+ fill_in 'text_pattern', with: '1 year'
40
+ click_button 'Search'
41
+
42
+ page.should have_content 'over 1 year'
43
+ end
44
+
45
+ end
46
+
47
+ context 'using equals' do
48
+
49
+ it 'finds the correct values' do
50
+ visit '/translate'
51
+ select 'equals', from: 'text_type'
52
+ fill_in 'text_pattern', with: 'over 1 year'
53
+ click_button 'Search'
54
+
55
+ page.should have_content 'over 1 year'
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+
62
+ end
@@ -0,0 +1,37 @@
1
+ ENV["RAILS_ENV"] ||= 'test'
2
+ $:<<File.expand_path("../../lib",__FILE__)
3
+
4
+ require 'rubygems'
5
+ require 'bundler'
6
+ require 'combustion'
7
+
8
+ Bundler.require :default, :test
9
+
10
+ require 'capybara/rspec'
11
+
12
+ Combustion.initialize! :active_record, :action_controller, :action_view, :sprockets
13
+
14
+ require 'rspec/rails'
15
+ require 'rspec/autorun'
16
+
17
+ require 'capybara/rails'
18
+ require 'rails-i18nterface'
19
+
20
+ new_root = File.expand_path(File.join("..", "internal"), __FILE__)
21
+
22
+ RSpec.configure do |config|
23
+ config.mock_with :rspec
24
+ config.use_transactional_fixtures = true
25
+ config.include Capybara::DSL, example_group: { file_path: /\bspec\/request\// }
26
+ config.include RailsI18nterface::Engine.routes.url_helpers
27
+ config.before(:each) do
28
+ RailsI18nterface::Storage.stub!(:root_dir).and_return(new_root)
29
+ RailsI18nterface::Keys.stub(:i18n_keys).and_return(:en)
30
+ I18n.stub!(:default_locale).and_return(:en)
31
+ I18n.stub!(:available_locales).and_return([:sv, :no, :en, :root])
32
+ end
33
+ end
34
+
35
+ # improve the performance of the specs suite by not logging anything
36
+ # see http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/
37
+ Rails.logger.level = 4
metadata ADDED
@@ -0,0 +1,200 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails-i18nterface
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Mose
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: combustion
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 0.4.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.4.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.13.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 2.13.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 2.13.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 2.13.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: capybara
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: A rails 3.1/4 engine adding an interface for translating and writing
98
+ translation files.
99
+ email:
100
+ - mose@mose.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - app/helpers/rails_i18nterface/application_helper.rb
106
+ - app/helpers/rails_i18nterface/translate_helper.rb
107
+ - app/models/translation.rb
108
+ - app/views/layouts/rails_i18nterface/translate.html.erb
109
+ - app/views/rails_i18nterface/translate/index.html.erb
110
+ - app/views/rails_i18nterface/translate/_pagination.html.erb
111
+ - app/views/rails_i18nterface/translate/_namespaces.html.erb
112
+ - app/assets/stylesheets/rails_i18nterface/application.css
113
+ - app/assets/javascripts/rails_i18nterface/application.js
114
+ - app/assets/javascripts/rails_i18nterface/ender.min.js
115
+ - app/assets/javascripts/rails_i18nterface/ender.js
116
+ - app/assets/javascripts/rails_i18nterface/base.js
117
+ - app/controllers/rails_i18nterface/application_controller.rb
118
+ - app/controllers/rails_i18nterface/translate_controller.rb
119
+ - config/routes.rb
120
+ - db/migrate/20110921112044_create_translations.rb
121
+ - lib/tasks/rails-i18nterface.rake
122
+ - lib/rails-i18nterface/storage.rb
123
+ - lib/rails-i18nterface/engine.rb
124
+ - lib/rails-i18nterface/log.rb
125
+ - lib/rails-i18nterface/version.rb
126
+ - lib/rails-i18nterface/keys.rb
127
+ - lib/rails-i18nterface/file.rb
128
+ - lib/rails-i18nterface.rb
129
+ - MIT-LICENSE
130
+ - Rakefile
131
+ - README.md
132
+ - spec/spec_helper.rb
133
+ - spec/internal/log/test.log
134
+ - spec/internal/app/models/article.rb
135
+ - spec/internal/app/views/application/index.html.erb
136
+ - spec/internal/app/views/categories/category.erb
137
+ - spec/internal/app/views/categories/category.rhtml
138
+ - spec/internal/app/views/categories/category.html.erb
139
+ - spec/internal/app/views/categories/category.html
140
+ - spec/internal/app/assets/stylesheets/application.css
141
+ - spec/internal/app/assets/javascripts/application.js
142
+ - spec/internal/app/controllers/application_controller.rb
143
+ - spec/internal/config/database.yml
144
+ - spec/internal/config/routes.rb
145
+ - spec/internal/db/schema.rb
146
+ - spec/internal/db/combustion_test.sqlite
147
+ - spec/internal/public/favicon.ico
148
+ - spec/lib/log_spec.rb
149
+ - spec/lib/keys_spec.rb
150
+ - spec/lib/file_spec.rb
151
+ - spec/lib/storage_spec.rb
152
+ - spec/requests/search_spec.rb
153
+ - spec/controllers/translate_controller_spec.rb
154
+ homepage: https://github.com/mose/rails-i18nterface
155
+ licenses:
156
+ - MIT
157
+ metadata: {}
158
+ post_install_message:
159
+ rdoc_options: []
160
+ require_paths:
161
+ - lib
162
+ required_ruby_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - '>='
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ requirements: []
173
+ rubyforge_project:
174
+ rubygems_version: 2.0.0.rc.2
175
+ signing_key:
176
+ specification_version: 4
177
+ summary: A rails 3.1/4 engine for translating in a web page.
178
+ test_files:
179
+ - spec/spec_helper.rb
180
+ - spec/internal/log/test.log
181
+ - spec/internal/app/models/article.rb
182
+ - spec/internal/app/views/application/index.html.erb
183
+ - spec/internal/app/views/categories/category.erb
184
+ - spec/internal/app/views/categories/category.rhtml
185
+ - spec/internal/app/views/categories/category.html.erb
186
+ - spec/internal/app/views/categories/category.html
187
+ - spec/internal/app/assets/stylesheets/application.css
188
+ - spec/internal/app/assets/javascripts/application.js
189
+ - spec/internal/app/controllers/application_controller.rb
190
+ - spec/internal/config/database.yml
191
+ - spec/internal/config/routes.rb
192
+ - spec/internal/db/schema.rb
193
+ - spec/internal/db/combustion_test.sqlite
194
+ - spec/internal/public/favicon.ico
195
+ - spec/lib/log_spec.rb
196
+ - spec/lib/keys_spec.rb
197
+ - spec/lib/file_spec.rb
198
+ - spec/lib/storage_spec.rb
199
+ - spec/requests/search_spec.rb
200
+ - spec/controllers/translate_controller_spec.rb