libxslt-ruby 1.0.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,17 +6,17 @@ class TestDeprecated < Test::Unit::TestCase
6
6
  def setup()
7
7
  xsl_file = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
8
8
  xml_file = File.join(File.dirname(__FILE__), 'files/fuzface.xml')
9
-
9
+
10
10
  @xslt = XML::XSLT.file(xsl_file)
11
11
  @xslt.doc = XML::Document.file(xml_file)
12
12
  @stylesheet = @xslt.parse
13
13
  end
14
-
14
+
15
15
  def tear_down()
16
16
  @xslt = nil
17
17
  @stylesheet = nil
18
18
  end
19
-
19
+
20
20
  def test_constants
21
21
  assert_instance_of(Fixnum, XML::XSLT::MAX_DEPTH)
22
22
  assert_instance_of(Fixnum, XML::XSLT::MAX_SORT)
@@ -33,15 +33,15 @@ class TestDeprecated < Test::Unit::TestCase
33
33
  assert_instance_of(String, XML::XSLT::NAMESPACE_XALAN)
34
34
  assert_instance_of(String, XML::XSLT::NAMESPACE_NORM_SAXON)
35
35
  end
36
-
36
+
37
37
  def test_new
38
38
  xslt = XML::XSLT.new
39
39
  assert_instance_of(XML::XSLT::Stylesheet, xslt)
40
-
40
+
41
41
  xslt.filename = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
42
42
  assert_instance_of(String, xslt.filename)
43
43
  end
44
-
44
+
45
45
  def test_file_type
46
46
  assert_instance_of(XML::XSLT::Stylesheet, @xslt)
47
47
  end
@@ -49,21 +49,21 @@ class TestDeprecated < Test::Unit::TestCase
49
49
  def test_doc
50
50
  xsl_file = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
51
51
  xml_file = File.join(File.dirname(__FILE__), 'files/fuzface.xml')
52
-
52
+
53
53
  xslt = XML::XSLT.file(xsl_file)
54
54
  xslt.doc = XML::Document.file(xml_file)
55
55
  assert_instance_of(XML::Document, xslt.doc)
56
56
  end
57
-
57
+
58
58
  def test_parse
59
59
  xsl_file = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
60
60
  xml_file = File.join(File.dirname(__FILE__), 'files/fuzface.xml')
61
-
61
+
62
62
  xslt = XML::XSLT.file(xsl_file)
63
63
  stylesheet = xslt.parse
64
64
  assert_instance_of(XML::XSLT::Stylesheet, stylesheet)
65
65
  end
66
-
66
+
67
67
  def test_parse
68
68
  assert_instance_of(XML::XSLT::Stylesheet, @stylesheet)
69
69
  end
@@ -76,20 +76,22 @@ class TestDeprecated < Test::Unit::TestCase
76
76
 
77
77
  def test_save
78
78
  @stylesheet.apply
79
- @stylesheet.save("text.xml")
79
+ @stylesheet.save(file = 'text.xml')
80
+ ensure
81
+ File.unlink(file) if file && File.exist?(file)
80
82
  end
81
-
83
+
82
84
  def test_print_invalid
83
85
  @stylesheet.apply
84
86
  @stylesheet.print
85
87
  end
86
-
88
+
87
89
  def test_save_invalid
88
90
  assert_raises(ArgumentError) do
89
91
  @stylesheet.save("str")
90
92
  end
91
93
  end
92
-
94
+
93
95
  def test_print_invalid
94
96
  assert_raises(ArgumentError) do
95
97
  @stylesheet.print
