Module: Nokogiri::XSLT
- Defined in:
- lib/nokogiri/xslt.rb,
lib/nokogiri/xslt/stylesheet.rb,
ext/nokogiri/nokogiri.c,
ext/nokogiri/xslt_stylesheet.c
Overview
See Nokogiri::XSLT::Stylesheet for creating and manipulating Stylesheet object.
Defined Under Namespace
Classes: Stylesheet
Class Method Summary collapse
-
.parse(string, modules = {}) ⇒ Object
Parse the stylesheet in
string
, register anymodules
. -
.quote_params(params) ⇒ Object
Quote parameters in
params
for stylesheet safety. -
.register(uri, custom_handler_class) ⇒ Object
Register a class that implements custom XSLT transformation functions.
Class Method Details
.parse(string, modules = {}) ⇒ Object
Parse the stylesheet in string
, register any modules
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/nokogiri/xslt.rb', line 24 def parse string, modules = {} modules.each do |url, klass| XSLT.register url, klass end if Nokogiri.jruby? Stylesheet.parse_stylesheet_doc(XML.parse(string), string) else Stylesheet.parse_stylesheet_doc(XML.parse(string)) end end |
.quote_params(params) ⇒ Object
Quote parameters in params
for stylesheet safety
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/nokogiri/xslt.rb', line 38 def quote_params params parray = (params.instance_of?(Hash) ? params.to_a.flatten : params).dup parray.each_with_index do |v,i| if i % 2 > 0 parray[i]= if v =~ /'/ "concat('#{ v.gsub(/'/, %q{', "'", '}) }')" else "'#{v}'"; end else parray[i] = v.to_s end end parray.flatten end |
.register(uri, custom_handler_class) ⇒ Object
Register a class that implements custom XSLT transformation functions.
242 243 244 245 246 247 248 249 250 |
# File 'ext/nokogiri/xslt_stylesheet.c', line 242
static VALUE registr(VALUE self, VALUE uri, VALUE obj)
{
VALUE modules = rb_iv_get(self, "@modules");
if(NIL_P(modules)) rb_raise(rb_eRuntimeError, "wtf! @modules isn't set");
rb_hash_aset(modules, uri, obj);
xsltRegisterExtModule((unsigned char *)StringValuePtr(uri), initFunc, shutdownFunc);
return self;
}
|