saxon 0.2.2-java → 0.4.0-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.
@@ -1,156 +0,0 @@
1
- require 'forwardable'
2
- require_relative 'evaluation_context'
3
- require_relative '../serializer'
4
- require_relative '../xdm_value'
5
- require_relative '../qname'
6
-
7
- module Saxon
8
- module XSLT
9
- # Represents a compiled XSLT stylesheet ready to be executed
10
- class Executable
11
- extend Forwardable
12
-
13
- attr_reader :evaluation_context
14
- private :evaluation_context
15
-
16
- # @api private
17
- # @param s9_xslt_executable [net.sf.saxon.s9api.XsltExecutable] the
18
- # Saxon compiled XSLT object
19
- # @param evaluation_context [XSLT::EvaluationContext] the XSLT's evaluation
20
- # context
21
- def initialize(s9_xslt_executable, evaluation_context)
22
- @s9_xslt_executable, @evaluation_context = s9_xslt_executable, evaluation_context
23
- end
24
-
25
- def_delegators :evaluation_context, :global_parameters, :initial_template_parameters, :initial_template_tunnel_parameters
26
-
27
- def apply_templates(source, opts = {})
28
- transformation(opts).apply_templates(source)
29
- end
30
-
31
- def call_template(template_name, opts = {})
32
- transformation(opts).call_template(template_name)
33
- end
34
-
35
- # @return [net.sf.saxon.s9api.XsltExecutable] the underlying Saxon
36
- # <tt>XsltExecutable</tt>
37
- def to_java
38
- @s9_xslt_executable
39
- end
40
-
41
- private
42
-
43
- def transformation(opts)
44
- Transformation.new(params_merged_opts(opts).merge({
45
- s9_transformer: @s9_xslt_executable.load30,
46
- }))
47
- end
48
-
49
- def params_merged_opts(opts)
50
- merged_opts = params_hash.dup
51
- opts.each do |key, value|
52
- if [:global_parameters, :initial_template_parameters, :initial_template_tunnel_parameters].include?(key)
53
- merged_opts[key] = merged_opts.fetch(key, {}).merge(XSLT::ParameterHelper.process_parameters(value))
54
- else
55
- merged_opts[key] = value
56
- end
57
- end
58
- merged_opts
59
- end
60
-
61
- def params_hash
62
- @params_hash ||= begin
63
- params_hash = {}
64
- params_hash[:global_parameters] = global_parameters unless global_parameters.empty?
65
- params_hash[:initial_template_parameters] = initial_template_parameters unless initial_template_parameters.empty?
66
- params_hash[:initial_template_tunnel_parameters] = initial_template_tunnel_parameters unless initial_template_tunnel_parameters.empty?
67
- params_hash
68
- end.freeze
69
- end
70
- end
71
-
72
- class Result
73
- attr_reader :xdm_value
74
-
75
- def initialize(xdm_value, s9_transformer)
76
- @xdm_value, @s9_transformer = xdm_value, s9_transformer
77
- end
78
-
79
- def to_s
80
- serializer = Serializer.new(@s9_transformer.newSerializer)
81
- serializer.serialize(xdm_value.to_java)
82
- end
83
- end
84
-
85
- class Transformation
86
- attr_reader :s9_transformer, :opts
87
-
88
- def initialize(args)
89
- @s9_transformer = args.fetch(:s9_transformer)
90
- @destination = args.fetch(:destination, nil)
91
- @opts = args.reject { |opt, _|
92
- [:s9_transformer, :destination].include?(opt)
93
- }
94
- @raw = false
95
- end
96
-
97
- def apply_templates(source)
98
- transformation_result(:applyTemplates, source)
99
- end
100
-
101
- def call_template(template_name)
102
- transformation_result(:callTemplate, Saxon::QName.resolve(template_name))
103
- end
104
-
105
- private
106
-
107
- def transformation_result(invocation_method, invocation_arg)
108
- set_opts!
109
- transformer_args = [invocation_method, invocation_arg.to_java, destination].compact
110
- Result.new(result_xdm_value(s9_transformer.send(*transformer_args)), s9_transformer)
111
- end
112
-
113
- def result_xdm_value(transformer_return_value)
114
- XdmValue.wrap_s9_xdm_value(
115
- transformer_return_value.nil? ? destination.getXdmNode : transformer_return_value
116
- )
117
- end
118
-
119
- def destination
120
- @destination ||= begin
121
- Saxon::S9API::XdmDestination.new unless raw?
122
- end
123
- end
124
-
125
- def set_opts!
126
- opts.each do |opt, value|
127
- send(opt, value)
128
- end
129
- end
130
-
131
- def raw(value)
132
- @raw = value
133
- end
134
-
135
- def raw?
136
- @raw
137
- end
138
-
139
- def mode(mode_name)
140
- s9_transformer.setInitialMode(Saxon::QName.resolve(mode_name).to_java)
141
- end
142
-
143
- def global_parameters(parameters)
144
- s9_transformer.setStylesheetParameters(XSLT::ParameterHelper.to_java(parameters))
145
- end
146
-
147
- def initial_template_parameters(parameters)
148
- s9_transformer.setInitialTemplateParameters(XSLT::ParameterHelper.to_java(parameters) , false)
149
- end
150
-
151
- def initial_template_tunnel_parameters(parameters)
152
- s9_transformer.setInitialTemplateParameters(XSLT::ParameterHelper.to_java(parameters) , true)
153
- end
154
- end
155
- end
156
- end
@@ -1,10 +0,0 @@
1
- # this is a generated file, to avoid over-writing it just delete this comment
2
- begin
3
- require 'jar_dependencies'
4
- rescue LoadError
5
- require 'net/sf/saxon/Saxon-HE/9.9.1-2/Saxon-HE-9.9.1-2.jar'
6
- end
7
-
8
- if defined? Jars
9
- require_jar 'net.sf.saxon', 'Saxon-HE', '9.9.1-2'
10
- end