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.
- data/README +125 -136
- data/doc/classes/XSLT.html +215 -0
- data/doc/classes/XSLT/Stylesheet.html +244 -0
- data/doc/classes/XSLT/TransformContext.html +111 -0
- data/doc/created.rid +1 -0
- data/doc/files/CHANGES.html +168 -0
- data/doc/files/LICENSE.html +133 -0
- data/doc/files/README.html +269 -0
- data/doc/files/ext/libxslt/libxslt_c.html +101 -0
- data/doc/files/ext/libxslt/ruby_xslt_stylesheet_c.html +101 -0
- data/doc/files/ext/libxslt/ruby_xslt_transform_context_c.html +101 -0
- data/doc/files/lib/deprecated_rb.html +101 -0
- data/doc/files/lib/libxslt_rb.html +110 -0
- data/doc/fr_class_index.html +29 -0
- data/doc/fr_file_index.html +34 -0
- data/doc/fr_method_index.html +28 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/ext/libxslt/libxslt.c +21 -212
- data/ext/libxslt/libxslt.h +0 -17
- data/ext/libxslt/ruby_xslt_stylesheet.c +135 -173
- data/ext/libxslt/ruby_xslt_stylesheet.h +5 -10
- data/ext/libxslt/ruby_xslt_transform_context.c +5 -2
- data/ext/libxslt/version.h +2 -2
- data/lib/deprecated.rb +66 -0
- data/lib/libxslt.rb +1 -0
- data/lib/libxslt_ruby.so +0 -0
- data/mingw/libxslt_ruby.so +0 -0
- data/tests/files/commentary.dtd +34 -0
- data/tests/files/fuzface.xml +154 -0
- data/tests/files/fuzface.xsl +4 -0
- data/tests/files/params.xml +2 -0
- data/tests/files/params.xsl +11 -0
- data/tests/files/ramblings.xsl +46 -0
- data/tests/test_deprecated.rb +99 -0
- data/tests/test_libxslt.rb +21 -0
- data/tests/test_stylesheet.rb +64 -0
- data/tests/test_suite.rb +3 -0
- data/vc/libxslt_ruby.sln +1 -1
- data/vc/libxslt_ruby.vcproj +3 -3
- metadata +41 -10
- data/mingw/mingw.rake +0 -36
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            <?xml version="1.0" encoding="iso-8859-1"?>
         | 
| 3 | 
            +
            <!DOCTYPE html 
         | 
| 4 | 
            +
                 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         | 
| 5 | 
            +
                 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            <!--
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                Methods
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              -->
         | 
| 12 | 
            +
            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
         | 
| 13 | 
            +
            <head>
         | 
| 14 | 
            +
              <title>Methods</title>
         | 
| 15 | 
            +
              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
         | 
| 16 | 
            +
              <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
         | 
| 17 | 
            +
              <base target="docwin" />
         | 
| 18 | 
            +
            </head>
         | 
| 19 | 
            +
            <body>
         | 
| 20 | 
            +
            <div id="index">
         | 
| 21 | 
            +
              <h1 class="section-bar">Methods</h1>
         | 
| 22 | 
            +
              <div id="index-entries">
         | 
| 23 | 
            +
                <a href="classes/XSLT/Stylesheet.html#M000002">apply (XSLT::Stylesheet)</a><br />
         | 
| 24 | 
            +
                <a href="classes/XSLT/Stylesheet.html#M000001">new (XSLT::Stylesheet)</a><br />
         | 
| 25 | 
            +
              </div>
         | 
| 26 | 
            +
            </div>
         | 
| 27 | 
            +
            </body>
         | 
| 28 | 
            +
            </html>
         | 
    
        data/doc/index.html
    ADDED
    
    | @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            <?xml version="1.0" encoding="iso-8859-1"?>
         | 
| 2 | 
            +
            <!DOCTYPE html 
         | 
| 3 | 
            +
                 PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
         | 
| 4 | 
            +
                 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            <!--
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                libxml-xslt
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              -->
         | 
| 11 | 
            +
            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
         | 
| 12 | 
            +
            <head>
         | 
| 13 | 
            +
              <title>libxml-xslt</title>
         | 
| 14 | 
            +
              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
         | 
