truncate_html 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ pkg
data/README.markdown CHANGED
@@ -29,14 +29,13 @@ Installation
29
29
  #### As a gem
30
30
  Add this to your <code>config/environment.rb</code>:
31
31
 
32
- config.gem 'hgimenez-truncate_html',
33
- :source => 'http://gems.github.com',
34
- :lib => 'truncate_html'
32
+ config.gem 'truncate_html',
33
+ :source => 'http://gemcutter.org'
35
34
 
36
35
  Then either
37
- <code>sudo gem install hgimenez-truncate_html</code>
38
- or
39
36
  <code>sudo rake gems:install</code>
37
+ or
38
+ <code>sudo gem install truncate_html</code>
40
39
 
41
40
  #### As a plugin:
42
41
  <code>script/plugin install git://github.com/hgimenez/truncate_html.git</code>
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -8,6 +8,7 @@ module TruncateHtml
8
8
  end
9
9
 
10
10
  def truncate(options = {})
11
+ return '' if @original_html.nil?
11
12
  options[:length] ||= 100
12
13
  options[:omission] ||= '...'
13
14
  @chars_remaining = options[:length]
@@ -36,9 +37,6 @@ module TruncateHtml
36
37
  result.join('')
37
38
  end
38
39
 
39
-
40
- private #############################
41
-
42
40
  def html_tokens
