raev 0.1.11 → 0.1.12

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.
@@ -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
-