Class: Meteor::Ml::Xhtml4::ParserImpl

Inherits:
Core::Kernel show all
Defined in:
lib/meteor/ml/xhtml4/parser_impl.rb

Overview

XHTML4 parser (XHTML4パーサ)

Direct Known Subclasses

Meteor::Ml::Xhtml::ParserImpl

Constant Summary collapse

KAIGYO_CODE =

KAIGYO_CODE = “r?n|r”

["\r\n", "\n", "\r"]
BR =
"<br/>"
DISABLE_ELEMENT =

DISABLE_ELEMENT = “input|textarea|select|optgroup”

Array

element with disablled attribute (disabled属性のある要素)

["input", "textarea", "select", "optgroup"]
READONLY_TYPE =

READONLY_TYPE = “text|password”

Array

readonly属性のあるinput要素のタイプ

["text", "password"]
SELECTED_M =
"\\sselected=\"[^\"]*\"\\s|\\sselected=\"[^\"]*\"$"
SELECTED_M1 =
"\\sselected=\"([^\"]*)\"\\s|\\sselected=\"([^\"]*)\"$"
SELECTED_R =
"selected=\"[^\"]*\""
SELECTED_U =
"selected=\"selected\""
CHECKED_M =
"\\schecked=\"[^\"]*\"\\s|\\schecked=\"[^\"]*\"$"
CHECKED_M1 =
"\\schecked=\"([^\"]*)\"\\s|\\schecked=\"([^\"]*)\"$"
CHECKED_R =
"checked=\"[^\"]*\""
CHECKED_U =
"checked=\"checked\""
DISABLED_M =
"\\sdisabled=\"[^\"]*\"\\s|\\sdisabled=\"[^\"]*\"$"
DISABLED_M1 =
"\\sdisabled=\"([^\"]*)\"\\s|\\sdisabled=\"([^\"]*)\"$"
DISABLED_R =
"disabled=\"[^\"]*\""
DISABLED_U =
"disabled=\"disabled\""
READONLY_M =
"\\sreadonly=\"[^\"]*\"\\s|\\sreadonly=\"[^\"]*\"$"
READONLY_M1 =
"\\sreadonly=\"([^\"]*)\"\\s|\\sreadonly=\"([^\"]*)\"$"
READONLY_R =
"readonly=\"[^\"]*\""
READONLY_U =
"readonly=\"readonly\""
MULTIPLE_M =
"\\smultiple=\"[^\"]*\"\\s|\\smultiple=\"[^\"]*\"$"
MULTIPLE_M1 =
"\\smultiple=\"([^\"]*)\"\\s|\\smultiple=\"([^\"]*)\"$"
MULTIPLE_R =
"multiple=\"[^\"]*\""
MULTIPLE_U =
"multiple=\"multiple\""
PATTERN_UNESCAPE =
"&(amp|quot|apos|gt|lt|nbsp);"
TABLE_FOR_ESCAPE_ =

@@pattern_match_tag = Regexp.new(@@match_tag) @@pattern_match_tag2 = Regexp.new(@@match_tag_2)

{
  "&" => "&amp;",
  "\"" => "&quot;",
  "'" => "&apos;",
  "<" => "&lt;",
  ">" => "&gt;",
  " " => "&nbsp;"
}
TABLE_FOR_ESCAPE_CONTENT_ =
{
  "&" => "&amp;",
  "\"" => "&quot;",
  "'" => "&apos;",
  "<" => "&lt;",
  ">" => "&gt;",
  " " => "&nbsp;",
  "\r\n" => "<br/>",
  "\r" => "<br/>",
  "\n" => "<br/>"
}
PATTERN_ESCAPE =
"[&\"'<> ]"
PATTERN_ESCAPE_CONTENT =
"[&\"'<> \\n]"
@@match_tag_2 =

@@match_tag_2 = “textarea|option|pre”

Array

改行を<br/>に変換する必要のない要素

["textarea", "option", "pre"]
@@attr_logic =
Array

論理値で指定する属性

["disabled", "readonly", "checked", "selected", "multiple"]
@@pattern_selected_m =
Regexp.new(SELECTED_M)
@@pattern_selected_m1 =
Regexp.new(SELECTED_M1)
@@pattern_selected_r =
Regexp.new(SELECTED_R)
@@pattern_checked_m =
Regexp.new(CHECKED_M)
@@pattern_checked_m1 =
Regexp.new(CHECKED_M1)
@@pattern_checked_r =
Regexp.new(CHECKED_R)
@@pattern_disabled_m =
Regexp.new(DISABLED_M)
@@pattern_disabled_m1 =
Regexp.new(DISABLED_M1)
@@pattern_disabled_r =
Regexp.new(DISABLED_R)
@@pattern_readonly_m =
Regexp.new(READONLY_M)
@@pattern_readonly_m1 =
Regexp.new(READONLY_M1)
@@pattern_readonly_r =
Regexp.new(READONLY_R)
@@pattern_multiple_m =
Regexp.new(MULTIPLE_M)
@@pattern_multiple_m1 =
Regexp.new(MULTIPLE_M1)
@@pattern_multiple_r =
Regexp.new(MULTIPLE_R)
@@pattern_unescape =
Regexp.new(PATTERN_UNESCAPE)
@@pattern_br_2 =
Regexp.new("<br\\/>")
@@pattern_escape =
Regexp.new(PATTERN_ESCAPE)
@@pattern_escape_content =
Regexp.new(PATTERN_ESCAPE_CONTENT)

Constants inherited from Core::Kernel

Core::Kernel::PATTERN_FIND_1, Core::Kernel::PATTERN_FIND_2_1, Core::Kernel::PATTERN_FIND_2_2, Core::Kernel::PATTERN_FIND_2_3, Core::Kernel::PATTERN_FIND_3_1, Core::Kernel::PATTERN_FIND_3_2, Core::Kernel::PATTERN_FIND_3_3, Core::Kernel::PATTERN_FIND_4, Core::Kernel::PATTERN_FIND_5

Constants inherited from Parser

Parser::HTML, Parser::HTML4, Parser::XHTML, Parser::XHTML4, Parser::XML

Instance Attribute Summary

Attributes inherited from Core::Kernel

#doc_type, #document_hook, #element_cache, #element_hook

Instance Method Summary collapse

Methods inherited from Core::Kernel

#attr, #attr_map, #attrs, #character_encoding, #character_encoding=, #content, #cxtag, #document, #document=, #element, #elements, #elements_, #find, #flash, #read, #remove_attr, #remove_element, #root_element, #shadow

Constructor Details

#initializeParserImpl #initialize(ps) ⇒ ParserImpl

initializer (イニシャライザ)

Overloads:



108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/meteor/ml/xhtml4/parser_impl.rb', line 108

def initialize(*args)
  super()
  @doc_type = Parser::XHTML4
  case args.length
  when ZERO
    # initialize_0
  when ONE
    initialize_1(args[0])
  else
    raise ArgumentError
  end
end

Instance Method Details

#content_typeString

get content type (コンテントタイプを取得する)

Returns:

  • (String)

    content type (コンテントタイプ)



165
166
167
# File 'lib/meteor/ml/xhtml4/parser_impl.rb', line 165

def content_type
  @root.content_type
end

#parseObject

parse document (ドキュメントを解析する)



146
147
148
# File 'lib/meteor/ml/xhtml4/parser_impl.rb', line 146

def parse
  analyze_ml
end