hypermicrodata 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 6aa222d1d9f2fd94e7eabda85a111de9b63b17ba
4
- data.tar.gz: 624be0e7d6c825c69ed224508f6286da2911cd8e
5
- SHA512:
6
- metadata.gz: 094a2d0285349d16ff74308ce8756d5a2510f67c0ab564bd93112823c488bc0eeee030725feb87fa6b2f89e2ab4805407a2a536ded47262c3125f81ea1cd9901
7
- data.tar.gz: 6753e62b18ea5b2e4b0550b5fcaaf2eeb5f3101efbb61c5af745901285a3d4621761e2b75a8201e670274350cab0a5a2f7bebac8570e4e87357a6e581626b700
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 31c2827d5ef761811004b563f135127def94a625
4
+ data.tar.gz: 229d52f8eee1e15347d72171d37f6ebda948df84
5
+ SHA512:
6
+ metadata.gz: b1caaf52ab0fe4dc1c3285b04b9a1db8b3b1debe0d2966cc3c903d88a72e3900d3d2815521c95d5d98217e0c81cffe8f1d63fa9977e53d2ee1db361f8ea70de0
7
+ data.tar.gz: 3f2531028ea38dc3d082e84a14aa426406d7ebee8667e3459611ccfd05c7857eb965daf73715c5c390ef272989566b761386512955e940d4b6032bb821332dfb
data/.travis.yml CHANGED
@@ -1,8 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "1.9.2"
4
- - "1.9.3"
5
- - "2.0.0"
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.1
6
6
  - jruby-19mode # JRuby in 1.9 mode
7
7
  # uncomment this line if your project needs to run something other than `rake`:
8
8
  script: rake test
@@ -3,10 +3,11 @@ module Hypermicrodata
3
3
 
4
4
  attr_reader :items, :doc
5
5
 
6
- def initialize(content, page_url=nil, filter_xpath_attr=nil)
7
- @doc = Nokogiri::HTML(content)
8
- @page_url = page_url
9
- @filter_xpath_attr = filter_xpath_attr
6
+ def initialize(content, options = {})
7
+ encoding = options[:force_encoding] || nil
8
+ @doc = Nokogiri::HTML(content, nil, encoding)
9
+ @page_url = options[:page_url]
10
+ @filter_xpath_attr = options[:filter_xpath_attr]
10
11
  @items = extract_items
11
12
  end
12
13
 
@@ -5,7 +5,7 @@ module Hypermicrodata
5
5
  @location = options[:location]
6
6
  @profile_path = options[:profile_path]
7
7
  filter_xpath_attr = "@data-#{options[:data_attr_name] || default_data_attr_name}"
8
- @document = Hypermicrodata::Document.new(html, @location, filter_xpath_attr)
8
+ @document = Hypermicrodata::Document.new(html, page_url: @location, filter_xpath_attr: filter_xpath_attr)
9
9
  end
10
10
 
11
11
  def to_json(format = :plain, options = {})
@@ -1,3 +1,3 @@
1
1
  module Hypermicrodata
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -19,14 +19,16 @@ require 'uri'
19
19
 
20
20
  module Hypermicrodata
21
21
 
22
- def self.get_items(location)
23
- content = open(location)
22
+ def self.get_items(location, encoding = nil)
23
+ f = open(location)
24
24
  page_url = location
25
- Hypermicrodata::Document.new(content, page_url).extract_items
25
+ Hypermicrodata::Document.new(f, page_url: location, force_encoding: encoding).extract_items
26
+ ensure
27
+ f.close
26
28
  end
27
29
 
28
- def self.to_json(location)
29
- items = get_items(location)
30
+ def self.to_json(location, encoding = nil)
31
+ items = get_items(location, encoding)
30
32
  hash = {}
31
33
  hash[:items] = items.map do |item|
32
34
  item.to_hash
data/test/test_itemref.rb CHANGED
@@ -3,17 +3,17 @@ require 'test_helper'
3
3
  class TestItemref < Test::Unit::TestCase
4
4
 
5
5
  def setup
6
- @items = Hypermicrodata.get_items('test/data/example_itemref.html')
6
+ @items = Hypermicrodata.get_items('test/data/example_itemref.html', 'utf-8')
7
7
  end
8
8
 
9
9
  def test_top_item_name
10
- assert_equal ['Amanda'], @items.first.properties['name']
10
+ assert_equal ['Amanda'], @items.first.properties['name'].map(&:value)
11
11
  end
12
12
 
13
13
  def test_band_name_and_size
14
- band = @items.first.properties['band'].first
15
- assert_equal ['Jazz Band'], band.properties['name']
16
- assert_equal ['12'], band.properties['size']
14
+ band = @items.first.properties['band'].first.item
15
+ assert_equal ['Jazz Band'], band.properties['name'].map(&:value)
16
+ assert_equal ['12'], band.properties['size'].map(&:value)
17
17
  end
18
18
 
19
- end
19
+ end
data/test/test_json.rb CHANGED
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
  class TestJson < Test::Unit::TestCase
4
4
 
5
5
  def setup
6
- json = Hypermicrodata.to_json('test/data/example_itemref.html')
6
+ json = Hypermicrodata.to_json('test/data/example_itemref.html', 'utf-8')
7
7
  @top_item = JSON.parse(json)['items'].first
8
8
  end
9
9
 
