summary 0.7.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ --- {}
@@ -0,0 +1,4 @@
1
+ .DS_Store
2
+ .rake_tasks~
3
+ pkg
4
+ doc
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm 1.9.2@summary
@@ -1,19 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- summary (0.7.1)
4
+ summary (0.7.2)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- minitest (1.7.2)
9
+ minitest (2.3.1)
10
10
  rake (0.8.7)
11
11
 
12
12
  PLATFORMS
13
13
  ruby
14
14
 
15
15
  DEPENDENCIES
16
- bundler (>= 1.0.0)
17
16
  minitest
18
17
  rake
19
18
  summary!
data/Rakefile CHANGED
@@ -1,11 +1,7 @@
1
- require 'echoe'
2
-
3
- Echoe.new('summary') do |p|
4
- p.project = 'summary'
5
- p.author = 'Bruno Azisaka Maciel'
6
- p.email = 'bruno [at] bubble [dot] com [dot] br'
7
- p.url = 'http://github.com/azisaka/summary'
8
- p.summary = 'This is a simple gem that generates introduction text from a long text, it will always break the text at the end of the last word near to the limit you informed as argument.'
9
- p.docs_host = 'http://azisaka.github.com/summary/doc/'
10
- p.retain_gemspec = true
11
- end
1
+ require 'bundler'
2
+ require 'rake/testtask'
3
+
4
+ Bundler::GemHelper.install_tasks
5
+ Rake::TestTask.new { |t| t.pattern = "spec/**/*_spec.rb" }
6
+
7
+ task :default => 'test'
@@ -1,9 +1,7 @@
1
+ require "#{File.dirname(__FILE__)}/summary/version"
2
+ require "#{File.dirname(__FILE__)}/summary/summarize"
3
+
1
4
  module Summary
2
- MAJOR = '0'
3
- TINY = '7'
4
- PATCH = '2'
5
- VERSION = [MAJOR, TINY, PATCH] * '.'
6
-
7
5
  module String
8
6
  # This method sanitizes the string removing html tags, \t \n \r characters, and duplicated blank spaces.
9
7
  # To use it just do:
@@ -25,48 +23,6 @@ module Summary
25
23
  Summarize.new(self, size, terminator).summary
26
24
  end
27
25
  end
28
-
29
- class Summarize
30
- def initialize(text, size = 100, terminator = '...')
31
- @text, @size, @terminator = text, size, terminator
32
- end
33
-
34
- # Checks the need of "summarize" the string. When it is needed, the string is splitted.
35
- # Then the last dot is removed and the terminator is pushed into the resultant string.
36
- def summary
37
- return pure unless summarizable?
38
-
39
- pure[0...string_limit].sub(/\.$/,'') + @terminator
40
- end
41
-
42
- protected
43
- # It cleans up the text removing the html tags, break lines and white spaces
44
- def pure
45
- @pure ||= purify @text
46
- end
47
-
48
- # Cleans up any string removing the html tags, break lines and white spaces.
49
- def purify(string)
50
- string.gsub(/(^\s+)|<(.|\n)+?>|(\t|\n|\r)+/,'').sub(/\s+/,' ')
51
- end
52
-
53
- # Calculates the size limit to summarize the string.
54
- def string_limit
55
- @string_limit ||= pure[0..(@size - backspace)].rindex(' ')
56
- end
57
-
58
- # Verifies if the string can be summarized.
59
- def summarizable?
60
- pure.size > @size and pure =~ /\s/ and string_limit >= backspace
61
- end
62
-
63
- # Measures the space needed by the terminator.
64
- # Let's say you want a string with 50 chars, and your terminator is a '...'.
65
- # That means your string can only have 47 chars + 3 chars from your terminator.
66
- def backspace
67
- @backspace ||= purify(@terminator).size
68
- end
69
- end
70
26
  end
71
27
 
72
28
  String.send(:include, Summary::String)
