saxon-rb 0.5.0-java → 0.7.3-java
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 +4 -4
- data/.circleci/config.yml +32 -2
- data/.rspec-jar-loading +2 -0
- data/.ruby-version +1 -1
- data/.yardopts +1 -0
- data/README.md +42 -1
- data/Rakefile +8 -2
- data/docs/templates/plugin.rb +73 -0
- data/lib/saxon-rb.rb +0 -1
- data/lib/saxon/configuration.rb +15 -13
- data/lib/saxon/document_builder.rb +216 -5
- data/lib/saxon/feature_flags.rb +11 -0
- data/lib/saxon/feature_flags/errors.rb +8 -0
- data/lib/saxon/feature_flags/helpers.rb +15 -0
- data/lib/saxon/feature_flags/version.rb +100 -0
- data/lib/saxon/item_type.rb +116 -71
- data/lib/saxon/item_type/lexical_string_conversion.rb +78 -1
- data/lib/saxon/item_type/value_to_ruby.rb +12 -0
- data/lib/saxon/loader.rb +55 -43
- data/lib/saxon/nokogiri.rb +1 -1
- data/lib/saxon/processor.rb +18 -4
- data/lib/saxon/serializer.rb +3 -137
- data/lib/saxon/serializer/destination.rb +80 -0
- data/lib/saxon/serializer/object.rb +93 -0
- data/lib/saxon/serializer/output_properties.rb +83 -0
- data/lib/saxon/version.rb +7 -1
- data/lib/saxon/version/library.rb +89 -0
- data/lib/saxon/xdm/atomic_value.rb +16 -9
- data/lib/saxon/xdm/node.rb +34 -3
- data/lib/saxon/xpath/compiler.rb +2 -2
- data/lib/saxon/xpath/static_context.rb +6 -1
- data/lib/saxon/xslt/evaluation_context.rb +11 -1
- data/lib/saxon/xslt/executable.rb +35 -48
- data/lib/saxon/xslt/invocation.rb +97 -0
- data/saxon-rb.gemspec +2 -2
- metadata +17 -6
@@ -0,0 +1,97 @@
|
|
1
|
+
require_relative '../serializer'
|
2
|
+
require_relative '../xdm/value'
|
3
|
+
|
4
|
+
|
5
|
+
module Saxon
|
6
|
+
module XSLT
|
7
|
+
# Represents the invocation of a compiled and loaded transformation,
|
8
|
+
# providing an idiomatic way to send the result a transformation to a
|
9
|
+
# particular Destination, or to serialize it directly to a file, string, or
|
10
|
+
# IO.
|
11
|
+
class Invocation
|
12
|
+
attr_reader :s9_transformer, :invocation_lambda
|
13
|
+
private :s9_transformer, :invocation_lambda
|
14
|
+
|
15
|
+
# @api private
|
16
|
+
def initialize(s9_transformer, invocation_lambda, raw)
|
17
|
+
@s9_transformer, @invocation_lambda, @raw = s9_transformer, invocation_lambda, raw
|
18
|
+
end
|
19
|
+
|
20
|
+
# Serialize the result to a string using the options specified in
|
21
|
+
# +<xsl:output/>+ in the XSLT
|
22
|
+
#
|
23
|
+
# @return [String] the serialized result of the transformation
|
24
|
+
def to_s
|
25
|
+
serializer_destination.serialize
|
26
|
+
end
|
27
|
+
|
28
|
+
# Serialize the result of the transformation. When called with a
|
29
|
+
# block, the block will be executed via instance-exec so that output
|
30
|
+
# properties can be set, e.g.
|
31
|
+
#
|
32
|
+
# result.serialize {
|
33
|
+
# output_property[:indent] = 'yes'
|
34
|
+
# }
|
35
|
+
#
|
36
|
+
# @overload serialize(io)
|
37
|
+
# Serialize the transformation to an IO
|
38
|
+
# @param [File, IO] io The IO to serialize to
|
39
|
+
# @return [nil]
|
40
|
+
# @yield the passed block bound via instance-exec to the new serializer
|
41
|
+
# @overload serialize(path)
|
42
|
+
# Serialize the transformation to file <tt>path</tt>
|
43
|
+
# @param [String, Pathname] path The path of the file to serialize to
|
44
|
+
# @return [nil]
|
45
|
+
# @yield the passed block bound via instance-exec to the new serializer
|
46
|
+
# @overload serialize
|
47
|
+
# Serialize the transformation to a String
|
48
|
+
# @return [String] The serialized XdmValue
|
49
|
+
def serialize(path_or_io = nil, &block)
|
50
|
+
serializer_destination(&block).serialize(path_or_io)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Return the result of the transformation as an XDM Value, either as it is
|
54
|
+
# returned (if the XSLT::Executable was created with :raw => true), or
|
55
|
+
# wrapped in a Document node and sequence normalized.
|
56
|
+
#
|
57
|
+
# @return [Saxon::XDM::Value] the XDM value returned by the transformation
|
58
|
+
def xdm_value
|
59
|
+
if raw?
|
60
|
+
XDM.Value(invocation_lambda.call(nil))
|
61
|
+
else
|
62
|
+
invocation_lambda.call(s9_xdm_destination)
|
63
|
+
XDM.Value(s9_xdm_destination.getXdmNode)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# Send the result of the transformation to the supplied Destination
|
68
|
+
#
|
69
|
+
# @param s9_destination [net.sf.saxon.s9api.Destination] the Saxon
|
70
|
+
# destination to use
|
71
|
+
# @return [nil]
|
72
|
+
def to_destination(s9_destination)
|
73
|
+
invocation_lambda.call(s9_destination)
|
74
|
+
nil
|
75
|
+
end
|
76
|
+
|
77
|
+
# Whether the transformation was invoked as a 'raw' transformation, where
|
78
|
+
# an XDM Value result will be returned without being wrapped in a Document
|
79
|
+
# node, and without sequence normalization.
|
80
|
+
#
|
81
|
+
# @return [Boolean] whether the transformation was invoked 'raw' or not
|
82
|
+
def raw?
|
83
|
+
@raw
|
84
|
+
end
|
85
|
+
|
86
|
+
private
|
87
|
+
|
88
|
+
def serializer_destination(&block)
|
89
|
+
Saxon::Serializer::Destination.new(s9_transformer.newSerializer, invocation_lambda, &block)
|
90
|
+
end
|
91
|
+
|
92
|
+
def s9_xdm_destination
|
93
|
+
@s9_xdm_destination ||= Saxon::S9API::XdmDestination.new
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/saxon-rb.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'saxon/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'saxon-rb'
|
8
|
-
spec.version = Saxon::
|
8
|
+
spec.version = Saxon::Version::WRAPPER
|
9
9
|
spec.authors = ['Matt Patterson']
|
10
10
|
spec.email = ['matt@werkstatt.io']
|
11
11
|
|
@@ -34,6 +34,6 @@ It aims to provide an idiomatic Ruby wrapper around all of Saxon's features.}
|
|
34
34
|
spec.add_development_dependency 'addressable', '~> 2.4.0'
|
35
35
|
spec.add_development_dependency 'webmock', '~> 2.3.2'
|
36
36
|
spec.add_development_dependency 'yard', '~> 0.9.12'
|
37
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
37
|
+
spec.add_development_dependency 'simplecov', '~> 0.17.1'
|
38
38
|
spec.add_development_dependency 'rspec_junit_formatter'
|
39
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saxon-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Matt Patterson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -127,7 +127,7 @@ dependencies:
|
|
127
127
|
requirements:
|
128
128
|
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
130
|
+
version: 0.17.1
|
131
131
|
name: simplecov
|
132
132
|
prerelease: false
|
133
133
|
type: :development
|
@@ -135,7 +135,7 @@ dependencies:
|
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 0.17.1
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
requirement: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
@@ -163,7 +163,9 @@ files:
|
|
163
163
|
- ".circleci/config.yml"
|
164
164
|
- ".gitignore"
|
165
165
|
- ".rspec"
|
166
|
+
- ".rspec-jar-loading"
|
166
167
|
- ".ruby-version"
|
168
|
+
- ".yardopts"
|
167
169
|
- CODE_OF_CONDUCT.md
|
168
170
|
- Gemfile
|
169
171
|
- LICENSE.txt
|
@@ -171,6 +173,7 @@ files:
|
|
171
173
|
- Rakefile
|
172
174
|
- bin/console
|
173
175
|
- bin/setup
|
176
|
+
- docs/templates/plugin.rb
|
174
177
|
- lib/net/sf/saxon/Saxon-HE/9.9.1-6/Saxon-HE-9.9.1-6.jar
|
175
178
|
- lib/saxon-rb.rb
|
176
179
|
- lib/saxon-rb_jars.rb
|
@@ -178,6 +181,10 @@ files:
|
|
178
181
|
- lib/saxon/axis_iterator.rb
|
179
182
|
- lib/saxon/configuration.rb
|
180
183
|
- lib/saxon/document_builder.rb
|
184
|
+
- lib/saxon/feature_flags.rb
|
185
|
+
- lib/saxon/feature_flags/errors.rb
|
186
|
+
- lib/saxon/feature_flags/helpers.rb
|
187
|
+
- lib/saxon/feature_flags/version.rb
|
181
188
|
- lib/saxon/item_type.rb
|
182
189
|
- lib/saxon/item_type/lexical_string_conversion.rb
|
183
190
|
- lib/saxon/item_type/value_to_ruby.rb
|
@@ -191,8 +198,12 @@ files:
|
|
191
198
|
- lib/saxon/s9api.rb
|
192
199
|
- lib/saxon/sequence_type.rb
|
193
200
|
- lib/saxon/serializer.rb
|
201
|
+
- lib/saxon/serializer/destination.rb
|
202
|
+
- lib/saxon/serializer/object.rb
|
203
|
+
- lib/saxon/serializer/output_properties.rb
|
194
204
|
- lib/saxon/source.rb
|
195
205
|
- lib/saxon/version.rb
|
206
|
+
- lib/saxon/version/library.rb
|
196
207
|
- lib/saxon/xdm.rb
|
197
208
|
- lib/saxon/xdm/array.rb
|
198
209
|
- lib/saxon/xdm/atomic_value.rb
|
@@ -213,6 +224,7 @@ files:
|
|
213
224
|
- lib/saxon/xslt/compiler.rb
|
214
225
|
- lib/saxon/xslt/evaluation_context.rb
|
215
226
|
- lib/saxon/xslt/executable.rb
|
227
|
+
- lib/saxon/xslt/invocation.rb
|
216
228
|
- saxon-rb.gemspec
|
217
229
|
homepage: https://github.com/fidothe/saxon-rb
|
218
230
|
licenses:
|
@@ -234,8 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
234
246
|
version: '0'
|
235
247
|
requirements:
|
236
248
|
- jar net.sf.saxon, Saxon-HE, 9.9.1-6
|
237
|
-
|
238
|
-
rubygems_version: 2.7.10
|
249
|
+
rubygems_version: 3.1.3
|
239
250
|
signing_key:
|
240
251
|
specification_version: 4
|
241
252
|
summary: Saxon 9.9 for JRuby, with an idiomatic Ruby API
|