Class: Nokogiri::HTML::ElementDescription

Inherits:
Object
  • Object
show all
Defined in:
lib/nokogiri/html/element_description.rb,
lib/nokogiri/html/element_description_defaults.rb,
ext/nokogiri/html_element_description.c

Defined Under Namespace

Classes: Desc

Constant Summary collapse

DefaultDescriptions =

This is filled in down below.

Hash.new()
FONTSTYLE =

Attributes defined and categorized

["tt", "i", "b", "u", "s", "strike", "big", "small"]
PHRASE =
['em', 'strong', 'dfn', 'code', 'samp',
'kbd', 'var', 'cite', 'abbr', 'acronym']
SPECIAL =
['a', 'img', 'applet', 'embed', 'object', 'font','basefont',
'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo',
'iframe']
PCDATA =
[]
HEADING =
['h1', 'h2', 'h3', 'h4', 'h5', 'h6']
LIST =
['ul', 'ol', 'dir', 'menu']
FORMCTRL =
['input', 'select', 'textarea', 'label', 'button']
BLOCK =
[HEADING, LIST, 'pre', 'p', 'dl', 'div', 'center', 'noscript',
'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table',
'fieldset', 'address']
INLINE =
[PCDATA, FONTSTYLE, PHRASE, SPECIAL, FORMCTRL]
FLOW =
[BLOCK, INLINE]
MODIFIER =
[]
EMPTY =
[]
HTML_FLOW =
FLOW
HTML_INLINE =
INLINE
HTML_PCDATA =
PCDATA
HTML_CDATA =
HTML_PCDATA
COREATTRS =
['id', 'class', 'style', 'title']
I18N =
['lang', 'dir']
EVENTS =
['onclick', 'ondblclick', 'onmousedown', 'onmouseup',
'onmouseover', 'onmouseout', 'onkeypress', 'onkeydown',
'onkeyup']
ATTRS =
[COREATTRS, I18N,EVENTS]
CELLHALIGN =
['align', 'char', 'charoff']
CELLVALIGN =
['valign']
HTML_ATTRS =
ATTRS
CORE_I18N_ATTRS =
[COREATTRS, I18N]
CORE_ATTRS =
COREATTRS
I18N_ATTRS =
I18N
A_ATTRS =
[ATTRS, 'charset', 'type', 'name',
'href', 'hreflang', 'rel', 'rev', 'accesskey', 'shape',
'coords', 'tabindex', 'onfocus', 'onblur']
TARGET_ATTR =
['target']
ROWS_COLS_ATTR =
['rows', 'cols']
ALT_ATTR =
['alt']
SRC_ALT_ATTRS =
['src', 'alt']
HREF_ATTRS =
['href']
CLEAR_ATTRS =
['clear']
INLINE_P =
[INLINE, 'p']
FLOW_PARAM =
[FLOW, 'param']
APPLET_ATTRS =
[COREATTRS , 'codebase',
'archive', 'alt', 'name', 'height', 'width', 'align',
'hspace', 'vspace']
AREA_ATTRS =
['shape', 'coords', 'href', 'nohref',
'tabindex', 'accesskey', 'onfocus', 'onblur']
BASEFONT_ATTRS =
['id', 'size', 'color', 'face']
QUOTE_ATTRS =
[ATTRS, 'cite']
BODY_CONTENTS =
[FLOW, 'ins', 'del']
BODY_ATTRS =
[ATTRS, 'onload', 'onunload']
BODY_DEPR =
['background', 'bgcolor', 'text',
'link', 'vlink', 'alink']
BUTTON_ATTRS =
[ATTRS, 'name', 'value', 'type',
'disabled', 'tabindex', 'accesskey', 'onfocus', 'onblur']
COL_ATTRS =
[ATTRS, 'span', 'width', CELLHALIGN, CELLVALIGN]
COL_ELT =
['col']
EDIT_ATTRS =
[ATTRS, 'datetime', 'cite']
COMPACT_ATTRS =
[ATTRS, 'compact']
DL_CONTENTS =
['dt', 'dd']
COMPACT_ATTR =
['compact']
LABEL_ATTR =
['label']
FIELDSET_CONTENTS =
[FLOW, 'legend' ]
FONT_ATTRS =
[COREATTRS, I18N, 'size', 'color', 'face' ]
FORM_CONTENTS =
[HEADING, LIST, INLINE, 'pre', 'p', 'div', 'center',
'noscript', 'noframes', 'blockquote', 'isindex', 'hr',
'table', 'fieldset', 'address']
FORM_ATTRS =
[ATTRS, 'method', 'enctype', 'accept', 'name', 'onsubmit',
'onreset', 'accept-charset']
FRAME_ATTRS =
[COREATTRS, 'longdesc', 'name', 'src', 'frameborder',
'marginwidth', 'marginheight', 'noresize', 'scrolling' ]
FRAMESET_ATTRS =
[COREATTRS, 'rows', 'cols', 'onload', 'onunload']
FRAMESET_CONTENTS =
['frameset', 'frame', 'noframes']
HEAD_ATTRS =
[I18N, 'profile']
HEAD_CONTENTS =
['title', 'isindex', 'base', 'script', 'style', 'meta',
'link', 'object']
HR_DEPR =
['align', 'noshade', 'size', 'width']
VERSION_ATTR =
['version']
HTML_CONTENT =
['head', 'body', 'frameset']
IFRAME_ATTRS =
[COREATTRS, 'longdesc', 'name', 'src', 'frameborder',
'marginwidth', 'marginheight', 'scrolling', 'align',
'height', 'width']
IMG_ATTRS =
[ATTRS, 'longdesc', 'name', 'height', 'width', 'usemap',
'ismap']
EMBED_ATTRS =
[COREATTRS, 'align', 'alt', 'border', 'code', 'codebase',
'frameborder', 'height', 'hidden', 'hspace', 'name',
'palette', 'pluginspace', 'pluginurl', 'src', 'type',
'units', 'vspace', 'width']
INPUT_ATTRS =
[ATTRS, 'type', 'name', 'value', 'checked', 'disabled',
'readonly', 'size', 'maxlength', 'src', 'alt', 'usemap',
'ismap', 'tabindex', 'accesskey', 'onfocus', 'onblur',
'onselect', 'onchange', 'accept']
PROMPT_ATTRS =
[COREATTRS, I18N, 'prompt']
LABEL_ATTRS =
[ATTRS, 'for', 'accesskey', 'onfocus', 'onblur']
LEGEND_ATTRS =
[ATTRS, 'accesskey']
ALIGN_ATTR =
['align']
[ATTRS, 'charset', 'href', 'hreflang', 'type', 'rel', 'rev',
'media']
MAP_CONTENTS =
[BLOCK, 'area']
NAME_ATTR =
['name']
ACTION_ATTR =
['action']
BLOCKLI_ELT =
[BLOCK, 'li']
META_ATTRS =
[I18N, 'http-equiv', 'name', 'scheme']
CONTENT_ATTR =
['content']
TYPE_ATTR =
['type']
NOFRAMES_CONTENT =
['body', FLOW, MODIFIER]
OBJECT_CONTENTS =
[FLOW, 'param']
OBJECT_ATTRS =
[ATTRS, 'declare', 'classid', 'codebase', 'data', 'type',
'codetype', 'archive', 'standby', 'height', 'width',
'usemap', 'name', 'tabindex']
OBJECT_DEPR =
['align', 'border', 'hspace', 'vspace']
OL_ATTRS =
['type', 'compact', 'start']
OPTION_ELT =
['option']
OPTGROUP_ATTRS =
[ATTRS, 'disabled']
OPTION_ATTRS =
[ATTRS, 'disabled', 'label', 'selected', 'value']
PARAM_ATTRS =
['id', 'value', 'valuetype', 'type']
WIDTH_ATTR =
['width']
PRE_CONTENT =
[PHRASE, 'tt', 'i', 'b', 'u', 's', 'strike', 'a', 'br',
'script', 'map', 'q', 'span', 'bdo', 'iframe']
SCRIPT_ATTRS =
['charset', 'src', 'defer', 'event', 'for']
LANGUAGE_ATTR =
['language']
SELECT_CONTENT =
['optgroup', 'option']
SELECT_ATTRS =
[ATTRS, 'name', 'size', 'multiple', 'disabled', 'tabindex',
'onfocus', 'onblur', 'onchange']
STYLE_ATTRS =
[I18N, 'media', 'title']
TABLE_ATTRS =
[ATTRS, 'summary', 'width', 'border', 'frame', 'rules',
'cellspacing', 'cellpadding', 'datapagesize']
TABLE_DEPR =
['align', 'bgcolor']
TABLE_CONTENTS =
['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody',
'tr']
TR_ELT =
['tr']
TALIGN_ATTRS =
[ATTRS, CELLHALIGN, CELLVALIGN]
TH_TD_DEPR =
['nowrap', 'bgcolor', 'width', 'height']
TH_TD_ATTR =
[ATTRS, 'abbr', 'axis', 'headers', 'scope', 'rowspan',
'colspan', CELLHALIGN, CELLVALIGN]
TEXTAREA_ATTRS =
[ATTRS, 'name', 'disabled', 'readonly', 'tabindex',
'accesskey', 'onfocus', 'onblur', 'onselect',
'onchange']
TR_CONTENTS =
['th', 'td']
BGCOLOR_ATTR =
['bgcolor']
LI_ELT =
['li']
UL_DEPR =
['type', 'compact']
DIR_ATTR =
['dir']

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](tag_name) ⇒ Object