| 15 | 
            +
            </head>
         | 
| 16 | 
            +
            <frameset rows="20%, 80%">
         | 
| 17 | 
            +
                <frameset cols="25%,35%,45%">
         | 
| 18 | 
            +
                    <frame src="fr_file_index.html"   title="Files" name="Files" />
         | 
| 19 | 
            +
                    <frame src="fr_class_index.html"  name="Classes" />
         | 
| 20 | 
            +
                    <frame src="fr_method_index.html" name="Methods" />
         | 
| 21 | 
            +
                </frameset>
         | 
| 22 | 
            +
                <frame src="files/README.html" name="docwin" />
         | 
| 23 | 
            +
            </frameset>
         | 
| 24 | 
            +
            </html>
         | 
    
        data/doc/rdoc-style.css
    ADDED
    
    | @@ -0,0 +1,208 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            body {
         | 
| 3 | 
            +
                font-family: Verdana,Arial,Helvetica,sans-serif;
         | 
| 4 | 
            +
                font-size:   90%;
         | 
| 5 | 
            +
                margin: 0;
         | 
| 6 | 
            +
                margin-left: 40px;
         | 
| 7 | 
            +
                padding: 0;
         | 
| 8 | 
            +
                background: white;
         | 
| 9 | 
            +
            }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
         | 
| 12 | 
            +
            h1 { font-size: 150%; }
         | 
| 13 | 
            +
            h2,h3,h4 { margin-top: 1em; }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            a { background: #eef; color: #039; text-decoration: none; }
         | 
| 16 | 
            +
            a:hover { background: #039; color: #eef; }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            /* Override the base stylesheet's Anchor inside a table cell */
         | 
| 19 | 
            +
            td > a {
         | 
| 20 | 
            +
              background: transparent;
         | 
| 21 | 
            +
              color: #039;
         | 
| 22 | 
            +
              text-decoration: none;
         | 
| 23 | 
            +
            }
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            /* and inside a section title */
         | 
| 26 | 
            +
            .section-title > a {
         | 
| 27 | 
            +
              background: transparent;
         | 
| 28 | 
            +
              color: #eee;
         | 
| 29 | 
            +
              text-decoration: none;
         | 
| 30 | 
            +
            }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            /* === Structural elements =================================== */
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            div#index {
         | 
| 35 | 
            +
                margin: 0;
         | 
| 36 | 
            +
                margin-left: -40px;
         | 
| 37 | 
            +
                padding: 0;
         | 
| 38 | 
            +
                font-size: 90%;
         | 
| 39 | 
            +
            }
         | 
| 40 | 
            +
             | 
| 41 | 
            +
             | 
| 42 | 
            +
            div#index a {
         | 
| 43 | 
            +
                margin-left: 0.7em;
         | 
| 44 | 
            +
            }
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            div#index .section-bar {
         | 
| 47 | 
            +
               margin-left: 0px;
         | 
| 48 | 
            +
               padding-left: 0.7em;
         | 
| 49 | 
            +
               background: #ccc;
         | 
| 50 | 
            +
               font-size: small;
         | 
| 51 | 
            +
            }
         | 
| 52 | 
            +
             | 
| 53 | 
            +
             | 
| 54 | 
            +
            div#classHeader, div#fileHeader {
         | 
| 55 | 
            +
                width: auto;
         | 
| 56 | 
            +
                color: white;
         | 
| 57 | 
            +
                padding: 0.5em 1.5em 0.5em 1.5em;
         | 
| 58 | 
            +
                margin: 0;
         | 
| 59 | 
            +
                margin-left: -40px;
         | 
| 60 | 
            +
                border-bottom: 3px solid #006;
         | 
| 61 | 
            +
            }
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            div#classHeader a, div#fileHeader a {
         | 
| 64 | 
            +
                background: inherit;
         | 
| 65 | 
            +
                color: white;
         | 
| 66 | 
            +
            }
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            div#classHeader td, div#fileHeader td {
         | 
| 69 | 
            +
                background: inherit;
         | 
| 70 | 
            +
                color: white;
         | 
| 71 | 
            +
            }
         | 
| 72 | 
            +
             | 
| 73 | 
            +
             | 
| 74 | 
            +
            div#fileHeader {
         | 