@@ -0,0 +1,43 @@
1
+ module Summary
2
+ class Summarize
3
+ def initialize(text, size = 100, terminator = '...')
4
+ @text, @size, @terminator = text, size, terminator
5
+ end
6
+
7
+ # Checks the need of "summarize" the string. When it is needed, the string is splitted.
8
+ # Then the last dot is removed and the terminator is pushed into the resultant string.
9
+ def summary
10
+ return pure unless summarizable?
11
+
12
+ pure[0...string_limit].sub(/\.$/,'') + @terminator
13
+ end
14
+
15
+ protected
16
+ # It cleans up the text removing the html tags, break lines and white spaces
17
+ def pure
18
+ @pure ||= purify @text
19
+ end
20
+
21
+ # Cleans up any string removing the html tags, break lines and white spaces.
22
+ def purify(string)
23
+ string.gsub(/(^\s+)|<(.|\n)+?>|(\t|\n|\r)+/,'').sub(/\s+/,' ')
24
+ end
25
+
26
+ # Calculates the size limit to summarize the string.
27
+ def string_limit
28
+ @string_limit ||= pure[0..(@size - backspace)].rindex(' ')
29
+ end
30
+
31
+ # Verifies if the string can be summarized.
32
+ def summarizable?
33
+ pure.size > @size and pure =~ /\s/ and string_limit >= backspace
34
+ end
35
+
36
+ # Measures the space needed by the terminator.
37
+ # Let's say you want a string with 50 chars, and your terminator is a '...'.
38
+ # That means your string can only have 47 chars + 3 chars from your terminator.
39
+ def backspace
40
+ @backspace ||= purify(@terminator).size
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,8 @@
1
+ module Summary
2
+ module Version
3
+ MAJOR = '0'
4
+ TINY = '7'
5
+ PATCH = '3'
6
+ STRING = [MAJOR, TINY, PATCH] * '.'
7
+ end
8
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  require File.expand_path("../../spec_helper", __FILE__)
2
3
 
3
4
  describe 'Summary on plain text' do
@@ -230,3 +231,27 @@ describe 'Summary with different terminators' do
230
231
  end
231
232
  end
232
233
 
234
+ describe "Summary with accents" do
235
+ before do
236
+ @text = 'Cras eleifend sodãles sëm. Ut nec metus. Nullá sêd nisl.'
237
+ end
238
+
239
+ describe "limited to 20 chars" do
240
+ it "should break the text" do
241
+ assert_equal 'Cras eleifend', @text.summary(20,'')
242
+ end
243
+ end
244
+
245
+ describe "limited to 25 chars" do
246
+ it "should break the text" do
247
+ assert_equal 'Cras eleifend sodãles', @text.summary(25,'')
248
+ end
249
+ end
250
+
251
+ describe "limited to 30 chars" do
252
+ it "should break the text" do
253
+ assert_equal 'Cras eleifend sodãles sëm. Ut', @text.summary(30,'')
254
+ end
255
+ end
256
+ end
257
+
@@ -1,30 +1,21 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ require "#{File.dirname(__FILE__)}/lib/summary/version"
2
3
 
3
4
  Gem::Specification.new do |s|
