rdf-rdfa 0.3.3.1 → 0.3.3.2

Sign up to get free protection for your applications and to get access to all the features.
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.