raev 0.1.11 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 55c78f5f5edfe18398bc184a0a8268978182d09f
4
+ data.tar.gz: 550566eba663b2f9cc5930f98be4f95a9c023ddd
5
+ SHA512:
6
+ metadata.gz: c83322a8f28c89ad3e28fa7739b244a17c711c68cca5e5d2060f7403ad44b7323eece461c69659f345916d5908c401a7e6a898ce73f1dd9f855a4344334bfa3f
7
+ data.tar.gz: 529f05c783b388f391a22864efb10968d879163bbb8b41bf02f2d61decd83eb07780eb6a4aaccf7298b1729006c1ac3c69b9f50a024436b36d98ce95238a9fab
data/Gemfile CHANGED
@@ -1,12 +1,11 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "nokogiri", ">= 1.5.3"
3
+ gem "nokogiri", ">= 1.6.1"
4
4
  gem "redirect_follower", ">= 0.1.1"
5
5
 
6
6
  group :development do
7
7
  gem "shoulda", ">= 0"
8
- gem "bundler", "~> 1.3.4"
9
- gem "jeweler", "~> 1.6.4"
10
- gem "rcov", ">= 0"
8
+ gem "bundler", "~> 1.6.3"
9
+ gem "jeweler", "2.0.1"
11
10
  gem "test-unit", "~> 2.5.4"
12
- end
11
+ end
@@ -1,26 +1,77 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- git (1.2.5)
5
- jeweler (1.6.4)
6
- bundler (~> 1.0)
4
+ activesupport (4.1.8)
5
+ i18n (~> 0.6, >= 0.6.9)
6
+ json (~> 1.7, >= 1.7.7)
7
+ minitest (~> 5.1)
8
+ thread_safe (~> 0.1)
9
+ tzinfo (~> 1.1)
10
+ addressable (2.3.6)
11
+ builder (3.2.2)
12
+ descendants_tracker (0.0.4)
13
+ thread_safe (~> 0.3, >= 0.3.1)
14
+ faraday (0.9.0)
15
+ multipart-post (>= 1.2, < 3)
16
+ git (1.2.8)
17
+ github_api (0.12.2)
18
+ addressable (~> 2.3)
19
+ descendants_tracker (~> 0.0.4)
20
+ faraday (~> 0.8, < 0.10)
21
+ hashie (>= 3.3)
22
+ multi_json (>= 1.7.5, < 2.0)
23
+ nokogiri (~> 1.6.3)
24
+ oauth2
25
+ hashie (3.3.1)
26
+ highline (1.6.21)
27
+ i18n (0.6.11)
28
+ jeweler (2.0.1)
29
+ builder
30
+ bundler (>= 1.0)
7
31
  git (>= 1.2.5)
32
+ github_api
33
+ highline (>= 1.6.15)
34
+ nokogiri (>= 1.5.10)
8
35
  rake
9
- nokogiri (1.5.9)
10
- rake (0.9.2)
11
- rcov (0.9.10)
36
+ rdoc
37
+ json (1.8.1)
38
+ jwt (1.2.0)
39
+ mini_portile (0.6.1)
40
+ minitest (5.4.3)
41
+ multi_json (1.10.1)
42
+ multi_xml (0.5.5)
43
+ multipart-post (2.0.0)
44
+ nokogiri (1.6.4.1)
45
+ mini_portile (~> 0.6.0)
46
+ oauth2 (1.0.0)
47
+ faraday (>= 0.8, < 0.10)
48
+ jwt (~> 1.0)
49
+ multi_json (~> 1.3)
50
+ multi_xml (~> 0.5)
51
+ rack (~> 1.2)
52
+ rack (1.5.2)
53
+ rake (10.4.0)
54
+ rdoc (4.1.2)
55
+ json (~> 1.4)
12
56
  redirect_follower (0.1.1)
13
- shoulda (2.11.3)
14
- test-unit (2.5.4)
57
+ shoulda (3.5.0)
58
+ shoulda-context (~> 1.0, >= 1.0.1)
59
+ shoulda-matchers (>= 1.4.1, < 3.0)
60
+ shoulda-context (1.2.1)
61
+ shoulda-matchers (2.7.0)
62
+ activesupport (>= 3.0.0)
63
+ test-unit (2.5.5)
64
+ thread_safe (0.3.4)
65
+ tzinfo (1.2.2)
66
+ thread_safe (~> 0.1)
15
67
 
