html_truncator 0.4.0 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d49de35db932a0034c8a82e62f0c5d48a097c1f4
4
- data.tar.gz: a070c038a14da39ea4603280fc427a102ecc2155
3
+ metadata.gz: c5d32333126a13d95485d8099cc9b0c428888524
4
+ data.tar.gz: 10bf2180590da61247191344cb28f030f0da0f8b
5
5
  SHA512:
6
- metadata.gz: cf893133668e3f929f264209061d4861f0670e73756c75100f9cfa6b38a0ee584ae0d4914bd8d54a73aa40d8e9b26b2de953adda75576a05694337e74bb61a15
7
- data.tar.gz: 4409e5eb01fe42cbebcb78ffc49e9d8753ea61989c991a285c9f0064874dfbd4865ba3a66fc95664d6cbb8b0c274e74cfd3cee0f21079d5dd4998f9c70c0d77c
6
+ metadata.gz: 6d53be5769d4a135570d97163cb362c307a7933ce8e456beafd7f1536a8f60a667fff3c130a4cd6fcfe9b7966e80af7c12effc1fbb1539181656dfae2e08395f
7
+ data.tar.gz: 184db5d95e09c142c11ea64687c062ca654489f15a896c125caec0f4357034fc2f63531ebe4bf67e43b7e37f725173fe5629f22c1f6e244fc2923cccad0d742a
data/README.md CHANGED
@@ -10,17 +10,23 @@ How to use it
10
10
 
11
11
  It's very simple. Install it with rubygems:
12
12
 
13
- gem install html_truncator
13
+ ```
14
+ gem install html_truncator
15
+ ```
14
16
 
15
17
  Or, if you use bundler, add it to your `Gemfile`:
16
18
 
17
- gem "html_truncator", "~>0.2"
19
+ ```ruby
20
+ gem "html_truncator", "~>0.2"
21
+ ```
18
22
 
19
23
  Then you can use it in your code:
20
24
 
21
- require "html_truncator"
22
- HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 3)
23
- # => "<p>Lorem ipsum dolor…</p>"
25
+ ```ruby
26
+ require "html_truncator"
27
+ HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 3)
28
+ # => "<p>Lorem ipsum dolor…</p>"
29
+ ```
24
30
 
25
31
  The HTML_Truncator class has only one method, `truncate`, with 3 arguments:
26
32
 
@@ -43,55 +49,75 @@ Examples
43
49
 
44
50
  A simple example:
45
51
 
46
- HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 3)
47
- # => "<p>Lorem ipsum dolor…</p>"
52
+ ```ruby
53
+ HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 3)
54
+ # => "<p>Lorem ipsum dolor…</p>"
55
+ ```
48
56
 
49
57
  If the text is too short to be truncated, it won't be modified:
50
58
 
51
- HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 5)
52
- # => "<p>Lorem ipsum dolor sit amet.</p>"
59
+ ```ruby
60
+ HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 5)
61
+ # => "<p>Lorem ipsum dolor sit amet.</p>"
62
+ ```
53
63
 
54
64
  If you prefer, you can have the length in characters instead of words:
55
65
 
56
- HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 12, :length_in_chars => true)
57
- # => "<p>Lorem ipsum…</p>"
66
+ ```ruby
67
+ HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 12, :length_in_chars => true)
68
+ # => "<p>Lorem ipsum…</p>"
69
+ ```
58
70
 
59
71
  It doesn't cut inside a word but goes back to the immediately preceding word
60
72
  boundary:
61
73
 
62
- HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 10, :length_in_chars => true)
63
- # => "<p>Lorem…</p>"
74
+ ```ruby
75
+ HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 10, :length_in_chars => true)
76
+ # => "<p>Lorem…</p>"
77
+ ```
64
78
 
65
79
  You can customize the ellipsis:
66
80
 
67
- HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 3, :ellipsis => " (truncated)")
68
- # => "<p>Lorem ipsum dolor (truncated)</p>"
81
+ ```ruby
82
+ HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 3, :ellipsis => " (truncated)")
83
+ # => "<p>Lorem ipsum dolor (truncated)</p>"
84
+ ```
69
85
 
70
86
  And even have HTML in the ellipsis:
71
87
 
72
- HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 3, :ellipsis => '<a href="/more-to-read">...</a>')
73
- # => "<p>Lorem ipsum dolor<a href="/more-to-read">...</a></p>"
88
+ ```ruby
89
+ HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 3, :ellipsis => '<a href="/more-to-read">...</a>')
90
+ # => "<p>Lorem ipsum dolor<a href="/more-to-read">...</a></p>"
91
+ ```
74
92
 
75
93
  The ellipsis is put at the right place, inside `<p>`, but not `<i>`:
76
94
 
77
- HTML_Truncator.truncate("<p><i>Lorem ipsum dolor sit amet.</i></p>", 3)
78
- # => "<p><i>Lorem ipsum dolor</i>…</p>"
95
+ ```ruby
96
+ HTML_Truncator.truncate("<p><i>Lorem ipsum dolor sit amet.</i></p>", 3)
97
+ # => "<p><i>Lorem ipsum dolor</i>…</p>"
98
+ ```
79
99
 
