sxp 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 786d7c95c208d920e8d6d4f0658f8df3e018f5c3
4
- data.tar.gz: bd480c067b8110b134d3bf43f72658163ce26c46
2
+ SHA256:
3
+ metadata.gz: 1603515c0b80435ba91e2abe546d4d8ee49e0fcacfb5363dc4b2d4039101a772
4
+ data.tar.gz: 78ac18aeefd6096694d34e5553554c75cc2ed91691ebcac2ee1c846d5f7e3bb1
5
5
  SHA512:
6
- metadata.gz: a4b8dad06e19896a7e9441620316e037e88868d73e4738fec95bff50c304492500416bc8415a7d355597a54625ee15b0a706fa981d74db75e2ec30d42de2f531
7
- data.tar.gz: d132a4d1339f5e3fb181fb6d7c8278b3eb1bb0666ae32e46e765dfe1bf9678f31a992e9db645fd87e4e2bf50ea900a24132b65fd0e1c07c1816d8d3c911aff52
6
+ metadata.gz: d1c9687564b01f02f0386754eb292e28a42d4ad510de32803eb70fbe79223a92422506ea09047e15fb63a20f1c1f0b8314b06f014a2cc6c26333726e1e5c8b2e
7
+ data.tar.gz: 7d95e26602c6d1191be8e3562e3a1d53f1add4a66d29a8f82a1389ebc9d23d74965d8b1a813327871a6650be112ed368ee61d985d1d31e3212c3476fec7de940
data/README.md CHANGED
@@ -10,7 +10,7 @@ This is a Ruby implementation of a universal [S-expression][] parser.
10
10
  * Parses S-expressions in universal, [Scheme][], [Common Lisp][], or
11
11
  [SPARQL][] syntax.
12
12
  * Adds a `#to_sxp` method to Ruby objects.
13
- * Compatible with Ruby >= 2.2.2, Rubinius >= 2.0, and JRuby 9+.
13
+ * Compatible with Ruby >= 2.2.2, Rubinius >= 3.0, and JRuby 9+.
14
14
 
15
15
  ## Examples
16
16
 
@@ -75,7 +75,7 @@ Dependencies
75
75
  ------------
76
76
 
