rdf-rdfa 0.3.3.1 → 0.3.3.2

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.
data/History.md CHANGED
@@ -1,3 +1,10 @@
1
+ ### 0.3.3.2
2
+ * In Reader:
3
+ * Ensure that encoding is set to utf-8 if not specified.
4
+ * Look for encoding from input and HTML meta tags.
5
+ * Look for content-type from input and HTML meta tags.
6
+ * Retrieve @xmlns, @xml:lang and @lang as attributes when doing HTML parsing.
7
+
1
8
  ### 0.3.3.1
2
9
  * Improve format detection.
3
10
  * Use HTML parser instead of XML if format is determined to be html4 or html5.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3.1
1
+ 0.3.3.2
@@ -145,7 +145,7 @@ module RDF::RDFa
145
145
  end
146
146
 
147
147
  def inspect
148
- v = %w(base parent_subject parent_object language default_vocabulary).map {|a| "#{a}='#{self.send(a).nil? ? '<nil>' : self.send(a)}'"}
148
+ v = %w(base parent_subject parent_object language default_vocabulary).map {|a| "#{a}='#{self.send(a).inspect}'"}
149
149
  v << "uri_mappings[#{uri_mappings.keys.length}]"
150
150
  v << "incomplete_triples[#{incomplete_triples.length}]"
151
151
  v << "term_mappings[#{term_mappings.keys.length}]"
@@ -200,11 +200,17 @@ module RDF::RDFa
200
200
  when Nokogiri::HTML::Document, Nokogiri::XML::Document
201
201
  input
202
202
  else
203
+ # Try to detect charset from input
204
+ options[:encoding] ||= input.charset if input.respond_to?(:charset)
205
+
206
+ # Otherwise, default is utf-8
207
+ options[:encoding] ||= 'utf-8'
208
+
203
209
  case @host_language
204
210
  when :html4, :html5
205
- Nokogiri::HTML.parse(input, @base_uri.to_s)
211
+ Nokogiri::HTML.parse(input, @base_uri.to_s, options[:encoding])
206
212
  else
207
- Nokogiri::XML.parse(input, @base_uri.to_s)
213
+ Nokogiri::XML.parse(input, @base_uri.to_s, options[:encoding])
208
214
  end
209
215
  end
210
216
 
@@ -282,6 +288,20 @@ module RDF::RDFa
282
288
  root = head.match(%r(<[^!\?>]*>)m).to_s
283
289
  root_element = root.match(%r(^<(\S+)[ >])) ? $1 : ""