@@ -0,0 +1,70 @@
1
+ # encoding: UTF-8
2
+ require 'test/unit'
3
+ require 'test_helper'
4
+
5
+ class TestExslt < Test::Unit::TestCase
6
+ def setup
7
+ @namespace = 'http://test.ext'
8
+ @name = 'ext-func'
9
+ @func = lambda { |xp| xp.to_a.join('|') }
10
+ end
11
+
12
+ def teardown
13
+ LibXSLT::XSLT.instance_variable_get(:@module_function_registry).clear
14
+ # or
15
+ #LibXSLT::XSLT.unregister_module_function(@namespace, @name)
16
+ end
17
+
18
+ def test_register
19
+ assert !LibXSLT::XSLT.registered_module_function?(@namespace, @name)
20
+ assert LibXSLT::XSLT.register_module_function(@namespace, @name, &@func)
21
+ assert LibXSLT::XSLT.registered_module_function?(@namespace, @name)
22
+ end
23
+
24
+ def test_register_no_block
25
+ assert_raises(ArgumentError, 'no block given') {
26
+ LibXSLT::XSLT.register_module_function(@namespace, @name)
27
+ }
28
+ end
29
+
30
+ def test_register_repeated
31
+ assert_equal @func, LibXSLT::XSLT.register_module_function(@namespace, @name, &@func)
32
+ assert_equal @func, LibXSLT::XSLT.register_module_function(@namespace, @name, &@func)
33
+ assert_not_equal @func, LibXSLT::XSLT.register_module_function(@namespace, @name) { |*| }
34
+ end
35
+
36
+ def test_unregister
37
+ test_register # need to register before we can unregister
38
+ assert LibXSLT::XSLT.unregister_module_function(@namespace, @name)
39
+ assert !LibXSLT::XSLT.registered_module_function?(@namespace, @name)
40
+ end
41
+
42
+ def test_unregister_no_register
43
+ assert !LibXSLT::XSLT.registered_module_function?(@namespace, @name)
44
+ assert !LibXSLT::XSLT.unregister_module_function(@namespace, @name)
45
+ end
46
+
47
+ def test_unregister_repeated
48
+ test_register # need to register before we can unregister
49
+ assert_equal @func, LibXSLT::XSLT.unregister_module_function(@namespace, @name)
50
+ assert_nil LibXSLT::XSLT.unregister_module_function(@namespace, @name)
51
+ end
52
+
53
+ def test_callback
54
+ doc = XML::Document.file(File.join(File.dirname(__FILE__), 'files/fuzface.xml'))
55
+ xpath = '/commentary/meta/author/*'
56
+ stylesheet = XSLT::Stylesheet.new(XML::Document.string(<<-EOT))
57
+ <?xml version="1.0" ?>
58
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ext="#{@namespace}">
59
+ <xsl:template match="/">
60
+ <xsl:element name="root">
61
+ <xsl:value-of select="ext:#{@name}(#{xpath})" />
62
+ </xsl:element>
63
+ </xsl:template>
64
+ </xsl:stylesheet>
65
+ EOT
66
+
67
+ assert LibXSLT::XSLT.register_module_function(@namespace, @name, &@func)
68
+ assert_equal @func[doc.find(xpath)], stylesheet.apply(doc).root.content
69
+ end
70
+ end
data/test/test_helper.rb CHANGED
@@ -1,12 +1,16 @@
1
- # encoding: UTF-8
2
-
3
- # To make testing/debugging easier, test within this source tree versus an installed gem
4
-
5
- dir = File.dirname(__FILE__)
6
- root = File.expand_path(File.join(dir, '..'))
7
- lib = File.expand_path(File.join(root, 'lib'))
8
-
9
- $LOAD_PATH << lib
10
-
11
- require 'xslt'
12
-
1
+ # encoding: UTF-8
2
+
3
+ # To make testing/debugging easier, test within this source tree versus an installed gem
4
+
5
+ dir = File.dirname(__FILE__)
6
+ root = File.expand_path(File.join(dir, '..'))
7
+ lib = File.expand_path(File.join(root, 'lib'))
8
+
9
+ $LOAD_PATH << lib
10
+
11
+ begin
12
+ require 'xslt'
13
+ rescue LoadError
14
+ require 'rubygems'
15
+ require 'xslt'
16
+ end
@@ -8,16 +8,16 @@ class TestStylesheet < Test::Unit::TestCase
8
8
  doc = XML::Document.file(filename)
9
9
  @stylesheet = XSLT::Stylesheet.new(doc)
10
10
  end
11
-
11
+
12
12
  def tear_down
13
13
  @stylesheet = nil
14
14
  end
15
-
15
+
16
16
  def doc
17
17
  filename = File.join(File.dirname(__FILE__), 'files/fuzface.xml')
18
18
  XML::Document.file(filename)
19
19
  end
20
-
20
+
21
21
  def test_class
22
22
  assert_instance_of(XSLT::Stylesheet, @stylesheet)
23
23
  end
@@ -25,7 +25,7 @@ class TestStylesheet < Test::Unit::TestCase
25
25
  def test_apply
26
26
  result = @stylesheet.apply(doc)