77
77
  * [Ruby](http://ruby-lang.org/) (>= 2.2.2)
78
- * [RDF.rb](http://rubygems.org/gems/rdf) (>= 2.0), only needed for SPARQL
78
+ * [RDF.rb](http://rubygems.org/gems/rdf) (~> 3.0), only needed for SPARQL
79
79
  S-expressions
80
80
 
81
81
  Installation
@@ -91,25 +91,25 @@ Download
91
91
 
92
92
  To get a local working copy of the development repository, do:
93
93
 
94
- % git clone git://github.com/bendiken/sxp-ruby.git
94
+ % git clone git://github.com/dryruby/sxp.rb.git
95
95
 
96
96
  Alternatively, you can download the latest development version as a tarball
97
97
  as follows:
98
98
 
99
- % wget http://github.com/bendiken/sxp-ruby/tarball/master
99
+ % wget http://github.com/dryruby/sxp.rb/tarball/master
100
100
 
101
101
  Resources
102
102
  ---------
103
103
 
104
- * <http://rubydoc.info/gems/sxp>
105
- * <http://github.com/dryruby/sxp>
106
- * <http://rubygems.org/gems/sxp>
104
+ * <http://rubydoc.info/gems/sxp.rb>
105
+ * <http://github.com/dryruby/sxp.rb>
106
+ * <http://rubygems.org/gems/sxp.rb>
107
107
 
108
108
  Authors
109
109
  -------
110
110
 
111
111
  * [Arto Bendiken](https://github.com/bendiken) - <http://ar.to/>
112
- * [Gregg Kellogg](http://github.com/gkellogg) - <http://kellogg-assoc.com/>
112
+ * [Gregg Kellogg](http://github.com/gkellogg) - <http://greggkellogg.net/>
113
113
 
114
114
  Contributors
115
115
  ------------
@@ -125,4 +125,4 @@ information, see <http://unlicense.org/> or the accompanying UNLICENSE file.
125
125
  [S-expression]: http://en.wikipedia.org/wiki/S-expression
126
126
  [Scheme]: http://scheme.info/
127
127
  [Common Lisp]: http://en.wikipedia.org/wiki/Common_Lisp
128
- [SPARQL]: http://openjena.org/wiki/SSE
128
+ [SPARQL]: https://jena.apache.org/documentation/notes/sse.html
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.0.2
@@ -22,9 +22,9 @@ module SXP
22
22
  # @param [Hash{Symbol => Object}] options
23
23
  # See {#read}
24
24
  # @return [Enumerable<Object>]
25
- def self.read_url(url, options = {})
25
+ def self.read_url(url, **options)
26
26
  require 'open-uri'
27
- open(url.to_s, 'rb', nil, options) { |io| read_all(io, options) }
27
+ open(url.to_s, 'rb', nil, **options) { |io| read_all(io, options) }
28
28
  end
29
29
 
30
30
  ##
@@ -51,8 +51,8 @@ module SXP
51
51
  # @param [Hash{Symbol => Object}] options
52
52
  # See {#read}
53
53
  # @return [Enumerable<Object>]
54
- def self.read_file(filename, options = {})
55
- File.open(filename.to_s, 'rb') { |io| read_all(io, options) }
54
+ def self.read_file(filename, **options)
55
+ File.open(filename.to_s, 'rb') { |io| read_all(io, **options) }
56
56
  end
57
57
 
58
58
  ##
@@ -62,8 +62,8 @@ module SXP
62
62
  # @param [Hash{Symbol => Object}] options
63
63
  # See {#read}
64
64
  # @return [Enumerable<Object>]
65
- def self.read_all(input, options = {})
66
- self.new(input, options).read_all
65
+ def self.read_all(input, **options)
66
+ self.new(input, **options).read_all
67
67
  end
68
68
 
69
69
  ##
@@ -73,8 +73,8 @@ module SXP
73
73
  # @param [Hash{Symbol => Object}] options
74
74
  # See {#read}
75
75
  # @return [Object]
76
- def self.read(input, options = {})
77
- self.new(input, options).read
76
+ def self.read(input, **options)
77
+ self.new(input, **options).read
78
78
  end
79
79
 
80
80
  ##
@@ -82,7 +82,7 @@ module SXP
82
82
  #
83
83
  # @param [IO, StringIO, String] input
84
84
  # @param [Hash{Symbol => Object}] options
85
- def initialize(input, options = {}, &block)
85
+ def initialize(input, **options, &block)
86
86
  @options = options.dup
87
87
 
88
88
  case
@@ -127,10 +127,10 @@ module SXP
127
127
  # @param [Hash{Symbol => Object}] options
128
128
  # See {#read}
129
129
  # @return [Array]
130
- def read_all(options = {})
130
+ def read_all(**options)
131
131
  list = []
132
132
  catch (:eof) do
133
- list << read(options.merge(eof: :throw)) until eof?
133
+ list << read(eof: :throw, **options) until eof?
134
134
  end
135
135
  list
136
136
  end
@@ -145,19 +145,19 @@ module SXP
145
145
  # Expected list terminator; it's an error
146
146
  # if another terminator is found
147
147
  # @return [Object]
148
- def read(options = {})
148
+ def read(eof: nil, eol: nil, list_term: false, **options)
149
149
  skip_comments
150
150
  token, value = read_token
151
151
  case token
152
152
  when :eof
153
- throw :eof if options[:eof] == :throw
153
+ throw :eof if eof == :throw
154
154
  raise EOF, "unexpected end of input"
155
155
  when :list
156
156
  if ndx = self.class.const_get(:LPARENS).index(value)
157
- list_term = self.class.const_get(:RPARENS)[ndx]
158
- read_list(list_term)
157
+ term = self.class.const_get(:RPARENS)[ndx]
158
+ read_list(term)
159
159
  else
160
- throw :eol if options[:eol] == :throw && value == options[:list_term]
160
+ throw :eol if eol == :throw && value == list_term
161
161
  raise Error, "unexpected list terminator: ?#{value.chr}"
162
162
  end
163
163
  else value
@@ -26,8 +26,8 @@ module SXP; class Reader
26
26
  # @param [IO, StringIO, String] input
27
27
  # @param [Hash{Symbol => Object}] options
28
28
  # @option options [Symbol] :version (:r4rs)
29
- def initialize(input, options = {}, &block)
30
- super(input, {version: :r4rs}.merge(options), &block)
29
+ def initialize(input, version: :r4rs, **options, &block)
30
+ super(input, version: version, **options, &block)
31
31
  end
32
32
 
33
33
  ##
@@ -29,7 +29,11 @@ module SXP; class Reader
29
29
  # Distinguished variable
30
30
  VAR_ID = /^\?(.*)/
31
31
  # Non-distinguished variable
32
- ND_VAR = /^\?(:?\?([0-9]+)?|(\.[0-9]+))/
32
+ ND_VAR = /^\?(?:[\?\.])(.*)/
33
+ # Distinguished existential variable
34
+ EVAR_ID = /^\$(.*)/
35
+ # Non-distinguished existential variable
36
+ ND_EVAR = /^\$(?:[\$\.])(.*)/
33
37
  # A QName, subject to expansion to URIs using {PREFIX}
34
38
  PNAME = /([^:]*):(.*)/
35
39
 
@@ -67,7 +71,7 @@ module SXP; class Reader
67
71
  #
68
72
  # @param [IO, StringIO, String] input
69
73
  # @param [Hash{Symbol => Object}] options
70
- def initialize(input, options = {}, &block)
74
+ def initialize(input, **options, &block)
71
75
  super { @prefixes = {}; @bnodes = {}; @list_depth = 0 }
72
76
 
73
77
  if block_given?
@@ -223,8 +227,10 @@ module SXP; class Reader
223
227
  when INTEGER then RDF::Literal::Integer.new(buffer)
224
228
  when BNODE_ID then @bnodes[$1] ||= RDF::Node($1)
225
229
  when BNODE_NEW then RDF::Node.new
226
- when ND_VAR then variable($1, false)
227
- when VAR_ID then variable($1, true)
230
+ when ND_VAR then variable($1, distinguished: false)
231
+ when VAR_ID then variable($1, distinguished: true)
232
+ when ND_EVAR then variable($1, existential: true, distinguished: false)
233
+ when EVAR_ID then variable($1, existential: true, distinguished: true)
228
234
  else buffer.to_sym
229
235
  end
230
236
  end
@@ -251,20 +257,16 @@ module SXP; class Reader
251
257
  # is a disinguished or non-distinguished variable. Non-distinguished
252
258
  # variables are effectively the same as BNodes.
253
259
  # @return [RDF::Query::Variable]
254
- def variable(id, distinguished = true)
260
+ def variable(id, distinguished: true, existential: false)
255
261
  id = nil if id.to_s.empty?
256
262
 
257
263
  if id
258
264
  @vars ||= {}
259
265
  @vars[id] ||= begin
260
- v = RDF::Query::Variable.new(id)
261
- v.distinguished = distinguished
262
- v
266
+ RDF::Query::Variable.new(id, distinguished: distinguished, existential: existential)
263
267
  end
264
268
  else
265
- v = RDF::Query::Variable.new
266
- v.distinguished = distinguished
267
- v
269
+ RDF::Query::Variable.new(distinguished: distinguished, existential: existential)
268
270
  end
269
271
  end
270
272
  end # SPARQL
@@ -107,8 +107,8 @@ class Float
107
107
  # @return [String]
108
108
  def to_sxp
109
109
  case
110
- when nan? then 'nan.'
111
- when infinite? then (infinite? > 0 ? '+inf.' : '-inf.')
110
+ when nan? then 'nan.0'
111
+ when infinite? then (infinite? > 0 ? '+inf.0' : '-inf.0')
112
112
  else to_s
113
113
  end
114
114
  end
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: 1.0.1
4
+ version: 1.0.2
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: 2017-12-14 00:00:00.000000000 Z
12
+ date: 2019-03-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -17,48 +17,42 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '3.7'
20
+ version: '3.8'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '3.7'
27
+ version: '3.8'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: yard
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0.9'
34
+ version: 0.9.18
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '0.9'
41
+ version: 0.9.18
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rdf
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '2.2'
49
- - - "<"
46
+ - - "~>"
50
47
  - !ruby/object:Gem::Version
51
- version: '4.0'
48
+ version: '3.0'
52
49
  type: :runtime
53
50
  prerelease: false
54
51
  version_requirements: !ruby/object:Gem::Requirement
55
52
  requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- version: '2.2'
59
- - - "<"
53
+ - - "~>"
60
54
  - !ruby/object:Gem::Version
61
- version: '4.0'
55
+ version: '3.0'
62
56
  description: Universal S-expression parser with specific support for Common Lisp,
63
57
  Scheme, and RDF/SPARQL
64
58
  email:
@@ -113,8 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
107
  - !ruby/object:Gem::Version
114
108
  version: '0'
115
109
  requirements: []
116
- rubyforge_project: sxp
117
- rubygems_version: 2.6.14
110
+ rubygems_version: 3.0.2
118
111
  signing_key:
119
112
  specification_version: 4
120
113
  summary: A pure-Ruby implementation of a universal S-expression parser.