sxp 1.3.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -1
- data/VERSION +1 -1
- data/lib/sxp/extensions.rb +18 -2
- data/lib/sxp/reader/basic.rb +7 -5
- data/lib/sxp/reader/common_lisp.rb +1 -1
- data/lib/sxp/reader/sparql.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '058a4a32d0bc8f49d4032efeeaa309d563d0309304c2c9baae1dc3bcec9e240b'
|
4
|
+
data.tar.gz: 6cf5ed0d766a7fe82bf01c888ed1453f4d4e03b0931963b8989a766c0e1f5959
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c9f61f82bbc7627edbdda238876e917149a5e6ca6818435f7f52f066ccb776474af0bd1718fe50ce6092fb6c1f16f1efe3610105561402abb656a46860e359b
|
7
|
+
data.tar.gz: bc47c210990f6ec08a0d134329d101e249669c61b6d354e4454cdaf9ecedeec99974c084356b7ba41b3a1c4f48dd3e5ff5c6caa9d1d5a9babea81e485e6f88c2
|
data/README.md
CHANGED
@@ -25,7 +25,7 @@ S-Expressions derive from LISP, and include some basic datatypes common to all v
|
|
25
25
|
<dt>Symbols</dt>
|
26
26
|
<dd>Of the form <code>with-hyphen ?@!$ a\ symbol\ with\ spaces</code></dd>
|
27
27
|
<dt>Strings</dt>
|
28
|
-
<dd>Of the form <code>"Hello, world!"</code><br/>
|
28
|
+
<dd>Of the form <code>"Hello, world!"</code> or <code>'Hello, world!'</code><br/>
|
29
29
|
Strings may include the following special characters:
|
30
30
|
<ul>
|
31
31
|
<li><code>\b</code> — Backspace</li>
|
@@ -36,6 +36,7 @@ S-Expressions derive from LISP, and include some basic datatypes common to all v
|
|
36
36
|
<li><code>\u<i>xxxx</i></code> — 2-byte Unicode character escape</li>
|
37
37
|
<li><code>\U<i>xxxxxxxx</i></code> — 4-byte Unicode character escape</li>
|
38
38
|
<li><code>\"</code> — Double-quote character</li>
|
39
|
+
<li><code>\'</code> — Single-quote character</li>
|
39
40
|
<li><code>\\</code> — Backspace</li>
|
40
41
|
</ul>
|
41
42
|
Additionally, any other character may follow <code>\</code>, representing the character itself.
|
@@ -124,6 +125,7 @@ In addition to the standard datatypes, the SPARQL dialect supports the following
|
|
124
125
|
<dd>Strings are interpreted as an RDF Literal with datatype <code>xsd:string</code>. It can be followed by <code>@<i>lang</i></code> to create a language-tagged string, or <code>^^<i>IRI</i></code> to create a datatyped-literal. Examples:
|
125
126
|
<ul>
|
126
127
|
<li><code>"a plain literal"</code></li>
|
128
|
+
<li><code>'another plain literal'</code></li>
|
127
129
|
<li><code>"a literal with a language"@en</code></li>
|
128
130
|
<li><code>"a typed literal"^^<http://example/></code></li>
|
129
131
|
<li><code>"a typed literal with a PNAME"^^xsd:string</code></li>
|
@@ -252,6 +254,10 @@ as follows:
|
|
252
254
|
* <https://github.com/dryruby/sxp.rb>
|
253
255
|
* <https://rubygems.org/gems/sxp.rb>
|
254
256
|
|
257
|
+
## Change Log
|
258
|
+
|
259
|
+
See [Release Notes on GitHub](https://github.com/dryruby/sxp.rb/releases)
|
260
|
+
|
255
261
|
## Authors
|
256
262
|
|
257
263
|
* [Arto Bendiken](https://github.com/artob) - <https://ar.to/>
|
@@ -262,6 +268,7 @@ as follows:
|
|
262
268
|
* [Ben Lavender](https://github.com/bhuga) - <https://bhuga.net/>
|
263
269
|
|
264
270
|
## Contributing
|
271
|
+
|
265
272
|
This repository uses [Git Flow](https://github.com/nvie/gitflow) to mange development and release activity. All submissions _must_ be on a feature branch based on the _develop_ branch to ease staging and integration.
|
266
273
|
|
267
274
|
* Do your best to adhere to the existing coding conventions and idioms.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.0.0
|
data/lib/sxp/extensions.rb
CHANGED
@@ -56,6 +56,7 @@ end
|
|
56
56
|
class String
|
57
57
|
##
|
58
58
|
# Returns the SXP representation of this object. Uses SPARQL-like escaping.
|
59
|
+
# Uses any recorded quote style from an originally parsed string.
|
59
60
|
#
|
60
61
|
# @return [String]
|
61
62
|
def to_sxp(**options)
|
@@ -69,14 +70,29 @@ class String
|
|
69
70
|
when (0x0C) then '\f'
|
70
71
|
when (0x0D) then '\r'
|
71
72
|
when (0x0E..0x1F) then sprintf("\\u%04X", u.ord)
|
72
|
-
when (0x22) then '\"'
|
73
|
+
when (0x22) then as_dquote? ? '\"' : '"'
|
74
|
+
when (0x27) then as_squote? ? "\'" : "'"
|
73
75
|
when (0x5C) then '\\\\'
|
74
76
|
when (0x7F) then sprintf("\\u%04X", u.ord)
|
75
77
|
else u.chr
|
76
78
|
end
|
77
79
|
end
|
78
|
-
|
80
|
+
if as_dquote?
|
81
|
+
'"' + buffer + '"'
|
82
|
+
else
|
83
|
+
"'" + buffer + "'"
|
84
|
+
end
|
79
85
|
end
|
86
|
+
|
87
|
+
# Record quote style used when parsing
|
88
|
+
# @return [:dquote, :squote]
|
89
|
+
attr_accessor :quote_style
|
90
|
+
|
91
|
+
# Render string using double quotes
|
92
|
+
def as_squote?; quote_style == :squote; end
|
93
|
+
|
94
|
+
# Render string using single quotes
|
95
|
+
def as_dquote?; quote_style != :squote; end
|
80
96
|
end
|
81
97
|
|
82
98
|
##
|
data/lib/sxp/reader/basic.rb
CHANGED
@@ -15,7 +15,7 @@ module SXP; class Reader
|
|
15
15
|
def read_token
|
16
16
|
case peek_char
|
17
17
|
when ?(, ?) then [:list, read_char]
|
18
|
-
when ?"
|
18
|
+
when ?", ?' then [:atom, read_string] #" or '
|
19
19
|
else super
|
20
20
|
end
|
21
21
|
end
|
@@ -36,16 +36,18 @@ module SXP; class Reader
|
|
36
36
|
# @return [String]
|
37
37
|
def read_string
|
38
38
|
buffer = ""
|
39
|
-
|
40
|
-
until peek_char ==
|
39
|
+
quote_char = read_char
|
40
|
+
until peek_char == quote_char # " or '
|
41
41
|
buffer <<
|
42
42
|
case char = read_char
|
43
43
|
when ?\\ then read_character
|
44
44
|
else char
|
45
45
|
end
|
46
46
|
end
|
47
|
-
skip_char #
|
48
|
-
|
47
|
+
skip_char # " or '
|
48
|
+
|
49
|
+
# Return string, annotating it with the quotation style used
|
50
|
+
buffer.tap {|s| s.quote_style = (quote_char == '"' ? :dquote : :squote)}
|
49
51
|
end
|
50
52
|
|
51
53
|
##
|
data/lib/sxp/reader/sparql.rb
CHANGED
@@ -94,6 +94,7 @@ module SXP; class Reader
|
|
94
94
|
def read_token
|
95
95
|
case peek_char
|
96
96
|
when ?" then [:atom, read_rdf_literal] # "
|
97
|
+
when ?' then [:atom, read_rdf_literal] # '
|
97
98
|
when ?< then [:atom, read_rdf_uri]
|
98
99
|
else
|
99
100
|
tok = super
|
@@ -144,6 +145,7 @@ module SXP; class Reader
|
|
144
145
|
#
|
145
146
|
# @example
|
146
147
|
# "a plain literal"
|
148
|
+
# 'another plain literal'
|
147
149
|
# "a literal with a language"@en
|
148
150
|
# "a typed literal"^^<http://example/>
|
149
151
|
# "a typed literal with a PNAME"^^xsd:string
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sxp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arto Bendiken
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-12-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdf
|