it 0.2.0 → 0.2.1

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.textile CHANGED
@@ -52,6 +52,19 @@ Even nested interpolations are possible:
52
52
 
53
53
  <pre><code><%=it "copy", link: "mailto:igel@igels.net", user: 'iGEL', :b => It.tag(:b) %></code></pre>
54
54
 
55
+ If you would like to use the same translations in your html and plain text mails, you will like the +It.plain+ method:
56
+ <pre><code>en:
57
+ mail_copy: "Do you like %{link:Rails}?"</code></pre>
58
+
59
+ <pre><code>HTML mail:
60
+ <%= it "mail_copy", link: It.link("http://www.rubyonrails.org/") %>
61
+
62
+ Plain mail:
63
+ <%= it "mail_copy", link: It.plain("%s[http://www.rubyonrails.org/]") %>
64
+ </code></pre>
65
+
66
+ The +%s+ will be replaced with the label, in the example with Rails. You could provide any other string containing +%s+. The default is just +%s+, so it will return only the label itself.
67
+
55
68
  h2. isit18.com?
56
69
 
57
70
  Well, the specs pass on 1.8.7, but I never tried it in a real app. Report any issues on "github":https://github.com/iGEL/it/issues
data/lib/it/plain.rb ADDED
@@ -0,0 +1,12 @@
1
+ module It
2
+ class Plain < Tag
3
+ def initialize(template = "%s")
4
+ raise TypeError, "expected a String, got #{template.class}" unless template.is_a?(String)
5
+ @template = template
6
+ end
7
+
8
+ def process(content)
9
+ sprintf(@template, content)
10
+ end
11
+ end
12
+ end
data/lib/it.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'it/tag'
2
2
  require 'it/link'
3
+ require 'it/plain'
3
4
  require 'it/helper'
4
5
 
5
6
  ActiveSupport.on_load(:action_view) do
@@ -18,6 +19,14 @@ module It
18
19
  It::Link.new(href, options)
19
20
  end
20
21
 
22
+ # Creates a new plain replacement to be used in +it+.
23
+ #
24
+ # * +template+: A string to be used as the template. An example would be <code>"%s[http://www.rubyonrails.org]"</code>. Defaults to
25
+ # <code>"%s"</code>. <em>(optional)</em>
26
+ def self.plain(template = "%s")
27
+ It::Plain.new(template)
28
+ end
29
+
21
30
  # Creates a new tag to be used in +it+.
22
31
  #
23
32
  # * +tag_name+: The name of the tag as a Symbol or String.
@@ -30,6 +30,10 @@ describe It::Helper, "#it" do
30
30
  @view.it("test1", :link => It.link("http://www.rubyonrails.org", :target => "_blank")).should == 'I\'m containing a <a href="http://www.rubyonrails.org" target="_blank">link to Rails</a> in the middle.'
31
31
  end
32
32
 
33
+ it "should support the plain thing" do
34
+ @view.it("test1", :link => It.plain("%s[http://www.rubyonrails.org]")).should == 'I\'m containing a link to Rails[http://www.rubyonrails.org] in the middle.'
35
+ end
36
+
33
37
  it "should parse other tags as well" do
34
38
  @view.it("test1", :link => It.tag(:b, :class => "classy")).should == 'I\'m containing a <b class="classy">link to Rails</b> in the middle.'
35
39
  end
@@ -101,4 +105,10 @@ describe It::Helper, "#it" do
101
105
  I18n.backend.store_translations(:en, :test9 => "We can %{br} do line breaks")
102
106
  @view.it("test9", :br => It.tag(:br)).should == 'We can <br /> do line breaks'
103
107
  end
108
+
109
+ it 'should support dot-prefixed keys' do
110
+ I18n.backend.store_translations(:en, :widgets => { :show => { :all_widgets => "See %{widgets_link:all widgets}" } })
111
+ @view.instance_variable_set(:"@_virtual_path", "widgets/show")
112
+ @view.it('.all_widgets', :widgets_link => '/widgets').should == 'See <a href="/widgets">all widgets</a>'
113
+ end
104
114
  end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+ require 'it'
