hypermicrodata 0.1.0 → 0.1.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
- ---
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