i15r 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/i15r +0 -0
- data/i15r.gemspec +2 -2
- data/lib/i15r/base.rb +3 -1
- data/lib/i15r/pattern_matchers/erb/tag_content_matcher.rb +2 -2
- data/lib/i15r/pattern_matchers/haml/tag_content_matcher.rb +1 -1
- data/spec/erb/rails_helper_matcher_spec.rb +41 -1
- data/spec/erb/tag_attribute_matcher_spec.rb +8 -0
- data/spec/erb/tag_content_matcher_spec.rb +8 -0
- data/spec/haml/rails_helper_matcher_spec.rb +46 -0
- data/spec/haml/tag_content_matcher_spec.rb +22 -0
- data/spec/i15r_spec.rb +10 -1
- data/spec/pattern_matcher_spec.rb +9 -0
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/bin/i15r
CHANGED
File without changes
|
data/i15r.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{i15r}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Balint Erdi"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-01-08}
|
13
13
|
s.default_executable = %q{i15r}
|
14
14
|
s.description = %q{ The internationalizer. Replaces plain text strings in your views and replaces them with I18n message strings so you only have to provide the translations.
|
15
15
|
}
|
data/lib/i15r/base.rb
CHANGED
@@ -8,7 +8,9 @@ module I15R
|
|
8
8
|
attr_reader :options
|
9
9
|
|
10
10
|
def self.get_i18n_message_string(text, prefix)
|
11
|
-
|
11
|
+
#TODO: downcase does not work properly for accented chars, like 'Ú'
|
12
|
+
#TODO: [:punct:] would be nice but it includes _ which we don't want to remove
|
13
|
+
key = text.strip.downcase.gsub(/[\s]/, '_').gsub(/[!?.,:"';]/, '')
|
12
14
|
indent = ""
|
13
15
|
(0..prefix.split(".").size).each { |i| indent = " " + indent }
|
14
16
|
# silenced_if_testing do
|
@@ -10,7 +10,7 @@ module I15R
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.match_tag_content_on_one_line
|
13
|
-
patt = /^(.*)>(\s*)(
|
13
|
+
patt = /^(.*)>(\s*)([[:alnum:][:upper:]][\s[:alnum:][:upper:][:punct:]]+)\s*<\/(.*)$/i
|
14
14
|
matches(:erb) do |text, prefix|
|
15
15
|
if m = patt.match(text)
|
16
16
|
i18n_string = I15R::Base.get_i18n_message_string(m[3], prefix)
|
@@ -23,7 +23,7 @@ module I15R
|
|
23
23
|
register_matcher :match_tag_content_on_one_line
|
24
24
|
|
25
25
|
def self.match_tag_content_multiline
|
26
|
-
patt = /^(\s*)(
|
26
|
+
patt = /^(\s*)([[:alnum:][:upper:]][[:alnum:][:upper:][:space:],']*)(.*)$/i
|
27
27
|
matches(:erb) do |text, prefix|
|
28
28
|
if m = patt.match(text)
|
29
29
|
i18n_string = I15R::Base.get_i18n_message_string(m[2], prefix)
|
@@ -34,7 +34,7 @@ module I15R
|
|
34
34
|
register_matcher :match_haml_explicit_tag_content
|
35
35
|
|
36
36
|
def self.match_haml_tag_content_just_text_on_line
|
37
|
-
patt = /^(\s*)([^.#\s][\
|
37
|
+
patt = /^(\s*)([^.#\s][[:alpha:][:upper:]\s\d\!\-\.\?]+)$/
|
38
38
|
matches(:haml) do |text, prefix|
|
39
39
|
if m = patt.match(text)
|
40
40
|
i18n_string = I15R::Base.get_i18n_message_string(m[2], prefix)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require 'i15r/pattern_matcher'
|
2
4
|
require "spec"
|
3
5
|
|
@@ -21,7 +23,7 @@ describe I15R::PatternMatchers::Erb::RailsHelperMatcher do
|
|
21
23
|
i18ned = %(<%= f.label :name, I18n.t("users.new.name") %>)
|
22
24
|
I15R::PatternMatchers::Erb::RailsHelperMatcher.run(plain, "users.new").should == i18ned
|
23
25
|
end
|
24
|
-
|
26
|
+
|
25
27
|
it "should replace the label text of a label_tag helper" do
|
26
28
|
plain = %(<%= label_tag :name, "Name" %>)
|
27
29
|
i18ned = %(<%= label_tag :name, I18n.t("users.new.name") %>)
|
@@ -39,5 +41,43 @@ describe I15R::PatternMatchers::Erb::RailsHelperMatcher do
|
|
39
41
|
i18ned = %(<%= submit_tag I18n.t("users.new.create_user") %>)
|
40
42
|
I15R::PatternMatchers::Erb::RailsHelperMatcher.run(plain, "users.new").should == i18ned
|
41
43
|
end
|
44
|
+
|
45
|
+
describe "when text has non-english characters" do
|
46
|
+
it "should replace a title in a link_to helper" do
|
47
|
+
plain = %(<p class="highlighted"><%= link_to 'Új felhasználó', new_user_path %>?</p>)
|
48
|
+
i18ned = %(<p class="highlighted"><%= link_to I18n.t("users.index.Új_felhasználó"), new_user_path %>?</p>)
|
49
|
+
I15R::PatternMatchers::Erb::RailsHelperMatcher.run(plain, "users.index").should == i18ned
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should replace a title in a link_to helper with html attributes" do
|
53
|
+
plain = %(<p><%= link_to "Új felhasználó létrehozása", new_user_path, { :class => "add" } -%></p>)
|
54
|
+
i18ned = %(<p><%= link_to I18n.t("users.index.Új_felhasználó_létrehozása"), new_user_path, { :class => "add" } -%></p>)
|
55
|
+
I15R::PatternMatchers::Erb::RailsHelperMatcher.run(plain, "users.index").should == i18ned
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should replace the label text in a label helper" do
|
59
|
+
plain = %(<%= f.label :name, "Név" %>)
|
60
|
+
i18ned = %(<%= f.label :name, I18n.t("users.new.név") %>)
|
61
|
+
I15R::PatternMatchers::Erb::RailsHelperMatcher.run(plain, "users.new").should == i18ned
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should replace the label text that has non-english chars of a label_tag helper" do
|
65
|
+
plain = %(<%= label_tag :name, "Név" %>)
|
66
|
+
i18ned = %(<%= label_tag :name, I18n.t("users.new.név") %>)
|
67
|
+
I15R::PatternMatchers::Erb::RailsHelperMatcher.run(plain, "users.new").should == i18ned
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should replace the title of a submit helper in a form builder" do
|
71
|
+
plain = %(<%= f.submit "Új felhasználó" %>)
|
72
|
+
i18ned = %(<%= f.submit I18n.t("users.new.Új_felhasználó") %>)
|
73
|
+
I15R::PatternMatchers::Erb::RailsHelperMatcher.run(plain, "users.new").should == i18ned
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should replace the title of a submit_tag helper" do
|
77
|
+
plain = %(<%= submit_tag "Új felhasználó" %>)
|
78
|
+
i18ned = %(<%= submit_tag I18n.t("users.new.Új_felhasználó") %>)
|
79
|
+
I15R::PatternMatchers::Erb::RailsHelperMatcher.run(plain, "users.new").should == i18ned
|
80
|
+
end
|
81
|
+
end
|
42
82
|
|
43
83
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require 'i15r/pattern_matcher'
|
2
4
|
require "spec"
|
3
5
|
|
@@ -10,4 +12,10 @@ describe I15R::PatternMatchers::Erb::TagAttributeMatcher do
|
|
10
12
|
I15R::PatternMatchers::Erb::TagAttributeMatcher.run(plain, "users.new").should == i18ned
|
11
13
|
end
|
12
14
|
|
15
|
+
it "should replace a link's title that has non-english characters" do
|
16
|
+
plain = %(<a title="raçine du site" href="/"><img src="site_logo.png" /></a>)
|
17
|
+
i18ned = %(<a title="<%= I18n.t("users.new.raçine_du_site") %>" href="/"><img src="site_logo.png" /></a>)
|
18
|
+
I15R::PatternMatchers::Erb::TagAttributeMatcher.run(plain, "users.new").should == i18ned
|
19
|
+
end
|
20
|
+
|
13
21
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require 'i15r/pattern_matcher'
|
2
4
|
require "spec"
|
3
5
|
|
@@ -32,5 +34,11 @@ describe I15R::PatternMatchers::Erb::TagContentMatcher do
|
|
32
34
|
i18ned = %(<label for="user-name"> <%= I18n.t("users.new.name") %> </label>)
|
33
35
|
I15R::PatternMatchers::Erb::TagContentMatcher.run(plain, "users.new").should == i18ned
|
34
36
|
end
|
37
|
+
|
38
|
+
it "should replace a word with non-ascii characters" do
|
39
|
+
plain = %(<label for="when">Mañana</label>)
|
40
|
+
i18ned = %(<label for="when"><%= I18n.t("users.new.mañana") %></label>)
|
41
|
+
I15R::PatternMatchers::Erb::TagContentMatcher.run(plain, "users.new").should == i18ned
|
42
|
+
end
|
35
43
|
|
36
44
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
4
|
|
3
5
|
describe I15R::PatternMatchers::Haml::RailsHelperMatcher do
|
@@ -43,4 +45,48 @@ describe I15R::PatternMatchers::Haml::RailsHelperMatcher do
|
|
43
45
|
I15R::PatternMatchers::Haml::RailsHelperMatcher.run(plain, "users.new").should == i15d
|
44
46
|
end
|
45
47
|
|
48
|
+
describe "when text has non-english characters" do
|
49
|
+
it "should replace a title in a link_to helper in a %tag row" do
|
50
|
+
plain = %(%p= link_to 'Új felhasználó', new_user_path)
|
51
|
+
i18ned = %(%p= link_to I18n.t("users.index.Új_felhasználó"), new_user_path)
|
52
|
+
I15R::PatternMatchers::Haml::RailsHelperMatcher.run(plain, "users.index").should == i18ned
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should replace a title in a link_to helper in an implicit div row" do
|
56
|
+
plain = %(#new_user_link= link_to 'Új felhasználó', new_user_path)
|
57
|
+
i18ned = %(#new_user_link= link_to I18n.t("users.index.Új_felhasználó"), new_user_path)
|
58
|
+
I15R::PatternMatchers::Haml::RailsHelperMatcher.run(plain, "users.index").should == i18ned
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should replace the label text in a label helper" do
|
62
|
+
plain = %(= f.label :password, "Contraseña")
|
63
|
+
i18ned = %(= f.label :password, I18n.t("users.new.contraseña"))
|
64
|
+
I15R::PatternMatchers::Haml::RailsHelperMatcher.run(plain, "users.new").should == i18ned
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should preserve whitespace when replacing a label helper" do
|
68
|
+
plain = %( = f.label :password, "Contraseña")
|
69
|
+
i18ned = %( = f.label :password, I18n.t("users.new.contraseña"))
|
70
|
+
I15R::PatternMatchers::Haml::RailsHelperMatcher.run(plain, "users.new").should == i18ned
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should replace a title in a link_to helper that uses parens and other text in the same row in an implicit div row" do
|
74
|
+
plain = %q(= "Elfőgadom a #{link_to('feltételeket', terms_and_conditions_path)}")
|
75
|
+
i15d = %q(= I18n.t("users.new.elfőgadom_a", :link => link_to(I18n.t("users.new.feltételeket"), terms_and_conditions_path)))
|
76
|
+
I15R::PatternMatchers::Haml::RailsHelperMatcher.run(plain, "users.new").should == i15d
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should replace a title in a link_to helper that does not use parens and other text in the same row in an implicit div row" do
|
80
|
+
plain = %q(= "Elfőgadom a #{link_to 'feltételeket', terms_and_conditions_path}")
|
81
|
+
i15d = %q(= I18n.t("users.new.elfőgadom_a", :link => link_to(I18n.t("users.new.feltételeket"), terms_and_conditions_path)))
|
82
|
+
I15R::PatternMatchers::Haml::RailsHelperMatcher.run(plain, "users.new").should == i15d
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should replace a title in a link_to helper that uses the haml == operator" do
|
86
|
+
plain = %q(== Elfőgadom a #{link_to('feltételeket', terms_and_conditions_path)})
|
87
|
+
i15d = %q(== I18n.t("users.new.elfőgadom_a", :link => link_to(I18n.t("users.new.feltételeket"), terms_and_conditions_path)))
|
88
|
+
I15R::PatternMatchers::Haml::RailsHelperMatcher.run(plain, "users.new").should == i15d
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
46
92
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
4
|
|
3
5
|
describe I15R::PatternMatchers::Haml::TagContentMatcher do
|
@@ -23,4 +25,24 @@ describe I15R::PatternMatchers::Haml::TagContentMatcher do
|
|
23
25
|
plain = %( .field)
|
24
26
|
I15R::PatternMatchers::Haml::TagContentMatcher.run(plain, "users.new").should == plain
|
25
27
|
end
|
28
|
+
|
29
|
+
describe "when text has non-english characters" do
|
30
|
+
it "should replace a tag's content where the tag is an implicit div" do
|
31
|
+
plain = %(#form_head Türkçe)
|
32
|
+
i18ned = %(#form_head= I18n.t("users.edit.türkçe"))
|
33
|
+
I15R::PatternMatchers::Haml::TagContentMatcher.run(plain, "users.edit").should == i18ned
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should replace a tag's content where the tag is an explicit one" do
|
37
|
+
plain = %(%p Egy, kettő, három, négy, öt.)
|
38
|
+
i18ned = %(%p I18n.t("users.show.egy_kettő_három_négy_öt"))
|
39
|
+
I15R::PatternMatchers::Haml::TagContentMatcher.run(plain, "users.show").should == i18ned
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should replace a tag's content which is simple text all by itself on a line" do
|
43
|
+
plain = %(Türkçe)
|
44
|
+
i18ned = %(= I18n.t("users.new.türkçe"))
|
45
|
+
I15R::PatternMatchers::Haml::TagContentMatcher.run(plain, "users.new").should == i18ned
|
46
|
+
end
|
47
|
+
end
|
26
48
|
end
|
data/spec/i15r_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
2
3
|
$:.unshift File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib")
|
3
4
|
|
4
5
|
require "i15r"
|
@@ -59,6 +60,14 @@ describe I15R::Base do
|
|
59
60
|
it "should replace spaces with underscores" do
|
60
61
|
I15R::Base.get_i18n_message_string("New name", "users.index").should == "users.index.new_name"
|
61
62
|
end
|
63
|
+
|
64
|
+
it "should not rip out a non-english letter" do
|
65
|
+
I15R::Base.get_i18n_message_string("Mañana", "users.index").should == "users.index.mañana"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should replace a ' with an underscore" do
|
69
|
+
I15R::Base.get_i18n_message_string("C'est ça", "users.index").should == "users.index.cest_ça"
|
70
|
+
end
|
62
71
|
end
|
63
72
|
|
64
73
|
describe "when substituting the plain contents with i18n message strings" do
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
$:.unshift File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib")
|
2
4
|
|
3
5
|
require 'i15r/pattern_matcher'
|
@@ -8,10 +10,17 @@ describe I15R::PatternMatchers::Base do
|
|
8
10
|
plain = %(#main)
|
9
11
|
I15R::PatternMatchers::Base.run(plain, "users.new", :haml).should == plain
|
10
12
|
end
|
13
|
+
|
11
14
|
it "should properly replace a line with two matches" do
|
12
15
|
plain = %(This is it: <a title="site root" href="/"><img src="site_logo.png" /></a>)
|
13
16
|
i18ned = %(<%= I18n.t("users.new.this_is_it") %>: <a title="<%= I18n.t("users.new.site_root") %>" href="/"><img src="site_logo.png" /></a>)
|
14
17
|
I15R::PatternMatchers::Base.run(plain, "users.new", :erb).should == i18ned
|
15
18
|
end
|
19
|
+
|
20
|
+
it "should properly replace a line with two matches that have non-ascii chars" do
|
21
|
+
plain = %(C'est ça: <a title="site root" href="/"><img src="site_logo.png" /></a>)
|
22
|
+
i18ned = %(<%= I18n.t("users.new.cest_ça") %>: <a title="<%= I18n.t("users.new.site_root") %>" href="/"><img src="site_logo.png" /></a>)
|
23
|
+
I15R::PatternMatchers::Base.run(plain, "users.new", :erb).should == i18ned
|
24
|
+
end
|
16
25
|
|
17
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i15r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Balint Erdi
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-08 00:00:00 +01:00
|
13
13
|
default_executable: i15r
|
14
14
|
dependencies: []
|
15
15
|
|