284
290
  version_attr = root.match(/version\s+=\s+(\S+)[\s">]/m) ? $1 : ""
291
+ head_element = head.match(%r(<head.*<\/head>)mi)
292
+ head_doc = Nokogiri::HTML.parse(head_element.to_s)
293
+
294
+ # May determine content-type and/or charset from meta
295
+ # Easist way is to parse head into a document and iterate
296
+ # of CSS matches
297
+ head_doc.css("meta").each do |e|
298
+ if e.attr("http-equiv").to_s.downcase == 'content-type'
299
+ content_type, e = e.attr("content").to_s.downcase.split(";")
300
+ options[:encoding] = $1.downcase if e.to_s =~ /charset=([^\s]*)$/i
301
+ elsif e.attr("charset")
302
+ options[:encoding] = e.attr("charset").to_s.downcase
303
+ end
304
+ end
285
305
  end
286
306
 
287
307
  # Already using XML parser, determine from DOCTYPE and/or root element
@@ -507,19 +527,33 @@ module RDF::RDFa
507
527
  # Regardless of how the mapping is declared, the value to be mapped must be converted to lower case,
508
528
  # and the URI is not processed in any way; in particular if it is a relative path it is
509
529
  # not resolved against the current base.
530
+ ns_defs = {}
510
531
  element.namespace_definitions.each do |ns|
532
+ ns_defs[ns.prefix] = ns.href.to_s
533
+ end
534
+
535
+ # HTML parsing doesn't create namespace_definitions
536
+ if ns_defs.empty?
537
+ ns_defs = {}
538
+ element.attributes.each do |k, v|
539
+ ns_defs[$1] = v.to_s if k =~ /^xmlns(?:\:(.+))?/
540
+ end
541
+ end
542
+
543
+ ns_defs.each do |prefix, href|
511
544
  # A Conforming RDFa Processor must ignore any definition of a mapping for the '_' prefix.
512
- next if ns.prefix == "_"
545
+ next if prefix == "_"
513
546
 
514
547
  # Downcase prefix for RDFa 1.1
515
- pfx_lc = (@version == :"rdfa1.0" || ns.prefix.nil?) ? ns.prefix : ns.prefix.to_s.downcase
516
- if ns.prefix
517
- uri_mappings[pfx_lc.to_sym] = ns.href
518
- namespaces[pfx_lc] ||= ns.href
519
- prefix(pfx_lc, ns.href)
520
- add_info(element, "extract_mappings: xmlns:#{ns.prefix} => <#{ns.href}>")
548
+ pfx_lc = (@version == :"rdfa1.0" || prefix.nil?) ? prefix : prefix.downcase
549
+ if prefix
550
+ uri_mappings[pfx_lc.to_sym] = href
551
+ namespaces[pfx_lc] ||= href
552
+ prefix(pfx_lc, href)
553
+ add_info(element, "extract_mappings: #{prefix} => <#{href}>")
521
554
  else
522
- namespaces[""] ||= ns.href
555
+ add_info(element, "extract_mappings: nil => <#{href}>")
556
+ namespaces[""] ||= href
523
557
  end
524
558
  end
525
559
 
@@ -672,6 +706,10 @@ module RDF::RDFa
672
706
  # attribute in no namespace must be ignored for the purposes of determining the element's
673
707
  # language.
674
708
  language = case
709
+ when @doc.is_a?(Nokogiri::HTML::Document) && element.attributes["xml:lang"]
710
+ element.attributes["xml:lang"].to_s
711
+ when @doc.is_a?(Nokogiri::HTML::Document) && element.attributes["lang"]
712
+ element.attributes["lang"].to_s
675
713
  when element.at_xpath("@xml:lang", "xml" => RDF::XML["uri"].to_s)
676
714
  element.at_xpath("@xml:lang", "xml" => RDF::XML["uri"].to_s).to_s
677
715
  when element.at_xpath("@lang")
data/rdf-rdfa.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rdf-rdfa}
8
- s.version = "0.3.3.1"
8
+ s.version = "0.3.3.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gregg Kellogg"]
12
- s.date = %q{2011-04-26}
12
+ s.date = %q{2011-04-29}
13
13
  s.description = %q{ RDF::RDFa is an RDFa reader/writer for Ruby using the RDF.rb library suite.
14
14
  }
15
15
  s.email = %q{gregg@kellogg-assoc.com}
@@ -75,7 +75,7 @@ Gem::Specification.new do |s|
75
75
  ]
