excemel 1.0.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.
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'blankslate', '~>2.1.2.4'
4
+
5
+ group :development do
6
+ gem "bundler", "~> 1.0.0"
7
+ gem "jeweler", "~> 1.6.2"
8
+ gem "rcov", ">= 0"
9
+ gem "rdoc", ">= 3.7"
10
+ end
data/History.txt ADDED
@@ -0,0 +1,3 @@
1
+ == 0.0.1
2
+
3
+ - initial release
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ Copyright &169;2001-2011 Integrallis Software, LLC.
2
+ All Rights Reserved.
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Manifest.txt ADDED
@@ -0,0 +1,10 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ LICENSE
6
+ lib/excemel.rb
7
+ lib/excemel/excemel.rb
8
+ lib/module/lang.rb
9
+ lib/module/xom.rb
10
+ lib/java/xom-1.2.7.jar
data/README.rdoc ADDED
@@ -0,0 +1,23 @@
1
+ == Project: Excemel
2
+
3
+ Excemel is a Ruby DSL for Elliotte Rusty Harold's XOM XML library. It is based
4
+ on Jim Weirich's Builder. Excemel brings to JRuby the expressiveness and
5
+ close-to-the-language XML construction features of Builder with the correctness,
6
+ simplicity, and performance of XOM.
7
+
8
+ Excemel extends the semantics of Builder with methods to navigate the
9
+ in memory XML document with XPath and exposing some of the powerful XML
10
+ manipulation capabilities of XOM.
11
+
12
+ == Usage
13
+
14
+ See usage examples under /examples directory of this distribution
15
+
16
+ == Contact
17
+
18
+ Author:: Brian Sam-Bodden
19
+ Email:: bsbodden@integrallis.com
20
+ Home Page:: http://integrallis.com
21
+ License:: MIT Licence (http://www.opensource.org/licenses/mit-license.html)
22
+
23
+
data/Rakefile ADDED
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #--
4
+ # Copyright &169;2001-2008 Integrallis Software, LLC.
5
+ # All Rights Reserved.
6
+ #
7
+ # Permission is granted for use, copying, modification, distribution,
8
+ # and distribution of modified versions of this work as long as the
9
+ # above copyright notice is included.
10
+ #++
11
+
12
+ # encoding: utf-8
13
+
14
+ # --------------------------------------------------------------------
15
+
16
+ require 'rubygems'
17
+ require 'bundler'
18
+ begin
19
+ Bundler.setup(:default, :development)
20
+ rescue Bundler::BundlerError => e
21
+ $stderr.puts e.message
22
+ $stderr.puts "Run `bundle install` to install missing gems"
23
+ exit e.status_code
24
+ end
25
+ require 'rake'
26
+
27
+ # --------------------------------------------------------------------
28
+
29
+ require 'jeweler'
30
+ Jeweler::Tasks.new do |gem|
31
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
32
+ gem.name = "excemel"
33
+ gem.homepage = "http://github.com/bsbodden/excemel"
34
+ gem.license = "MIT"
35
+ gem.summary = "JRuby DSL for XOM"
36
+ gem.description = "JRuby DSL for XML Building and Manipulation with XPath & XQuery"
37
+ gem.email = "bsbodden@integrallis.com"
38
+ gem.authors = ["Brian Sam-Bodden"]
39
+ gem.platform = "java"
40
+ gem.files = FileList["History.txt", "Manifest.txt", "README.rdoc", "Gemfile", "Rakefile", "LICENSE", "lib/**/*.rb", "lib/java/*.jar"]
41
+ # dependencies defined in Gemfile
42
+ end
43
+ Jeweler::RubygemsDotOrgTasks.new
44
+
45
+ # --------------------------------------------------------------------
46
+
47
+ require 'rake/testtask'
48
+ Rake::TestTask.new(:test) do |test|
49
+ test.libs << 'lib' << 'test'
50
+ test.pattern = 'test/**/test_*.rb'
51
+ test.verbose = true
52
+ end
53
+
54
+ # --------------------------------------------------------------------
55
+
56
+ require 'rcov/rcovtask'
57
+ Rcov::RcovTask.new do |test|
58
+ test.libs << 'test'
59
+ test.pattern = 'test/**/test_*.rb'
60
+ test.verbose = true
61
+ test.rcov_opts << '--exclude "gems/*"'
62
+ end
63
+
64
+ task :default => :test
65
+
66
+ # --------------------------------------------------------------------
67
+
68
+ require 'rdoc/task'
69
+ RDoc::Task.new do |rdoc|
70
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
71
+
72
+ rdoc.rdoc_dir = 'rdoc'
73
+ rdoc.title = "excemel #{version}"
74
+ rdoc.rdoc_files.include('README*')
75
+ rdoc.rdoc_files.include('lib/**/*.rb')
76
+ end
77
+
78
+ # --------------------------------------------------------------------
@@ -0,0 +1,276 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #--
4
+ # Copyright &169;2001-2008 Integrallis Software, LLC.
5
+ # All Rights Reserved.
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining
8
+ # a copy of this software and associated documentation files (the
9
+ # "Software"), to deal in the Software without restriction, including
10
+ # without limitation the rights to use, copy, modify, merge, publish,
11
+ # distribute, sublicense, and/or sell copies of the Software, and to
12
+ # permit persons to whom the Software is furnished to do so, subject to
13
+ # the following conditions:
14
+ #
15
+ # The above copyright notice and this permission notice shall be
16
+ # included in all copies or substantial portions of the Software.
17
+ #
18
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+ #++
26
+
27
+ require 'rubygems'
28
+ require 'blankslate'
29
+ require 'java'
30
+ require 'module/lang'
31
+ require 'module/xom'
32
+
33
+ module Excemel
34
+
35
+ class Document < BlankSlate
36
+
37
+ # Create an Excemel Document
38
+ # The method expects a hash that contain the possible elements
39
+ # :root => value : The name of the root or top-most element of the document
40
+ # :xml => value : A string containing an XML document
41
+ # :url => value : A URL pointing to an XML document
42
+ # :file => filename : A filename pointing to an XML file
43
+ # :validate => true|false : whether to validate the document being read from
44
+ # an XML string, URL or file
45
+ # :resolve_includes => true|false replaces xi:include elements by the content they refer to
46
+ # :namespace => provides a namespace prefix to the elements
47
+ def initialize(options)
48
+ # extract options
49
+ validate = options[:validate] ? options[:validate] : false
50
+ root = options[:root]
51
+ xml = options[:xml]
52
+ url = options[:url]
53
+ file = options[:file]
54
+ namespace = options[:namespace]
55
+ resolve_includes = options[:resolve_includes] ? options[:resolve_includes] : false
56
+
57
+ if root
58
+ unless namespace
59
+ @root = XOM::Element.new "#{root}"
60
+ else
61
+ @root = XOM::Element.new "#{root}", namespace
62
+ prefix = root.to_s.split(":").first if root.include? ":"
63
+ (@namespaces ||= {})[prefix] = namespace if prefix
64
+ end
65
+
66
+ @doc = XOM::Document.new @root
67
+ else
68
+ builder = XOM::Builder.new validate
69
+ end
70
+
71
+ if xml
72
+ @doc = builder.build(xml, nil)
73
+ elsif url
74
+ @doc = builder.build url
75
+ elsif file
76
+ java_file = Lang::File.new file
77
+ @doc = builder.build java_file
78
+ end
79
+
80
+ if resolve_includes
81
+ @doc = XOM::XIncluder.resolve(@doc)
82
+ end
83
+
84
+ @root = @doc.get_root_element unless @root
85
+ @target = @root
86
+ end
87
+
88
+ # Dynamic Proxy behavior
89
+ # Add XML elements (tags) based on the name of the method called on the
90
+ # Document instance, blocks passed get processed recursively
91
+ def method_missing(sym, *args, &block)
92
+ if sym.to_s != 'class' && sym.to_s != 'to_s' && sym.to_s != 'inspect' # WTF? If I don't do this I
93
+ text = nil # end up with extraneous tags
94
+ attrs = nil # in the resulting document!!
95
+ namespace = nil
96
+ sym = "#{sym}:#{args.shift}" if args.first.kind_of?(Symbol)
97
+ prefix = sym.to_s.split(":").first if sym.to_s.include? ":"
98
+ args.each do |arg|
99
+ case arg
100
+ when Hash
101
+ if arg.has_key? :namespace
102
+ namespace = arg[:namespace]
103
+ prefix = sym.to_s.split(":").first
104
+ else
105
+ attrs ||= {}
106
+ attrs.merge!(arg)
107
+ end
108
+ else
109
+ text ||= ''
110
+ text << arg.to_s
111
+ end
112
+ end
113
+
114
+ # try to get the namespace from the saved namespaces
115
+ if prefix != nil && namespace.nil? && @namespaces != nil
116
+ namespace = "#{@namespaces[prefix]}"
117
+ end
118
+
119
+ unless namespace
120
+ tag = XOM::Element.new sym.to_s
121
+ else
122
+ tag = XOM::Element.new sym.to_s, namespace
123
+ end
124
+
125
+ _add_attributes(tag, attrs)
126
+
127
+ if block
128
+ _nested_structures(block, tag)
129
+ elsif !text.nil?
130
+ tag.append_child text
131
+ end
132
+
133
+ @target.append_child tag
134
+ end
135
+
136
+ self
137
+ end
138
+
139
+ # Returns the XML document as a single line, e.g. no formatting
140
+ def to_xml
141
+ @doc.to_xml
142
+ end
143
+
144
+ # Appends a comment node at the current position in the document
145
+ def comment!(string)
146
+ comment = XOM::Comment.new string
147
+ @target.append_child(comment)
148
+ self
149
+ end
150
+
151
+ # Appends a text node at the current position in the document
152
+ def text!(string)
153
+ text = XOM::Text.new string
154
+ @target.append_child(text)
155
+ self
156
+ end
157
+
158
+ # Appends a processing instruction at the current position in the document
159
+ def processing_instruction!(target, data)
160
+ pi = XOM::ProcessingInstruction.new(target, data)
161
+ @target.append_child(pi)
162
+ self
163
+ end
164
+
165
+ # Attempts to reposition the document pointer based on the first match of
166
+ # and XQuery expression. Return true is the pointer was successfully moved
167
+ # and false otherwise
168
+ def target!(xpath_query)
169
+ nodes = @doc.query xpath_query
170
+ (0..nodes.size-1).each do |i|
171
+ node = nodes.get(i)
172
+ if node.class == XOM::Element
173
+ @target = node
174
+ return true
175
+ end
176
+ end
177
+ return false
178
+ end
179
+
180
+ # Create a tag named +sym+. Other than the first argument which
181
+ # is the tag name, the arguments are the same as the tags
182
+ # implemented via <tt>method_missing</tt>.
183
+ # XOM will throw an exception if you pass something with a prefix but no
184
+ # associated namespace
185
+ def tag!(sym, *args, &block)
186
+ method_missing(sym.to_sym, *args, &block)
187
+ self
188
+ end
189
+
190
+ # Returns a pretty-formatted document with the given indent, max line length
191
+ # and encoding. The preserve_base_uri determines whether preserves the
192
+ # original base URIs by inserting extra xml:base attributes.
193
+ def to_pretty_xml(indent=2, line_lenght=0, encoding='utf-8', preserve_base_uri=true)
194
+ baos = Lang::ByteArrayOutputStream.new
195
+ serializer = XOM::Serializer.new(baos, encoding)
196
+ serializer.indent = indent
197
+ serializer.max_length = line_lenght
198
+ serializer.write @doc
199
+ baos.to_string
200
+ end
201
+
202
+ # Appends an XML document type declaration at the current position in the
203
+ # document
204
+ def doc_type!(root_element_name, public_id='', system_id='')
205
+ doctype = XOM::DocType(root_element_name, public_id, system_id)
206
+ @doc.insert_child(doctype, 0)
207
+ self
208
+ end
209
+
210
+ # Returns the value of the first child element with the specified name in
211
+ # no namespace. If there is no such element, it returns nill.
212
+ def find_first_tag_by_name(tag_name)
213
+ element = @root.get_first_child_element tag_name
214
+ element ? element.get_value : nil
215
+ end
216
+
217
+ # Returns the values of the nodes selected by the XPath expression in the
218
+ # context of this node in document order as defined by XSLT. This XPath
219
+ # expression must not contain any namespace prefixes.
220
+ def query(xpath_query)
221
+ nodes = @doc.query xpath_query
222
+ result = Array.new
223
+ (0..nodes.size-1).each do |i| result << nodes.get(i).get_value end
224
+ result
225
+ end
226
+
227
+ # See Jim Weirich's comment on builder (plus all the test frameworks seem
228
+ # to call nil? on objects being tested
229
+ def nil?
230
+ false
231
+ end
232
+
233
+ # Returns the value of the document as defined by XPath 1.0. This is the
234
+ # same as the value of the root element, which is the complete PCDATA
235
+ # content of the root element, without any tags, comments, or processing
236
+ # instructions after all entity and character references have been resolved.
237
+ def extract_text
238
+ @doc.get_value
239
+ end
240
+
241
+ # Returns XML in the format specified by the Canonica XML Version 1.0
242
+ # (w3.org/TR/2001/REC-xml-c14n-20010315 or Exclusive XML)
243
+ # Canonicalization Version 1.0 (w3.org/TR/2002/REC-xml-exc-c14n-20020718/)
244
+ def to_canonical_form
245
+ baos = Lang::ByteArrayOutputStream.new
246
+ outputter = XOM::Canonicalizer.new baos
247
+ outputter.write(@doc)
248
+ baos.to_string
249
+ end
250
+
251
+ private
252
+
253
+ # Adds attributes to the given Element (tag) as define by the parameter
254
+ # target
255
+ def _add_attributes(target, attrs)
256
+ if attrs
257
+ attrs.each do |key, value|
258
+ attribute = XOM::Attribute.new(key.to_s, value.to_s)
259
+ target.add_attribute(attribute)
260
+ end
261
+ end
262
+ end
263
+
264
+ # Recursively processed blocks passed to document in the context of a method
265
+ # call
266
+ def _nested_structures(block, new_target)
267
+ old_target = @target
268
+ @target = new_target
269
+ block.call(self)
270
+ ensure
271
+ @target = old_target
272
+ end
273
+
274
+ end
275
+
276
+ end
data/lib/excemel.rb ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #--
4
+ # Copyright &169;2001-2008 Integrallis Software, LLC.
5
+ # All Rights Reserved.
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining
8
+ # a copy of this software and associated documentation files (the
9
+ # "Software"), to deal in the Software without restriction, including
10
+ # without limitation the rights to use, copy, modify, merge, publish,
11
+ # distribute, sublicense, and/or sell copies of the Software, and to
12
+ # permit persons to whom the Software is furnished to do so, subject to
13
+ # the following conditions:
14
+ #
15
+ # The above copyright notice and this permission notice shall be
16
+ # included in all copies or substantial portions of the Software.
17
+ #
18
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+ #++
26
+
27
+ require 'excemel/excemel'
Binary file
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #--
4
+ # Copyright &169;2001-2008 Integrallis Software, LLC.
5
+ # All Rights Reserved.
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining
8
+ # a copy of this software and associated documentation files (the
9
+ # "Software"), to deal in the Software without restriction, including
10
+ # without limitation the rights to use, copy, modify, merge, publish,
11
+ # distribute, sublicense, and/or sell copies of the Software, and to
12
+ # permit persons to whom the Software is furnished to do so, subject to
13
+ # the following conditions:
14
+ #
15
+ # The above copyright notice and this permission notice shall be
16
+ # included in all copies or substantial portions of the Software.
17
+ #
18
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+ #++
26
+
27
+ require 'java'
28
+
29
+ module Lang
30
+ include_package 'java.lang'
31
+ include_package 'java.io'
32
+ end
data/lib/module/xom.rb ADDED
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #--
4
+ # Copyright &169;2001-2008 Integrallis Software, LLC.
5
+ # All Rights Reserved.
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining
8
+ # a copy of this software and associated documentation files (the
9
+ # "Software"), to deal in the Software without restriction, including
10
+ # without limitation the rights to use, copy, modify, merge, publish,
11
+ # distribute, sublicense, and/or sell copies of the Software, and to
12
+ # permit persons to whom the Software is furnished to do so, subject to
13
+ # the following conditions:
14
+ #
15
+ # The above copyright notice and this permission notice shall be
16
+ # included in all copies or substantial portions of the Software.
17
+ #
18
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
+ #++
26
+
27
+ require 'java'
28
+ require 'java/xom-1.2.7.jar'
29
+
30
+ module XOM
31
+ include_package 'nu.xom'
32
+ include_package 'nu.xom.canonical'
33
+ include_package 'nu.xom.xinclude'
34
+ end
metadata ADDED
@@ -0,0 +1,124 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: excemel
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.0
6
+ platform: java
7
+ authors:
8
+ - Brian Sam-Bodden
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-06-29 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: blankslate
18
+ version_requirements: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 2.1.2.4
24
+ requirement: *id001
25
+ prerelease: false
26
+ type: :runtime
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ version_requirements: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 1.0.0
35
+ requirement: *id002
36
+ prerelease: false
37
+ type: :development
38
+ - !ruby/object:Gem::Dependency
39
+ name: jeweler
40
+ version_requirements: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.6.2
46
+ requirement: *id003
47
+ prerelease: false
48
+ type: :development
49
+ - !ruby/object:Gem::Dependency
50
+ name: rcov
51
+ version_requirements: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ requirement: *id004
58
+ prerelease: false
59
+ type: :development
60
+ - !ruby/object:Gem::Dependency
61
+ name: rdoc
62
+ version_requirements: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "3.7"
68
+ requirement: *id005
69
+ prerelease: false
70
+ type: :development
71
+ description: JRuby DSL for XML Building and Manipulation with XPath & XQuery
72
+ email: bsbodden@integrallis.com
73
+ executables: []
74
+
75
+ extensions: []
76
+
77
+ extra_rdoc_files:
78
+ - LICENSE
79
+ - README.rdoc
80
+ files:
81
+ - Gemfile
82
+ - History.txt
83
+ - LICENSE
84
+ - Manifest.txt
85
+ - README.rdoc
86
+ - Rakefile
87
+ - lib/excemel.rb
88
+ - lib/excemel/excemel.rb
89
+ - lib/java/xom-1.2.7.jar
90
+ - lib/module/lang.rb
91
+ - lib/module/xom.rb
92
+ has_rdoc: true
93
+ homepage: http://github.com/bsbodden/excemel
94
+ licenses:
95
+ - MIT
96
+ post_install_message:
97
+ rdoc_options: []
98
+
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ hash: 2
107
+ segments:
108
+ - 0
109
+ version: "0"
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: "0"
116
+ requirements: []
117
+
118
+ rubyforge_project:
119
+ rubygems_version: 1.5.1
120
+ signing_key:
121
+ specification_version: 3
122
+ summary: JRuby DSL for XOM
123
+ test_files: []
124
+