| 75 | 
            +
                background: #057;
         | 
| 76 | 
            +
            }
         | 
| 77 | 
            +
             | 
| 78 | 
            +
            div#classHeader {
         | 
| 79 | 
            +
                background: #048;
         | 
| 80 | 
            +
            }
         | 
| 81 | 
            +
             | 
| 82 | 
            +
             | 
| 83 | 
            +
            .class-name-in-header {
         | 
| 84 | 
            +
              font-size:  180%;
         | 
| 85 | 
            +
              font-weight: bold;
         | 
| 86 | 
            +
            }
         | 
| 87 | 
            +
             | 
| 88 | 
            +
             | 
| 89 | 
            +
            div#bodyContent {
         | 
| 90 | 
            +
                padding: 0 1.5em 0 1.5em;
         | 
| 91 | 
            +
            }
         | 
| 92 | 
            +
             | 
| 93 | 
            +
            div#description {
         | 
| 94 | 
            +
                padding: 0.5em 1.5em;
         | 
| 95 | 
            +
                background: #efefef;
         | 
| 96 | 
            +
                border: 1px dotted #999;
         | 
| 97 | 
            +
            }
         | 
| 98 | 
            +
             | 
| 99 | 
            +
            div#description h1,h2,h3,h4,h5,h6 {
         | 
| 100 | 
            +
                color: #125;;
         | 
| 101 | 
            +
                background: transparent;
         | 
| 102 | 
            +
            }
         | 
| 103 | 
            +
             | 
| 104 | 
            +
            div#validator-badges {
         | 
| 105 | 
            +
                text-align: center;
         | 
| 106 | 
            +
            }
         | 
| 107 | 
            +
            div#validator-badges img { border: 0; }
         | 
| 108 | 
            +
             | 
| 109 | 
            +
            div#copyright {
         | 
| 110 | 
            +
                color: #333;
         | 
| 111 | 
            +
                background: #efefef;
         | 
| 112 | 
            +
                font: 0.75em sans-serif;
         | 
| 113 | 
            +
                margin-top: 5em;
         | 
| 114 | 
            +
                margin-bottom: 0;
         | 
| 115 | 
            +
                padding: 0.5em 2em;
         | 
| 116 | 
            +
            }
         | 
| 117 | 
            +
             | 
| 118 | 
            +
             | 
| 119 | 
            +
            /* === Classes =================================== */
         | 
| 120 | 
            +
             | 
| 121 | 
            +
            table.header-table {
         | 
| 122 | 
            +
                color: white;
         | 
| 123 | 
            +
                font-size: small;
         | 
| 124 | 
            +
            }
         | 
| 125 | 
            +
             | 
| 126 | 
            +
            .type-note {
         | 
| 127 | 
            +
                font-size: small;
         | 
| 128 | 
            +
                color: #DEDEDE;
         | 
| 129 | 
            +
            }
         | 
| 130 | 
            +
             | 
| 131 | 
            +
            .xxsection-bar {
         | 
| 132 | 
            +
                background: #eee;
         | 
| 133 | 
            +
                color: #333;
         | 
| 134 | 
            +
                padding: 3px;
         | 
| 135 | 
            +
            }
         | 
| 136 | 
            +
             | 
| 137 | 
            +
            .section-bar {
         | 
| 138 | 
            +
               color: #333;
         | 
| 139 | 
            +
               border-bottom: 1px solid #999;
         | 
| 140 | 
            +
                margin-left: -20px;
         | 
| 141 | 
            +
            }
         | 
| 142 | 
            +
             | 
| 143 | 
            +
             | 
| 144 | 
            +
            .section-title {
         | 
| 145 | 
            +
                background: #79a;
         | 
| 146 | 
            +
                color: #eee;
         | 
| 147 | 
            +
                padding: 3px;
         | 
| 148 | 
            +
                margin-top: 2em;
         | 
| 149 | 
            +
                margin-left: -30px;
         | 
| 150 | 
            +
                border: 1px solid #999;
         | 
| 151 | 
            +
            }
         | 
| 152 | 
            +
             | 
| 153 | 
            +
            .top-aligned-row {  vertical-align: top }
         | 
