Skip to content

Commit d05e94c

Browse files
committed
Update DECIMAL and DOUBLE terminals.
1 parent db6a453 commit d05e94c

File tree

3 files changed

+11
-12
lines changed

3 files changed

+11
-12
lines changed

lib/rdf/turtle/reader.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -619,16 +619,17 @@ def read_annotation(subject, predicate, object)
619619

620620
# @return [RDF::Literal]
621621
def read_literal
622-
error("Unexpected end of file", production: :literal) unless token = @lexer.first
622+
token = @lexer.first
623+
error("Unexpected end of file", production: :literal) unless token
623624
case token.type || token.value
624-
when :INTEGER then prod(:literal) {literal(@lexer.shift.value, datatype: RDF::XSD.integer)}
625+
when :DOUBLE then prod(:literal) {literal(@lexer.shift.value.sub(/\.([eE])/, '.0\1'), datatype: RDF::XSD.double)}
625626
when :DECIMAL
626627
prod(:literal) do
627628
value = @lexer.shift.value
628629
value = "0#{value}" if value.start_with?(".")
629630
literal(value, datatype: RDF::XSD.decimal)
630631
end
631-
when :DOUBLE then prod(:literal) {literal(@lexer.shift.value.sub(/\.([eE])/, '.0\1'), datatype: RDF::XSD.double)}
632+
when :INTEGER then prod(:literal) {literal(@lexer.shift.value, datatype: RDF::XSD.integer)}
632633
when "true", "false" then prod(:literal) {literal(@lexer.shift.value, datatype: RDF::XSD.boolean)}
633634
when :STRING_LITERAL_QUOTE, :STRING_LITERAL_SINGLE_QUOTE
634635
prod(:literal) do

lib/rdf/turtle/terminals.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,21 @@ module Terminals
2121
PLX = /#{PERCENT}|#{PN_LOCAL_ESC}/u.freeze
2222
PN_CHARS_BASE = /[A-Z]|[a-z]|#{U_CHARS1}/u.freeze
2323
PN_CHARS_U = /_|#{PN_CHARS_BASE}/u.freeze
24-
PN_CHARS = /-|[0-9]|#{PN_CHARS_U}|#{U_CHARS2}/u.freeze
24+
PN_CHARS = /-|\d|#{PN_CHARS_U}|#{U_CHARS2}/u.freeze
2525
PN_LOCAL_BODY = /(?:(?:\.|:|#{PN_CHARS}|#{PLX})*(?:#{PN_CHARS}|:|#{PLX}))?/u.freeze
2626
PN_CHARS_BODY = /(?:(?:\.|#{PN_CHARS})*#{PN_CHARS})?/u.freeze
2727
PN_PREFIX = /#{PN_CHARS_BASE}#{PN_CHARS_BODY}/u.freeze
28-
PN_LOCAL = /(?:[0-9]|:|#{PN_CHARS_U}|#{PLX})#{PN_LOCAL_BODY}/u.freeze
29-
EXPONENT = /[eE][+-]?[0-9]+/u.freeze
28+
PN_LOCAL = /(?:\d|:|#{PN_CHARS_U}|#{PLX})#{PN_LOCAL_BODY}/u.freeze
29+
EXPONENT = /[eE][+-]?\d+/u.freeze
3030
ECHAR = /\\[tbnrf\\"']/u.freeze
3131
IRIREF = /<(?:#{IRI_RANGE}|#{UCHAR})*>/u.freeze
3232
PNAME_NS = /#{PN_PREFIX}?:/u.freeze
3333
PNAME_LN = /#{PNAME_NS}#{PN_LOCAL}/u.freeze
34-
BLANK_NODE_LABEL = /_:(?:[0-9]|#{PN_CHARS_U})(?:(?:#{PN_CHARS}|\.)*#{PN_CHARS})?/u.freeze
34+
BLANK_NODE_LABEL = /_:(?:\d|#{PN_CHARS_U})(?:(?:#{PN_CHARS}|\.)*#{PN_CHARS})?/u.freeze
3535
LANG_DIR = /@([a-zA-Z]+(?:-[a-zA-Z0-9]+)*(?:--[a-zA-Z]+)?)/u.freeze
36-
INTEGER = /[+-]?[0-9]+/u.freeze
37-
DECIMAL = /[+-]?(?:[0-9]*\.[0-9]+)/u.freeze
38-
DOUBLE = /[+-]?(?:[0-9]+\.[0-9]*#{EXPONENT}|\.?[0-9]+#{EXPONENT})/u.freeze
36+
INTEGER = /[+-]?\d+/u.freeze
37+
DECIMAL = /[+-]?(?:\d*\.\d+)/u.freeze
38+
DOUBLE = /[+-]?(?:\d+\.\d*#{EXPONENT}|\.\d+#{EXPONENT}|\d+#{EXPONENT})/u.freeze
3939
STRING_LITERAL_SINGLE_QUOTE = /'(?:[^\'\\\n\r]|#{ECHAR}|#{UCHAR})*'/u.freeze
4040
STRING_LITERAL_QUOTE = /"(?:[^\"\\\n\r]|#{ECHAR}|#{UCHAR})*"/u.freeze
4141
STRING_LITERAL_LONG_SINGLE_QUOTE = /'''(?:(?:'|'')?(?:[^'\\]|#{ECHAR}|#{UCHAR}))*'''/um.freeze

spec/writer_spec.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -888,8 +888,6 @@
888888
}.each do |name, params|
889889
it name do
890890
graph = RDF::Graph.new {|g| g << parse(params[:input], rdfstar: true)}
891-
#res = serialize(graph, prefixes: {ex: 'http://example/'})
892-
#require 'byebug'; byebug
893891
serialize(graph, params.fetch(:regexp, []), prefixes: {ex: 'http://example/'}, **params)
894892
end
895893
end

0 commit comments

Comments
 (0)