Module: HtmlNamespacing

Defined in:
lib/html_namespacing.rb,
lib/html_namespacing/plugin.rb,
lib/html_namespacing/plugin/sass.rb,
lib/html_namespacing/plugin/rails.rb,
ext/html_namespacing/html_namespacing_ext.c

Defined Under Namespace

Modules: Plugin

Class Method Summary collapse

Class Method Details

.add_namespace_to_html(html, ns) ⇒ String

Returns new HTML string based on html with the HTML class ns to root elements.

If html is nil, returns nil.

If ns is nil, returns html.

Returns:

  • (String)


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'ext/html_namespacing/html_namespacing_ext.c', line 29

VALUE
html_namespacing_add_namespace_to_html(
        VALUE obj,
        VALUE html,
        VALUE ns)
{
    /*
     * It's almost tempting to manually allocate the RString object to save
     * ourselves the stupid extra copy. (add_namespace_to_html_with_length()
     * implicitly copies the string, and here we are copying it again because
     * Ruby can't convert from a char* to an RString? How lame....)
     *
     * But for now, let's just do the extra copy (implicit in rb_str_new2) and
     * be done with it.
     */

    const char *html_ptr;
    size_t html_len;
    const char *ns_ptr;
    char *ret_ptr;
    size_t ret_len;
    int rv;
    VALUE ret;

    if (TYPE(html) == T_NIL) {
      return Qnil;
    }
    Check_Type(html, T_STRING);

    if (TYPE(ns) == T_NIL) {
      return html;
    }

    Check_Type(ns, T_STRING);

    html_ptr = RSTRING_PTR(html);
    html_len = RSTRING_LEN(html);

    ns_ptr = RSTRING_PTR(ns);

    rv = add_namespace_to_html_with_length_and_allocation_strategy(
            html_ptr,
            html_len,
            ns_ptr,
            &ret_ptr,
            &ret_len,
            ALLOCATION_STRATEGY);
    if (rv == EINVAL) {
        rb_raise(rb_eArgError, "Badly-formed HTML: %s", html_ptr);
    }
    if (rv != 0) {
        rb_raise(rb_eRuntimeError, "Unknown error in add_namespace_to_html");
    }

    ret = rb_str_new(ret_ptr, ret_len);
    ruby_xfree(ret_ptr);

    return ret;
}

.optionsObject



6
7
8
# File 'lib/html_namespacing.rb', line 6

def self.options
  @options ||= {}
end