| 154 | 
            +
            .bottom-aligned-row { vertical-align: bottom }
         | 
| 155 | 
            +
             | 
| 156 | 
            +
            /* --- Context section classes ----------------------- */
         | 
| 157 | 
            +
             | 
| 158 | 
            +
            .context-row { }
         | 
| 159 | 
            +
            .context-item-name { font-family: monospace; font-weight: bold; color: black; }
         | 
| 160 | 
            +
            .context-item-value { font-size: small; color: #448; }
         | 
| 161 | 
            +
            .context-item-desc { color: #333; padding-left: 2em; }
         | 
| 162 | 
            +
             | 
| 163 | 
            +
            /* --- Method classes -------------------------- */
         | 
| 164 | 
            +
            .method-detail {
         | 
| 165 | 
            +
                background: #efefef;
         | 
| 166 | 
            +
                padding: 0;
         | 
| 167 | 
            +
                margin-top: 0.5em;
         | 
| 168 | 
            +
                margin-bottom: 1em;
         | 
| 169 | 
            +
                border: 1px dotted #ccc;
         | 
| 170 | 
            +
            }
         | 
| 171 | 
            +
            .method-heading {
         | 
| 172 | 
            +
              color: black;
         | 
| 173 | 
            +
              background: #ccc;
         | 
| 174 | 
            +
              border-bottom: 1px solid #666;
         | 
| 175 | 
            +
              padding: 0.2em 0.5em 0 0.5em;
         | 
| 176 | 
            +
            }
         | 
| 177 | 
            +
            .method-signature { color: black; background: inherit; }
         | 
| 178 | 
            +
            .method-name { font-weight: bold; }
         | 
| 179 | 
            +
            .method-args { font-style: italic; }
         | 
| 180 | 
            +
            .method-description { padding: 0 0.5em 0 0.5em; }
         | 
| 181 | 
            +
             | 
| 182 | 
            +
            /* --- Source code sections -------------------- */
         | 
| 183 | 
            +
             | 
| 184 | 
            +
            a.source-toggle { font-size: 90%; }
         | 
| 185 | 
            +
            div.method-source-code {
         | 
| 186 | 
            +
                background: #262626;
         | 
| 187 | 
            +
                color: #ffdead;
         | 
| 188 | 
            +
                margin: 1em;
         | 
| 189 | 
            +
                padding: 0.5em;
         | 
| 190 | 
            +
                border: 1px dashed #999;
         | 
| 191 | 
            +
                overflow: hidden;
         | 
| 192 | 
            +
            }
         | 
| 193 | 
            +
             | 
| 194 | 
            +
            div.method-source-code pre { color: #ffdead; overflow: hidden; }
         | 
| 195 | 
            +
             | 
| 196 | 
            +
            /* --- Ruby keyword styles --------------------- */
         | 
| 197 | 
            +
             | 
| 198 | 
            +
            .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
         | 
| 199 | 
            +
             | 
| 200 | 
            +
            .ruby-constant  { color: #7fffd4; background: transparent; }
         | 
| 201 | 
            +
            .ruby-keyword { color: #00ffff; background: transparent; }
         | 
| 202 | 
            +
            .ruby-ivar    { color: #eedd82; background: transparent; }
         | 
| 203 | 
            +
            .ruby-operator  { color: #00ffee; background: transparent; }
         | 
| 204 | 
            +
            .ruby-identifier { color: #ffdead; background: transparent; }
         | 
| 205 | 
            +
            .ruby-node    { color: #ffa07a; background: transparent; }
         | 
| 206 | 
            +
            .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
         | 
| 207 | 
            +
            .ruby-regexp  { color: #ffa07a; background: transparent; }
         | 
| 208 | 
            +
            .ruby-value   { color: #7fffd4; background: transparent; }
         | 
    
        data/ext/libxslt/libxslt.c
    CHANGED
    
    | @@ -5,205 +5,30 @@ | |
| 5 5 | 
             
            #include "libxslt.h"
         | 
| 6 6 | 
             
            #include "libxml/xmlversion.h"
         | 
| 7 7 |  | 
| 8 | 
            -
            VALUE mXML;
         | 
| 9 | 
            -
            VALUE cXMLDocument;
         | 
| 10 | 
            -
             | 
| 11 8 | 
             
            VALUE cXSLT;
         | 
| 12 9 | 
             
            VALUE eXMLXSLTStylesheetRequireParsedDoc;
         | 
| 13 10 |  | 
| 14 | 
            -
            /* | 
| 15 | 
            -
             * | 
| 16 | 
            -
             * 
         | 
| 17 | 
            -
             *  | 
| 18 | 
            -
              | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
               | 
| 23 | 
            -
               | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             * | 
| 28 | 
            -
             * | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
              ruby_xml_document_t *rxd;
         | 
| 35 | 
            -
              ruby_xslt_transform_context *rxtc;
         | 
| 36 | 
            -
             | 
| 37 | 
            -
              if (rb_obj_is_kind_of(xml_doc_obj, cXMLDocument) == Qfalse)
         | 
| 38 | 
            -
                rb_raise(rb_eTypeError, "Invalid argument: must be of type XML::Document");
         | 
| 39 | 
            -
             | 
| 40 | 
            -
              Data_Get_Struct(self, ruby_xslt, rxslt);
         | 
| 41 | 
            -
              rxslt->xml_doc_obj = xml_doc_obj;
         | 
| 42 | 
            -
             | 
| 43 | 
            -
              Data_Get_Struct(xml_doc_obj, ruby_xml_document_t, rxd);
         | 
| 44 | 
            -
              if (rxd->doc == NULL)
         | 
| 45 | 
            -
                  return(Qnil);
         | 
| 46 | 
            -
             | 
| 47 | 
            -
              rxslt->ctxt = ruby_xslt_transform_context_new3(self);
         | 
| 48 | 
            -
              Data_Get_Struct(rxslt->ctxt, ruby_xslt_transform_context, rxtc);
         | 
| 11 | 
            +
            /*
         | 
| 12 | 
            +
             * Document-class: XSLT
         | 
| 13 | 
            +
             * 
         | 
| 14 | 
            +
             * The libxslt gem provides Ruby language bindings for GNOME's Libxslt
         | 
| 15 | 
            +
             * toolkit. It is free software, released under the MIT License.
         | 
| 16 | 
            +
             *
         | 
| 17 | 
            +
             * Using the bindings is straightforward:
         | 
| 18 | 
            +
             *
         | 
| 19 | 
            +
             *  stylesheet_doc = XML::Document.file('stylesheet_file')
         | 
| 20 | 
            +
             *  stylesheet = XSLT::Stylesheet.new(stylesheet_doc)
         | 
| 21 | 
            +
             *
         | 
| 22 | 
            +
             *  xml_doc = XML::Document.file('xml_file')
         | 
| 23 | 
            +
             *  result = stylesheet.apply(xml_doc)
         | 
| 24 | 
            +
             * 
         | 
| 25 | 
            +
             *
         | 
| 26 | 
            +
            */
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            #ifdef RDOC_NEVER_DEFINED
         | 
| 29 | 
            +
              cXSLT = rb_define_module("XSLT");
         | 
| 30 | 
            +
            #endif
         | 
| 49 31 |  | 
| 50 | 
            -
              if (rxslt->xsp == NULL || rxd->doc == NULL)
         | 
| 51 | 
            -
                return(Qnil);
         | 
| 52 | 
            -
             | 
| 53 | 
            -
              rxtc->ctxt = xsltNewTransformContext(rxslt->xsp, rxd->doc) ;
         | 
| 54 | 
            -
             | 
| 55 | 
            -
              return(rxslt->xml_doc_obj);
         | 
| 56 | 
            -
            }
         | 
| 57 | 
            -
             | 
| 58 | 
            -
            /* call-seq:
         | 
| 59 | 
            -
             *    xslt.filename => "filename.xsl"
         | 
| 60 | 
            -
             * 
         | 
| 61 | 
            -
             * Obtain the stylesheet filename.
         | 
| 62 | 
            -
             */
         | 
| 63 | 
            -
            VALUE
         | 
| 64 | 
            -
            ruby_xslt_filename_get(VALUE self) {
         | 
| 65 | 
            -
              ruby_xslt *rxslt;
         | 
| 66 | 
            -
              Data_Get_Struct(self, ruby_xslt, rxslt);
         | 
| 67 | 
            -
             | 
| 68 | 
            -
              if (rxslt->data_type != RUBY_LIBXSLT_SRC_TYPE_FILE)
         | 
| 69 | 
            -
                return(Qnil);
         | 
| 70 | 
            -
              else
         | 
| 71 | 
            -
                return((VALUE)rxslt->data);
         | 
| 72 | 
            -
            }
         | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
            /* call-seq:
         | 
| 76 | 
            -
             *    xslt.filename = "filename.xsl"
         | 
| 77 | 
            -
             * 
         | 
| 78 | 
            -
             * Set the stylesheet filename.
         | 
| 79 | 
            -
             */
         | 
| 80 | 
            -
            VALUE
         | 
| 81 | 
            -
            ruby_xslt_filename_set(VALUE self, VALUE filename) {
         | 
| 82 | 
            -
              ruby_xslt *rxslt;
         | 
| 83 | 
            -
              Check_Type(filename, T_STRING);
         | 
| 84 | 
            -
              Data_Get_Struct(self, ruby_xslt, rxslt);
         | 
| 85 | 
            -
             | 
| 86 | 
            -
              if (rxslt->data_type != RUBY_LIBXSLT_SRC_TYPE_NULL)
         | 
| 87 | 
            -
                return(Qnil);
         | 
| 88 | 
            -
             | 
| 89 | 
            -
              rxslt->data_type = RUBY_LIBXSLT_SRC_TYPE_FILE;
         | 
| 90 | 
            -
              rxslt->data = (void *)filename;
         | 
| 91 | 
            -
              return(filename);
         | 
| 92 | 
            -
            }
         | 
| 93 | 
            -
             | 
| 94 | 
            -
             | 
| 95 | 
            -
            void
         | 
| 96 | 
            -
            ruby_xslt_free(ruby_xslt *rxslt) {
         | 
| 97 | 
            -
              if (rxslt != NULL)
         | 
| 98 | 
            -
                ruby_xfree(rxslt);
         | 
| 99 | 
            -
            }
         | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
            void
         | 
| 103 | 
            -
            ruby_xslt_mark(ruby_xslt *rxslt) {
         | 
| 104 | 
            -
              if (rxslt == NULL) return;
         | 
| 105 | 
            -
              if (!NIL_P(rxslt->ctxt))        rb_gc_mark(rxslt->ctxt);
         | 
| 106 | 
            -
              if (!NIL_P(rxslt->str))         rb_gc_mark(rxslt->str);
         | 
| 107 | 
            -
              if (!NIL_P(rxslt->xml_doc_obj)) rb_gc_mark(rxslt->xml_doc_obj);
         | 
| 108 | 
            -
             | 
| 109 | 
            -
              switch(rxslt->data_type) {
         | 
| 110 | 
            -
              case RUBY_LIBXSLT_SRC_TYPE_FILE:
         | 
| 111 | 
            -
                if (rxslt->data != NULL)
         | 
| 112 | 
            -
                  rb_gc_mark((VALUE)rxslt->data);
         | 
| 113 | 
            -
                break;
         | 
| 114 | 
            -
              }
         | 
| 115 | 
            -
            }
         | 
| 116 | 
            -
             | 
| 117 | 
            -
             | 
| 118 | 
            -
            /* call-seq:
         | 
| 119 | 
            -
             *    XML::XSLT.new => #<XML::XSLT...>
         | 
| 120 | 
            -
             * 
         | 
| 121 | 
            -
             * Create a new XSLT instance. You will need to specify
         | 
| 122 | 
            -
             * a filename and document for the instance after it is
         | 
| 123 | 
            -
             * created.
         | 
| 124 | 
            -
             */
         | 
| 125 | 
            -
            VALUE
         | 
| 126 | 
            -
            ruby_xslt_new(VALUE class) {
         | 
| 127 | 
            -
              ruby_xslt *rxslt = ALLOC(ruby_xslt);
         | 
| 128 | 
            -
             | 
| 129 | 
            -
              if (rxslt == NULL)
         | 
| 130 | 
            -
                rb_raise(rb_eNoMemError, "No memory left for XSLT struct");
         | 
| 131 | 
            -
             | 
| 132 | 
            -
              rxslt->ctxt = Qnil;
         | 
| 133 | 
            -
              rxslt->data = NULL;
         | 
| 134 | 
            -
              rxslt->data_type = RUBY_LIBXSLT_SRC_TYPE_NULL;
         | 
| 135 | 
            -
              rxslt->str = Qnil;
         | 
| 136 | 
            -
              rxslt->xml_doc_obj = Qnil;
         | 
| 137 | 
            -
              rxslt->xsp = NULL;
         | 
| 138 | 
            -
             | 
| 139 | 
            -
              return(Data_Wrap_Struct(class, ruby_xslt_mark, ruby_xslt_free, rxslt));
         | 
| 140 | 
            -
            }
         | 
| 141 | 
            -
             | 
| 142 | 
            -
            /* call-seq:
         | 
| 143 | 
            -
             *    XML::XSLT.file("filename.xsl") => #<XML::XSLT...>
         | 
| 144 | 
            -
             * 
         | 
| 145 | 
            -
             * Create a new XSLT instance with the supplied stylesheet filename.
         | 
| 146 | 
            -
             */
         | 
| 147 | 
            -
            VALUE
         | 
| 148 | 
            -
            ruby_xslt_new_file(VALUE class, VALUE filename) {
         | 
| 149 | 
            -
              VALUE xslt;
         | 
| 150 | 
            -
             | 
| 151 | 
            -
              xslt = ruby_xslt_new(class);
         | 
| 152 | 
            -
              ruby_xslt_filename_set(xslt, filename);
         | 
| 153 | 
            -
              return(xslt);
         | 
| 154 | 
            -
            }
         | 
| 155 | 
            -
             | 
| 156 | 
            -
            /* call-seq:
         | 
| 157 | 
            -
             *    xslt.parse => #<XML::XSLT::Stylesheet...>
         | 
| 158 | 
            -
             * 
         | 
| 159 | 
            -
             * Parse the xsl source (specified by +filename+) and create
         | 
| 160 | 
            -
             * a +Stylesheet+ instance that will apply it against the
         | 
| 161 | 
            -
             * source document. If a parsed XML::Document isn't associated
         | 
| 162 | 
            -
             * with this +XSLT+ instance (via #doc=) then a 
         | 
| 163 | 
            -
             * Stylesheet::RequireParsedDoc exception is raised.
         | 
| 164 | 
            -
             */
         | 
| 165 | 
            -
            VALUE
         | 
| 166 | 
            -
            ruby_xslt_parse(VALUE self) {
         | 
| 167 | 
            -
              ruby_xml_document_t *rxd;
         | 
| 168 | 
            -
              ruby_xslt *rxslt;
         | 
| 169 | 
            -
              ruby_xslt_stylesheet *xss;
         | 
| 170 | 
            -
              VALUE xssobj;
         | 
| 171 | 
            -
              xsltStylesheetPtr sheet;
         | 
| 172 | 
            -
             | 
| 173 | 
            -
              Data_Get_Struct(self, ruby_xslt, rxslt);
         | 
| 174 | 
            -
             | 
| 175 | 
            -
              if (rxslt->data_type == RUBY_LIBXSLT_SRC_TYPE_FILE) {
         | 
| 176 | 
            -
                /*xssobj = ruby_xslt_stylesheet_new(cXSLTStylesheet,
         | 
| 177 | 
            -
                          xsltParseStylesheetFile((const xmlChar *)
         | 
| 178 | 
            -
                                STR2CSTR(rxslt->data)));*/
         | 
| 179 | 
            -
              sheet = xsltParseStylesheetFile((const xmlChar *) STR2CSTR(rxslt->data));
         | 
| 180 | 
            -
             | 
| 181 | 
            -
                if (sheet) {
         | 
| 182 | 
            -
                    xssobj = ruby_xslt_stylesheet_new(cXSLTStylesheet, sheet);
         | 
| 183 | 
            -
                    Data_Get_Struct(xssobj, ruby_xslt_stylesheet, xss);
         | 
| 184 | 
            -
                    xss->data = (void *)rb_obj_dup((VALUE)rxslt->data);
         | 
| 185 | 
            -
                    xss->xml_doc_obj = rxslt->xml_doc_obj;
         | 
| 186 | 
            -
                } else
         | 
| 187 | 
            -
                    xssobj = Qnil;
         | 
| 188 | 
            -
             | 
| 189 | 
            -
              } else if (rxslt->xml_doc_obj != Qnil) {
         | 
| 190 | 
            -
                Data_Get_Struct(rxslt->xml_doc_obj, ruby_xml_document_t, rxd);
         | 
| 191 | 
            -
                /*xssobj = ruby_xslt_stylesheet_new(cXSLTStylesheet,
         | 
| 192 | 
            -
                          xsltParseStylesheetDoc(rxd->doc));*/
         | 
| 193 | 
            -
                sheet = xsltParseStylesheetDoc(rxd->doc);
         | 
| 194 | 
            -
                if (sheet) {
         | 
| 195 | 
            -
                    xssobj = ruby_xslt_stylesheet_new(cXSLTStylesheet,sheet);
         | 
| 196 | 
            -
                    Data_Get_Struct(xssobj, ruby_xslt_stylesheet, xss);
         | 
| 197 | 
            -
                    xss->xml_doc_obj = rxslt->xml_doc_obj;
         | 
| 198 | 
            -
                } else
         | 
| 199 | 
            -
                    xssobj = Qnil;
         | 
| 200 | 
            -
             | 
| 201 | 
            -
              } else {
         | 
| 202 | 
            -
                xssobj = Qnil;
         | 
| 203 | 
            -
              }
         | 
| 204 | 
            -
             | 
| 205 | 
            -
              return(xssobj);
         | 
| 206 | 
            -
            }
         | 
| 207 32 |  | 
| 208 33 | 
             
            #if defined(_WIN32)
         | 
| 209 34 | 
             
            __declspec(dllexport) 
         | 
| @@ -213,11 +38,7 @@ void | |
| 213 38 | 
             
            Init_libxslt_ruby(void) {
         | 
| 214 39 | 
             
              LIBXML_TEST_VERSION;
         | 
| 215 40 |  | 
| 216 | 
            -
               | 
| 217 | 
            -
              mXML = rb_const_get(rb_cObject, rb_intern("XML"));
         | 
| 218 | 
            -
              cXMLDocument = rb_const_get(mXML, rb_intern("Document"));
         | 
| 219 | 
            -
             | 
| 220 | 
            -
              cXSLT = rb_define_class_under(mXML, "XSLT", rb_cObject);
         | 
| 41 | 
            +
              cXSLT = rb_define_module("XSLT");
         | 
| 221 42 |  | 
| 222 43 | 
             
              rb_define_const(cXSLT, "MAX_DEPTH", INT2NUM(xsltMaxDepth));
         | 
| 223 44 | 
             
              rb_define_const(cXSLT, "MAX_SORT", INT2NUM(XSLT_MAX_SORT));
         | 
| @@ -236,16 +57,4 @@ Init_libxslt_ruby(void) { | |
| 236 57 |  | 
| 237 58 | 
             
              ruby_init_xslt_stylesheet();
         | 
| 238 59 | 
             
              ruby_init_xslt_transform_context();
         | 
| 239 | 
            -
             | 
| 240 | 
            -
             | 
| 241 | 
            -
              rb_define_singleton_method(cXSLT, "file", ruby_xslt_new_file, 1);
         | 
| 242 | 
            -
              rb_define_singleton_method(cXSLT, "new", ruby_xslt_new, 0);
         | 
| 243 | 
            -
             | 
| 244 | 
            -
              rb_define_method(cXSLT, "doc", ruby_xslt_doc_get, 0);
         | 
| 245 | 
            -
              rb_define_method(cXSLT, "doc=", ruby_xslt_doc_set, 1);
         | 
| 246 | 
            -
              rb_define_method(cXSLT, "filename", ruby_xslt_filename_get, 0);
         | 
| 247 | 
            -
              rb_define_method(cXSLT, "filename=", ruby_xslt_filename_set, 1);
         | 
| 248 | 
            -
              rb_define_method(cXSLT, "parse", ruby_xslt_parse, 0);
         | 
| 249 | 
            -
             | 
| 250 | 
            -
              //exsltRegisterAll();
         | 
| 251 60 | 
             
            }
         |