i15r 0.4.4 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +7 -0
- data/Gemfile.lock +1 -1
- data/README.markdown +31 -12
- data/bin/i15r +39 -4
- data/lib/i15r.rb +88 -3
- data/lib/i15r/console_printer.rb +13 -0
- data/lib/i15r/file_reader.rb +7 -0
- data/lib/i15r/file_writer.rb +7 -0
- data/lib/i15r/pattern_matcher.rb +154 -3
- data/lib/i15r/version.rb +2 -2
- data/spec/i15r_spec.rb +73 -71
- data/spec/pattern_matcher_spec.rb +190 -14
- data/spec/spec_helper.rb +37 -2
- data/spec/support/internationalize_matcher.rb +20 -0
- metadata +14 -47
- data/VERSION +0 -1
- data/lib/i15r/base.rb +0 -123
- data/lib/i15r/pattern_matchers/base.rb +0 -40
- data/lib/i15r/pattern_matchers/erb.rb +0 -10
- data/lib/i15r/pattern_matchers/erb/rails_helper_matcher.rb +0 -75
- data/lib/i15r/pattern_matchers/erb/tag_attribute_matcher.rb +0 -26
- data/lib/i15r/pattern_matchers/erb/tag_content_matcher.rb +0 -40
- data/lib/i15r/pattern_matchers/haml.rb +0 -9
- data/lib/i15r/pattern_matchers/haml/rails_helper_matcher.rb +0 -83
- data/lib/i15r/pattern_matchers/haml/tag_content_matcher.rb +0 -52
- data/spec/erb/rails_helper_matcher_spec.rb +0 -81
- data/spec/erb/tag_attribute_matcher_spec.rb +0 -19
- data/spec/erb/tag_content_matcher_spec.rb +0 -43
- data/spec/haml/rails_helper_matcher_spec.rb +0 -92
- data/spec/haml/tag_content_matcher_spec.rb +0 -82
data/spec/i15r_spec.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# encoding: UTF-8
|
2
|
-
require
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'i15r'
|
3
4
|
|
4
|
-
describe I15R
|
5
|
+
describe I15R do
|
5
6
|
|
6
7
|
before do
|
7
|
-
@i15r = I15R::
|
8
|
+
@i15r = I15R::Fixture.new
|
8
9
|
end
|
9
10
|
|
10
11
|
describe "converting file paths to message prefixes" do
|
@@ -30,87 +31,101 @@ describe I15R::Base do
|
|
30
31
|
end
|
31
32
|
|
32
33
|
it "should raise if path does not contain any Rails app directories" do
|
34
|
+
#FIXME: Why should we deal only with Rails apps?
|
33
35
|
path = "projects/doodle.rb"
|
34
|
-
lambda { @i15r.file_path_to_message_prefix(path) }.should raise_error(AppFolderNotFound)
|
36
|
+
lambda { @i15r.file_path_to_message_prefix(path) }.should raise_error(I15R::AppFolderNotFound)
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
38
|
-
describe "
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
40
|
+
describe "writing the changed file" do
|
41
|
+
let(:path) { "app/views/users/new.html.erb" }
|
42
|
+
let(:reader) { mock(:read => %Q{<label for="user-name">Name</label>}) }
|
43
|
+
let(:writer) { mock("writer") }
|
44
|
+
let(:printer) { mock("printer") }
|
45
|
+
|
46
|
+
subject { I15R.new(reader, writer, printer) }
|
47
|
+
|
48
|
+
specify do
|
49
|
+
writer.should_receive(:write)
|
50
|
+
.with(path, %Q{<label for="user-name"><%= I18n.t("users.new.name", :default => "Name") %></label>\n})
|
51
|
+
printer.should_receive(:println).with("app/views/users/new.html.erb:")
|
52
|
+
printer.should_receive(:println).with("")
|
53
|
+
printer.should_receive(:print_diff)
|
54
|
+
.with(%Q{<label for="user-name">Name</label>},
|
55
|
+
%Q{<label for="user-name"><%= I18n.t("users.new.name", :default => "Name") %></label>})
|
56
|
+
subject.internationalize_file(path)
|
46
57
|
end
|
47
58
|
end
|
48
59
|
|
49
|
-
describe "turning plain messages into i18n message strings" do
|
50
|
-
it "should downcase a single word" do
|
51
|
-
I15R::Base.get_i18n_message_string("Name", "users.new").should == "users.new.name"
|
52
|
-
end
|
53
60
|
|
54
|
-
|
55
|
-
|
61
|
+
describe "generating the prefix" do
|
62
|
+
let(:reader) { mock(:read => %Q{<label for="user-name">Name</label>}) }
|
63
|
+
let(:writer) { mock("writer") }
|
64
|
+
|
65
|
+
subject { I15R.new(reader, writer, I15R::NullPrinter.new) }
|
66
|
+
|
67
|
+
describe "for a view" do
|
68
|
+
let(:path) { "app/views/users/new.html.erb" }
|
69
|
+
specify do
|
70
|
+
writer.should_receive(:write)
|
71
|
+
.with(path, %Q{<label for="user-name"><%= I18n.t("users.new.name", :default => "Name") %></label>\n})
|
72
|
+
subject.internationalize_file(path)
|
73
|
+
end
|
56
74
|
end
|
57
75
|
|
58
|
-
|
59
|
-
|
76
|
+
describe "for a partial" do
|
77
|
+
let(:path) { "app/views/users/_badge.html.erb" }
|
78
|
+
specify do
|
79
|
+
writer.should_receive(:write)
|
80
|
+
.with(path, %Q{<label for="user-name"><%= I18n.t("users.badge.name", :default => "Name") %></label>\n})
|
81
|
+
subject.internationalize_file(path)
|
82
|
+
end
|
60
83
|
end
|
61
84
|
|
62
|
-
|
63
|
-
|
85
|
+
describe "when there is an explicit prefix" do
|
86
|
+
let(:path) { "app/views/users/_badge.html.erb" }
|
87
|
+
|
88
|
+
subject { I15R.new(reader, writer, I15R::NullPrinter.new, :prefix => "nice") }
|
89
|
+
|
90
|
+
specify do
|
91
|
+
writer.should_receive(:write).with(path, %Q{<label for="user-name"><%= I18n.t("nice.name", :default => "Name") %></label>\n})
|
92
|
+
subject.internationalize_file(path)
|
93
|
+
end
|
64
94
|
end
|
65
95
|
end
|
66
96
|
|
67
|
-
describe "
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
97
|
+
describe "the add_default option" do
|
98
|
+
let(:path) { "app/users/views/index.html.haml" }
|
99
|
+
let(:patter_matcher) { mock("pattern matcher", :run => "") }
|
100
|
+
let(:i15r) { I15R::Fixture.new }
|
101
|
+
|
102
|
+
subject { I15R::Fixture.new }
|
73
103
|
|
74
|
-
describe "
|
104
|
+
describe "when true" do
|
75
105
|
before do
|
76
|
-
|
77
|
-
end
|
78
|
-
it "should not touch any files" do
|
79
|
-
@i15r.should_not_receive(:write_content_to)
|
80
|
-
@i15r.internationalize_file(@file_path)
|
106
|
+
subject.config = { :add_default => true }
|
81
107
|
end
|
82
|
-
|
83
|
-
|
84
|
-
|
108
|
+
specify do
|
109
|
+
I15R::PatternMatcher.should_receive(:new)
|
110
|
+
.with(anything, anything, hash_including(:add_default => true))
|
111
|
+
.and_return(patter_matcher)
|
112
|
+
subject.internationalize_file(path)
|
85
113
|
end
|
86
114
|
end
|
87
115
|
|
88
|
-
describe "
|
116
|
+
describe "when false" do
|
89
117
|
before do
|
90
|
-
|
118
|
+
subject.config = { :add_default => false }
|
91
119
|
end
|
92
|
-
|
93
|
-
|
94
|
-
|
120
|
+
specify do
|
121
|
+
I15R::PatternMatcher.should_receive(:new)
|
122
|
+
.with(anything, anything, hash_including(:add_default => false))
|
123
|
+
.and_return(patter_matcher)
|
124
|
+
subject.internationalize_file(path)
|
95
125
|
end
|
96
126
|
end
|
97
127
|
end
|
98
128
|
|
99
|
-
describe "when no prefix option was given" do
|
100
|
-
it "should correctly internationalize messages using a prefix derived from the path" do
|
101
|
-
message_prefix = "users.new"
|
102
|
-
plain_snippet = <<-EOS
|
103
|
-
<label for="user-name">Name</label>
|
104
|
-
<input type="text" id="user-name" name="user[name]" />
|
105
|
-
EOS
|
106
|
-
i18ned_snippet = <<-EOS
|
107
|
-
<label for="user-name"><%= I18n.t("#{message_prefix}.name") %></label>
|
108
|
-
<input type="text" id="user-name" name="user[name]" />
|
109
|
-
EOS
|
110
|
-
@i15r.sub_plain_strings(plain_snippet, message_prefix, :erb).should == i18ned_snippet
|
111
|
-
end
|
112
|
-
end # "when no prefix option was given"
|
113
|
-
|
114
129
|
describe "when an explicit prefix option was given" do
|
115
130
|
it "should correctly internationalize messages using the prefix" do
|
116
131
|
prefix_option = "mysite"
|
@@ -119,7 +134,7 @@ describe I15R::Base do
|
|
119
134
|
<input type="text" id="user-name" name="user[name]" />
|
120
135
|
EOS
|
121
136
|
i18ned_snippet = <<-EOS
|
122
|
-
<label for="user-name"><%= I18n.t("#{prefix_option}.name") %></label>
|
137
|
+
<label for="user-name"><%= I18n.t("#{prefix_option}.name", :default => "Name") %></label>
|
123
138
|
<input type="text" id="user-name" name="user[name]" />
|
124
139
|
EOS
|
125
140
|
|
@@ -127,17 +142,4 @@ describe I15R::Base do
|
|
127
142
|
end
|
128
143
|
end # "when an explicit prefix option was given"
|
129
144
|
|
130
|
-
describe "when running the internationalization for an ERB file" do
|
131
|
-
before do
|
132
|
-
@i15r.stub!(:write_content_to).and_return(true)
|
133
|
-
@file_path = "app/views/users/new.html.erb"
|
134
|
-
@i15r.stub(:get_content_from).and_return(%q{<label for=\"user-name\">Name</label>})
|
135
|
-
end
|
136
|
-
|
137
|
-
it "should only run ERB matchers" do
|
138
|
-
@i15r.should_receive(:sub_plain_strings).with(anything, anything, :erb)
|
139
|
-
@i15r.internationalize_file(@file_path)
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
145
|
end
|
@@ -1,23 +1,199 @@
|
|
1
1
|
# encoding: UTF-8
|
2
|
+
require 'spec_helper'
|
2
3
|
require 'i15r/pattern_matcher'
|
3
4
|
|
4
|
-
describe I15R::
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
describe I15R::PatternMatcher do
|
6
|
+
|
7
|
+
subject { pattern_matcher }
|
8
|
+
|
9
|
+
describe "in erb templates" do
|
10
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.new", :erb) }
|
11
|
+
|
12
|
+
describe "in tag content" do
|
13
|
+
it { should internationalize('<h1>New flight</h1>')
|
14
|
+
.to('<h1><%= I18n.t("users.new.new_flight") %></h1>') }
|
15
|
+
it { should internationalize(%(<label for="user-name">Name</label>))
|
16
|
+
.to(%(<label for="user-name"><%= I18n.t("users.new.name") %></label>)) }
|
17
|
+
|
18
|
+
it { should internationalize(%(<label for="user-name">First name</label>))
|
19
|
+
.to(%(<label for="user-name"><%= I18n.t("users.new.first_name") %></label>)) }
|
20
|
+
|
21
|
+
it { should internationalize(%(<label for="user-name">Got friends? A friend's name</label>))
|
22
|
+
.to(%(<label for="user-name"><%= I18n.t("users.new.got_friends_a_friends_name") %></label>)) }
|
23
|
+
|
24
|
+
it { should internationalize(%(<label for="user-name">A friend's name:</label>))
|
25
|
+
.to(%(<label for="user-name"><%= I18n.t("users.new.a_friends_name") %></label>)) }
|
26
|
+
|
27
|
+
it { should internationalize(%(<label for="user-name"> Name </label>))
|
28
|
+
.to(%(<label for="user-name"><%= I18n.t("users.new.name") %></label>)) }
|
29
|
+
|
30
|
+
it { should internationalize(%(<label for="when">Mañana</label>))
|
31
|
+
.to(%(<label for="when"><%= I18n.t("users.new.mañana") %></label>)) }
|
32
|
+
|
33
|
+
describe "when the default option is given" do
|
34
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.new", :erb, :add_default => true) }
|
35
|
+
|
36
|
+
it { should internationalize('<h1>New flight</h1>')
|
37
|
+
.to('<h1><%= I18n.t("users.new.new_flight", :default => "New flight") %></h1>') }
|
38
|
+
it { should internationalize(%( <%= f.label :name %><br />))
|
39
|
+
.to(%( <%= f.label I18n.t("users.new.name", :default => "name") %><br />)) }
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "when a line is already international" do
|
43
|
+
it { should internationalize(%( <%= f.label I18n.t("users.new.name") %>)).to_the_same }
|
44
|
+
it { should internationalize(%( <%= f.label t("users.new.name") %>)).to_the_same }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "in tag attributes" do
|
49
|
+
it { should internationalize(%(<a title="site root" href="/"><img src="site_logo.png" /></a>))
|
50
|
+
.to(%(<a title="<%= I18n.t("users.new.site_root") %>" href="/"><img src="site_logo.png" /></a>)) }
|
51
|
+
|
52
|
+
it { should internationalize(%(<a title="site root" href="/"><img src="site_logo.png" /></a>))
|
53
|
+
.to(%(<a title="<%= I18n.t("users.new.site_root") %>" href="/"><img src="site_logo.png" /></a>)) }
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "Rails helper methods" do
|
57
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.index", :erb) }
|
58
|
+
|
59
|
+
it { should internationalize(%(<p class="highlighted"><%= link_to 'New user', new_user_path %>?</p>))
|
60
|
+
.to(%(<p class="highlighted"><%= link_to I18n.t("users.index.new_user"), new_user_path %>?</p>)) }
|
61
|
+
|
62
|
+
it { should internationalize(%(<p><%= link_to "Create a new user", new_user_path, { :class => "add" } -%></p>))
|
63
|
+
.to(%(<p><%= link_to I18n.t("users.index.create_a_new_user"), new_user_path, { :class => "add" } -%></p>)) }
|
64
|
+
|
65
|
+
it { should internationalize(%(<%= f.label :name, "Name" %>))
|
66
|
+
.to(%(<%= f.label :name, I18n.t("users.index.name") %>)) }
|
67
|
+
|
68
|
+
it { should internationalize(%( <%= f.label :name %><br />))
|
69
|
+
.to(%( <%= f.label I18n.t("users.index.name") %><br />)) }
|
70
|
+
|
71
|
+
it { should internationalize(%( <%= label_tag :name, "Real Name" %><br />))
|
72
|
+
.to(%( <%= label_tag :name, I18n.t("users.index.real_name") %><br />)) }
|
73
|
+
|
74
|
+
it { should internationalize(%(<%= f.submit "Create user" %>))
|
75
|
+
.to(%(<%= f.submit I18n.t("users.index.create_user") %>)) }
|
9
76
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
77
|
+
it { should internationalize(%(<%= submit_tag "Create user" %>))
|
78
|
+
.to(%(<%= submit_tag I18n.t("users.index.create_user") %>)) }
|
79
|
+
|
80
|
+
describe "when the default option is given" do
|
81
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.index", :erb, :add_default => true) }
|
82
|
+
|
83
|
+
it { should internationalize(%(<%= submit_tag "Create user" %>))
|
84
|
+
.to(%(<%= submit_tag I18n.t("users.index.create_user", :default => "Create user") %>)) }
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "when text has non-ascii characters" do
|
88
|
+
it { should internationalize(%(<p class="highlighted"><%= link_to 'Új felhasználó', new_user_path %>?</p>))
|
89
|
+
.to(%(<p class="highlighted"><%= link_to I18n.t("users.index.Új_felhasználó"), new_user_path %>?</p>)) }
|
90
|
+
|
91
|
+
it { should internationalize(%(<p><%= link_to "Új felhasználó létrehozása", new_user_path, { :class => "add" } -%></p>))
|
92
|
+
.to(%(<p><%= link_to I18n.t("users.index.Új_felhasználó_létrehozása"), new_user_path, { :class => "add" } -%></p>)) }
|
93
|
+
|
94
|
+
it { should internationalize(%(<%= f.label :name, "Név" %>))
|
95
|
+
.to(%(<%= f.label :name, I18n.t("users.index.név") %>)) }
|
96
|
+
|
97
|
+
it { should internationalize(%(<%= label_tag :name, "Név" %>))
|
98
|
+
.to(%(<%= label_tag :name, I18n.t("users.index.név") %>)) }
|
99
|
+
|
100
|
+
it { should internationalize(%( <%= label_tag :name, "Real Name" %><br />))
|
101
|
+
.to(%( <%= label_tag :name, I18n.t("users.index.real_name") %><br />)) }
|
102
|
+
|
103
|
+
it { should internationalize(%(<%= f.submit "Új felhasználó" %>))
|
104
|
+
.to(%(<%= f.submit I18n.t("users.index.Új_felhasználó") %>)) }
|
105
|
+
|
106
|
+
it { should internationalize(%(<%= submit_tag "Új felhasználó" %>))
|
107
|
+
.to(%(<%= submit_tag I18n.t("users.index.Új_felhasználó") %>)) }
|
108
|
+
|
109
|
+
it { should internationalize(%(<%= f.submit :create_user %>))
|
110
|
+
.to(%(<%= f.submit I18n.t("users.index.create_user") %>)) }
|
111
|
+
|
112
|
+
it { should internationalize(%( <%= f.submit :create_user %>))
|
113
|
+
.to(%( <%= f.submit I18n.t("users.index.create_user") %>)) }
|
114
|
+
end
|
115
|
+
end
|
14
116
|
end
|
15
117
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
118
|
+
describe "in haml templates" do
|
119
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.show", :haml) }
|
120
|
+
|
121
|
+
it { should internationalize('#main').to_the_same }
|
122
|
+
|
123
|
+
it { should internationalize(%(#form_head My account))
|
124
|
+
.to(%(#form_head= I18n.t("users.show.my_account"))) }
|
125
|
+
|
126
|
+
it { should internationalize(%(%p Please check your inbox and click on the activation link.))
|
127
|
+
.to(%(%p= I18n.t("users.show.please_check_your_inbox_and_click_on_the_activation_link"))) }
|
128
|
+
|
129
|
+
it { should internationalize("please visit").to('= I18n.t("users.show.please_visit")') }
|
130
|
+
it { should internationalize("Mañana").to('= I18n.t("users.show.mañana")') }
|
131
|
+
it { should internationalize("C'est ça").to('= I18n.t("users.show.cest_ça")') }
|
132
|
+
it { should internationalize(%(%p Do not close/reload while loading))
|
133
|
+
.to(%(%p= I18n.t("users.show.do_not_close_reload_while_loading"))) }
|
134
|
+
it { should internationalize(%( .field)).to(%( .field)) }
|
135
|
+
it { should internationalize('%p').to_the_same }
|
136
|
+
it { should internationalize(%(%h2 Resend unlock instructions))
|
137
|
+
.to(%(%h2= I18n.t("users.show.resend_unlock_instructions"))) }
|
138
|
+
it { should internationalize(%(%i (we need your password to confirm your changes)))
|
139
|
+
.to(%(%i= I18n.t("users.show.we_need_your_password_to_confirm_your_changes"))) }
|
140
|
+
it { should internationalize('= yield').to_the_same }
|
141
|
+
it { should internationalize('/ Do not remove the next line').to_the_same }
|
142
|
+
it { should internationalize(%(#form_head Türkçe))
|
143
|
+
.to(%(#form_head= I18n.t("users.show.türkçe"))) }
|
144
|
+
it { should internationalize(%(%p Egy, kettő, három, négy, öt.))
|
145
|
+
.to(%(%p= I18n.t("users.show.egy_kettő_három_négy_öt"))) }
|
146
|
+
it { should internationalize(%(Türkçe)).to(%(= I18n.t("users.show.türkçe"))) }
|
147
|
+
it { should internationalize(%( %h3 Top Scorers))
|
148
|
+
.to(%( %h3= I18n.t("users.show.top_scorers"))) }
|
149
|
+
it { should internationalize(%( %div{ :class => "field option", :style => "float:left" })).to_the_same }
|
150
|
+
it { should internationalize(%( %div{ :class => "field option", :style => "float:left" } Name))
|
151
|
+
.to(%( %div{ :class => "field option", :style => "float:left" }= I18n.t("users.show.name"))) }
|
152
|
+
it { should internationalize(%( %div(class: "field option", style: "float:left") Name))
|
153
|
+
.to(%( %div(class: "field option", style: "float:left")= I18n.t("users.show.name"))) }
|
154
|
+
|
155
|
+
describe "when the default option is given" do
|
156
|
+
let(:pattern_matcher) { I15R::PatternMatcher.new("users.show", :haml, :add_default => true) }
|
157
|
+
it { should internationalize(%( %h3 Top Scorers))
|
158
|
+
.to(%( %h3= I18n.t("users.show.top_scorers", :default => "Top Scorers"))) }
|
159
|
+
end
|
160
|
+
|
161
|
+
describe "when already evaluated" do
|
162
|
+
it { should internationalize(%(%p= link_to 'New user', new_user_path))
|
163
|
+
.to(%(%p= link_to I18n.t("users.show.new_user"), new_user_path)) }
|
164
|
+
it { should internationalize(%(= f.label :password, "Password"))
|
165
|
+
.to(%(= f.label :password, I18n.t("users.show.password"))) }
|
166
|
+
it { should internationalize(%( = f.label :password, "Password"))
|
167
|
+
.to(%( = f.label :password, I18n.t("users.show.password"))) }
|
168
|
+
it { should internationalize(%(%p= link_to 'Új felhasználó', new_user_path))
|
169
|
+
.to(%(%p= link_to I18n.t("users.show.Új_felhasználó"), new_user_path)) }
|
170
|
+
it { should internationalize(%(#new_user_link= link_to 'Új felhasználó', new_user_path))
|
171
|
+
.to(%(#new_user_link= link_to I18n.t("users.show.Új_felhasználó"), new_user_path)) }
|
172
|
+
it { should internationalize(%(= f.label :password, "Contraseña"))
|
173
|
+
.to(%(= f.label :password, I18n.t("users.show.contraseña"))) }
|
174
|
+
it { should internationalize(%( = f.label :password, "Contraseña"))
|
175
|
+
.to(%( = f.label :password, I18n.t("users.show.contraseña"))) }
|
176
|
+
it { should internationalize(%( = f.label :name))
|
177
|
+
.to(%( = f.label I18n.t("users.show.name"))) }
|
178
|
+
|
179
|
+
it { should internationalize(%(= f.submit "Create user"))
|
180
|
+
.to(%(= f.submit I18n.t("users.show.create_user"))) }
|
181
|
+
it { should internationalize(%(= submit_tag "Create user"))
|
182
|
+
.to(%(= submit_tag I18n.t("users.show.create_user"))) }
|
183
|
+
it { should internationalize(%( = f.submit :user_details %>))
|
184
|
+
.to(%( = f.submit I18n.t("users.show.user_details") %>)) }
|
185
|
+
it { should internationalize(%( = submit_tag :user_details %>))
|
186
|
+
.to(%( = submit_tag I18n.t("users.show.user_details") %>)) }
|
187
|
+
end
|
188
|
+
|
189
|
+
describe "evaluated ruby code" do
|
190
|
+
it { should internationalize('- if foo == :bar').to_the_same }
|
191
|
+
end
|
192
|
+
|
193
|
+
describe "when a line is already international" do
|
194
|
+
it { should internationalize(%( = f.label I18n.t("users.new.name") )).to_the_same }
|
195
|
+
it { should internationalize(%( = f.label t("users.new.name") )).to_the_same }
|
196
|
+
end
|
21
197
|
end
|
22
198
|
|
23
199
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,39 @@
|
|
1
|
-
|
1
|
+
current_dir = File.expand_path(File.dirname(__FILE__))
|
2
|
+
$:.unshift File.join(current_dir, "..", "lib")
|
2
3
|
|
3
4
|
require 'i15r'
|
4
|
-
require 'i15r/
|
5
|
+
require 'i15r/file_reader'
|
6
|
+
|
7
|
+
Dir["#{current_dir}/support/**/*.rb"].each do |file|
|
8
|
+
require file
|
9
|
+
end
|
10
|
+
|
11
|
+
class I15R
|
12
|
+
class StringReader
|
13
|
+
def read(path)
|
14
|
+
"norf"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class NullWriter
|
19
|
+
def write(path, content); end
|
20
|
+
end
|
21
|
+
class NullPrinter
|
22
|
+
def print_diff(old_row, new_row); end
|
23
|
+
def println(text); end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Fixture < I15R
|
27
|
+
def initialize(reader=StringReader.new,
|
28
|
+
writer=NullWriter.new,
|
29
|
+
printer=NullPrinter.new,
|
30
|
+
config={})
|
31
|
+
super(reader, writer, printer, config)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.with_config(config)
|
35
|
+
new(StringReader.new, NullWriter.new, NullPrinter.new, config)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|