27
27
  assert_instance_of(XML::Document, result)
28
-
28
+
29
29
  paragraphs = result.find('//p')
30
30
  assert_equal(11, paragraphs.length)
31
31
  end
@@ -35,72 +35,72 @@ class TestStylesheet < Test::Unit::TestCase
35
35
  test_apply
36
36
  end
37
37
  end
38
-
38
+
39
39
  def test_params
40
40
  filename = File.join(File.dirname(__FILE__), 'files/params.xsl')
41
41
  sdoc = XML::Document.file(filename)
42
-
42
+
43
43
  filename = File.join(File.dirname(__FILE__), 'files/params.xml')
44
44
  stylesheet = XSLT::Stylesheet.new(sdoc)
45
45
  doc = XML::Document.file(filename)
46
-
46
+
47
47
  # Start with no params
48
48
  result = stylesheet.apply(doc)
49
49
  assert_equal('<article>failure</article>', result.root.to_s)
50
-
50
+
51
51
  # Now try with params as hash. /doc is evaluated
52
52
  # as an xpath expression
53
53
  result = stylesheet.apply(doc, 'bar' => "/doc")
54
54
  assert_equal('<article>abc</article>', result.root.to_s)
55
-
55
+
56
56
  # Now try with params as hash. Note the double quote
57
57
  # on success - we want to pass a literal string and
58
58
  # not an xpath expression.
59
59
  result = stylesheet.apply(doc, 'bar' => "'success'")
60
60
  assert_equal('<article>success</article>', result.root.to_s)
61
-
61
+
62
62
  # Now try with params as an array.
63
63
  result = stylesheet.apply(doc, ['bar', "'success'"])
64
64
  assert_equal('<article>success</article>', result.root.to_s)
65
-
65
+
66
66
  # Now try with invalid array.
67
67
  result = stylesheet.apply(doc, ['bar'])
68
68
  assert_equal('<article>failure</article>', result.root.to_s)
69
69
  end
70
-
70
+
71
71
  # -- Memory Tests ----
72
72
  def test_doc_ownership
73
- 10.times do
73
+ 10.times do
74
74
  filename = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
75
75
  sdoc = XML::Document.file(filename)
76
76
  GC.start
77
77
  assert_equal(173, sdoc.to_s.length)
78
78
  end
79
- end
80
-
79
+ end
80
+
81
81
  def test_stylesheet_ownership
82
- 10.times do
82
+ 10.times do
83
83
  filename = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
84
84
  sdoc = XML::Document.file(filename)
85
85
  stylesheet = XSLT::Stylesheet.new(sdoc)
86
-
86
+
87
87
  sdoc = nil
88
88
  GC.start
89
-
89
+
90
90
  rdoc = stylesheet.apply(doc)
91
91
  assert_equal(5963, rdoc.to_s.length)
92
92
  end
93
93
  end
94
-
94
+
95
95
  def test_result_ownership
96
- 10.times do
96
+ 10.times do
97
97
  filename = File.join(File.dirname(__FILE__), 'files/fuzface.xsl')
98
98
  sdoc = XML::Document.file(filename)
99
99
  stylesheet = XSLT::Stylesheet.new(sdoc)
100
-
100
+
101
101
  rdoc = stylesheet.apply(doc)
102
102
  rdoc = nil
103
103
  GC.start
104
104
  end
105
- end
105
+ end
106
106
  end
data/test/test_suite.rb CHANGED
@@ -7,4 +7,5 @@ Dir.chdir(dir)
7
7
 
8
8
  require 'test_libxslt'
9
9
  require 'test_stylesheet'
10
- require 'test_deprecated'
10
+ require 'test_deprecated'
11
+ require 'test_exslt'
metadata CHANGED
@@ -1,42 +1,39 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: libxslt-ruby
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.3
4
5
  prerelease:
5
- version: 1.0.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Charlie Savage
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-04-18 00:00:00 -06:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-08-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: libxml-ruby
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &22432512 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: 2.0.2
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.1.1
25
22
  type: :runtime
26
- version_requirements: *id001
27
- description: " The Libxslt-Ruby project provides Ruby language bindings for the GNOME \n XSLT C library. It is free software, released under the MIT License.\n"
23
+ prerelease: false
24
+ version_requirements: *22432512
25
+ description: ! " The Libxslt-Ruby project provides Ruby language bindings for the
26
+ GNOME\n XSLT C library. It is free software, released under the MIT License.\n"
28
27
  email: libxml-devel@rubyforge.org
