libxslt-ruby 0.6.0-x86-mswin32-60 → 0.7.0-x86-mswin32-60

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.
Files changed (42) hide show
  1. data/README +125 -136
  2. data/doc/classes/XSLT.html +215 -0
  3. data/doc/classes/XSLT/Stylesheet.html +244 -0
  4. data/doc/classes/XSLT/TransformContext.html +111 -0
  5. data/doc/created.rid +1 -0
  6. data/doc/files/CHANGES.html +168 -0
  7. data/doc/files/LICENSE.html +133 -0
  8. data/doc/files/README.html +269 -0
  9. data/doc/files/ext/libxslt/libxslt_c.html +101 -0
  10. data/doc/files/ext/libxslt/ruby_xslt_stylesheet_c.html +101 -0
  11. data/doc/files/ext/libxslt/ruby_xslt_transform_context_c.html +101 -0
  12. data/doc/files/lib/deprecated_rb.html +101 -0
  13. data/doc/files/lib/libxslt_rb.html +110 -0
  14. data/doc/fr_class_index.html +29 -0
  15. data/doc/fr_file_index.html +34 -0
  16. data/doc/fr_method_index.html +28 -0
  17. data/doc/index.html +24 -0
  18. data/doc/rdoc-style.css +208 -0
  19. data/ext/libxslt/libxslt.c +21 -212
  20. data/ext/libxslt/libxslt.h +0 -17
  21. data/ext/libxslt/ruby_xslt_stylesheet.c +135 -173
  22. data/ext/libxslt/ruby_xslt_stylesheet.h +5 -10
  23. data/ext/libxslt/ruby_xslt_transform_context.c +5 -2
  24. data/ext/libxslt/version.h +2 -2
  25. data/lib/deprecated.rb +66 -0
  26. data/lib/libxslt.rb +1 -0
  27. data/lib/libxslt_ruby.so +0 -0
  28. data/mingw/libxslt_ruby.so +0 -0
  29. data/tests/files/commentary.dtd +34 -0
  30. data/tests/files/fuzface.xml +154 -0
  31. data/tests/files/fuzface.xsl +4 -0
  32. data/tests/files/params.xml +2 -0
  33. data/tests/files/params.xsl +11 -0
  34. data/tests/files/ramblings.xsl +46 -0
  35. data/tests/test_deprecated.rb +99 -0
  36. data/tests/test_libxslt.rb +21 -0
  37. data/tests/test_stylesheet.rb +64 -0
  38. data/tests/test_suite.rb +3 -0
  39. data/vc/libxslt_ruby.sln +1 -1
  40. data/vc/libxslt_ruby.vcproj +3 -3
  41. metadata +41 -10
  42. data/mingw/mingw.rake +0 -36
data/lib/libxslt.rb CHANGED
@@ -1,2 +1,3 @@
1
1
  require 'libxml'
2
2
  require 'libxslt_ruby.so'
