saxon-xslt 0.6.0-java → 0.7.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: af91b7c69d754725f26d768b1866057099101db0
4
- data.tar.gz: 808008c7ca54ec9914f6317664977bb0f9ead2c3
3
+ metadata.gz: 0abe4c1503732325841706ee122ecd45daf22476
4
+ data.tar.gz: 04b185f85c2b0281b65ceb1ef0174527fbd47861
5
5
  SHA512:
6
- metadata.gz: eadf0c7d72d149475479e11845ae9618506f33741b15c4878ff9f44c2a1f5b0a2ae3b186db6cebbfc5258dbe7ba1718152dd9c80c0a02bcda98c501665fff3bb
7
- data.tar.gz: c350adfe866ea020afa4b81b3e7a949d2c18d8942fb40b8d3063ca6c29ecbb75151f8552e968a088e360405ceed653e13819f9b7a947fd91e2639089ba8d57c6
6
+ metadata.gz: b6d04c3fdfe1db41ba12d1e81809483d8eb9c264ce96bc2974d6366ca1ad51d1cf2ed261296fa359932a725e79bdf0941bd81a5b16081c8489fdc02caba6dba5
7
+ data.tar.gz: 1b6cc8a925624ac90c450290b1200ea8ddfc84f8be061f0518434d1e9184009d72cf6485ba039f67b1a68529e1ee76152c634bfbc0510a5e02bf20ef463979c0
data/README.md CHANGED
@@ -53,7 +53,7 @@ Values are evaluated as XPath expressions in context of the document being trans
53
53
  that, to pass a string, you must pass an XPath that resolves to a string, i.e. "'You must wrap strings in quotes'"
54
54
 
55
55
  ## Saxon version
56
- `saxon-xslt` 0.6 includes Saxon HE 9.5.1.7
56
+ `saxon-xslt` 0.7 includes Saxon HE 9.5.1.7
57
57
 
58
58
  ## Differences between Saxon and Nokogiri
59
59
 
@@ -0,0 +1,71 @@
1
+ module Saxon
2
+ # Wraps the <tt>net.saxon.Configuration</tt> class. See
3
+ # http://saxonica.com/documentation9.5/javadoc/net/sf/saxon/Configuration.html
4
+ # for details of what configuration options are available and what values
5
+ # they accept. See
6
+ # http://saxonica.com/documentation9.5/javadoc/net/sf/saxon/lib/FeatureKeys.html
7
+ # for details of the constant names used to access the values
8
+ class Configuration
9
+ # @param processor [Saxon::Processor] a Saxon::Processor instance
10
+ # @return [Saxon::Configuration]
11
+ def self.create(processor = nil)
12
+ if processor
13
+ config = processor.to_java.underlying_configuration
14
+ else
15
+ config = Saxon::S9API::Configuration.new
16
+ end
17
+ new(config)
18
+ end
19
+
20
+ # @api private
21
+ # @param config [net.sf.saxon.Configuration] The Saxon Configuration
22
+ # instance to wrap
23
+ def initialize(config)
24
+ @config = config
25
+ end
26
+
27
+ # Get a configuration option value
28
+ # See http://saxonica.com/documentation9.5/javadoc/net/sf/saxon/lib/FeatureKeys.html
29
+ # for details of the available options. Use the constant name as a string
30
+ # or symbol as the option
31
+ #
32
+ # @param option [String, Symbol]
33
+ # @return [Object] the value of the configuration option
34
+ # @raise [NameError] if the option name does not exist
35
+ def [](option)
36
+ @config.getConfigurationProperty(option_url(option))
37
+ end
38
+
39
+ # Get a configuration option value
40
+ # See http://saxonica.com/documentation9.5/javadoc/net/sf/saxon/lib/FeatureKeys.html
41
+ # for details of the available options. Use the constant name as a string
42
+ # or symbol as the option
43
+ #
44
+ # @param option [String, Symbol]
45
+ # @param value [Object] the value of the configuration option
46
+ # @return [Object] the value you passed in
47
+ # @raise [NameError] if the option name does not exist
48
+ def []=(option, value)
49
+ @config.setConfigurationProperty(option_url(option), value)
50
+ end
51
+
52
+ # @return [net.sf.saxon.Configuration] The underlying Saxon Configuration
53
+ def to_java
54
+ @config
55
+ end
56
+
57
+ private
58
+
59
+ def feature_keys
60
+ @feature_keys ||= Saxon::S9API::FeatureKeys.java_class
61
+ end
62
+
63
+ def option_url(option)
64
+ feature_keys.field(normalize_option_name(option)).static_value
65
+ end
66
+
67
+ def normalize_option_name(option)
68
+ option.to_s.upcase
69
+ end
70
+ end
71
+ end
@@ -1,5 +1,6 @@
1
1
  require 'saxon/s9api'