4
- s.name = %q{summary}
5
- s.version = "0.7.2"
5
+ s.name = 'summary'
6
+ s.version = Summary::Version::STRING
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = %w(Bruno Azisaka Maciel)
9
+ s.email = %w(bruno@azisaka.com.br)
10
+ s.homepage = 'http://github.com/azisaka/summary'
11
+ s.summary = "This is a simple gem that generates introduction text from a long text, it will always break the text at the end of the last word near to the limit you informed as argument."
12
+ s.description = "This is a simple gem that generates introduction text from a long text, it will always break the text at the end of the last word near to the limit you informed as argument."
6
13
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Bruno Azisaka Maciel"]
9
- s.date = %q{2010-10-26}
10
- s.description = %q{This is a simple gem that generates introduction text from a long text, it will always break the text at the end of the last word near to the limit you informed as argument.}
11
- s.email = %q{bruno [at] bubble [dot] com [dot] br}
12
- s.extra_rdoc_files = ["CHANGELOG", "README.rdoc", "lib/summary.rb"]
13
- s.files = ["CHANGELOG", "Gemfile", "Gemfile.lock", "README.rdoc", "Rakefile", "lib/summary.rb", "rails/init.rb", "spec/lib/summary_spec.rb", "spec/spec_helper.rb", "summary.gemspec", "Manifest"]
14
- s.homepage = %q{http://github.com/azisaka/summary}
15
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Summary", "--main", "README.rdoc"]
16
- s.require_paths = ["lib"]
17
- s.rubyforge_project = %q{summary}
18
- s.rubygems_version = %q{1.3.7}
19
- s.summary = %q{This is a simple gem that generates introduction text from a long text, it will always break the text at the end of the last word near to the limit you informed as argument.}
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {spec}/*`.split("\n")
16
+ s.require_paths = %w(lib)
20
17
 
21
- if s.respond_to? :specification_version then
22
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
- s.specification_version = 3
24
-
25
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
- else
27
- end
28
- else
29
- end
18
+
19
+ s.add_development_dependency 'rake'
20
+ s.add_development_dependency 'minitest'
30
21
  end
metadata CHANGED
@@ -1,85 +1,88 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: summary
3
- version: !ruby/object:Gem::Version
4
- hash: 7
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 7
9
- - 2
10
- version: 0.7.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.3
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
13
- - Bruno Azisaka Maciel
7
+ authors:
8
+ - Bruno
9
+ - Azisaka
10
+ - Maciel
14
11
  autorequire:
15
12
  bindir: bin
16
13
  cert_chain: []
17
-
18
- date: 2010-10-26 00:00:00 -02:00
19
- default_executable:
20
- dependencies: []
21
-
22
- description: This is a simple gem that generates introduction text from a long text, it will always break the text at the end of the last word near to the limit you informed as argument.
23
- email: bruno [at] bubble [dot] com [dot] br
14
+ date: 2011-08-03 00:00:00.000000000Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rake
18
+ requirement: &2153492460 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: *2153492460
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: &2153492040 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: *2153492040
38
+ description: This is a simple gem that generates introduction text from a long text,
39
+ it will always break the text at the end of the last word near to the limit you
40
+ informed as argument.
41
+ email:
42
+ - bruno@azisaka.com.br
24
43
  executables: []
25
-
26
44
  extensions: []
27
-
28
- extra_rdoc_files:
29
- - CHANGELOG
30
- - README.rdoc
31
- - lib/summary.rb
32
- files:
45
+ extra_rdoc_files: []
46
+ files:
47
+ - .bundle/config
48
+ - .gitignore
49
+ - .rvmrc
33
50
  - CHANGELOG
34
51
  - Gemfile
35
52
  - Gemfile.lock
53
+ - Manifest
36
54
  - README.rdoc
37
55
  - Rakefile
38
56
  - lib/summary.rb
39
- - rails/init.rb
57
+ - lib/summary/summarize.rb
58
+ - lib/summary/version.rb
40
59
  - spec/lib/summary_spec.rb
41
60
  - spec/spec_helper.rb
42
61
  - summary.gemspec
43
- - Manifest
44
- has_rdoc: true
45
62
  homepage: http://github.com/azisaka/summary
46
63
  licenses: []
47
-
48
64
  post_install_message:
49
- rdoc_options:
50
- - --line-numbers
51
- - --inline-source
52
- - --title
53
- - Summary
54
- - --main
55
- - README.rdoc
56
- require_paths:
65
+ rdoc_options: []
66
+ require_paths:
57
67
  - lib
58
- required_ruby_version: !ruby/object:Gem::Requirement
68
+ required_ruby_version: !ruby/object:Gem::Requirement
59
69
  none: false
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- hash: 3
64
- segments:
65
- - 0
66
- version: "0"
67
- required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
75
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 11
73
- segments:
74
- - 1
75
- - 2
76
- version: "1.2"
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
77
80
  requirements: []
78
-
79
- rubyforge_project: summary
80
- rubygems_version: 1.3.7
81
+ rubyforge_project:
82
+ rubygems_version: 1.8.6
81
83
  signing_key:
82
84
  specification_version: 3
83
- summary: This is a simple gem that generates introduction text from a long text, it will always break the text at the end of the last word near to the limit you informed as argument.
85
+ summary: This is a simple gem that generates introduction text from a long text, it
86
+ will always break the text at the end of the last word near to the limit you informed
87
+ as argument.
84
88
  test_files: []
85
-
@@ -1 +0,0 @@
1
- require File.dirname(__FILE__) + '/../lib/summary'