Get ElemementDescription for tag_name



245
246
247
248
249
250
251
252
253
# File 'ext/nokogiri/html_element_description.c', line 245

static VALUE get_description(VALUE klass, VALUE tag_name)
{
  const htmlElemDesc * description = htmlTagLookup(
      (const xmlChar *)StringValueCStr(tag_name)
  );

  if(NULL == description) return Qnil;
  return Data_Wrap_Struct(klass, 0, 0, (void *)(uintptr_t)description);
}

Instance Method Details

#block?Boolean

Is this element a block element?

Returns:

  • (Boolean)


7
8
9
# File 'lib/nokogiri/html/element_description.rb', line 7

def block?
  !inline?
end

#default_sub_elementObject

The default sub element for this element



84
85
86
87
# File 'ext/nokogiri/html_element_description.c', line 84

def default_sub_element
  d = default_desc
  d ? d.defaultsubelt : nil
end

#deprecated?Boolean

Is this element deprecated?

Returns:

  • (Boolean)


155
156
157
158
# File 'ext/nokogiri/html_element_description.c', line 155

def deprecated?
  d = default_desc
  d ? d.depr : nil
end

#deprecated_attributesObject

A list of deprecated attributes for this element



34
35
36
37
# File 'ext/nokogiri/html_element_description.c', line 34

