libxslt-ruby 1.0.1-x86-mingw32
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/CHANGES +81 -0
- data/LICENSE +21 -0
- data/README +164 -0
- data/Rakefile +74 -0
- data/ext/libxslt/extconf.h +8 -0
- data/ext/libxslt/extconf.rb +146 -0
- data/ext/libxslt/libxslt.c +66 -0
- data/ext/libxslt/libxslt.h +31 -0
- data/ext/libxslt/ruby_xslt_stylesheet.c +277 -0
- data/ext/libxslt/ruby_xslt_stylesheet.h +16 -0
- data/ext/libxslt/version.h +5 -0
- data/ext/vc/libxslt_ruby.sln +26 -0
- data/ext/vc/libxslt_ruby.vcxproj +110 -0
- data/lib/1.8/libxslt_ruby.so +0 -0
- data/lib/1.9/libxslt_ruby.so +0 -0
- data/lib/libs/libexslt-0.dll +0 -0
- data/lib/libs/libxslt-1.dll +0 -0
- data/lib/libxslt.rb +19 -0
- data/lib/libxslt/deprecated.rb +68 -0
- data/lib/xslt.rb +15 -0
- data/libxslt-ruby.gemspec +49 -0
- data/setup.rb +1585 -0
- data/test/files/commentary.dtd +34 -0
- data/test/files/fuzface.xml +154 -0
- data/test/files/fuzface.xsl +4 -0
- data/test/files/params.xml +2 -0
- data/test/files/params.xsl +11 -0
- data/test/files/ramblings.xsl +46 -0
- data/test/test_deprecated.rb +98 -0
- data/test/test_helper.rb +12 -0
- data/test/test_libxslt.rb +22 -0
- data/test/test_stylesheet.rb +106 -0
- data/test/test_suite.rb +10 -0
- data/test/text.xml +134 -0
- metadata +100 -0
data/CHANGES
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
== 0.9.1 / 2008-11-24 Charlie Savage
|
2
|
+
|
3
|
+
* Support libxml-ruby bindings 0.9.3 and above which has a changed
|
4
|
+
external api.
|
5
|
+
|
6
|
+
* Remove unused xslt transform wrapper class.
|
7
|
+
|
8
|
+
== 0.9.0 / 2008-11-18 Charlie Savage
|
9
|
+
|
10
|
+
* Add back in support for exslt.
|
11
|
+
|
12
|
+
* Support libxml-ruby bindings 0.9.0.
|
13
|
+
|
14
|
+
== 0.8.2 / 2008-07-21 Charlie Savage
|
15
|
+
|
16
|
+
* To use LibXSLT you can either require 'xslt' or require 'libxslt'.
|
17
|
+
The differences is that require 'xslt' mixes the LibXML and
|
18
|
+
LIBXSLT modules into the global namespace, thereby allowing
|
19
|
+
you to write code such as:
|
20
|
+
stylesheet = XSLT::Stylesheet.new(XML::Document.new). Note that
|
21
|
+
this is different from 0.8.0 release and may require updating your code.
|
22
|
+
|
23
|
+
* Support for libxml-ruby 0.8.2
|
24
|
+
|
25
|
+
* Improved Windows support - libxslt-ruby should now work out of the box.
|
26
|
+
|
27
|
+
== 0.8.0 / 2008-07-10 Charlie Savage
|
28
|
+
|
29
|
+
* Fix memory errors when reusing a stylehseet
|
30
|
+
|
31
|
+
* Added support for setting xsl::param values
|
32
|
+
|
33
|
+
* Updated RDocs.
|
34
|
+
|
35
|
+
* Moved to LibXSLT namespace
|
36
|
+
|
37
|
+
|
38
|
+
== 0.7.0 / 2008-07-10 Charlie Savage
|
39
|
+
|
40
|
+
* Ability to reuse the same stylesheet multiple times
|
41
|
+
|
42
|
+
* Simpler api
|
43
|
+
|
44
|
+
* Compatibility layer for pre-0.7.0 versions
|
45
|
+
|
46
|
+
* Major rewrite, resulting in significantly less code
|
47
|
+
|
48
|
+
* Updated RDocs.
|
49
|
+
|
50
|
+
|
51
|
+
== 0.6.0 / 2008-07-01 Charlie Savage
|
52
|
+
|
53
|
+
* Now packaged as a separate gem
|
54
|
+
|
55
|
+
* Windows support (both lots of memory fixes and binaries)
|
56
|
+
|
57
|
+
* New libxslt.rb ruby wrapper, so programs can simply say require 'xslt'
|
58
|
+
|
59
|
+
|
60
|
+
== 0.5.0 / 2006-02-27 Ross Bamford <rosco at roscopeco.co.uk>
|
61
|
+
|
62
|
+
* Source layout for Rubygem release
|
63
|
+
|
64
|
+
* Fixed unit tests (set_up to setup, directory handling)
|
65
|
+
|
66
|
+
* Updated extconf to remove shell-script dependency
|
67
|
+
|
68
|
+
* Fixed multiple symbol declarations for -fno-common
|
69
|
+
|
70
|
+
|
71
|
+
== 0.4.0 / 2003-12-15 Martin Povolny <martin@solnet.cz>
|
72
|
+
|
73
|
+
* libxslt.c: added call to exsltRegisterAll to enable exslt extensions
|
74
|
+
|
75
|
+
* extconf.rb: added -lexslt
|
76
|
+
|
77
|
+
== 0.3.0 / 2004-02-01 Martin Povolny <martin@solnet.cz>
|
78
|
+
|
79
|
+
* libxslt.c: added call to ruby_init_xslt_transform_context() to make it
|
80
|
+
work on ruby1.8
|
81
|
+
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# $Id$
|
2
|
+
|
3
|
+
Copyright (c) 2002-2006 Sean Chittenden <sean@chittenden.org> and contributors
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
7
|
+
the Software without restriction, including without limitation the rights to
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
9
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
10
|
+
so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README
ADDED
@@ -0,0 +1,164 @@
|
|
1
|
+
= libxslt-ruby
|
2
|
+
|
3
|
+
== Overview
|
4
|
+
|
5
|
+
The libxslt gem provides Ruby language bindings for GNOME's Libxslt
|
6
|
+
toolkit. It is free software, released under the MIT License.
|
7
|
+
|
8
|
+
|
9
|
+
== Requirements
|
10
|
+
|
11
|
+
libxslt-ruby requires Ruby 1.8.4 or higher. It is dependent on
|
12
|
+
the following libraries to function properly:
|
13
|
+
|
14
|
+
* libm (math routines: very standard)
|
15
|
+
* libz (zlib)
|
16
|
+
* libiconv
|
17
|
+
* libxml2
|
18
|
+
* libxslt
|
19
|
+
* libxml-ruby bindings
|
20
|
+
|
21
|
+
If you are running Linux or Unix you'll need a C compiler so the extension
|
22
|
+
can be compiled when it is installed. If you are running Windows, then install the Windows specific RubyGem which
|
23
|
+
includes an already built extension.
|
24
|
+
|
25
|
+
!!!NOTE!!! The libxml-ruby and libxslt-ruby bindings must absolutely, positively,
|
26
|
+
without a doubt share the same libxml2 library. This is because libxslt modifies
|
27
|
+
XML documents created by libxml2. If there are two copies of libxml2 on your
|
28
|
+
system, then when XML documents allocated in copy #1 are manipulated by copy #2,
|
29
|
+
a segmentation fault will occur. So make sure that your system has only one copy of libxml2
|
30
|
+
installed.
|
31
|
+
|
32
|
+
|
33
|
+
== INSTALLATION
|
34
|
+
|
35
|
+
The easiest way to install libxslt-ruby is via Ruby Gems. To install:
|
36
|
+
|
37
|
+
<tt>gem install libxslt-ruby</tt>
|
38
|
+
|
39
|
+
If you are running Windows, make sure to install the Win32 RubyGem which
|
40
|
+
includes an already built binary file. The binary is built against
|
41
|
+
libxml2 version 2.6.32, iconv version 1.11 and libxslt version 1.1.24.
|
42
|
+
Binaries for libxml2 and iconv are provided in the libxml-ruby bindings,
|
43
|
+
while a binary for libxslt is provided in the libxslt-ruby bindings.
|
44
|
+
|
45
|
+
The Windows binaries are biult with MingW. The gem also includes
|
46
|
+
a Microsoft VC++ 2005 solution. If you wish to run a debug version
|
47
|
+
of libxml-ruby on Windows, then it is highly recommended
|
48
|
+
you use VC++.
|
49
|
+
|
50
|
+
|
51
|
+
== USAGE
|
52
|
+
|
53
|
+
For in-depth information about using libxslt-ruby please refer
|
54
|
+
to its online Rdoc documentation.
|
55
|
+
|
56
|
+
All libxslt classes are in the LibXSLT::XSLT module. The simplest
|
57
|
+
way to use libxslt is to require 'xslt'. This will mixin the
|
58
|
+
LibXML and LibXSLT modules into the global namespace, allowing you to
|
59
|
+
write code like this:
|
60
|
+
|
61
|
+
require 'xslt'
|
62
|
+
document = XML::Document.new
|
63
|
+
stylesheett = XSLT::Stylesheet.new(document)
|
64
|
+
|
65
|
+
If you prefer not to add the LibXSLT module to the global namepace, then
|
66
|
+
write your code like this:
|
67
|
+
|
68
|
+
require 'libxslt'
|
69
|
+
|
70
|
+
class MyClass
|
71
|
+
def some_method
|
72
|
+
document = LibXML::XML::Document.new
|
73
|
+
stylesheett = LibXSLT::XSLT::Stylesheet.new(document)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
Given an XML file like:
|
78
|
+
|
79
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
80
|
+
<?xml-stylesheet href="fuzface.xsl" type="text/xsl"?>
|
81
|
+
|
82
|
+
<commentary>
|
83
|
+
<meta>
|
84
|
+
<author>
|
85
|
+
<first_name>Sean</first_name>
|
86
|
+
<last_name>Chittenden</last_name>
|
87
|
+
<email>sean@chittenden.org</email>
|
88
|
+
</author>
|
89
|
+
<version>$Version$</version>
|
90
|
+
<date>$Date$</date>
|
91
|
+
<id>$Id$</id> <title>Fuzface...</title>
|
92
|
+
<subtitle>The Internet's a big place and here's some proof...</subtitle>
|
93
|
+
</meta>
|
94
|
+
|
95
|
+
<body>
|
96
|
+
<para>
|
97
|
+
I think it's a tragedy that I'm going to start off my new
|
98
|
+
commentary by talking about facial hair and the Internet.
|
99
|
+
Something about that just screams pathetic, but whatever: it's
|
100
|
+
humor and that's life.
|
101
|
+
</para>
|
102
|
+
</body>
|
103
|
+
</commentary>
|
104
|
+
|
105
|
+
And an XSLT file like this:
|
106
|
+
|
107
|
+
<?xml version="1.0" ?>
|
108
|
+
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
109
|
+
<xsl:template match="/">
|
110
|
+
<xsl:element name="html">
|
111
|
+
<xsl:element name="head">
|
112
|
+
<xsl:element name="title">Ramblings - <xsl:value-of select="commentary/meta/title" /> - <xsl:value-of select="commentary/meta/subtitle" /></xsl:element>
|
113
|
+
</xsl:element>
|
114
|
+
|
115
|
+
<xsl:element name="body">
|
116
|
+
<xsl:element name="h1"><xsl:value-of select="commentary/meta/title" /></xsl:element>
|
117
|
+
<xsl:element name="h3"><xsl:value-of select="commentary/meta/subtitle" /></xsl:element>
|
118
|
+
By: <xsl:value-of select="commentary/meta/author/first_name" /> <xsl:value-of select="commentary/meta/author/last_name" /><xsl:element name="br" />
|
119
|
+
Date: <xsl:value-of select="commentary/meta/date" /><xsl:element name="br" />
|
120
|
+
|
121
|
+
<xsl:for-each select="./commentary/body">
|
122
|
+
<xsl:apply-templates />
|
123
|
+
</xsl:for-each>
|
124
|
+
|
125
|
+
</xsl:element>
|
126
|
+
</xsl:element>
|
127
|
+
</xsl:template>
|
128
|
+
|
129
|
+
<xsl:template match="para">
|
130
|
+
<xsl:element name="p">
|
131
|
+
<xsl:value-of select="." />
|
132
|
+
</xsl:element>
|
133
|
+
</xsl:template>
|
134
|
+
</xsl:stylesheet>
|
135
|
+
|
136
|
+
We can easily transform the XML with the following ruby code:
|
137
|
+
|
138
|
+
require 'xslt'
|
139
|
+
|
140
|
+
# Create a new XSL Transform
|
141
|
+
stylesheet_doc = XML::Document.file('files/fuzface.xsl')
|
142
|
+
stylesheet = LibXSLT::Stylesheet.new(stylesheet_doc)
|
143
|
+
|
144
|
+
# Transform a xml document
|
145
|
+
xml_doc = XML::Document.file('files/fuzface.xml')
|
146
|
+
result = stylesheet.apply(xml_doc)
|
147
|
+
|
148
|
+
You can then print, save or manipulate the returned document.
|
149
|
+
|
150
|
+
== License
|
151
|
+
|
152
|
+
See LICENSE for license information.
|
153
|
+
|
154
|
+
== DOCUMENTATION
|
155
|
+
|
156
|
+
RDoc comments are included - run 'rake doc' to generate documentation.
|
157
|
+
You can find the latest documentation at:
|
158
|
+
|
159
|
+
* http://libxsl.rubyforge.org/
|
160
|
+
|
161
|
+
== MORE INFORMATION
|
162
|
+
|
163
|
+
For more information please refer to the documentation. If you have any
|
164
|
+
questions, please send email to libxml-devel@rubyforge.org.
|
data/Rakefile
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "rubygems"
|
4
|
+
require "rake/extensiontask"
|
5
|
+
require "rake/testtask"
|
6
|
+
require 'hanna/rdoctask'
|
7
|
+
require "grancher/task"
|
8
|
+
require "yaml"
|
9
|
+
|
10
|
+
GEM_NAME = "libxslt-ruby"
|
11
|
+
SO_NAME = "libxslt_ruby"
|
12
|
+
|
13
|
+
# Read the spec file
|
14
|
+
spec = Gem::Specification.load("#{GEM_NAME}.gemspec")
|
15
|
+
|
16
|
+
# Setup compile tasks
|
17
|
+
Rake::ExtensionTask.new do |ext|
|
18
|
+
ext.gem_spec = spec
|
19
|
+
ext.name = SO_NAME
|
20
|
+
ext.ext_dir = "ext/libxslt"
|
21
|
+
ext.lib_dir = "lib/#{RUBY_VERSION.sub(/\.\d$/, '')}"
|
22
|
+
ext.config_options << "--with-xml2-include=C:/MinGW/local/include/libxml2"
|
23
|
+
ext.config_options << "--with-xslt-include=C:/MinGW/local/include/libxslt"
|
24
|
+
ext.config_options << "--with-exslt-include=C:/MinGW/local/include/libexslt"
|
25
|
+
end
|
26
|
+
|
27
|
+
# Setup generic gem
|
28
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
29
|
+
pkg.package_dir = 'pkg'
|
30
|
+
pkg.need_tar = false
|
31
|
+
end
|
32
|
+
|
33
|
+
# Setup Windows Gem
|
34
|
+
if RUBY_PLATFORM.match(/win32|mingw32/)
|
35
|
+
binaries = (FileList['lib/**/*.so',
|
36
|
+
'lib/**/*dll'])
|
37
|
+
|
38
|
+
# Windows specification
|
39
|
+
win_spec = spec.clone
|
40
|
+
win_spec.platform = Gem::Platform::CURRENT
|
41
|
+
win_spec.files += binaries.to_a
|
42
|
+
|
43
|
+
# Unset extensions
|
44
|
+
win_spec.extensions = nil
|
45
|
+
|
46
|
+
# Rake task to build the windows package
|
47
|
+
Rake::GemPackageTask.new(win_spec) do |pkg|
|
48
|
+
pkg.package_dir = 'pkg'
|
49
|
+
pkg.need_tar = false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# RDoc Task
|
54
|
+
desc "Generate rdoc documentation"
|
55
|
+
Rake::RDocTask.new("rdoc") do |rdoc|
|
56
|
+
rdoc.rdoc_dir = 'doc'
|
57
|
+
rdoc.title = "libxml-xslt"
|
58
|
+
# Show source inline with line numbers
|
59
|
+
rdoc.options << "--inline-source" << "--line-numbers"
|
60
|
+
# Make the readme file the start page for the generated html
|
61
|
+
rdoc.options << '--main' << 'README'
|
62
|
+
rdoc.rdoc_files.include('doc/*.rdoc',
|
63
|
+
'ext/**/*.c',
|
64
|
+
'lib/**/*.rb',
|
65
|
+
'CHANGES',
|
66
|
+
'README',
|
67
|
+
'LICENSE')
|
68
|
+
end
|
69
|
+
|
70
|
+
# Test Task
|
71
|
+
Rake::TestTask.new do |t|
|
72
|
+
t.libs << "test"
|
73
|
+
t.verbose = true
|
74
|
+
end
|
@@ -0,0 +1,146 @@
|
|
1
|
+
#!/usr/local/bin/ruby -w
|
2
|
+
|
3
|
+
# See the LICENSE file for copyright and distribution information
|
4
|
+
|
5
|
+
require 'mkmf'
|
6
|
+
require 'rbconfig'
|
7
|
+
|
8
|
+
require 'rubygems'
|
9
|
+
$preload = nil
|
10
|
+
$INCFLAGS << " -I/usr/local/include"
|
11
|
+
$LIBPATH.push(Config::CONFIG['libdir'])
|
12
|
+
|
13
|
+
def crash(str)
|
14
|
+
print(" extconf failure: %s\n", str)
|
15
|
+
exit 1
|
16
|
+
end
|
17
|
+
|
18
|
+
# Directories
|
19
|
+
dir_config('iconv')
|
20
|
+
dir_config('zlib')
|
21
|
+
dir_config('xml2')
|
22
|
+
dir_config('xslt')
|
23
|
+
dir_config('exslt')
|
24
|
+
dir_config('libxml-ruby')
|
25
|
+
|
26
|
+
# First get zlib
|
27
|
+
unless have_library('z', 'inflate') or
|
28
|
+
have_library('zlib', 'inflate') or
|
29
|
+
have_library('zlib1', 'inflate') or
|
30
|
+
have_library('libz', 'inflate')
|
31
|
+
crash('need zlib')
|
32
|
+
else
|
33
|
+
$defs.push('-DHAVE_ZLIB_H')
|
34
|
+
end
|
35
|
+
|
36
|
+
unless have_library('iconv','iconv_open') or
|
37
|
+
have_library('iconv','libiconv_open') or
|
38
|
+
have_library('libiconv', 'libiconv_open') or
|
39
|
+
have_library('libiconv', 'iconv_open') or
|
40
|
+
have_library('c','iconv_open') or
|
41
|
+
have_library('recode','iconv_open') or
|
42
|
+
have_library('iconv')
|
43
|
+
crash(<<-EOL)
|
44
|
+
need libiconv.
|
45
|
+
|
46
|
+
Install the libiconv or try passing one of the following options
|
47
|
+
to extconf.rb:
|
48
|
+
|
49
|
+
--with-iconv-dir=/path/to/iconv
|
50
|
+
--with-iconv-lib=/path/to/iconv/lib
|
51
|
+
--with-iconv-include=/path/to/iconv/include
|
52
|
+
EOL
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
unless (have_library('xml2', 'xmlXPtrNewRange') or
|
57
|
+
have_library('libxml2', 'xmlXPtrNewRange') or
|
58
|
+
find_library('xml2', 'xmlXPtrNewRange', '/opt/lib', '/usr/local/lib', '/usr/lib')) and
|
59
|
+
(have_header('libxml/xmlversion.h') or
|
60
|
+
find_header('libxml/xmlversion.h',
|
61
|
+
'/opt/include/libxml2',
|
62
|
+
'/usr/local/include/libxml2',
|
63
|
+
'/usr/include/libxml2'))
|
64
|
+
crash(<<-EOL)
|
65
|
+
need libxml2.
|
66
|
+
|
67
|
+
Install the library or try one of the following options to extconf.rb:
|
68
|
+
|
69
|
+
--with-xml2-dir=/path/to/libxml2
|
70
|
+
--with-xml2-lib=/path/to/libxml2/lib
|
71
|
+
--with-xml2-include=/path/to/libxml2/include
|
72
|
+
EOL
|
73
|
+
end
|
74
|
+
|
75
|
+
unless (have_library('xslt','xsltApplyStylesheet') or
|
76
|
+
have_library('libxslt','xsltApplyStylesheet') or
|
77
|
+
find_library('xslt', 'xsltApplyStylesheet', '/opt/lib', '/usr/local/lib', '/usr/lib')) and
|
78
|
+
(have_header('xslt.h') or
|
79
|
+
find_header('xslt.h',
|
80
|
+
'/opt/include/libxslt',
|
81
|
+
'/usr/local/include/libxslt',
|
82
|
+
'/usr/include/libxslt'))
|
83
|
+
crash(<<-EOL)
|
84
|
+
need libxslt.
|
85
|
+
|
86
|
+
Install the library or try one of the following options to extconf.rb:
|
87
|
+
|
88
|
+
--with-xslt-dir=/path/to/libxslt
|
89
|
+
--with-xslt-lib=/path/to/libxslt/lib
|
90
|
+
--with-xslt-include=/path/to/libxslt/include
|
91
|
+
EOL
|
92
|
+
end
|
93
|
+
|
94
|
+
unless (have_library('exslt','exsltRegisterAll') or
|
95
|
+
have_library('libexslt','exsltRegisterAll') or
|
96
|
+
find_library('exslt', 'exsltRegisterAll', '/opt/lib', '/usr/local/lib', '/usr/lib')) and
|
97
|
+
(have_header('exslt.h') or
|
98
|
+
find_header('exslt.h',
|
99
|
+
'/opt/include/libexslt',
|
100
|
+
'/usr/local/include/libexslt',
|
101
|
+
'/usr/include/libexslt'))
|
102
|
+
crash(<<-EOL)
|
103
|
+
Need libexslt.
|
104
|
+
Install the library or try one of the following options to extconf.rb:
|
105
|
+
--with-exslt-dir=/path/to/libexslt
|
106
|
+
--with-exslt-lib=/path/to/libexslt/lib
|
107
|
+
--with-exslt-include=/path/to/libexslt/include
|
108
|
+
EOL
|
109
|
+
end
|
110
|
+
|
111
|
+
# Figure out where libxml-ruby is installed
|
112
|
+
gem_specs = Gem.source_index.find_name('libxml-ruby')
|
113
|
+
if gem_specs.empty?
|
114
|
+
crash(<<-EOL)
|
115
|
+
libxml-ruby bindings must be installed
|
116
|
+
EOL
|
117
|
+
end
|
118
|
+
|
119
|
+
gem_specs = gem_specs.sort_by {|spec| spec.version}.reverse
|
120
|
+
libxml_ruby_path = gem_specs.first.full_gem_path
|
121
|
+
|
122
|
+
$INCFLAGS += " -I#{libxml_ruby_path}/ext"
|
123
|
+
|
124
|
+
unless have_header('libxml/ruby_libxml.h')
|
125
|
+
crash(<<-EOL)
|
126
|
+
Need headers for libxml-ruby.
|
127
|
+
EOL
|
128
|
+
end
|
129
|
+
|
130
|
+
if RUBY_PLATFORM.match(/win32|mingw32/)
|
131
|
+
RUBY_VERSION =~ /(\d+.\d+)/
|
132
|
+
$LIBPATH << File.join(libxml_ruby_path, "lib")
|
133
|
+
$LIBPATH << File.join(libxml_ruby_path, "lib", $1)
|
134
|
+
|
135
|
+
headers = ['iconv.h', 'libxml/ruby_libxml.h']
|
136
|
+
unless have_library(':libxml_ruby.so', 'Init_libxml_ruby', headers)
|
137
|
+
crash(<<-EOL)
|
138
|
+
Need libxml-ruby
|
139
|
+
Please install libxml-ruby or specify the path to the gem via:
|
140
|
+
--with-libxml-ruby=/path/to/libxml-ruby gem
|
141
|
+
EOL
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
create_header()
|
146
|
+
create_makefile("libxslt_ruby")
|