29
28
  executables: []
30
-
31
- extensions:
29
+ extensions:
32
30
  - ext/libxslt/extconf.rb
33
31
  extra_rdoc_files: []
34
-
35
- files:
32
+ files:
36
33
  - CHANGES
37
34
  - LICENSE
38
35
  - Rakefile
39
- - README
36
+ - README.rdoc
40
37
  - libxslt-ruby.gemspec
41
38
  - setup.rb
42
39
  - lib/libxslt/deprecated.rb
@@ -44,9 +41,11 @@ files:
44
41
  - lib/xslt.rb
45
42
  - ext/libxslt/extconf.h
46
43
  - ext/libxslt/libxslt.h
44
+ - ext/libxslt/ruby_exslt.h
47
45
  - ext/libxslt/ruby_xslt_stylesheet.h
48
46
  - ext/libxslt/version.h
49
47
  - ext/libxslt/libxslt.c
48
+ - ext/libxslt/ruby_exslt.c
50
49
  - ext/libxslt/ruby_xslt_stylesheet.c
51
50
  - ext/vc/libxslt_ruby.sln
52
51
  - ext/vc/libxslt_ruby.vcxproj
@@ -57,40 +56,35 @@ files:
57
56
  - test/files/params.xsl
58
57
  - test/files/ramblings.xsl
59
58
  - test/test_deprecated.rb
59
+ - test/test_exslt.rb
60
60
  - test/test_helper.rb
61
61
  - test/test_libxslt.rb
62
62
  - test/test_stylesheet.rb
63
63
  - test/test_suite.rb
64
- - test/text.xml
65
64
  - ext/libxslt/extconf.rb
66
- has_rdoc: true
67
65
  homepage: http://libxslt.rubyforge.org/
68
66
  licenses: []
69
-
70
67
  post_install_message:
71
68
  rdoc_options: []
72
-
73
- require_paths:
69
+ require_paths:
74
70
  - lib
75
71
  - ext/libxslt
76
- required_ruby_version: !ruby/object:Gem::Requirement
72
+ required_ruby_version: !ruby/object:Gem::Requirement
77
73
  none: false
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: 1.8.4
82
- required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 1.8.6
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
79
  none: false
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- version: "0"
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
88
84
  requirements: []
89
-
90
85
  rubyforge_project: libxslt-ruby
91
- rubygems_version: 1.5.2
86
+ rubygems_version: 1.8.6.1
92
87
  signing_key:
93
88
  specification_version: 3
94
89
  summary: Ruby libxslt bindings
95
90
  test_files: []
