Class: Teius::Stylesheet
- Inherits:
-
Object
- Object
- Teius::Stylesheet
- Defined in:
- lib/teius.rb,
ext/teius.c
Class Method Summary collapse
Instance Method Summary collapse
- #apply(rDocument) ⇒ Object
- #output_method ⇒ Object
- #save_to_file(rResult, rFilename) ⇒ Object
- #save_to_string(rResult) ⇒ Object
-
#transform(doc, filename = nil) ⇒ Object
If no filename is provided, will return the result as a String.
Class Method Details
.parse_file(rFilename) ⇒ Object
290 291 292 293 294 295 296 297 298 299 300 301 302 |
# File 'ext/teius.c', line 290 static VALUE stylesheet_parse_file(VALUE self, VALUE rFilename) { xsltStylesheetPtr xsl = xsltParseStylesheetFile((xmlChar *)StringValuePtr(rFilename)); if (xsl == NULL) { xmlErrorPtr err = xmlGetLastError(); rb_raise(cParseError, "could not parse file %s: %s", StringValuePtr(rFilename), err->); } /* Load new document */ VALUE rStylesheet = Data_Wrap_Struct(self, 0, stylesheet_free, xsl); return rStylesheet; } |
Instance Method Details
#apply(rDocument) ⇒ Object
316 317 318 319 320 321 322 323 324 325 326 327 |
# File 'ext/teius.c', line 316 static VALUE stylesheet_apply(VALUE self, VALUE rDocument) { xsltStylesheetPtr stylesheet = NULL; xmlDocPtr doc = NULL, res = NULL; Data_Get_Struct(self, xsltStylesheet, stylesheet); Data_Get_Struct(rDocument, xmlDoc, doc); res = xsltApplyStylesheet(stylesheet, doc, NULL); VALUE rDoc = Data_Wrap_Struct(cDocument, 0, doc_free, res); return rDoc; } |
#output_method ⇒ Object
304 305 306 307 308 309 310 311 312 313 314 |
# File 'ext/teius.c', line 304 static VALUE stylesheet_output_method(VALUE self) { xsltStylesheetPtr stylesheet = NULL; Data_Get_Struct(self, xsltStylesheet, stylesheet); if (stylesheet->method == NULL) { return Qnil; } else { VALUE rStr = rb_str_new2((char *)stylesheet->method); return rStr; } } |
#save_to_file(rResult, rFilename) ⇒ Object
329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 |
# File 'ext/teius.c', line 329 static VALUE stylesheet_save_to_file(VALUE self, VALUE rResult, VALUE rFilename) { xsltStylesheetPtr stylesheet = NULL; xmlDocPtr result = NULL; int st; Data_Get_Struct(self, xsltStylesheet, stylesheet); Data_Get_Struct(rResult, xmlDoc, result); st = xsltSaveResultToFilename(StringValuePtr(rFilename), result, stylesheet, 0); if (st == -1) { xmlErrorPtr err = xmlGetLastError(); rb_raise(rb_eIOError, "could not save stylesheet result file %s: %s", StringValuePtr(rFilename), err->); } return Qnil; } |
#save_to_string(rResult) ⇒ Object
347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 |
# File 'ext/teius.c', line 347 static VALUE stylesheet_save_to_string(VALUE self, VALUE rResult) { xsltStylesheetPtr stylesheet = NULL; xmlDocPtr result = NULL; int st; xmlChar *mem; int size; Data_Get_Struct(self, xsltStylesheet, stylesheet); Data_Get_Struct(rResult, xmlDoc, result); st = xsltSaveResultToString(&mem, &size, result, stylesheet); if (st == -1) { xmlErrorPtr err = xmlGetLastError(); rb_raise(rb_eStandardError, "could not save stylesheet result to string: %s", err->); } VALUE rStr = rb_str_new2((char *)mem); xmlFree(mem); return rStr; } |
#transform(doc, filename = nil) ⇒ Object
If no filename is provided, will return the result as a String
59 60 61 62 63 64 65 66 67 |
# File 'lib/teius.rb', line 59 def transform(doc, filename = nil) result = apply doc if filename out = save_to_file result, filename # returns nil else out = save_to_string result end out end |