16
68
  PLATFORMS
17
69
  ruby
18
70
 
19
71
  DEPENDENCIES
20
- bundler (~> 1.3.4)
21
- jeweler (~> 1.6.4)
22
- nokogiri (>= 1.5.3)
23
- rcov
72
+ bundler (~> 1.6.3)
73
+ jeweler (= 2.0.1)
74
+ nokogiri (>= 1.6.1)
24
75
  redirect_follower (>= 0.1.1)
25
76
  shoulda
26
77
  test-unit (~> 2.5.4)
data/README.md CHANGED
@@ -85,4 +85,6 @@ Raev.normalize_author("Editor")
85
85
 
86
86
  Raev.normalize_author(" ")
87
87
  # => nil
88
- ```
88
+ ```
89
+
90
+ [![Code Climate](https://codeclimate.com/github/pixelate/raev/badges/gpa.svg)](https://codeclimate.com/github/pixelate/raev)
data/Rakefile CHANGED
@@ -35,22 +35,4 @@ Rake::TestTask.new(:test) do |test|
35
35
  test.verbose = true
36
36
  end
37
37
 
38
- require 'rcov/rcovtask'
39
- Rcov::RcovTask.new do |test|
40
- test.libs << 'test'
41
- test.pattern = 'test/**/test_*.rb'
42
- test.verbose = true
43
- test.rcov_opts << '--exclude "gems/*"'
44
- end
45
-
46
- task :default => :test
47
-
48
- require 'rake/rdoctask'
49
- Rake::RDocTask.new do |rdoc|
50
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
51
-
52
- rdoc.rdoc_dir = 'rdoc'
53
- rdoc.title = "raev #{version}"
54
- rdoc.rdoc_files.include('README*')
55
- rdoc.rdoc_files.include('lib/**/*.rb')
56
- end
38
+ task :default => :test
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.11
1
+ 0.1.12
@@ -2,6 +2,7 @@ require 'nokogiri'
2
2
  require 'redirect_follower'
3
3
  require 'open-uri'
4
4
 
5
+ require 'raev/article'
5
6
  require 'raev/author'
6
7
  require 'raev/parser'
7
8
  require 'raev/url'
@@ -10,6 +11,10 @@ module Raev
10
11
  def self.url url
11
12
  Raev::Url.new(url)
12
13
  end
14
+
15
+ def self.article body
16
+ Raev::Article.new(body)
17
+ end
13
18
 
14
19
  def self.normalize_author author_name
15
20
  Raev::Author.normalize_name(author_name)
@@ -0,0 +1,68 @@
1
+ module Raev
2
+
3
+ class Article
4
+
5
+ attr_reader :body
6
+ attr_reader :doc
7
+
8
+ def initialize(body)
9
+ body = replace_non_breaking_space(body)
10
+
11
+ @doc = Nokogiri::HTML::DocumentFragment.parse(body)
12
+
13
+ @doc = replace_divs_with_paragraphs(@doc)
14
+ @doc = remove_empty_paragraphs(@doc)
15
+ @doc = remove_extra_linebreaks(@doc)
16
+
17
+ @body = @doc.to_s.gsub("\n", "")
18
+ end
19
+
20
+ private
21
+
22
+ def replace_non_breaking_space(str)
23
+ str.gsub("&nbsp;", " ")
24
+ end
25
+
26
+ def replace_divs_with_paragraphs(doc)
27
+ doc.css("div").each do |node|
28
+ if node.css("p").length == 0
29
+ node.name = "p"
30
+ end
31
+ end
32
+
33
+ doc
34
+ end
35
+
36
+ def remove_empty_paragraphs(doc)
37
+ doc.css("p").each do |node|
38
+ if node_empty?(node)
39
+ node.remove
40
+ end
41
+ end
42
+
43
+ doc
44
+ end
45
+
46
+ def remove_extra_linebreaks(doc)
47
+ doc.css("br").each do |node|
48
+ next_node = node.next
49
+
50
+ if next_node
51
+ if next_node.matches?("br") || node_empty?(next_node)
52
+ node.remove
53
+ end
54
+ else
55
+ node.remove
56
+ end
57
+ end
58
+
59
+ doc
60
+ end
61
+
62
+ def node_empty?(node)
63
+ node.element_children.empty? && /\A *\z/.match(node.inner_text)
64
+ end
65
+
66
+ end
67
+
68
+ end
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{raev}
8
- s.version = "0.1.11"
7
+ s.name = "raev"
8
+ s.version = "0.1.12"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andreas Zecher"]
12
- s.date = %q{2013-06-16}
13
- s.description = %q{Fetch, parse and normalize meta data from websites.}
14
- s.email = %q{andreas@madebypixelate.com}
12
+ s.date = "2014-11-26"
13
+ s.description = "Fetch, parse and normalize meta data from websites."
14
+ s.email = "andreas@madebypixelate.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.md"
@@ -25,51 +25,50 @@ Gem::Specification.new do |s|
25
25
  "Rakefile",
26
26
  "VERSION",
27
27
  "lib/raev.rb",
28
+ "lib/raev/article.rb",
28
29
  "lib/raev/author.rb",
29
30
  "lib/raev/parser.rb",
30
31
  "lib/raev/url.rb",
31
32
  "raev.gemspec",
32
33
  "test/helper.rb",
33
- "test/test_raev.rb"
34
+ "test/test_article.rb",
35
+ "test/test_author.rb",
36
+ "test/test_url.rb"
34
37
  ]
35
- s.homepage = %q{http://github.com/pixelate/raev}
38
+ s.homepage = "http://github.com/pixelate/raev"
36
39
  s.licenses = ["MIT"]
37
40
  s.require_paths = ["lib"]
38
- s.rubygems_version = %q{1.3.6}
39
- s.summary = %q{Fetch, parse and normalize meta data from websites.}
41
+ s.rubygems_version = "2.0.3"
42
+ s.summary = "Fetch, parse and normalize meta data from websites."
40
43
 
41
44
  if s.respond_to? :specification_version then
42
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
43
- s.specification_version = 3
45
+ s.specification_version = 4
44
46
 
45
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
46
- s.add_runtime_dependency(%q<nokogiri>, [">= 1.5.3"])
47
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
+ s.add_runtime_dependency(%q<nokogiri>, [">= 1.6.1"])
47
49
  s.add_runtime_dependency(%q<redirect_follower>, [">= 0.1.1"])
48
50
  s.add_development_dependency(%q<shoulda>, [">= 0"])
49
- s.add_development_dependency(%q<bundler>, ["~> 1.3.4"])
50
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
51
- s.add_development_dependency(%q<rcov>, [">= 0"])
51
+ s.add_development_dependency(%q<bundler>, ["~> 1.6.3"])
52
+ s.add_development_dependency(%q<jeweler>, ["= 2.0.1"])
52
53
  s.add_development_dependency(%q<test-unit>, ["~> 2.5.4"])
53
54
  s.add_runtime_dependency(%q<nokogiri>, [">= 1.4.4"])
54
55
  s.add_runtime_dependency(%q<redirect_follower>, [">= 0.1.1"])
55
56
  else
56
- s.add_dependency(%q<nokogiri>, [">= 1.5.3"])
57
+ s.add_dependency(%q<nokogiri>, [">= 1.6.1"])
57
58
  s.add_dependency(%q<redirect_follower>, [">= 0.1.1"])
58
59
  s.add_dependency(%q<shoulda>, [">= 0"])
59
- s.add_dependency(%q<bundler>, ["~> 1.3.4"])
60
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
61
- s.add_dependency(%q<rcov>, [">= 0"])
60
+ s.add_dependency(%q<bundler>, ["~> 1.6.3"])
61
+ s.add_dependency(%q<jeweler>, ["= 2.0.1"])
62
62
  s.add_dependency(%q<test-unit>, ["~> 2.5.4"])
63
63
  s.add_dependency(%q<nokogiri>, [">= 1.4.4"])
64
64
  s.add_dependency(%q<redirect_follower>, [">= 0.1.1"])
65
65
  end
66
66
  else
67
- s.add_dependency(%q<nokogiri>, [">= 1.5.3"])
67
+ s.add_dependency(%q<nokogiri>, [">= 1.6.1"])
68
68
  s.add_dependency(%q<redirect_follower>, [">= 0.1.1"])
69
69
  s.add_dependency(%q<shoulda>, [">= 0"])
70
- s.add_dependency(%q<bundler>, ["~> 1.3.4"])
71
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
72
- s.add_dependency(%q<rcov>, [">= 0"])
70
+ s.add_dependency(%q<bundler>, ["~> 1.6.3"])
71
+ s.add_dependency(%q<jeweler>, ["= 2.0.1"])
73
72
  s.add_dependency(%q<test-unit>, ["~> 2.5.4"])
74
73
  s.add_dependency(%q<nokogiri>, [">= 1.4.4"])
75
74
  s.add_dependency(%q<redirect_follower>, [">= 0.1.1"])
@@ -0,0 +1,38 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'helper'
4
+ require 'raev'
5
+
6
+ class TestArticle < Test::Unit::TestCase
7
+ should "remove empty paragraphs" do
8
+ body = "<p>This paragraph has content.</p><p></p><p>&nbsp;</p><p><img></p>"
9
+
10
+ article = Raev.article(body)
11
+
12
+ assert_equal "<p>This paragraph has content.</p><p><img></p>", article.body
13
+ end
14
+
15
+ should "remove extra linebreaks" do
16
+ body = "<p>Some text.<br><br><br/>Some more text.<br>&nbsp;&nbsp; <br></p>"
17
+
18
+ article = Raev.article(body)
19
+
20
+ assert_equal "<p>Some text.<br>Some more text. </p>", article.body
21
+ end
22
+
23
+ should "transform div to p tags" do
24
+ body = "<div>Some paragraph.</div><div>Another paragraph.</div>"
25
+
26
+ article = Raev.article(body)
27
+
28
+ assert_equal "<p>Some paragraph.</p><p>Another paragraph.</p>", article.body
29
+ end
30
+
31
+ should "not transform div to p tags if they have p children" do
32
+ body = "<div><p>Some paragraph.</p><p>Another paragraph.</p></div>"
33
+
34
+ article = Raev.article(body)
35
+
36
+ assert_equal "<div><p>Some paragraph.</p><p>Another paragraph.</p></div>", article.body
37
+ end
38
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'helper'
4
+ require 'raev'
5
+
6
+ class TestAuthor < Test::Unit::TestCase
7
+ should "parse author from rss entry" do
8
+ assert_equal "Andreas", Raev.normalize_author("andreas@somedomain.com (Andreas)")
9
+ assert_equal "Andreas Zecher", Raev.normalize_author("Andreas \"Pixelate\" Zecher")
10
+ assert_equal "Andreas Zecher", Raev.normalize_author("Andreas 'Pixelate' Zecher")
11
+ assert_equal "Andreas", Raev.normalize_author("andreas")
12
+ assert_equal nil, Raev.normalize_author("Admin")
13
+ assert_equal nil, Raev.normalize_author("Blogs")
14
+ assert_equal nil, Raev.normalize_author("Editor")
15
+ assert_equal nil, Raev.normalize_author("Staff")
16
+ assert_equal nil, Raev.normalize_author(" ")
17
+ assert_equal nil, Raev.normalize_author(nil)
18
+ end
19
+ end
@@ -1,10 +1,9 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  require 'helper'
4
- require 'raev/author'
5
- require 'raev/url'
4
+ require 'raev'
6
5
 
7
- class TestRaev < Test::Unit::TestCase
6
+ class UrlTest < Test::Unit::TestCase
8
7
  should "parse base url" do
9
8
  url = Raev.url("http://indiegames.com/2011/05/c418_minecraft_volume_alpha.html")
10
9
  assert_equal url.base, "indiegames.com"
@@ -32,13 +31,7 @@ class TestRaev < Test::Unit::TestCase
32
31
  end
33
32
 
34
33
  should "get twitter handle" do
35
- url = Raev.url("http://www.polygon.com")
36
- assert_equal "polygon", url.twitter
37
-
38
- url = Raev.url("http://penny-arcade.com/report")
39
- assert_equal "thepareport", url.twitter
40
-
41
- url = Raev.url("http://kotaku.com")
34
+ url = Raev.url("http://polygon.com")
42
35
  assert_equal nil, url.twitter
43
36
  end
44
37
 
@@ -46,9 +39,6 @@ class TestRaev < Test::Unit::TestCase
46
39
  url = Raev.url("http://www.polygon.com")
47
40
  assert_equal "http://www.polygon.com/rss/index.xml", url.feed
48
41
 
49
- url = Raev.url("http://penny-arcade.com/report")
50
- assert_equal "http://feeds.penny-arcade.com/pa-report", url.feed
51
-
52
42
  url = Raev.url("http://arstechnica.com")
53
43
  assert_equal "http://feeds.arstechnica.com/arstechnica/index/", url.feed
54
44
 
@@ -60,9 +50,6 @@ class TestRaev < Test::Unit::TestCase
60
50
  url = Raev.url("http://www.polygon.com/e3-2013/2013/6/14/4429126/the-indie-eight-ps4")
61
51
  assert_equal "The Indie Eight: Polygon talks with the showcase indies launching on PS4", url.headline
62
52
 
63
- url = Raev.url("http://penny-arcade.com/report/article/the-future-improved-hands-on-with-the-high-definition-oculus-rift-dev-kit")
64
- assert_equal "The future, improved: hands on with the high-definition Oculus Rift dev kit", url.headline
65
-
66
53
  url = Raev.url("http://kotaku.com/the-world-of-a-link-to-the-past-has-changed-in-the-new-513424187")
67
54
  assert_equal "The World of A Link To The Past Has Changed in the New 3DS Zelda", url.headline
68
55
 
@@ -87,23 +74,4 @@ class TestRaev < Test::Unit::TestCase
87
74
  url = Raev.url("http://www.rockpapershotgun.com/2013/06/05/i-spy-an-open-beta-for-spy-party/")
88
75
  assert_equal "I Spy An Open Beta For Spy Party", url.headline
89
76
  end
90
-
91
- should "get twitter and rss feed" do
92
- url = Raev.url("http://www.polygon.com")
93
- assert_equal "http://www.polygon.com/rss/index.xml", url.feed
94
- assert_equal "polygon", url.twitter
95
- end
96
-
97
- should "parse author from rss entry" do
98
- assert_equal "Andreas", Raev.normalize_author("andreas@somedomain.com (Andreas)")
99
- assert_equal "Andreas Zecher", Raev.normalize_author("Andreas \"Pixelate\" Zecher")
100
- assert_equal "Andreas Zecher", Raev.normalize_author("Andreas 'Pixelate' Zecher")
101
- assert_equal "Andreas", Raev.normalize_author("andreas")
102
- assert_equal nil, Raev.normalize_author("Admin")
103
- assert_equal nil, Raev.normalize_author("Blogs")
104
- assert_equal nil, Raev.normalize_author("Editor")
105
- assert_equal nil, Raev.normalize_author("Staff")
106
- assert_equal nil, Raev.normalize_author(" ")
107
- assert_equal nil, Raev.normalize_author(nil)
108
- end
109
77
  end
metadata CHANGED
@@ -1,154 +1,135 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: raev
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 11
9
- version: 0.1.11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.12
10
5
  platform: ruby
11
- authors:
6
+ authors:
12
7
  - Andreas Zecher
13
8
  autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
-
17
- date: 2013-06-16 00:00:00 +02:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :runtime
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- segments:
27
- - 1
28
- - 5
29
- - 3
30
- version: 1.5.3
11
+ date: 2014-11-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
31
14
  name: nokogiri
32
- requirement: *id001
33
- prerelease: false
34
- - !ruby/object:Gem::Dependency
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.6.1
35
20
  type: :runtime
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- segments:
41
- - 0
42
- - 1
43
- - 1
44
- version: 0.1.1
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.6.1
27
+ - !ruby/object:Gem::Dependency
45
28
  name: redirect_follower
46
- requirement: *id002
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.1
34
+ type: :runtime
47
35
  prerelease: false
48
- - !ruby/object:Gem::Dependency
49
- type: :development
50
- version_requirements: &id003 !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- segments:
55
- - 0
56
- version: "0"
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.1
41
+ - !ruby/object:Gem::Dependency
57
42
  name: shoulda
58
- requirement: *id003
59
- prerelease: false
60
- - !ruby/object:Gem::Dependency
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
61
48
  type: :development
62
- version_requirements: &id004 !ruby/object:Gem::Requirement
63
- requirements:
64
- - - ~>
65
- - !ruby/object:Gem::Version
66
- segments:
67
- - 1
68
- - 3
69
- - 4
70
- version: 1.3.4
71
- name: bundler
72
- requirement: *id004
73
49
  prerelease: false
74
- - !ruby/object:Gem::Dependency
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.6.3
75
62
  type: :development
76
- version_requirements: &id005 !ruby/object:Gem::Requirement
77
- requirements:
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
78
66
  - - ~>
79
- - !ruby/object:Gem::Version
80
- segments:
81
- - 1
82
- - 6
83
- - 4
84
- version: 1.6.4
67
+ - !ruby/object:Gem::Version
68
+ version: 1.6.3
69
+ - !ruby/object:Gem::Dependency
85
70
  name: jeweler
86
- requirement: *id005
87
- prerelease: false
88
- - !ruby/object:Gem::Dependency
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 2.0.1
89
76
  type: :development
90
- version_requirements: &id006 !ruby/object:Gem::Requirement
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- segments:
95
- - 0
96
- version: "0"
97
- name: rcov
98
- requirement: *id006
99
77
  prerelease: false
100
- - !ruby/object:Gem::Dependency
101
- type: :development
102
- version_requirements: &id007 !ruby/object:Gem::Requirement
103
- requirements:
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 2.0.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: test-unit
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
104
87
  - - ~>
105
- - !ruby/object:Gem::Version
106
- segments:
107
- - 2
108
- - 5
109
- - 4
88
+ - !ruby/object:Gem::Version
110
89
  version: 2.5.4
111
- name: test-unit
112
- requirement: *id007
90
+ type: :development
113
91
  prerelease: false
114
- - !ruby/object:Gem::Dependency
115
- type: :runtime
116
- version_requirements: &id008 !ruby/object:Gem::Requirement
117
- requirements:
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- segments:
121
- - 1
122
- - 4
123
- - 4
124
- version: 1.4.4
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 2.5.4
97
+ - !ruby/object:Gem::Dependency
125
98
  name: nokogiri
126
- requirement: *id008
127
- prerelease: false
128
- - !ruby/object:Gem::Dependency
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: 1.4.4
129
104
  type: :runtime
130
- version_requirements: &id009 !ruby/object:Gem::Requirement
131
- requirements:
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- segments:
135
- - 0
136
- - 1
137
- - 1
138
- version: 0.1.1
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: 1.4.4
111
+ - !ruby/object:Gem::Dependency
139
112
  name: redirect_follower
140
- requirement: *id009
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: 0.1.1
118
+ type: :runtime
141
119
  prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: 0.1.1
142
125
  description: Fetch, parse and normalize meta data from websites.
143
126
  email: andreas@madebypixelate.com
144
127
  executables: []
145
-
146
128
  extensions: []
147
-
148
- extra_rdoc_files:
129
+ extra_rdoc_files:
149
130
  - LICENSE.txt
150
131
  - README.md
151
- files:
132
+ files:
152
133
  - .document
153
134
  - Gemfile
154
135
  - Gemfile.lock
@@ -157,41 +138,37 @@ files:
157
138
  - Rakefile
158
139
  - VERSION
159
140
  - lib/raev.rb
141
+ - lib/raev/article.rb
160
142
  - lib/raev/author.rb
161
143
  - lib/raev/parser.rb
162
144
  - lib/raev/url.rb
163
145
  - raev.gemspec
164
146
  - test/helper.rb
165
- - test/test_raev.rb
166
- has_rdoc: true
147
+ - test/test_article.rb
148
+ - test/test_author.rb
149
+ - test/test_url.rb
167
150
  homepage: http://github.com/pixelate/raev
168
- licenses:
151
+ licenses:
169
152
  - MIT
153
+ metadata: {}
170
154
  post_install_message:
171
155
  rdoc_options: []
172
-
173
- require_paths:
156
+ require_paths:
174
157
  - lib
175
- required_ruby_version: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - ">="
178
- - !ruby/object:Gem::Version
179
- segments:
180
- - 0
181
- version: "0"
182
- required_rubygems_version: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - ">="
185
- - !ruby/object:Gem::Version
186
- segments:
187
- - 0
188
- version: "0"
158
+ required_ruby_version: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - '>='
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
189
168
  requirements: []
190
-
191
169
  rubyforge_project:
192
- rubygems_version: 1.3.6
170
+ rubygems_version: 2.0.3
193
171
  signing_key:
194
- specification_version: 3
172
+ specification_version: 4
195
173
  summary: Fetch, parse and normalize meta data from websites.
196
174
  test_files: []
197
-