data/test/test_parse.rb CHANGED
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
  class TestParse < Test::Unit::TestCase
4
4
 
5
5
  def setup
6
- @items = Hypermicrodata.get_items('test/data/example.html')
6
+ @items = Hypermicrodata.get_items('test/data/example.html', 'utf-8')
7
7
  end
8
8
 
9
9
  def test_top_item_type
@@ -16,21 +16,21 @@ class TestParse < Test::Unit::TestCase
16
16
 
17
17
  def test_top_item_properties
18
18
  properties = @items.first.properties
19
- assert_equal ["Jason Ronallo"], properties['name']
20
- assert_equal ["http://twitter.com/ronallo"], properties['url']
21
- assert_equal ["Associate Head of Digital Library Initiatives"], properties['jobTitle']
19
+ assert_equal ["Jason Ronallo"], properties['name'].map(&:value)
20
+ assert_equal ["http://twitter.com/ronallo"], properties['url'].map(&:value)
21
+ assert_equal ["Associate Head of Digital Library Initiatives"], properties['jobTitle'].map(&:value)
22
22
  end
23
23
 
24
24
  def test_nested_item
25
- item = @items.first.properties['affiliation'][0]
25
+ item = @items.first.properties['affiliation'].first.item
26
26
  assert_equal ['http://schema.org/Library'], item.type
27
27
  assert_equal "http://lib.ncsu.edu", item.id
28
28
  end
29
29
 
30
30
  def test_nested_item_properties
31
- properties = @items.first.properties['affiliation'][0].properties
32
- assert_equal ['NCSU Libraries'], properties['name']
33
- assert_equal ['http://www.lib.ncsu.edu'], properties['url']
31
+ properties = @items.first.properties['affiliation'].first.item.properties
32
+ assert_equal ['NCSU Libraries'], properties['name'].map(&:value)
33
+ assert_equal ['http://www.lib.ncsu.edu'], properties['url'].map(&:value)
34
34
  end
35
35
 
36
- end
36
+ end
metadata CHANGED
@@ -1,81 +1,109 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: hypermicrodata
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Jason Ronallo
8
8
  - Toru KAWAMURA
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2014-10-13 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2014-10-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: nokogiri
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- requirements:
20
- - &id002
21
- - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
24
21
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: mechanize
28
22
  prerelease: false
29
- requirement: &id003 !ruby/object:Gem::Requirement
30
- requirements:
31
- - *id002
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: mechanize
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
32
35
  type: :runtime
33
- version_requirements: *id003
34
- - !ruby/object:Gem::Dependency
35
- name: halibut
36
36
  prerelease: false
37
- requirement: &id004 !ruby/object:Gem::Requirement
38
- requirements:
39
- - *id002
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: halibut
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
40
49
  type: :runtime
41
- version_requirements: *id004
42
- - !ruby/object:Gem::Dependency
43
- name: multi_json
44
50
  prerelease: false
45
- requirement: &id005 !ruby/object:Gem::Requirement
46
- requirements:
47
- - *id002
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: multi_json
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
48
63
  type: :runtime
49
- version_requirements: *id005
50
- - !ruby/object:Gem::Dependency
51
- name: bundler
52
64
  prerelease: false
53
- requirement: &id006 !ruby/object:Gem::Requirement
54
- requirements:
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: bundler
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
55
74
  - - ~>
56
- - !ruby/object:Gem::Version
57
- version: "1.3"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.3'
58
77
  type: :development
59
- version_requirements: *id006
60
- - !ruby/object:Gem::Dependency
61
- name: rake
62
78
  prerelease: false
63
- requirement: &id007 !ruby/object:Gem::Requirement
64
- requirements:
65
- - *id002
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: '1.3'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rake
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
66
91
  type: :development
67
- version_requirements: *id007
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
68
98
  description: HTML5 Microdata extractor with Hypermedia
69
- email:
99
+ email:
70
100
  - jronallo@gmail.com
71
101
  - tkawa@4bit.net
72
- executables:
102
+ executables:
73
103
  - hypermicrodata.rb
74
104
  extensions: []
75
-
76
105
  extra_rdoc_files: []
77
-
78
- files:
106
+ files:
79
107
  - .gitignore
80
108
  - .travis.yml
81
109
  - Gemfile
@@ -107,29 +135,30 @@ files:
107
135
  - test/test_json.rb
108
136
  - test/test_parse.rb
109
137
  homepage: https://github.com/tkawa/hypermicrodata
110
- licenses:
138
+ licenses:
111
139
  - MIT
112
140
  metadata: {}
113
-
114
141
  post_install_message:
115
142
  rdoc_options: []
116
-
117
- require_paths:
143
+ require_paths:
118
144
  - lib
119
- required_ruby_version: !ruby/object:Gem::Requirement
120
- requirements:
121
- - *id002
122
- required_rubygems_version: !ruby/object:Gem::Requirement
123
- requirements:
124
- - *id002
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - '>='
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
125
155
  requirements: []
126
-
127
156
  rubyforge_project:
128
- rubygems_version: 2.0.14
157
+ rubygems_version: 2.4.2
129
158
  signing_key:
130
159
  specification_version: 4
131
160
  summary: Ruby library for extracting HTML5 Microdata with Hypermedia
132
- test_files:
161
+ test_files:
133
162
  - test/data/example.html
134
163
  - test/data/example_itemref.html
135
164
  - test/data/example_with_no_itemscope.html