43
41
  @original_html.scan(/<\/?[^>]+>|[\w\|`~!@#\$%^&*\(\)\-_\+=\[\]{}:;'",\.\/?]+|\s+/).map do
44
42
  |t| t.gsub(
@@ -4,18 +4,25 @@ include TruncateHtmlHelper
4
4
 
5
5
  describe TruncateHtmlHelper do
6
6
 
7
- it 'should be included in ActionView::Base' do
7
+ it 'is included in ActionView::Base' do
8
8
  ActionView::Base.included_modules.should include(TruncateHtmlHelper)
9
9
  end
10
10
 
11
11
  describe '#truncate_html' do
12
12
 
13
+ context 'the input html is nil' do
14
+ it 'returns an empty string' do
15
+ truncate_html(nil).should be_empty
16
+ truncate_html(nil).should be_kind_of String
17
+ end
18
+ end
19
+
13
20
  context 'truncating in the middle of a link' do
14
21
  before(:each) do
15
22
  @html = '<div><ul><li>Look at <a href="foo">this</a> link </li></ul></div>'
16
23
  end
17
24
 
18
- it 'should truncate, and close the <a>, and close any remaining open tags' do
25
+ it 'truncates, and closes the <a>, and closes any remaining open tags' do
19
26
  truncate_html(@html, :length => 10).should == '<div><ul><li>Look at <a href="foo">this...</a></li></ul></div>'
20
27
  end
21
28
  end
@@ -25,7 +32,7 @@ describe TruncateHtmlHelper do
25
32
  before(:each) do
26
33
  @html = "<p>Look at <strong>this</strong>#{char} More words here</p>"
27
34
  end
28
- it 'should place the punctuation after the tag without any whitespace' do
35
+ it 'places the punctuation after the tag without any whitespace' do
29
36
  truncate_html(@html, :length => 16).should == "<p>Look at <strong>this</strong>#{char} More...</p>"
30
37
  end
31
38
  end
@@ -35,7 +42,7 @@ describe TruncateHtmlHelper do
35
42
  before(:each) do
36
43
  @html = '<p>Look at <a href="awesomeful.net">this</a> link for randomness</p>'
37
44
  end
38
- it 'should leave a whitespace between the closing tag and the following word character' do
45
+ it 'leaves a whitespace between the closing tag and the following word character' do
39
46
  truncate_html(@html, :length => 17).should == '<p>Look at <a href="awesomeful.net">this</a> link...</p>'
40
47
  end
41
48
  end
@@ -51,7 +58,7 @@ describe TruncateHtmlHelper do
51
58
  END_HTML
52
59
  end
53
60
 
54
- it 'should recognize the multiline html properly' do
61
+ it 'recognizes the multiline html properly' do
55
62
  truncate_html(@html, :length => 8).should == ' <div id="foo" class="bar"> This is...</div>'
56
63
  end
57
64
  end
@@ -64,7 +71,7 @@ describe TruncateHtmlHelper do
64
71
  @html = "<div>Some before. <#{unpaired_tag}>and some after</div>"
65
72
  @html_caps = "<div>Some before. <#{unpaired_tag.capitalize}>and some after</div>"
66
73
  end
67
- it "should not close the #{unpaired_tag} tag" do
74
+ it "does not close the #{unpaired_tag} tag" do
68
75
  truncate_html(@html, :length => 15).should == "<div>Some before. <#{unpaired_tag}>and...</div>"
69
76
  truncate_html(@html_caps, :length => 15).should == "<div>Some before. <#{unpaired_tag.capitalize}>and...</div>"
70
77
  end
@@ -75,7 +82,7 @@ describe TruncateHtmlHelper do
75
82
  @html = "<div>Some before. <#{unpaired_tag} />and some after</div>"
76
83
  @html_caps = "<div>Some before. <#{unpaired_tag.capitalize} />and some after</div>"
77
84
  end
78
- it "should not close the #{unpaired_tag} tag" do
85
+ it "does not close the #{unpaired_tag} tag" do
79
86
  truncate_html(@html, :length => 15).should == "<div>Some before. <#{unpaired_tag} />and...</div>"
80
87
  truncate_html(@html_caps, :length => 15).should == "<div>Some before. <#{unpaired_tag.capitalize} />and...</div>"
81
88
  end
@@ -2,69 +2,68 @@ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
2
 
3
3
  describe TruncateHtml::HtmlTruncator do
4
4
 
5
+ def truncator(html = nil)
6
+ @truncator ||= TruncateHtml::HtmlTruncator.new(html)
7
+ end
8
+
5
9
  describe '#html_tokens' do
6
10
  before(:each) do
7
11
  @html = '<h1>Hi there</h1> <p>This is sweet!</p>'
8
- @truncator = TruncateHtml::HtmlTruncator.new @html
9
12
  end
10
13
 
11
- it 'should return each token in the string as an array element' do
12
- @truncator.send(:html_tokens).should == ['<h1>', 'Hi', ' ', 'there', '</h1>', ' ', '<p>', 'This', ' ', 'is', ' ', 'sweet!', '</p>']
14
+ it 'returns each token in the string as an array element' do
15
+ truncator(@html).html_tokens.should == ['<h1>', 'Hi', ' ', 'there', '</h1>', ' ', '<p>', 'This', ' ', 'is', ' ', 'sweet!', '</p>']
13
16
  end
14
17
  end
15
18
 
16
19
  describe '#html_tag?' do
17
20
 
18
- before(:each) do
19
- @truncator = TruncateHtml::HtmlTruncator.new 'foo'
20
- end
21
-
22
- it 'should be false when the string parameter is not an html tag' do
23
- @truncator.send(:html_tag?, 'no tags').should be_false
21
+ it 'returns false when the string parameter is not an html tag' do
22
+ truncator.html_tag?('no tags').should be_false
24
23
  end
25
24
 
26
- it 'should be true when the string parameter is an html tag' do
27
- @truncator.send(:html_tag?, '<img src="foo">').should be_true
28
- @truncator.send(:html_tag?, '</img>').should be_true
25
+ it 'returns true when the string parameter is an html tag' do
26
+ truncator.html_tag?('<img src="foo">').should be_true
27
+ truncator.html_tag?('</img>').should be_true
29
28
  end
30
29
 
31
30
  end
32
31
 
33
32
  describe '#open_tag?' do
34
33
 
35
- before(:each) do
36
- @truncator = TruncateHtml::HtmlTruncator.new 'foo'
34
+ it 'returns true if the tag is an open tag' do
35
+ truncator.open_tag?('<a>').should be_true
37
36
  end
38
37
 
39
- it 'should be true if the tag is an open tag' do
40
- @truncator.send(:open_tag?, '<a>').should be_true
38
+ it 'returns true if the tag is an open tag, and has whitespace and html properties with either single or double quotes' do
39
+ truncator.open_tag?(' <a href="http://awesomeful.net">').should be_true
40
+ truncator.open_tag?(" <a href='http://awesomeful.net' >").should be_true
41
41
  end
42
42
 
43
- it 'should be true if the tag is an open tag, and has whitespace and html properties with either single or double quotes' do
44
- @truncator.send(:open_tag?, ' <a href="http://awesomeful.net">').should be_true
45
- @truncator.send(:open_tag?, " <a href='http://awesomeful.net' >").should be_true
43
+ it 'returns false if the tag is a close tag' do
44
+ truncator.open_tag?('</a>').should be_false
46
45
  end
47
46
 
48
- it 'should be false if the tag is a close tag' do
49
- @truncator.send(:open_tag?, '</a>').should be_false
50
- end
51
-
52
- it 'should be false if the string is not an html tag' do
53
- @truncator.send(:open_tag?, 'foo bar').should be_false
47
+ it 'returns false if the string is not an html tag' do
48
+ truncator.open_tag?('foo bar').should be_false
54
49
  end
55
50
  end
56
51
 
57
52
  describe '#matching_close_tag' do
58
53
 
59
- before(:each) do
60
- @truncator = TruncateHtml::HtmlTruncator.new 'foo'
54
+ it 'closes a tag given an open tag' do
55
+ truncator.matching_close_tag('<a>').should == '</a>'
56
+ truncator.matching_close_tag(' <div>').should == '</div>'
57
+ truncator.matching_close_tag('<h1>').should == '</h1>'
58
+ truncator.matching_close_tag('<a href="foo">').should == '</a>'
61
59
  end
60
+ end
61
+
62
+ describe 'nil string' do
62
63
 
63
- it 'should close a tag given an open tag' do
64
- @truncator.send(:matching_close_tag, '<a>').should == '</a>'
65
- @truncator.send(:matching_close_tag, ' <div>').should == '</div>'
66
- @truncator.send(:matching_close_tag, '<h1>').should == '</h1>'
67
- @truncator.send(:matching_close_tag, '<a href="foo">').should == '</a>'
64
+ it 'returns an empty string' do
65
+ truncator(nil).truncate.should be_empty
66
+ truncator(nil).truncate.should be_kind_of String
68
67
  end
69
68
  end
70
69
 
@@ -2,18 +2,19 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{truncate_html}
5
- s.version = "0.1.1"
5
+ s.version = "0.1.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["hgimenez"]
9
- s.date = %q{2009-08-25}
9
+ s.date = %q{2009-09-25}
10
10
  s.description = %q{Truncates html so you don't have to}
11
11
  s.email = %q{harold.gimenez@gmail.com}
12
12
  s.extra_rdoc_files = [
13
13
  "README.markdown"
14
14
  ]
15
15
  s.files = [
16
- "README.markdown",
16
+ ".gitignore",
17
+ "README.markdown",
17
18
  "Rakefile",
18
19
  "VERSION",
19
20
  "init.rb",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: truncate_html
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - hgimenez
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-25 00:00:00 -04:00
12
+ date: 2009-09-25 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -22,6 +22,7 @@ extensions: []
22
22
  extra_rdoc_files:
23
23
  - README.markdown
24
24
  files:
25
+ - .gitignore
25
26
  - README.markdown
26
27
  - Rakefile
27
28
  - VERSION