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

Sign up to get free protection for your applications and to get access to all the features.
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