96
-
data/test/text.xml DELETED
@@ -1,134 +0,0 @@
1
- <?xml version="1.0"?>
2
- <html>
3
- <head>
4
- <title>Ramblings - Fuzface... - The Internet's a big place and here's some proof...</title>
5
- </head>
6
- <body><h1>Fuzface...</h1><h3>The Internet's a big place and here's some proof...</h3>
7
- By: SeanChittenden<br/>
8
- Date: $Date$<br/>
9
- <p>
10
- I think it's a tragedy that I'm going to start off my new
11
- commentary by talking about facial hair and the Internet.
12
- Something about that just screams pathetic, but whatever: it's
13
- humor and that's life.
14
- </p>
15
-
16
- <p>
17
- I've been working at home for a while now, which has been great.
18
- I've been doing a lot of reading, good work, contributing to the
19
- FreeBSD project, and living life at my own pace. The problem?
20
- I don't have to interact with people, so I've let my appearance
21
- slide a bit, most notably I've gone two weeks without shaving
22
- and I have an awful hairy face.
23
- </p>
24
-
25
- <p>
26
- Nothing is worse than going for a hard run, coming back, and
27
- then bending your head down so that the hairs under your chin
28
- touch the hairs on your neck. This has to be one of the most
29
- disgusting/gross feelings I've experienced in a while. While
30
- today wasn't the first time I'd experienced such a slimy tangled
31
- mess, it is the first time I seriously considered shaving part
32
- of my face, but not all of it: I was considering a beard.
33
- </p>
34
-
35
- <p>
36
- Alright, so it's 5pm and I'm a sweaty post-run mess (it was 110
37
- degrees in direct sunlight according to my thermometer) and
38
- considering the possibility of growing a beard. Swifty nift?
39
- Maybe. This is something I'd never done before, let alone
40
- seriously consider. Normally I'd call my dad for such manly
41
- advice, but he is: a) normally in another state, and; b) in
42
- another country right now probably growing a beard (he's
43
- notorious for coming back from a trip with a gnarly unshaven
44
- face, sometimes he'll shape it into a decent beard). So, what's
45
- a tech-junkie to do? Hop on the Internet and see if Google's
46
- able to provide me with some inspiration.
47
- </p>
48
-
49
- <p>
50
- Sure enough, I typed in "pictures of bearded men" and I was able
51
- to find something: 14,000 pages of something to be exact.
52
- Anyway, so most of these were rinky dink sites, a few of them
53
- had some promise. One guy was trying to start a tradition where
54
- everyone grows a beard for New Years. As I was scrolling down
55
- the page trying to find some pictures, my mind was having the
56
- following thought process: <i>This seems like a dumb
57
- idea... New Years provides a perfectly good excuse to kiss some
58
- total stranger that you've had your eye on for the duration of a
59
- New Years party. Why waste such an opportunity with a crappy
60
- kiss?</i> And at about this point I said this page sucks,
61
- and flipped back to my search results.
62
- </p>
63
-
64
- <p>
65
- Since I'd never done this before, I didn't know what was
66
- fashionably correct in terms of where a guy should shave under
67
- his neck, or what the deal was... I knew there were lots of
68
- styles out there, just none that I could picture in my mind
69
- (save maybe Santa Claus and a few really gnarly beards that are
70
- long enough to be used as full-body covering. Oooh! And don't
71
- forget the Russian and Amish beards, those stand out in my mind
72
- too.). Google, being pretty comprehensive, and the Internet
73
- being huge, found the exact screwball page I was looking for:
74
- http://fuzface-gallery.tripod.com/
75
- </p>
76
-
77
- <p>
78
- I don't know if I really should be amazed at the sheer number of
79
- entries that Google returned, or that the Internet is big enough
80
- to house such random gallery of crap, but it is and it never
81
- ceases to amaze me... it's almost as amazing as the fact that
82
- some bozo spent the time to create such a page. Don't people
83
- have lives? Oh wait, I just visited his page... so back to my
84
- diatribe...
85
- </p>
86
-
87
- <p>
88
- There were tons of faces, lots of men, lots of hair, and plenty
89
- of styles to choose from. Page after page of faces and hair.
90
- Ugh. This wasn't getting any where and I was now entertaining
91
- the rebound though of shaving my head. Time to close my browser
92
- and hop in the shower: I reak. So what'd I do? Well, after
93
- looking through enough of those pictures, I decided a few
94
- things:
95
- </p>
96
-
97
- <p>
98
- <ol><li>
99
- I'm amazed that the Internet is big enough to foster the
100
- creation of such random and utterly useless information. Then
101
- again, I've been on and using the Net since '95, so this
102
- shouldn't surprise me that much.
103
- </li><li>
104
- There are a lot of guys out there with varying tastes in,
105
- shall we say, "facial hair styles," most of which I find
106
- pretty unappealing.
107
- </li><li>
108
- I don't like beards. After one clogged drain, two
109
- reapplications of shaving cream, and a few pases with the
110
- razor, it took me about 5-10 minutes to get a nice cleanly
111
- shaven face.
112
- </li><li>
113
- &lt;crass comment&gt;And - back me up here fellas, you can
114
- sympathize with this feeling after you get done looking
115
- through a magazine for a hair-cut style (ladies.. just smile
116
- and nod and pretend you care) - after looking at a few dozen
117
- pictures of men, I was able to safely reaffirm my desire for
118
- heterosexual relations (translation from Bill Clintonese: have
119
- sex with a woman). And with that thought in mind, I began to
120
- pine for the college porn collection of old. Mmmm,
121
- Playboy.&lt;/crass comment&gt;
122
- </li></ol>
123
- </p>
124
-
125
- <p>
126
- ::grin:: Until next time. -Sean
127
- </p>
128
-
129
- <p>
130
- P.S. To the guys out there with beards, this is just my
131
- opinion: take it with a grain of salt.
132
- </p>
133
- </body>
134
- </html>