def deprecated_attributes
  d = default_desc
  d ? d.attrs_depr : []
end

#descriptionObject

The description for this element



126
127
128
129
# File 'ext/nokogiri/html_element_description.c', line 126

def description
  d = default_desc
  d ? d.desc : nil
end

#empty?Boolean

Is this an empty element?

Returns:

  • (Boolean)


170
171
172
173
174
175
176
177
# File 'ext/nokogiri/html_element_description.c', line 170

static VALUE empty_eh(VALUE self)
{
  const htmlElemDesc * description;
  Data_Get_Struct(self, htmlElemDesc, description);

  if(description->empty) return Qtrue;
  return Qfalse;
}

#implied_end_tag?Boolean

Can the end tag be implied for this tag?

Returns:

  • (Boolean)


200
201
202
203
# File 'ext/nokogiri/html_element_description.c', line 200

def implied_end_tag?
  d = default_desc
  d ? d.endTag : nil
end

#implied_start_tag?Boolean

Can the start tag be implied for this tag?

Returns:

  • (Boolean)


215
216
217
218
# File 'ext/nokogiri/html_element_description.c', line 215

def implied_start_tag?
  d = default_desc
  d ? d.startTag : nil
end

#inline?Boolean

Is this element an inline element?

Returns:

  • (Boolean)


140
141
142
143
144
145
146
147
# File 'ext/nokogiri/html_element_description.c', line 140

static VALUE inline_eh(VALUE self)
{
  const htmlElemDesc * description;
  Data_Get_Struct(self, htmlElemDesc, description);

  if(description->isinline) return Qtrue;
  return Qfalse;
}

#inspectObject

Inspection information



19
20
21
# File 'lib/nokogiri/html/element_description.rb', line 19

def inspect
  "#<#{self.class.name}: #{name} #{description}>"
end

#nameObject

Get the tag name for this ElemementDescription



230
231
232
233
234
235
236
237
# File 'ext/nokogiri/html_element_description.c', line 230

static VALUE name(VALUE self)
{
  const htmlElemDesc * description;
  Data_Get_Struct(self, htmlElemDesc, description);

  if(NULL == description->name) return Qnil;
  return NOKOGIRI_STR_NEW2(description->name);
}

#optional_attributesObject

A list of optional attributes for this element



59
60
61
62
# File 'ext/nokogiri/html_element_description.c', line 59

def optional_attributes
  d = default_desc
  d ? d.attrs_opt : []
end

#required_attributesObject

A list of required attributes for this element



9
10
11
12
# File 'ext/nokogiri/html_element_description.c', line 9

def required_attributes
  d = default_desc
  d ? d.attrs_req : []
end

#save_end_tag?Boolean

Should the end tag be saved?

Returns:

  • (Boolean)


185
186
187
188
# File 'ext/nokogiri/html_element_description.c', line 185

def save_end_tag?
  d = default_desc
  d ? d.saveEndTag : nil
end

#sub_elementsObject

A list of allowed sub elements for this element.



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'ext/nokogiri/html_element_description.c', line 101

static VALUE sub_elements(VALUE self)
{
  const htmlElemDesc * description;
  VALUE list;
  int i;

  Data_Get_Struct(self, htmlElemDesc, description);

  list = rb_ary_new();

  if(NULL == description->subelts) return list;

  for(i = 0; description->subelts[i]; i++) {
    rb_ary_push(list, NOKOGIRI_STR_NEW2(description->subelts[i]));
  }

  return list;
}

#to_sObject

Convert this description to a string



13
14
15
# File 'lib/nokogiri/html/element_description.rb', line 13

def to_s
  "#{name}: #{description}"
end