3
+
4
+ describe It::Plain, '.new' do
5
+ it "should work with no params" do
6
+ expect { It::Plain.new }.not_to raise_error
7
+ end
8
+
9
+ it "should work with a String" do
10
+ expect { It::Plain.new("%s[http://www.rubyonrails.org]") }.not_to raise_error
11
+ end
12
+
13
+ it "should raise ArgumentError with 2 params" do
14
+ expect { It::Plain.new("asdf", "asdf")}.to raise_error(ArgumentError, "wrong number of arguments (2 for 1)")
15
+ end
16
+
17
+ it "should raise a TypeError, if the first param is not a String" do
18
+ expect { It::Plain.new(1)}.to raise_error(TypeError)
19
+ end
20
+ end
21
+
22
+ describe It::Plain, '#process' do
23
+ it "should return 'Ruby on Rails', if no param was given" do
24
+ It::Plain.new.process("Ruby on Rails").should == 'Ruby on Rails'
25
+ end
26
+
27
+ it "should return 'Ruby on Rails[http://www.rubyonrails.org/]'" do
28
+ It::Plain.new("%s[http://www.rubyonrails.org/]").process("Ruby on Rails").should == 'Ruby on Rails[http://www.rubyonrails.org/]'
29
+ end
30
+ end
data/spec/it_spec.rb CHANGED
@@ -17,7 +17,7 @@ describe It, '.link' do
17
17
  end
18
18
 
19
19
  it "should raise ArgumentError, if called with three params" do
20
- expect { It::Link.new("http://www.rubyonrails.org/", {}, :blubb) }.to raise_error(ArgumentError)
20
+ expect { It.link("http://www.rubyonrails.org/", {}, :blubb) }.to raise_error(ArgumentError)
21
21
  end
22
22
  end
23
23
 
@@ -37,4 +37,22 @@ describe It, '.tag' do
37
37
  it "should raise an ArgumentError if called with three params" do
38
38
  expect { It.tag(:b, {}, :blubb) }.to raise_error(ArgumentError)
39
39
  end
40
+ end
41
+
42
+ describe It, '.plain' do
43
+ it "should return an It::Plain object" do
44
+ It.plain.class.should == It::Plain
45
+ end
46
+
47
+ it "should work without params" do
48
+ expect { It.plain }.not_to raise_error
49
+ end
50
+
51
+ it "should accept one param" do
52
+ expect { It.plain("%s[http://www.rubyonrails.org/]") }.not_to raise_error
53
+ end
54
+
55
+ it "should raise ArgumentError, if called with two params" do
56
+ expect { It.plain("%s[http://www.rubyonrails.org/]", :blubb) }.to raise_error(ArgumentError)
57
+ end
40
58
  end
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: it
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.2.0
4
+ hash: 21
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 1
10
+ version: 0.2.1
6
11
  platform: ruby
7
12
  authors:
8
13
  - Johannes Barre
@@ -10,7 +15,8 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-07-23 00:00:00 Z
18
+ date: 2011-08-05 00:00:00 +02:00
19
+ default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: actionpack
@@ -20,6 +26,11 @@ dependencies:
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 0
23
34
  version: 3.0.0
24
35
  type: :runtime
25
36
  version_requirements: *id001
@@ -31,6 +42,11 @@ dependencies:
31
42
  requirements:
32
43
  - - ~>
33
44
  - !ruby/object:Gem::Version
45
+ hash: 23
46
+ segments:
47
+ - 2
48
+ - 6
49
+ - 0
34
50
  version: 2.6.0
35
51
  type: :development
36
52
  version_requirements: *id002
@@ -51,11 +67,14 @@ files:
51
67
  - lib/it/helper.rb
52
68
  - lib/it/tag.rb
53
69
  - lib/it/link.rb
70
+ - lib/it/plain.rb
54
71
  - spec/it/helper_spec.rb
55
72
  - spec/it/link_spec.rb
56
73
  - spec/it/tag_spec.rb
74
+ - spec/it/plain_spec.rb
57
75
  - spec/it_spec.rb
58
76
  - spec/spec_helper.rb
77
+ has_rdoc: true
59
78
  homepage: https://github.com/igel/it
60
79
  licenses: []
61
80
 
@@ -69,17 +88,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
69
88
  requirements:
70
89
  - - ">="
71
90
  - !ruby/object:Gem::Version
91
+ hash: 3
92
+ segments:
93
+ - 0
72
94
  version: "0"
73
95
  required_rubygems_version: !ruby/object:Gem::Requirement
74
96
  none: false
75
97
  requirements:
76
98
  - - ">="
77
99
  - !ruby/object:Gem::Version
100
+ hash: 23
101
+ segments:
102
+ - 1
103
+ - 3
104
+ - 6
78
105
  version: 1.3.6
79
106
  requirements: []
80
107
 
81
108
  rubyforge_project:
82
- rubygems_version: 1.8.5
109
+ rubygems_version: 1.3.7
83
110
  signing_key:
84
111
  specification_version: 3
85
112
  summary: A helper for links and other html tags in your translations
@@ -87,5 +114,6 @@ test_files:
87
114
  - spec/it/helper_spec.rb
88
115
  - spec/it/link_spec.rb
89
116
  - spec/it/tag_spec.rb
117
+ - spec/it/plain_spec.rb
90
118
  - spec/it_spec.rb
91
119
  - spec/spec_helper.rb