rsinger-rdfobjects 0.1.9 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/rdf_objects/parsers.rb +15 -5
  2. metadata +1 -1
@@ -1,12 +1,15 @@
1
- $KCODE = 'u'
1
+ # encoding: utf-8
2
2
  require 'rubygems'
3
3
  require 'strscan'
4
4
  require 'iconv'
5
- require 'jcode'
6
5
  require 'uri'
7
6
  require 'json'
8
7
  require 'nokogiri'
9
8
  require 'cgi'
9
+ if RUBY_VERSION < '1.9.0'
10
+ $KCODE = 'u'
11
+ require 'jcode'
12
+ end
10
13
 
11
14
  class UTF8Parser < StringScanner
12
15
  STRING = /(([\x0-\x1f]|[\\\/bfnrt]|\\u[0-9a-fA-F]{4}|[\x20-\xff])*)/nx
@@ -52,7 +55,7 @@ class UTF8Parser < StringScanner
52
55
  UNPARSED
53
56
  end
54
57
  rescue Iconv::Failure => e
55
- raise GeneratorError, "Caught #{e.class}: #{e}"
58
+ raise StandardError, "Caught #{e.class}: #{e}"
56
59
  end
57
60
  end
58
61
  module RDFObject
@@ -61,6 +64,9 @@ class NTriplesParser
61
64
  attr_accessor :object
62
65
  def initialize(line)
63
66
  @ntriple = line
67
+ if @ntriple.respond_to?(:force_encoding)
68
+ @ntriple.force_encoding("ASCII-8BIT")
69
+ end
64
70
  parse_ntriple
65
71
  end
66
72
 
@@ -83,8 +89,12 @@ class NTriplesParser
83
89
  object = scanner.scan_until(/("\s?\.\n?$)|("@[A-z])|("\^\^)/)
84
90
  scanner.pos=(scanner.pos-2)
85
91
  object.sub!(/"..$/,'')
86
- uscan = UTF8Parser.new(object)
87
- object = uscan.parse_string
92
+ if object.respond_to?(:force_encoding)
93
+ object.force_encoding('utf-8')
94
+ else
95
+ uscan = UTF8Parser.new(object)
96
+ object = uscan.parse_string
97
+ end
88
98
  if scanner.match?(/@/)
89
99
  scanner.getch
90
100
  @language = scanner.scan_until(/\s?\.\n?$/)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsinger-rdfobjects
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ross Singer