lib/rdf/turtle/reader.rb in rdf-turtle-3.2.1 vs lib/rdf/turtle/reader.rb in rdf-turtle-3.3.0

- old
+ new

@@ -34,11 +34,11 @@ | <<|>> )x) terminal(:PREFIX, PREFIX) terminal(:BASE, BASE) - terminal(:LANGTAG, LANGTAG) + terminal(:LANG_DIR, LANG_DIR) ## # Reader options # @see https://ruby-rdf.github.io/rdf/RDF/Reader#options-class_method def self.options @@ -392,11 +392,11 @@ object end end end - # Read an RDF-star reified statement + # Read a quoted triple # @return [RDF::Statement] def read_quotedTriple return unless @options[:rdfstar] if @lexer.first.value == '<<' prod(:quotedTriple) do @@ -468,12 +468,14 @@ when :STRING_LITERAL_QUOTE, :STRING_LITERAL_SINGLE_QUOTE prod(:literal) do value = @lexer.shift.value[1..-2] error("read_literal", "Unexpected end of file") unless token = @lexer.first case token.type || token.value - when :LANGTAG - literal(value, language: @lexer.shift.value[1..-1].to_sym) + when :LANG_DIR + lang_dir = @lexer.shift.value[1..-1] + language, direction = lang_dir.split('--') + literal(value, language: language, direction: direction) when '^^' @lexer.shift literal(value, datatype: read_iri) else literal(value) @@ -482,11 +484,13 @@ when :STRING_LITERAL_LONG_QUOTE, :STRING_LITERAL_LONG_SINGLE_QUOTE prod(:literal) do value = @lexer.shift.value[3..-4] error("read_literal", "Unexpected end of file") unless token = @lexer.first case token.type || token.value - when :LANGTAG - literal(value, language: @lexer.shift.value[1..-1].to_sym) + when :LANG_DIR + lang_dir = @lexer.shift.value[1..-1] + language, direction = lang_dir.split('--') + literal(value, language: language, direction: direction) when '^^' @lexer.shift literal(value, datatype: read_iri) else literal(value)