80
100
  And the punctation just before the ellipsis is not kept:
81
101
 
82
- HTML_Truncator.truncate("<p>Lorem ipsum: lorem ipsum dolor sit amet.</p>", 2)
83
- # => "<p>Lorem ipsum…</p>"
102
+ ```ruby
103
+ HTML_Truncator.truncate("<p>Lorem ipsum: lorem ipsum dolor sit amet.</p>", 2)
104
+ # => "<p>Lorem ipsum…</p>"
105
+ ```
84
106
 
85
107
  You can indicate that a tag can contain the ellipsis but adding it to the ellipsable_tags:
86
108
 
87
- HTML_Truncator.ellipsable_tags << "blockquote"
88
- HTML_Truncator.truncate("<blockquote>Lorem ipsum dolor sit amet.</blockquote>", 3)
89
- # => "<blockquote>Lorem ipsum dolor…</blockquote>"
109
+ ```ruby
110
+ HTML_Truncator.ellipsable_tags << "blockquote"
111
+ HTML_Truncator.truncate("<blockquote>Lorem ipsum dolor sit amet.</blockquote>", 3)
112
+ # => "<blockquote>Lorem ipsum dolor…</blockquote>"
113
+ ```
90
114
 
91
115
  You can know if a string was truncated with the `html_truncated?` method:
92
116
 
93
- HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 3).html_truncated?
94
- # => true
117
+ ```ruby
118
+ HTML_Truncator.truncate("<p>Lorem ipsum dolor sit amet.</p>", 3).html_truncated?
119
+ # => true
120
+ ```
95
121
 
96
122
 
97
123
  Alternatives
@@ -72,18 +72,25 @@ end
72
72
 
73
73
  class Nokogiri::XML::Text
74
74
  def truncate(max, opts)
75
- words = to_xhtml.scan(/\s*\S+/)
76
75
  if opts[:length_in_chars]
77
- count = to_xhtml.length
76
+ count = content.length
78
77
  return [to_xhtml, count, opts] if count <= max && max > 0
78
+ words = content.scan(/\s*\S+/)
79
79
  if words.size > 1
80
80
  words.inject('') do |string, word|
81
- return [string, count, opts] if string.length + word.length > max
81
+ if string.length + word.length > max
82
+ txt = dup
83
+ txt.content = string
84
+ return [txt.to_xhtml, count, opts]
85
+ end
82
86
  string + word
83
87
  end
84
88
  end
85
- [content.slice(0, max), count, opts]
89
+ txt = dup
90
+ txt.content = content.slice(0, max)
91
+ [txt.to_xhtml, count, opts]
86
92
  else
93
+ words = to_xhtml.scan(/\s*\S+/)
87
94
  count = words.length
88
95
  return [to_xhtml, count, opts] if count <= max && max > 0
89
96
  [words.slice(0, max).join, count, opts]
@@ -1,3 +1,3 @@
1
1
  class HTML_Truncator
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html_truncator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno Michel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-15 00:00:00.000000000 Z
11
+ date: 2015-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.4'
33
+ version: '3.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2.4'
40
+ version: '3.0'
41
41
  description: Wants to truncate an HTML string properly? This gem is for you.
42
42
  email: bmichel@menfin.info
43
43
  executables: []
@@ -45,12 +45,11 @@ extensions: []
45
45
  extra_rdoc_files:
46
46
  - README.md
47
47
  files:
48
+ - Gemfile
48
49
  - MIT-LICENSE
49
50
  - README.md
50
- - Gemfile
51
- - lib/html_truncator/version.rb
52
51
  - lib/html_truncator.rb
53
- - init.rb
52
+ - lib/html_truncator/version.rb
54
53
  homepage: http://github.com/nono/HTML-Truncator
55
54
  licenses: []
56
55
  metadata: {}
@@ -60,17 +59,17 @@ require_paths:
60
59
  - lib
61
60
  required_ruby_version: !ruby/object:Gem::Requirement
62
61
  requirements:
63
- - - '>='
62
+ - - ">="
64
63
  - !ruby/object:Gem::Version
65
64
  version: '0'
66
65
  required_rubygems_version: !ruby/object:Gem::Requirement
67
66
  requirements:
68
- - - '>='
67
+ - - ">="
69
68
  - !ruby/object:Gem::Version
70
69
  version: '0'
71
70
  requirements: []
72
71
  rubyforge_project:
73
- rubygems_version: 2.0.3
72
+ rubygems_version: 2.4.5
74
73
  signing_key:
75
74
  specification_version: 4
76
75
  summary: Wants to truncate an HTML string properly? This gem is for you.
data/init.rb DELETED
@@ -1,2 +0,0 @@
1
- # encoding: utf-8
2
- require "html_truncator"