76
76
  s.homepage = %q{http://github.com/gkellogg/rdf-rdfa}
77
77
  s.require_paths = ["lib"]
78
- s.rubygems_version = %q{1.6.2}
78
+ s.rubygems_version = %q{1.5.0}
79
79
  s.summary = %q{RDFa reader/writer for RDF.rb.}
80
80
  s.test_files = [
81
81
  "spec/literal_spec.rb",
data/spec/reader_spec.rb CHANGED
@@ -535,7 +535,7 @@ describe "RDF::RDFa::Reader" do
535
535
  reader.should be_a RDF::Reader
536
536
 
537
537
  # Make sure auto-detect works
538
- unless host_language =~ /svg/
538
+ unless host_language =~ /svg/ || t.name == "0216" # due to http-equiv
539
539
  reader.host_language.should == host_language.to_sym
540
540
  reader.version.should == version.to_sym
541
541
  end
@@ -546,8 +546,6 @@ describe "RDF::RDFa::Reader" do
546
546
  rescue RSpec::Expectations::ExpectationNotMetError => e
547
547
  if %w(0198).include?(t.name) || query =~ /XMLLiteral/m
548
548
  pending("XMLLiteral canonicalization not implemented yet")
549
- elsif %w(html4 html5).include?(host_language) && Kernel.open(t.input(host_language, version)) {|f| f.read =~ /xmlns/}
550
- pending("HTML parsing does not use xmlns")
551
549
  elsif classification != "required"
552
550
  pending("#{classification} test") { raise }
553
551
  else
metadata CHANGED
@@ -1,8 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdf-rdfa
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 95
4
5
  prerelease:
5
- version: 0.3.3.1
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 3
10
+ - 2
11
+ version: 0.3.3.2
6
12
  platform: ruby
7
13
  authors:
8
14
  - Gregg Kellogg
@@ -10,251 +16,349 @@ autorequire:
10
16
  bindir: bin
11
17
  cert_chain: []
12
18
 
13
- date: 2011-04-26 00:00:00 -07:00
19
+ date: 2011-04-29 00:00:00 -07:00
14
20
  default_executable:
15
21
  dependencies:
16
22
  - !ruby/object:Gem::Dependency
17
23
  name: addressable
18
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
19
25
  none: false
20
26
  requirements:
21
27
  - - "="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 15
30
+ segments:
31
+ - 2
32
+ - 2
33
+ - 4
23
34
  version: 2.2.4
24
- type: :runtime
25
35
  prerelease: false
26
- version_requirements: *id001
36
+ type: :runtime
37
+ requirement: *id001
27
38
  - !ruby/object:Gem::Dependency
28
39
  name: rdf
29
- requirement: &id002 !ruby/object:Gem::Requirement
40
+ version_requirements: &id002 !ruby/object:Gem::Requirement
30
41
  none: false
31
42
  requirements:
32
43
  - - ">="
33
44
  - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
34
48
  version: "0"
35
- type: :runtime
36
49
  prerelease: false
37
- version_requirements: *id002
50
+ type: :runtime
51
+ requirement: *id002
38
52
  - !ruby/object:Gem::Dependency
39
53
  name: haml
40
- requirement: &id003 !ruby/object:Gem::Requirement
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
41
55
  none: false
42
56
  requirements:
43
57
  - - ">="
44
58
  - !ruby/object:Gem::Version
59
+ hash: 7
60
+ segments:
61
+ - 3
62
+ - 0
63
+ - 0
45
64
  version: 3.0.0
46
- type: :runtime
47
65
  prerelease: false
48
- version_requirements: *id003
66
+ type: :runtime
67
+ requirement: *id003
49
68
  - !ruby/object:Gem::Dependency
50
69
  name: nokogiri
51
- requirement: &id004 !ruby/object:Gem::Requirement
70
+ version_requirements: &id004 !ruby/object:Gem::Requirement
52
71
  none: false
53
72
  requirements:
54
73
  - - ">="
55
74
  - !ruby/object:Gem::Version
75
+ hash: 29
76
+ segments:
77
+ - 1
78
+ - 3
79
+ - 3
56
80
  version: 1.3.3
57
- type: :runtime
58
81
  prerelease: false
59
- version_requirements: *id004
82
+ type: :runtime
83
+ requirement: *id004
60
84
  - !ruby/object:Gem::Dependency
61
85
  name: open-uri-cached
62
- requirement: &id005 !ruby/object:Gem::Requirement
86
+ version_requirements: &id005 !ruby/object:Gem::Requirement
63
87
  none: false
64
88
  requirements:
65
89
  - - ">="
66
90
  - !ruby/object:Gem::Version
91
+ hash: 25
92
+ segments:
93
+ - 0
94
+ - 0
95
+ - 3
67
96
  version: 0.0.3
68
- type: :development
69
97
  prerelease: false
70
- version_requirements: *id005
98
+ type: :development
99
+ requirement: *id005
71
100
  - !ruby/object:Gem::Dependency
72
101
  name: rdf-spec
73
- requirement: &id006 !ruby/object:Gem::Requirement
102
+ version_requirements: &id006 !ruby/object:Gem::Requirement
74
103
  none: false
75
104
  requirements:
76
105
  - - ">="
77
106
  - !ruby/object:Gem::Version
107
+ hash: 3
108
+ segments:
109
+ - 0
78
110
  version: "0"
79
- type: :development
80
111
  prerelease: false
81
- version_requirements: *id006
112
+ type: :development
113
+ requirement: *id006
82
114
  - !ruby/object:Gem::Dependency
83
115
  name: rdf-isomorphic
84
- requirement: &id007 !ruby/object:Gem::Requirement
116
+ version_requirements: &id007 !ruby/object:Gem::Requirement
85
117
  none: false
86
118
  requirements:
87
119
  - - ">="
88
120
  - !ruby/object:Gem::Version
121
+ hash: 27
122
+ segments:
123
+ - 0
124
+ - 3
125
+ - 4
89
126
  version: 0.3.4
90
- type: :development
91
127
  prerelease: false
92
- version_requirements: *id007
128
+ type: :development
129
+ requirement: *id007
93
130
  - !ruby/object:Gem::Dependency
94
131
  name: rdf-n3
95
- requirement: &id008 !ruby/object:Gem::Requirement
132
+ version_requirements: &id008 !ruby/object:Gem::Requirement
96
133
  none: false
97
134
  requirements:
98
135
  - - ">="
99
136
  - !ruby/object:Gem::Version
137
+ hash: 17
138
+ segments:
139
+ - 0
140
+ - 3
141
+ - 1
100
142
  version: 0.3.1
101
- type: :development
102
143
  prerelease: false
103
- version_requirements: *id008
144
+ type: :development
145
+ requirement: *id008
104
146
  - !ruby/object:Gem::Dependency
105
147
  name: rspec
106
- requirement: &id009 !ruby/object:Gem::Requirement
148
+ version_requirements: &id009 !ruby/object:Gem::Requirement
107
149
  none: false
108
150
  requirements:
109
151
  - - ">="
110
152
  - !ruby/object:Gem::Version
153
+ hash: 11
154
+ segments:
155
+ - 2
156
+ - 1
157
+ - 0
111
158
  version: 2.1.0
112
- type: :development
113
159
  prerelease: false
114
- version_requirements: *id009
160
+ type: :development
161
+ requirement: *id009
115
162
  - !ruby/object:Gem::Dependency
116
163
  name: sxp
117
- requirement: &id010 !ruby/object:Gem::Requirement
164
+ version_requirements: &id010 !ruby/object:Gem::Requirement
118
165
  none: false
119
166
  requirements:
120
167
  - - ">="
121
168
  - !ruby/object:Gem::Version
169
+ hash: 3
170
+ segments:
171
+ - 0
122
172
  version: "0"
123
- type: :development
124
173
  prerelease: false
125
- version_requirements: *id010
174
+ type: :development
175
+ requirement: *id010
126
176
  - !ruby/object:Gem::Dependency
127
177
  name: sparql-algebra
128
- requirement: &id011 !ruby/object:Gem::Requirement
178
+ version_requirements: &id011 !ruby/object:Gem::Requirement
129
179
  none: false
130
180
  requirements:
131
181
  - - ">="
132
182
  - !ruby/object:Gem::Version
183
+ hash: 3
184
+ segments:
185
+ - 0
133
186
  version: "0"
134
- type: :development
135
187
  prerelease: false
136
- version_requirements: *id011
188
+ type: :development
189
+ requirement: *id011
137
190
  - !ruby/object:Gem::Dependency
138
191
  name: sparql-grammar
139
- requirement: &id012 !ruby/object:Gem::Requirement
192
+ version_requirements: &id012 !ruby/object:Gem::Requirement
140
193
  none: false
141
194
  requirements:
142
195
  - - ">="
143
196
  - !ruby/object:Gem::Version
197
+ hash: 3
198
+ segments:
199
+ - 0
144
200
  version: "0"
145
- type: :development
146
201
  prerelease: false
147
- version_requirements: *id012
202
+ type: :development
203
+ requirement: *id012
148
204
  - !ruby/object:Gem::Dependency
149
205
  name: spira
150
- requirement: &id013 !ruby/object:Gem::Requirement
206
+ version_requirements: &id013 !ruby/object:Gem::Requirement
151
207
  none: false
152
208
  requirements:
153
209
  - - ">="
154
210
  - !ruby/object:Gem::Version
211
+ hash: 7
212
+ segments:
213
+ - 0
214
+ - 0
215
+ - 12
155
216
  version: 0.0.12
156
- type: :development
157
217
  prerelease: false
158
- version_requirements: *id013
218
+ type: :development
219
+ requirement: *id013
159
220
  - !ruby/object:Gem::Dependency
160
221
  name: yard
161
- requirement: &id014 !ruby/object:Gem::Requirement
222
+ version_requirements: &id014 !ruby/object:Gem::Requirement
162
223
  none: false
163
224
  requirements:
164
225
  - - ">="
165
226
  - !ruby/object:Gem::Version
227
+ hash: 15
228
+ segments:
229
+ - 0
230
+ - 6
231
+ - 4
166
232
  version: 0.6.4
167
- type: :development
168
233
  prerelease: false
169
- version_requirements: *id014
234
+ type: :development
235
+ requirement: *id014
170
236
  - !ruby/object:Gem::Dependency
171
237
  name: rdf
172
- requirement: &id015 !ruby/object:Gem::Requirement
238
+ version_requirements: &id015 !ruby/object:Gem::Requirement
173
239
  none: false
174
240
  requirements:
175
241
  - - ">="
176
242
  - !ruby/object:Gem::Version
243
+ hash: 21
244
+ segments:
245
+ - 0
246
+ - 3
247
+ - 3
177
248
  version: 0.3.3
178
- type: :runtime
179
249
  prerelease: false
180
- version_requirements: *id015
250
+ type: :runtime
251
+ requirement: *id015
181
252
  - !ruby/object:Gem::Dependency
182
253
  name: haml
183
- requirement: &id016 !ruby/object:Gem::Requirement
254
+ version_requirements: &id016 !ruby/object:Gem::Requirement
184
255
  none: false
185
256
  requirements:
186
257
  - - ">="
187
258
  - !ruby/object:Gem::Version
259
+ hash: 7
260
+ segments:
261
+ - 3
262
+ - 0
263
+ - 0
188
264
  version: 3.0.0
189
- type: :runtime
190
265
  prerelease: false
191
- version_requirements: *id016
266
+ type: :runtime
267
+ requirement: *id016
192
268
  - !ruby/object:Gem::Dependency
193
269
  name: nokogiri
194
- requirement: &id017 !ruby/object:Gem::Requirement
270
+ version_requirements: &id017 !ruby/object:Gem::Requirement
195
271
  none: false
196
272
  requirements:
197
273
  - - ">="
198
274
  - !ruby/object:Gem::Version
275
+ hash: 15
276
+ segments:
277
+ - 1
278
+ - 4
279
+ - 4
199
280
  version: 1.4.4
200
- type: :runtime
201
281
  prerelease: false
202
- version_requirements: *id017
282
+ type: :runtime
283
+ requirement: *id017
203
284
  - !ruby/object:Gem::Dependency
204
285
  name: spira
205
- requirement: &id018 !ruby/object:Gem::Requirement
286
+ version_requirements: &id018 !ruby/object:Gem::Requirement
206
287
  none: false
207
288
  requirements:
208
289
  - - ">="
209
290
  - !ruby/object:Gem::Version
291
+ hash: 7
292
+ segments:
293
+ - 0
294
+ - 0
295
+ - 12
210
296
  version: 0.0.12
211
- type: :development
212
297
  prerelease: false
213
- version_requirements: *id018
298
+ type: :development
299
+ requirement: *id018
214
300
  - !ruby/object:Gem::Dependency
215
301
  name: rspec
216
- requirement: &id019 !ruby/object:Gem::Requirement
302
+ version_requirements: &id019 !ruby/object:Gem::Requirement
217
303
  none: false
218
304
  requirements:
219
305
  - - ">="
220
306
  - !ruby/object:Gem::Version
307
+ hash: 27
308
+ segments:
309
+ - 2
310
+ - 5
311
+ - 0
221
312
  version: 2.5.0
222
- type: :development
223
313
  prerelease: false
224
- version_requirements: *id019
314
+ type: :development
315
+ requirement: *id019
225
316
  - !ruby/object:Gem::Dependency
226
317
  name: rdf-spec
227
- requirement: &id020 !ruby/object:Gem::Requirement
318
+ version_requirements: &id020 !ruby/object:Gem::Requirement
228
319
  none: false
229
320
  requirements:
230
321
  - - ">="
231
322
  - !ruby/object:Gem::Version
323
+ hash: 21
324
+ segments:
325
+ - 0
326
+ - 3
327
+ - 3
232
328
  version: 0.3.3
233
- type: :development
234
329
  prerelease: false
235
- version_requirements: *id020
330
+ type: :development
331
+ requirement: *id020
236
332
  - !ruby/object:Gem::Dependency
237
333
  name: rdf-isomorphic
238
- requirement: &id021 !ruby/object:Gem::Requirement
334
+ version_requirements: &id021 !ruby/object:Gem::Requirement
239
335
  none: false
240
336
  requirements:
241
337
  - - ">="
242
338
  - !ruby/object:Gem::Version
339
+ hash: 27
340
+ segments:
341
+ - 0
342
+ - 3
343
+ - 4
243
344
  version: 0.3.4
244
- type: :development
245
345
  prerelease: false
246
- version_requirements: *id021
346
+ type: :development
347
+ requirement: *id021
247
348
  - !ruby/object:Gem::Dependency
248
349
  name: yard
249
- requirement: &id022 !ruby/object:Gem::Requirement
350
+ version_requirements: &id022 !ruby/object:Gem::Requirement
250
351
  none: false
251
352
  requirements:
252
353
  - - ">="
253
354
  - !ruby/object:Gem::Version
355
+ hash: 3
356
+ segments:
357
+ - 0
254
358
  version: "0"
255
- type: :development
256
359
  prerelease: false
257
- version_requirements: *id022
360
+ type: :development
361
+ requirement: *id022
258
362
  description: " RDF::RDFa is an RDFa reader/writer for Ruby using the RDF.rb library suite.\n"
259
363
  email: gregg@kellogg-assoc.com
260
364
  executables: []
@@ -333,17 +437,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
333
437
  requirements:
334
438
  - - ">="
335
439
  - !ruby/object:Gem::Version
440
+ hash: 3
441
+ segments:
442
+ - 0
336
443
  version: "0"
337
444
  required_rubygems_version: !ruby/object:Gem::Requirement
338
445
  none: false
339
446
  requirements:
340
447
  - - ">="
341
448
  - !ruby/object:Gem::Version
449
+ hash: 3
450
+ segments:
451
+ - 0
342
452
  version: "0"
343
453
  requirements: []
344
454
 
345
455
  rubyforge_project:
346
- rubygems_version: 1.6.2
456
+ rubygems_version: 1.5.0
347
457
  signing_key:
348
458
  specification_version: 3
349
459
  summary: RDFa reader/writer for RDF.rb.