rcdk 0.2.0 → 0.3.0

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/README CHANGED
@@ -1,15 +1,15 @@
1
1
  =RCDK - The Ruby Interface for the Chemistry Development Kit (CDK)
2
2
 
3
- RCDK makes it possible to use the CDK library, which is written in
4
- Java, from Ruby.
3
+ RCDK makes it possible to use the Chemistry Development Kit (CDK)
4
+ from Ruby. CDK is a Java library for chemical informatics.
5
5
 
6
6
  ==Typical Usage
7
7
 
8
8
  require 'rubygems'
9
9
  require_gem 'rcdk'
10
- require 'util'
10
+ require 'rcdk/util'
11
11
 
12
- mol = RCDK::Util::Lang.read_smiles('c1ccccc1')
12
+ mol = RCDK::Util::Lang.read_smiles 'c1ccccc1'
13
13
 
14
14
  puts mol.getAtomCount # =>6
15
15
 
@@ -23,7 +23,8 @@ http://rubyforge.org/projects/rcdk
23
23
  ==Requirements
24
24
 
25
25
  RCDK was developed with Ruby 1.8.4. Earlier versions of Ruby
26
- may also be compatible.
26
+ may also be compatible. Ruby Java Bridge is used to interface
27
+ to the Java Virtual Machine.
27
28
 
28
29
  ==Installing
29
30
 
@@ -32,12 +33,20 @@ The RubyGems package can be installed using the following command
32
33
 
33
34
  gem install rcdk
34
35
 
36
+ This command will optionally install Ruby Java Bridge, if it
37
+ hasn't been installed yet.
38
+
35
39
  ==License
36
40
  RCDK is distributed under the GNU LGPL version 2.1 (see 'LICENSE').
37
- It contains bytecode from the Chemistry Development Kit (CDK) distribution,
38
- which is itself licensed under the LGPL. The complete source code for
39
- the CDK can be obtained from http://sf.net/projects/cdk.
41
+ It contains bytecode from the following sources:
42
+
43
+ -Chemistry Development Kit (CDK), licensed under the LGPL: http://cdk.sf.net
44
+
45
+ -OPSIN, licensed under the Artistic License: http://sourceforge.net/projects/oscar3-chem/
46
+
47
+ -Structure-CDK, licensed under the LGPL: http://sf.net/projects/structure
40
48
 
41
49
  ==Contact
42
50
 
43
- More information can be found at http://rcdk.rubyforge.org.
51
+ Blog: http://depth-first.com
52
+ Email: r_apodaca at users dot sf dot net
data/Rakefile CHANGED
@@ -2,7 +2,8 @@
2
2
  # RCDK - The Chemistry Development Kit for Ruby
3
3
  # =============================================
4
4
  #
5
- # Project Info: http://rcdk.rubyforge.org
5
+ # Project Info: http://rubyforge.org/projects/rcdk
6
+ # Blog: http://depth-first.com
6
7
  #
7
8
  # Copyright (C) 2006 Richard L. Apodaca
8
9
  #
@@ -26,7 +27,7 @@ require 'rake/testtask'
26
27
  require 'rake/rdoctask'
27
28
  require 'rake/gempackagetask'
28
29
 
29
- PKG_VERSION = "0.2.0"
30
+ PKG_VERSION = "0.3.0"
30
31
 