3
+ require 'deprecated'
data/lib/libxslt_ruby.so CHANGED
Binary file
Binary file
@@ -0,0 +1,34 @@
1
+ <!ELEMENT commentary (meta, body)>
2
+ <!ELEMENT meta (author, version, date, id, title, subtitle?)>
3
+
4
+ <!-- Metadata about the requirements -->
5
+ <!ENTITY % string "#PCDATA">
6
+ <!ENTITY % character "#PCDATA">
7
+ <!ENTITY % letter "#PCDATA">
8
+ <!ENTITY % number_att "CDATA">
9
+
10
+
11
+ <!ELEMENT author (first_name, last_name, email)>
12
+
13
+ <!ELEMENT first_name (%string;)>
14
+ <!ELEMENT last_name (%string;)>
15
+ <!ELEMENT email (%string;)>
16
+
17
+ <!ELEMENT version (#PCDATA)>
18
+ <!ELEMENT date (#PCDATA)>
19
+ <!ELEMENT id (#PCDATA)>
20
+ <!ELEMENT title (#PCDATA)>
21
+ <!ELEMENT subtitle (#PCDATA)>
22
+
23
+ <!ELEMENT body (para+)>
24
+
25
+
26
+ <!ELEMENT para (#PCDATA|thought|url|ol)*>
27
+ <!ATTLIST para
28
+ style (default|ps) "default">
29
+
30
+ <!ELEMENT ol (li+)>
31
+ <!ELEMENT li (#PCDATA)>
32
+ <!ELEMENT url (#PCDATA)>
33
+ <!ELEMENT thought (#PCDATA)>
34
+
@@ -0,0 +1,154 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <?xml-stylesheet href="fuzface.xsl" type="text/xsl"?>
3
+
4
+ <!DOCTYPE commentary SYSTEM "commentary.dtd">
5
+
6
+ <commentary>
7
+ <meta>
8
+ <author>
9
+ <first_name>Sean</first_name>
10
+ <last_name>Chittenden</last_name>
11
+ <email>sean@chittenden.org</email>
12
+ </author>
13
+ <version>$Version$</version>
14
+ <date>$Date: 2008-07-09 23:35:19 -0600 (Wed, 09 Jul 2008) $</date>
15
+ <id>$Id: fuzface.xml 58 2008-07-10 05:35:19Z cfis $</id>
16
+ <title>Fuzface...</title>
17
+ <subtitle>The Internet's a big place and here's some proof...</subtitle>
18
+ </meta>
19
+
20
+ <body>
21
+ <para>
22
+ I think it's a tragedy that I'm going to start off my new
23
+ commentary by talking about facial hair and the Internet.
24
+ Something about that just screams pathetic, but whatever: it's
25
+ humor and that's life.
26
+ </para>
27
+
28
+ <para>
29
+ I've been working at home for a while now, which has been great.
30
+ I've been doing a lot of reading, good work, contributing to the
31
+ FreeBSD project, and living life at my own pace. The problem?
32
+ I don't have to interact with people, so I've let my appearance
33
+ slide a bit, most notably I've gone two weeks without shaving
34
+ and I have an awful hairy face.
35
+ </para>
36
+
37
+ <para>
38
+ Nothing is worse than going for a hard run, coming back, and
39
+ then bending your head down so that the hairs under your chin
40
+ touch the hairs on your neck. This has to be one of the most
41
+ disgusting/gross feelings I've experienced in a while. While
42
+ today wasn't the first time I'd experienced such a slimy tangled
43
+ mess, it is the first time I seriously considered shaving part
44
+ of my face, but not all of it: I was considering a beard.
45
+ </para>
46
+
47
+ <para>
48
+ Alright, so it's 5pm and I'm a sweaty post-run mess (it was 110
49
+ degrees in direct sunlight according to my thermometer) and
50
+ considering the possibility of growing a beard. Swifty nift?
51
+ Maybe. This is something I'd never done before, let alone
52
+ seriously consider. Normally I'd call my dad for such manly
53
+ advice, but he is: a) normally in another state, and; b) in
54
+ another country right now probably growing a beard (he's
55
+ notorious for coming back from a trip with a gnarly unshaven
56
+ face, sometimes he'll shape it into a decent beard). So, what's
57
+ a tech-junkie to do? Hop on the Internet and see if Google's
58
+ able to provide me with some inspiration.
59
+ </para>
60
+
61
+ <para>
62
+ Sure enough, I typed in "pictures of bearded men" and I was able
63
+ to find something: 14,000 pages of something to be exact.
64
+ Anyway, so most of these were rinky dink sites, a few of them
65
+ had some promise. One guy was trying to start a tradition where
66
+ everyone grows a beard for New Years. As I was scrolling down
67
+ the page trying to find some pictures, my mind was having the
68
+ following thought process: <thought>This seems like a dumb
69
+ idea... New Years provides a perfectly good excuse to kiss some
70
+ total stranger that you've had your eye on for the duration of a
71
+ New Years party. Why waste such an opportunity with a crappy
72
+ kiss?</thought> And at about this point I said this page sucks,
73
+ and flipped back to my search results.
74
+ </para>
75
+
76
+ <para>
77
+ Since I'd never done this before, I didn't know what was
78
+ fashionably correct in terms of where a guy should shave under
79
+ his neck, or what the deal was... I knew there were lots of
80
+ styles out there, just none that I could picture in my mind
81
+ (save maybe Santa Claus and a few really gnarly beards that are
82
+ long enough to be used as full-body covering. Oooh! And don't
83
+ forget the Russian and Amish beards, those stand out in my mind
84
+ too.). Google, being pretty comprehensive, and the Internet
85
+ being huge, found the exact screwball page I was looking for:
86
+ <url>http://fuzface-gallery.tripod.com/</url>
87
+ </para>
88
+
89
+ <para>
90
+ I don't know if I really should be amazed at the sheer number of
91
+ entries that Google returned, or that the Internet is big enough
92
+ to house such random gallery of crap, but it is and it never
93
+ ceases to amaze me... it's almost as amazing as the fact that
94
+ some bozo spent the time to create such a page. Don't people
95
+ have lives? Oh wait, I just visited his page... so back to my
96
+ diatribe...
97
+ </para>
98
+
99
+ <para>
100
+ There were tons of faces, lots of men, lots of hair, and plenty
101
+ of styles to choose from. Page after page of faces and hair.
102
+ Ugh. This wasn't getting any where and I was now entertaining
103
+ the rebound though of shaving my head. Time to close my browser
104
+ and hop in the shower: I reak. So what'd I do? Well, after
105
+ looking through enough of those pictures, I decided a few
106
+ things:
107
+ </para>
108
+
109
+ <para>
110
+ <ol>
111
+ <li>
112
+ I'm amazed that the Internet is big enough to foster the
113
+ creation of such random and utterly useless information. Then
114
+ again, I've been on and using the Net since '95, so this
115
+ shouldn't surprise me that much.
116
+ </li>
117
+
118
+ <li>
119
+ There are a lot of guys out there with varying tastes in,
120
+ shall we say, "facial hair styles," most of which I find
121
+ pretty unappealing.
122
+ </li>
123
+
124
+ <li>
125
+ I don't like beards. After one clogged drain, two
126
+ reapplications of shaving cream, and a few pases with the
127
+ razor, it took me about 5-10 minutes to get a nice cleanly
128
+ shaven face.
129
+ </li>
130
+
131
+ <li>
132
+ &lt;crass comment&gt;And - back me up here fellas, you can
133
+ sympathize with this feeling after you get done looking
134
+ through a magazine for a hair-cut style (ladies.. just smile
135
+ and nod and pretend you care) - after looking at a few dozen
136
+ pictures of men, I was able to safely reaffirm my desire for
137
+ heterosexual relations (translation from Bill Clintonese: have
138
+ sex with a woman). And with that thought in mind, I began to
139
+ pine for the college porn collection of old. Mmmm,
140
+ Playboy.&lt;/crass comment&gt;
141
+ </li>
142
+ </ol>
143
+ </para>
144
+
145
+ <para>
146
+ ::grin:: Until next time. -Sean
147
+ </para>
148
+
149
+ <para style="ps">
150
+ P.S. To the guys out there with beards, this is just my
151
+ opinion: take it with a grain of salt.
152
+ </para>
153
+ </body>
154
+ </commentary>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" ?>
2
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3
+ <xsl:include href="ramblings.xsl" />
4
+ </xsl:stylesheet>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <doc>abc</doc>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsl:stylesheet version='1.0'
3
+ xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
4
+ xmlns:foo='http://example.com/foo'
5
+ exclude-result-prefixes='foo'>
6
+
7
+ <xsl:param name='bar'>failure</xsl:param>
8
+ <xsl:template match='/'>
9
+ <article><xsl:value-of select='$bar'/></article>
10
+ </xsl:template>
11
+ </xsl:stylesheet>
@@ -0,0 +1,46 @@
1
+ <?xml version="1.0" ?>
2
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3
+ <xsl:template match="/">
4
+ <xsl:element name="html">
5
+ <xsl:element name="head">
6
+ <xsl:element name="title">Ramblings - <xsl:value-of select="commentary/meta/title" /> - <xsl:value-of select="commentary/meta/subtitle" /></xsl:element>
7
+ </xsl:element>
8
+
9
+ <xsl:element name="body">
10
+ <xsl:element name="h1"><xsl:value-of select="commentary/meta/title" /></xsl:element>
11
+ <xsl:element name="h3"><xsl:value-of select="commentary/meta/subtitle" /></xsl:element>
12
+ By: <xsl:value-of select="commentary/meta/author/first_name" /> <xsl:value-of select="commentary/meta/author/last_name" /><xsl:element name="br" />
13
+ Date: <xsl:value-of select="commentary/meta/date" /><xsl:element name="br" />
14
+
15
+ <xsl:for-each select="./commentary/body">
16
+ <xsl:apply-templates />
17
+ </xsl:for-each>
18
+
19
+ </xsl:element>
20
+ </xsl:element>
21
+ </xsl:template>
22
+
23
+ <xsl:template match="para">
24
+ <xsl:element name="p">
25
+ <xsl:apply-templates />
26
+ </xsl:element>
27
+ </xsl:template>
28
+
29
+ <xsl:template match="ol">
30
+ <xsl:element name="ol">
31
+ <xsl:apply-templates select="li" />
32
+ </xsl:element>
33
+ </xsl:template>
34
+
35
+ <xsl:template match="li">
36
+ <xsl:element name="li">
37
+ <xsl:value-of select="." />
38
+ </xsl:element>
39
+ </xsl:template>
40
+
41
+ <xsl:template match="thought">
42
+ <xsl:element name="i">
43
+ <xsl:value-of select="." />
44
+ </xsl:element>
45
+ </xsl:template>
46
+ </xsl:stylesheet>
@@ -0,0 +1,99 @@
1
+ require 'libxslt'
2
+ require 'test/unit'
3
+
4
+ class TestDeprecated < Test::Unit::TestCase
5
+ def setup()
6
+ xsl_file = File.expand_path('files/fuzface.xsl')
7
+ xml_file = File.expand_path('files/fuzface.xml')
8
+
9
+ @xslt = XML::XSLT.file(xsl_file)
10
+ @xslt.doc = XML::Document.file(xml_file)
11
+ @stylesheet = @xslt.parse
12
+ end
13
+
14
+ def tear_down()
15
+ @xslt = nil
16
+ @stylesheet = nil
17
+ end
18
+
19
+ def test_constants
20
+ assert_instance_of(Fixnum, XML::XSLT::MAX_DEPTH)
21
+ assert_instance_of(Fixnum, XML::XSLT::MAX_SORT)
22
+ assert_instance_of(String, XML::XSLT::ENGINE_VERSION)
23
+ assert_instance_of(Fixnum, XML::XSLT::LIBXSLT_VERSION)
24
+ assert_instance_of(Fixnum, XML::XSLT::LIBXML_VERSION)
25
+ assert_instance_of(String, XML::XSLT::XSLT_NAMESPACE)
26
+ assert_instance_of(String, XML::XSLT::DEFAULT_URL)
27
+ assert_instance_of(String, XML::XSLT::DEFAULT_VENDOR)
28
+ assert_instance_of(String, XML::XSLT::DEFAULT_VERSION)
29
+ assert_instance_of(String, XML::XSLT::NAMESPACE_LIBXSLT)
30
+ assert_instance_of(String, XML::XSLT::NAMESPACE_SAXON)
31
+ assert_instance_of(String, XML::XSLT::NAMESPACE_XT)
32
+ assert_instance_of(String, XML::XSLT::NAMESPACE_XALAN)
33
+ assert_instance_of(String, XML::XSLT::NAMESPACE_NORM_SAXON)
34
+ end
35
+
36
+ def test_file
37
+ xsl_file = File.expand_path('files/fuzface.xsl')
38
+ xslt = XML::XSLT.file(xsl_file)
39
+ assert_instance_of(XML::XSLT::Stylesheet, xslt)
40
+ end
41
+
42
+ def test_new
43
+ xslt = XML::XSLT.new
44
+ assert_instance_of(XML::XSLT::Stylesheet, xslt)
45
+
46
+ xslt.filename = File.expand_path('files/fuzface.xsl')
47
+ assert_instance_of(String, xslt.filename)
48
+ end
49
+
50
+ def test_doc
51
+ xsl_file = File.expand_path('files/fuzface.xsl')
52
+ xml_file = File.expand_path('files/fuzface.xml')
53
+
54
+ xslt = XML::XSLT.file(xsl_file)
55
+ xslt.doc = XML::Document.file(xml_file)
56
+ assert_instance_of(XML::Document, xslt.doc)
57
+ end
58
+
59
+ def test_parse
60
+ xsl_file = File.expand_path('files/fuzface.xsl')
61
+ xml_file = File.expand_path('files/fuzface.xml')
62
+
63
+ xslt = XML::XSLT.file(xsl_file)
64
+ stylesheet = xslt.parse
65
+ assert_instance_of(XML::XSLT::Stylesheet, stylesheet)
66
+ end
67
+
68
+ def test_parse
69
+ assert_instance_of(XML::XSLT::Stylesheet, @stylesheet)
70
+ end
71
+
72
+ def test_to_s
73
+ @stylesheet.apply
74
+ str = @stylesheet.to_s
75
+ assert_instance_of(String, str)
76
+ end
77
+
78
+ def test_save
79
+ @stylesheet.apply
80
+ @stylesheet.save("text.xml")
81
+ end
82
+
83
+ def test_print_invalid
84
+ @stylesheet.apply
85
+ @stylesheet.print
86
+ end
87
+
88
+ def test_save_invalid
89
+ assert_raises(ArgumentError) do
90
+ @stylesheet.save("str")
91
+ end
92
+ end
93
+
94
+ def test_print_invalid
95
+ assert_raises(ArgumentError) do
96
+ @stylesheet.print
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,21 @@
1
+ require 'libxslt'
2
+ require 'test/unit'
3
+
4
+ class TextLibXslt < Test::Unit::TestCase
5
+ def test_constants
6
+ assert_instance_of(Fixnum, XSLT::MAX_DEPTH)
7
+ assert_instance_of(Fixnum, XSLT::MAX_SORT)
8
+ assert_instance_of(String, XSLT::ENGINE_VERSION)
9
+ assert_instance_of(Fixnum, XSLT::LIBXSLT_VERSION)
10
+ assert_instance_of(Fixnum, XSLT::LIBXML_VERSION)
11
+ assert_instance_of(String, XSLT::XSLT_NAMESPACE)
12
+ assert_instance_of(String, XSLT::DEFAULT_URL)
13
+ assert_instance_of(String, XSLT::DEFAULT_VENDOR)
14
+ assert_instance_of(String, XSLT::DEFAULT_VERSION)
15
+ assert_instance_of(String, XSLT::NAMESPACE_LIBXSLT)
16
+ assert_instance_of(String, XSLT::NAMESPACE_SAXON)
17
+ assert_instance_of(String, XSLT::NAMESPACE_XT)
18
+ assert_instance_of(String, XSLT::NAMESPACE_XALAN)
19
+ assert_instance_of(String, XSLT::NAMESPACE_NORM_SAXON)
20
+ end
21
+ end
@@ -0,0 +1,64 @@
1
+ require 'libxslt'
2
+ require 'test/unit'
3
+
4
+ class TestStylesheet < Test::Unit::TestCase
5
+ def setup
6
+ doc = XML::Document.file('files/fuzface.xsl')
7
+ @stylesheet = XSLT::Stylesheet.new(doc)
8
+ end
9
+
10
+ def tear_down
11
+ @stylesheet = nil
12
+ end
13
+
14
+ def doc
15
+ XML::Document.file('files/fuzface.xml')
16
+ end
17
+
18
+ def test_class
19
+ assert_instance_of(XSLT::Stylesheet, @stylesheet)
20
+ end
21
+
22
+ def test_apply
23
+ result = @stylesheet.apply(doc)
24
+ assert_instance_of(XML::Document, result)
25
+
26
+ paragraphs = result.find('//p')
27
+ assert_equal(11, paragraphs.length)
28
+ end
29
+
30
+ def test_apply_multiple
31
+ 10.times do
32
+ test_apply
33
+ end
34
+ end
35
+
36
+ def test_params
37
+ sdoc = XML::Document.file('files/params.xsl')
38
+ stylesheet = XSLT::Stylesheet.new(sdoc)
39
+ doc = XML::Document.file('files/params.xml')
40
+
41
+ # Start with no params
42
+ result = stylesheet.apply(doc)
43
+ assert_equal('<article>failure</article>', result.root.to_s)
44
+
45
+ # Now try with params as hash. /doc is evaluated
46
+ # as an xpath expression
47
+ result = stylesheet.apply(doc, 'bar' => "/doc")
48
+ assert_equal('<article>abc</article>', result.root.to_s)
49
+
50
+ # Now try with params as hash. Note the double quote
51
+ # on success - we want to pass a literal string and
52
+ # not an xpath expression.
53
+ result = stylesheet.apply(doc, 'bar' => "'success'")
54
+ assert_equal('<article>success</article>', result.root.to_s)
55
+
56
+ # Now try with params as an array.
57
+ result = stylesheet.apply(doc, ['bar', "'success'"])
58
+ assert_equal('<article>success</article>', result.root.to_s)
59
+
60
+ # Now try with invalid array.
61
+ result = stylesheet.apply(doc, ['bar'])
62
+ assert_equal('<article>failure</article>', result.root.to_s)
63
+ end
64
+ end