saxon 0.2.2-java → 0.4.0-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -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