31
32
  PKG_FILES = FileList[
32
33
  "Rakefile", "README",
@@ -95,7 +96,7 @@ spec = Gem::Specification.new do |s|
95
96
  s.name = 'rcdk'
96
97
  s.version = PKG_VERSION
97
98
  s.author = "Richard Apodaca"
98
- s.homepage = "http://rcdk.rubyforge.org"
99
+ s.homepage = "http://rubyforge.org/projects/rcdk"
99
100
  s.platform = Gem::Platform::RUBY
100
101
  s.require_path = 'lib'
101
102
  s.autorequire = 'rcdk'
@@ -103,6 +104,11 @@ spec = Gem::Specification.new do |s|
103
104
  s.files = PKG_FILES
104
105
  s.summary = "A Ruby wrapper for the Chemistry Development Kit"
105
106
  s.add_dependency("rjb", ">= 1.0.0")
107
+ s.description = s.summary
108
+ s.extra_rdoc_files = ['README']
109
+ s.rdoc_options << '--title' << 'Ruby Chemistry Development Kit (RCDK)' <<
110
+ '--main' << 'README' <<
111
+ '--line-numbers'
106
112
  end
107
113
 
108
114
  Rake::GemPackageTask.new(spec) do |gem|
@@ -2,7 +2,8 @@
2
2
  # RCDK - The Chemistry Development Kit for Ruby
3
3
  # =============================================
4
4
  #
5
- # Project Info: http://rcdk.rubyforge.org
5
+ # Project Info: http://rubyforge.org/projects/rcdk
6
+ # Blog: http://depth-first.com
6
7
  #
7
8
  # Copyright (C) 2006 Richard L. Apodaca
8
9
  #
@@ -15,18 +16,19 @@
15
16
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
17
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
18
  # Lesser General Public License for more details.
19
+ #
20
+ # You should have received a copy of the GNU Lesser General Public
21
+ # License along with this library; if not, write to the Free
22
+ # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
23
+ # Boston, MA 02111-1301, USA.
18
24
 
19
- require 'java'
20
-
21
- RCDK_VERSION = '0.2.0'
25
+ RCDK_VERSION = '0.3.0'
22
26
  CDK_VERSION = '20060714'
23
27
  STRUCTURE_CDK_VERSION = '0.1.2'
28
+ OPSIN_VERSION = '0.1.0'
24
29
 
25
- Java::Classpath.add(Gem.dir + File::SEPARATOR +
26
- File.join('gems', 'rcdk-' + RCDK_VERSION, 'java', 'lib', 'cdk-' +
27
- CDK_VERSION + '.jar'))
28
-
29
- Java::Classpath.add(Gem.dir + File::SEPARATOR +
30
- File.join('gems', 'rcdk-' + RCDK_VERSION, 'java', 'lib', 'structure-cdk-' +
31
- STRUCTURE_CDK_VERSION + '.jar'))
30
+ require 'rcdk/java'
32
31
 
32
+ require_jar File.join(File.dirname(__FILE__), '..', 'java', 'lib', 'cdk-' + CDK_VERSION + '.jar')
33
+ require_jar File.join(File.dirname(__FILE__), '..', 'java', 'lib', 'structure-cdk-' + STRUCTURE_CDK_VERSION + '.jar')
34
+ require_jar File.join(File.dirname(__FILE__), '..', 'java', 'lib', 'opsin-big-' + OPSIN_VERSION + '.jar')
@@ -0,0 +1,87 @@
1
+ # =============================================
2
+ # RCDK - The Chemistry Development Kit for Ruby
3
+ # =============================================
4
+ #
5
+ # Project Info: http://rubyforge.org/projects/rcdk
6
+ # Blog: http://depth-first.com
7
+ #
8
+ # Copyright (C) 2006 Richard L. Apodaca
9
+ #
10
+ # This library is free software; you can redistribute it and/or
11
+ # modify it under the terms of the GNU Lesser General Public
12
+ # License version 2.1 as published by the Free Software
13
+ # Foundation.
14
+ #
15
+ # This library is distributed in the hope that it will be useful,
16
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
+ # Lesser General Public License for more details.
19
+ #
20
+ # You should have received a copy of the GNU Lesser General Public
21
+ # License along with this library; if not, write to the Free
22
+ # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
23
+ # Boston, MA 02111-1301, USA.
24
+
25
+ require 'rubygems'
26
+ require_gem 'rjb'
27
+ require 'rjb'
28
+
29
+ # Adds the fully-qualified path <tt>path_to_jarfile</tt> to the <tt>
30
+ # CLASSPATH</tt> environment variable. Any jarfiles added after the
31
+ # first invocation of a Java constructor will be globally ignored, i.e., <tt>
32
+ # require</tt> all jarfiles first in your program before constructing
33
+ # objects from them.
34
+ def require_jar(path_to_jarfile)
35
+ if classpath_set?
36
+ ENV['CLASSPATH'] = ENV['CLASSPATH'] + File::PATH_SEPARATOR + path_to_jarfile
37
+ else
38
+ ENV['CLASSPATH'] = path_to_jarfile
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ # Returns false if the <tt>CLASSPATH</tt> variable is either null or
45
+ # empty, or otherwise true.
46
+ def classpath_set?
47
+ if !ENV['CLASSPATH']
48
+ return false
49
+ elsif ''.eql?(ENV['CLASSPATH'])
50
+ return false
51
+ end
52
+
53
+ true
54
+ end
55
+
56
+ module Kernel
57
+
58
+ # Maps the packages and class name specified by <tt>qualified_class_name</tt>
59
+ # to a nested set of Ruby modules. The first letter of each module name is
60
+ # capitalized. For example, <tt>java.util.HashMap</tt> would become <tt>
61
+ # Java::Util::HashMap</tt>.
62
+ #
63
+ # The first use of <tt>jrequire</tt> will render all subsequent calls
64
+ # to <tt>require_jar</tt> ineffective.
65
+ def jrequire(qualified_class_name)
66
+ java_class = Rjb::import(qualified_class_name)
67
+ package_names = qualified_class_name.to_s.split('.')
68
+ java_class_name = package_names.delete(package_names.last)
69
+ new_module = self.class
70
+
71
+ package_names.each do |package_name|
72
+ module_name = package_name.capitalize
73
+
74
+ if !new_module.const_defined?(module_name)
75
+ new_module = new_module.const_set(module_name, Module.new)
76
+ else
77
+ new_module = new_module.const_get(module_name)
78
+ end
79
+ end
80
+
81
+ return false if new_module.const_defined?(java_class_name)
82
+
83
+ new_module.const_set(java_class_name, java_class)
84
+
85
+ return true
86
+ end
87
+ end
@@ -2,7 +2,8 @@
2
2
  # RCDK - The Chemistry Development Kit for Ruby
3
3
  # =============================================
4
4
  #
5
- # Project Info: http://rcdk.rubyforge.org
5
+ # Project Info: http://rubyforge.org/projects/rcdk
6
+ # Blog: http://depth-first.com
6
7
  #
7
8
  # Copyright (C) 2006 Richard L. Apodaca
8
9
  #
@@ -15,21 +16,27 @@
15
16
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
17
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
18
  # Lesser General Public License for more details.
19
+ #
20
+ # You should have received a copy of the GNU Lesser General Public
21
+ # License along with this library; if not, write to the Free
22
+ # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
23
+ # Boston, MA 02111-1301, USA.
18
24
 
19
25
  require 'rcdk'
20
26
 
21
- StringReader = import 'java.io.StringReader'
22
- StringWriter = import 'java.io.StringWriter'
23
-
24
- Molecule = import 'org.openscience.cdk.Molecule'
25
- MDLReader = import 'org.openscience.cdk.io.MDLReader'
26
- MDLWriter = import 'org.openscience.cdk.io.MDLWriter'
27
- SmilesParser = import 'org.openscience.cdk.smiles.SmilesParser'
28
- SmilesGenerator = import 'org.openscience.cdk.smiles.SmilesGenerator'
29
- DefaultChemObjectBuilder = import 'org.openscience.cdk.DefaultChemObjectBuilder'
30
- StructureDiagramGenerator = import 'org.openscience.cdk.layout.StructureDiagramGenerator'
31
-
32
- ImageKit = import 'net.sf.structure.cdk.util.ImageKit'
27
+ jrequire 'java.io.StringReader'
28
+ jrequire 'java.io.StringWriter'
29
+ jrequire 'org.openscience.cdk.io.MDLWriter'
30
+ jrequire 'org.openscience.cdk.io.MDLReader'
31
+ jrequire 'org.openscience.cdk.smiles.SmilesParser'
32
+ jrequire 'org.openscience.cdk.smiles.SmilesGenerator'
33
+ jrequire 'org.openscience.cdk.DefaultChemObjectBuilder'
34
+ jrequire 'org.openscience.cdk.Molecule'
35
+ jrequire 'org.openscience.cdk.layout.StructureDiagramGenerator'
36
+ jrequire 'org.openscience.cdk.io.CMLReader'
37
+ jrequire 'org.openscience.cdk.ChemFile'
38
+ jrequire 'net.sf.structure.cdk.util.ImageKit'
39
+ jrequire 'uk.ac.cam.ch.wwmm.opsin.NameToStructure'
33
40
 
34
41
  # The Ruby Chemistry Development Kit.
35
42
  module RCDK
@@ -37,24 +44,45 @@ module RCDK
37
44
  # Convenience methods for working with the CDK.
38
45
  module Util
39
46
 
40
- # Molecular language translation. Currently molfile and SMILES
41
- # are implemented.
47
+ # Molecular language translation. Currently molfile, SMILES,
48
+ # and IUPAC nomenclature (read-only) are implemented.
42
49
  class Lang
43
- @@mdl_reader = MDLReader.new
44
- @@mdl_writer = MDLWriter.new
45
- @@smiles_parser = SmilesParser.new
46
- @@smiles_generator = SmilesGenerator.new(DefaultChemObjectBuilder.getInstance)
50
+ include Org::Openscience::Cdk
51
+ include Org::Openscience::Cdk::Io
52
+ include Java::Io
53
+ include Uk::Ac::Cam::Ch::Wwmm::Opsin
54
+
55
+ @@mdl_reader = Io::MDLReader.new
56
+ @@mdl_writer = Io::MDLWriter.new
57
+ @@smiles_parser = Smiles::SmilesParser.new
58
+ @@smiles_generator = Smiles::SmilesGenerator.new(DefaultChemObjectBuilder.getInstance)
59
+ @@cml_reader = nil
47
60
 
48
61
  # Returns a CDK <tt>Molecule</tt> given the String-based molfile
49
62
  # <tt>molfile</tt>.
50
63
  def self.read_molfile(molfile)
51
- reader =
52
- StringReader.new_with_sig('Ljava.lang.String;', molfile)
64
+ reader = StringReader.new(molfile)
53
65
 
54
66
  @@mdl_reader.setReader(reader)
55
67
  @@mdl_reader.read(Molecule.new)
56
68
  end
57
69
 
70
+ # Returns a CDK <tt>Molecule</tt> given the specified <tt>iupac_name</tt>.
71
+ def self.read_iupac(iupac_name)
72
+ nts = NameToStructure.getInstance
73
+ cml = nts.parseToCML(iupac_name)
74
+
75
+ raise "Couldn't parse #{iupac_name}." unless cml
76
+
77
+ string_reader = StringReader.new(cml.toXML)
78
+
79
+ @@cml_reader = CMLReader.new unless @@cml_reader
80
+ @@cml_reader.setReader(string_reader)
81
+
82
+ chem_file = @@cml_reader.read(ChemFile.new)
83
+ chem_file.getChemSequence(0).getChemModel(0).getSetOfMolecules.getMolecule(0)
84
+ end
85
+
58
86
  # Returns a String-based molfile by parsing the CDK <tt>molecule</tt>.
59
87
  def self.get_molfile(molecule)
60
88
  writer = StringWriter.new
@@ -86,12 +114,13 @@ module RCDK
86
114
  def self.smiles_to_molfile(smiles)
87
115
  get_molfile(read_smiles(smiles))
88
116
  end
89
-
90
117
  end
91
118
 
92
119
  # 2-D coordinate generation.
93
120
  class XY
94
- @@sdg = StructureDiagramGenerator.new
121
+ include Org::Openscience::Cdk
122
+
123
+ @@sdg = Layout::StructureDiagramGenerator.new
95
124
 
96
125
  # Assigns 2-D coordinates to the indicated <tt>molfile</tt> string.
97
126
  def self.coordinate_molfile(molfile)
@@ -110,7 +139,8 @@ module RCDK
110
139
 
111
140
  # Raster and SVG 2-D molecular images.
112
141
  class Image
113
-
142
+ include Net::Sf::Structure::Cdk::Util
143
+
114
144
  # Writes a <tt>width</tt> by <tt>height</tt> PNG image to
115
145
  # <tt>path_to_png</tt> using <tt>molfile</tt>.
116
146
  def self.molfile_to_png(molfile, path_to_png, width, height)
@@ -155,6 +185,33 @@ module RCDK
155
185
 
156
186
  ImageKit.writeJPG(mol, width, height, path_to_jpg)
157
187
  end
188
+
189
+ # Writes a <tt>width</tt> by <tt>height</tt> PNG image to
190
+ # <tt>path_to_png</tt> using <tt>iupac_name</tt>. Coordinates
191
+ # are automatically assigned.
192
+ def self.iupac_to_png(iupac_name, path_to_png, width, height)
193
+ mol = XY.coordinate_molecule(Lang.read_iupac(iupac_name))
194
+
195
+ ImageKit.writePNG(mol, width, height, path_to_png)
196
+ end
197
+
198
+ # Writes a <tt>width</tt> by <tt>height</tt> SVG document to
199
+ # <tt>path_to_svg</tt> using <tt>iupac_name</tt>. Coordinates
200
+ # are automatically assigned.
201
+ def self.iupac_to_svg(iupac_name, path_to_svg, width, height)
202
+ mol = XY.coordinate_molecule(Lang.read_iupac(iupac_name))
203
+
204
+ ImageKit.writeSVG(mol, width, height, path_to_svg)
205
+ end
206
+
207
+ # Writes a <tt>width</tt> by <tt>height</tt> JPG image to
208
+ # <tt>path_to_jpg</tt> using <tt>iupac_name</tt>. Coordinates
209
+ # are automatically assigned.
210
+ def self.iupac_to_jpg(iupac_name, path_to_jpg, width, height)
211
+ mol = XY.coordinate_molecule(Lang.read_iupac(iupac_name))
212
+
213
+ ImageKit.writeJPG(mol, width, height, path_to_jpg)
214
+ end
158
215
  end
159
216
  end
160
217
  end
@@ -2,7 +2,8 @@
2
2
  # RCDK - The Chemistry Development Kit for Ruby
3
3
  # =============================================
4
4
  #
5
- # Project Info: http://rcdk.rubyforge.org
5
+ # Project Info: http://rubyforge.org/projects/rcdk
6
+ # Blog: http://depth-first.com
6
7
  #
7
8
  # Copyright (C) 2006 Richard L. Apodaca
8
9
  #
@@ -15,26 +16,25 @@
15
16
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
17
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
18
  # Lesser General Public License for more details.
19
+ #
20
+ # You should have received a copy of the GNU Lesser General Public
21
+ # License along with this library; if not, write to the Free
22
+ # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
23
+ # Boston, MA 02111-1301, USA.
18
24
 
19
25
  $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
20
26
 
21
-
22
- require 'rcdk'
23
27
  require 'test/unit'
28
+ require 'rcdk'
29
+ require 'rcdk/util'
24
30
 
25
- Java::Classpath.clear!
26
- Java::Classpath.add(File.join('java', 'lib', 'cdk-' + CDK_VERSION + '.jar'))
27
- Java::Classpath.add(File.join('java', 'lib', 'structure-cdk-' + STRUCTURE_CDK_VERSION + '.jar'))
28
-
29
- require 'util'
30
-
31
- include RCDK::Util
32
-
33
- MoleculeFactory = import 'org.openscience.cdk.templates.MoleculeFactory'
31
+ jrequire 'org.openscience.cdk.templates.MoleculeFactory'
34
32
 
35
33
  # A very simple test suite. Woefully incomplete. Just exercises the API.
36
34
  class BasicTest < Test::Unit::TestCase
37
-
35
+ include RCDK::Util
36
+ include Org::Openscience::Cdk::Templates
37
+
38
38
  def setup
39
39
  @benzene =
40
40
  "c1ccccc1
@@ -75,6 +75,12 @@ M END"
75
75
  assert_equal(6, molecule.getAtomCount)
76
76
  end
77
77
 
78
+ def test_read_iupac
79
+ molecule = Lang.read_iupac('benzene')
80
+
81
+ assert_equal(6, molecule.getAtomCount)
82
+ end
83
+
78
84
  def test_write_smiles
79
85
  smiles = Lang.get_smiles(MoleculeFactory.makeBenzene)
80
86
 
@@ -123,7 +129,19 @@ M END"
123
129
  end
124
130
 
125
131
  def test_smiles_to_jpg
126
- Image.smiles_to_jpg('Clc1ccccc1', 'output/chlrobenzene.jpg', 200, 200)
132
+ Image.smiles_to_jpg('Clc1ccccc1', 'output/chlorobenzene.jpg', 200, 200)
133
+ end
134
+
135
+ def test_iupac_to_png
136
+ Image.iupac_to_png('quinoline', 'output/quinoline.png', 200, 200)
137
+ end
138
+
139
+ def test_iupac_to_svg
140
+ Image.iupac_to_svg('quinoline', 'output/quinoline.svg', 200, 200)
141
+ end
142
+
143
+ def test_iupac_to_jpg
144
+ Image.iupac_to_jpg('quinoline', 'output/quinoline.jpg', 200, 200)
127
145
  end
128
146
  end
129
147
 
metadata CHANGED
@@ -3,15 +3,15 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: rcdk
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.0
7
- date: 2006-09-24 00:00:00 -07:00
6
+ version: 0.3.0
7
+ date: 2006-10-28 00:00:00 -07:00
8
8
  summary: A Ruby wrapper for the Chemistry Development Kit
9
9
  require_paths:
10
10
  - lib
11
11
  email:
12
- homepage: http://rcdk.rubyforge.org
12
+ homepage: http://rubyforge.org/projects/rcdk
13
13
  rubyforge_project:
14
- description:
14
+ description: A Ruby wrapper for the Chemistry Development Kit
15
15
  autorequire: rcdk
16
16
  default_executable:
17
17
  bindir: bin
@@ -32,17 +32,22 @@ files:
32
32
  - Rakefile
33
33
  - README
34
34
  - lib/rcdk.rb
35
- - lib/java.rb
36
- - lib/util.rb
35
+ - lib/rcdk/java.rb
36
+ - lib/rcdk/util.rb
37
37
  - test/test.rb
38
38
  - java/lib/cdk-20060714.jar
39
+ - java/lib/opsin-big-0.1.0.jar
39
40
  - java/lib/structure-cdk-0.1.2.jar
40
41
  test_files: []
41
42
 
42
- rdoc_options: []
43
-
44
- extra_rdoc_files: []
45
-
43
+ rdoc_options:
44
+ - --title
45
+ - Ruby Chemistry Development Kit (RCDK)
46
+ - --main
47
+ - README
48
+ - --line-numbers
49
+ extra_rdoc_files:
50
+ - README
46
51
  executables: []
47
52
 
48
53
  extensions: []
@@ -1,69 +0,0 @@
1
- # =============================================
2
- # RCDK - The Chemistry Development Kit for Ruby
3
- # =============================================
4
- #
5
- # Project Info: http://rcdk.rubyforge.org
6
- #
7
- # Copyright (C) 2006 Richard L. Apodaca
8
- #
9
- # This library is free software; you can redistribute it and/or
10
- # modify it under the terms of the GNU Lesser General Public
11
- # License version 2.1 as published by the Free Software
12
- # Foundation.
13
- #
14
- # This library is distributed in the hope that it will be useful,
15
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
- # Lesser General Public License for more details.
18
- #
19
- # You should have received a copy of the GNU Lesser General Public
20
- # License along with this library; if not, write to the Free
21
- # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
22
- # Boston, MA 02111-1301, USA.
23
-
24
- require 'rubygems'
25
- require_gem 'rjb'
26
- require 'rjb'
27
-
28
- # Returns the Java class represented by the fully qualified name
29
- # <tt>klass</tt> via Ruby Java Bridge (RJB).
30
- def import(klass)
31
- Rjb::import(klass)
32
- end
33
-
34
- # Configuration and use of Java classes through Ruby Java Bridge (RJB).
35
- module Java
36
- # Configuration of classpath.
37
- class Classpath
38
- # Appends <tt>path</tt> to the <tt>CLASSPATH</tt> environment variable.
39
- def self.add(path)
40
- if set?
41
- ENV['CLASSPATH'] = ENV['CLASSPATH'] + File::PATH_SEPARATOR + path
42
- else
43
- ENV['CLASSPATH'] = path
44
- end
45
- end
46
-
47
- # Returns false if the <tt>CLASSPATH</tt> variable is either null or
48
- # empty, or otherwise true.
49
- def self.set?
50
- if !ENV['CLASSPATH']
51
- return false
52
- elsif ''.eql?(ENV['CLASSPATH'])
53
- return false
54
- end
55
-
56
- true
57
- end
58
-
59
- # Returns the value of the <tt>CLASSPATH</tt> variable.
60
- def self.get
61
- ENV['CLASSPATH']
62
- end
63
-
64
- # Sets the value of the <tt>CLASSPATH</tt> varible to <tt>nil</tt>.
65
- def self.clear!
66
- ENV['CLASSPATH'] = nil
67
- end
68
- end
69
- end