2
2
  require 'saxon/source_helper'
3
+ require 'saxon/configuration'
3
4
  require 'saxon/xslt'
4
5
  require 'saxon/xml'
5
6
 
@@ -18,18 +19,24 @@ module Saxon
18
19
  @processor ||= create
19
20
  end
20
21
 
21
- # @param config [File, String, IO] an open File, or string,
22
- # containing a Saxon configuration file
22
+ # @param config [File, String, IO, Saxon::Configuration] an open File, or string,
23
+ # containing a Saxon configuration file; an existing Saxon::Configuration
24
+ # object
23
25
  # @return [Saxon::Processor]
24
26
  def self.create(config = nil)
25
- licensed_or_config_source = false
26
- if config
27
+ case config
28
+ when nil
29
+ licensed_or_config_source = false
30
+ when Saxon::Configuration
31
+ licensed_or_config_source = config.to_java
32
+ else
27
33
  licensed_or_config_source = Saxon::SourceHelper.to_stream_source(config)
28
34
  end
29
35
  s9_processor = S9API::Processor.new(licensed_or_config_source)
30
36
  new(s9_processor)
31
37
  end
32
38
 
39
+ # @api private
33
40
  # @param [net.sf.saxon.s9api.Processor] s9_processor The Saxon Processor
34
41
  # instance to wrap
35
42
  def initialize(s9_processor)
@@ -61,5 +68,10 @@ module Saxon
61
68
  def ==(other)
62
69
  other.to_java === to_java
63
70
  end
71
+
72
+ # @return [Saxon::Configuration] This processor's configuration instance
73
+ def config
74
+ @config ||= Saxon::Configuration.create(self)
75
+ end
64
76
  end
65
77
  end
@@ -6,6 +6,8 @@ module Saxon
6
6
  # Puts the Saxon Java classes into a sensible namespace
7
7
  module S9API
8
8
  java_import 'net.sf.saxon.s9api.Processor'
9
+ java_import 'net.sf.saxon.Configuration'
10
+ java_import 'net.sf.saxon.lib.FeatureKeys'
9
11
  java_import 'net.sf.saxon.s9api.XdmDestination'
10
12
  java_import 'net.sf.saxon.s9api.QName'
11
13
  end
@@ -28,13 +28,13 @@ module Saxon
28
28
  # Compile a stylesheet from an existing Saxon::XML instance of an XSLT
29
29
  # source
30
30
  #
31
- # @param [Saxon::XML::Document] source the input XSLT as an XML document
31
+ # @param document [Saxon::XML::Document] the input XSLT as an XML document
32
32
  # @return [Saxon::XSLT::Stylesheet] the compiled XSLT stylesheet
33
33
  def self.parse_stylesheet_doc(document)
34
34
  new(document)
35
35
  end
36
36
 
37
- # @param [Saxon::XML::Document] source the input XSLT as an XML document
37
+ # @param source [Saxon::XML::Document] the input XSLT as an XML document
38
38
  def initialize(source)
39
39
  processor = source.processor
40
40
  compiler = processor.to_java.new_xslt_compiler()
@@ -48,7 +48,7 @@ module Saxon
48
48
  # you need to pass it quoted: `"'string'"`. An unquoted string is an
49
49
  # XPath reference into the document being transformed.
50
50
  #
51
- # @param [Saxon::XML::Document] document the XML Document object to
51
+ # @param document [Saxon::XML::Document] the XML Document object to
52
52
  # transform
53
53
  # @param params [Hash,Array] xsl params to set in the xsl document
54
54
  # @return [Saxon::XML::Document] the transformed XML Document
@@ -78,7 +78,7 @@ module Saxon
78
78
  # Not the most useful serialiser in the world. Provided for Nokogiri API
79
79
  # compatibility
80
80
  #
81
- # @param [Saxon::XML::Document] document the XML Document object to
81
+ # @param document [Saxon::XML::Document] the XML Document object to
82
82
  # serialise
83
83
  # @return [String] the XML Document serialised to a string
84
84
  def serialize(document)
@@ -1,5 +1,5 @@
1
1
  module Saxon
2
2
  module XSLT
3
- VERSION = "0.6.0"
3
+ VERSION = "0.7.0"
4
4
  end
5
5
  end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+ require 'saxon/configuration'
