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 +10 -0
- data/History.txt +3 -0
- data/LICENSE +21 -0
- data/Manifest.txt +10 -0
- data/README.rdoc +23 -0
- data/Rakefile +78 -0
- data/lib/excemel/excemel.rb +276 -0
- data/lib/excemel.rb +27 -0
- data/lib/java/xom-1.2.7.jar +0 -0
- data/lib/module/lang.rb +32 -0
- data/lib/module/xom.rb +34 -0
- metadata +124 -0
data/Gemfile
ADDED
data/History.txt
ADDED
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
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
|
data/lib/module/lang.rb
ADDED
@@ -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
|
+
|