3
+ require 'saxon/processor'
4
+
5
+ describe Saxon::Configuration do
6
+ it "is instantiated from a java Configuration instance" do
7
+ config = Saxon::Configuration.new(Saxon::S9API::Configuration.new)
8
+ expect(config).to be_a(Saxon::Configuration)
9
+ end
10
+
11
+ context "creating a new instance safely" do
12
+ it "can be created without a pre-existing processor" do
13
+ expect(Saxon::Configuration.create).to be_a(Saxon::Configuration)
14
+ end
15
+
16
+ it "can be created correctly from a Processor" do
17
+ processor = Saxon::Processor.create
18
+ expect(Saxon::Configuration.create(processor)).to be_a(Saxon::Configuration)
19
+ end
20
+ end
21
+
22
+ context "getting and setting options" do
23
+ let(:config) { Saxon::Configuration.new(Saxon::S9API::Configuration.new) }
24
+
25
+ it "can get a configuration option's current value" do
26
+ expect(config[:line_numbering]).to be(false)
27
+ end
28
+
29
+ it "can set a configuration option to a new value" do
30
+ config[:line_numbering] = true
31
+ expect(config[:line_numbering]).to be(true)
32
+ end
33
+
34
+ it "returns the passed-in value when setting an option" do
35
+ expect(config[:default_country] = 'NO').to eq('NO')
36
+ end
37
+
38
+ it "doesn't allow you to set a non-existent configuration option" do
39
+ expect { config[:rubbish] = "value" }.to raise_error(NameError)
40
+ end
41
+
42
+ it "doesn't allow you to get a non-existent configuration option" do
43
+ expect { config[:rubbish] }.to raise_error(NameError)
44
+ end
45
+ end
46
+ end
@@ -4,7 +4,7 @@ require 'saxon/processor'
4
4
  describe Saxon::Processor do
5
5
  let(:xsl_file) { File.open(fixture_path('eg.xsl')) }
6
6
 
7
- context "without configuration" do
7
+ context "without explicit configuration" do
8
8
  let(:processor) { Saxon::Processor.create }
9
9
 
10
10
  it "can make a new XSLT instance" do
@@ -18,15 +18,25 @@ describe Saxon::Processor do
18
18
  it "can return the underlying Saxon Processor" do
19
19
  expect(processor.to_java).to respond_to(:new_xslt_compiler)
20
20
  end
21
+
22
+ it "can return the processor's configuration instance" do
23
+ expect(processor.config).to be_a(Saxon::Configuration)
24
+ end
21
25
  end
22
26
 
23
- context "with a configuration file" do
27
+ context "with explicit configuration" do
24
28
  it "works, given a valid config XML file" do
25
29
  processor = Saxon::Processor.create(File.open(fixture_path('config.xml')))
26
30
 
27
- saxon_processor = processor.to_java
28
- configuration = saxon_processor.underlying_configuration
29
- expect(configuration.xml_version).to eq(11)
31
+ expect(processor.config[:xml_version]).to eq("1.1")
32
+ end
33
+
34
+ it "works, given a Saxon::Configuration object" do
35
+ config = Saxon::Configuration.create
36
+ config[:line_numbering] = true
37
+ processor = Saxon::Processor.create(config)
38
+
39
+ expect(processor.config[:line_numbering]).to be(true)
30
40
  end
31
41
  end
32
42
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saxon-xslt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: java
6
6
  authors:
7
7
  - Matt Patterson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-13 00:00:00.000000000 Z
11
+ date: 2015-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -96,6 +96,7 @@ files:
96
96
  - README.md
97
97
  - Rakefile
98
98
  - lib/saxon-xslt.rb
99
+ - lib/saxon/configuration.rb
99
100
  - lib/saxon/processor.rb
100
101
  - lib/saxon/s9api.rb
101
102
  - lib/saxon/source_helper.rb
@@ -111,6 +112,7 @@ files:
111
112
  - spec/fixtures/eg.xsl
112
113
  - spec/fixtures/params-eg.xsl
113
114
  - spec/fixtures/simple-xsl-import.xsl
115
+ - spec/saxon/configuration_spec.rb
114
116
  - spec/saxon/processor_spec.rb
115
117
  - spec/saxon/source_helper_spec.rb
116
118
  - spec/saxon/xml_spec.rb
@@ -153,6 +155,7 @@ test_files:
153
155
  - spec/fixtures/eg.xsl
154
156
  - spec/fixtures/params-eg.xsl
155
157
  - spec/fixtures/simple-xsl-import.xsl
158
+ - spec/saxon/configuration_spec.rb
156
159
  - spec/saxon/processor_spec.rb
157
160
  - spec/saxon/source_helper_spec.rb
158
161
  - spec/saxon/xml_spec.rb