meteor 0.9.8 → 0.9.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 79878cc14c8b93e9720ec698a24aa94195bae0ef
4
- data.tar.gz: 295a3b24e45b67244a280bdebfe3454bcad79f78
3
+ metadata.gz: e08d7846e20f1e7fcb1aa755175cafcbb3a451f6
4
+ data.tar.gz: 2130feb4f92b95ef53cfd2e9cbb03f7aee73a408
5
5
  SHA512:
6
- metadata.gz: 53a2b9afe11e01ca2b83f6821a01b9c07102f23d0b484838023edd37445631b3f241d0b5e7cddc8c94435b0d0055766ff016e8797680e2890f9562814b91da86
7
- data.tar.gz: 18019e1b871043796f52091f0efb8e64ecc3b7a2f7c554ef2e01bf7191b7c6a9a3f118c35e05984a930304eba8ca42ef7978b5e780f6daa4837a53047317f7e0
6
+ metadata.gz: bf2618e5090b829294e39707bd9c237ed0bf913f41c9d46e330b7c42c0b0e8fac5a4040b04051672486a7796b7e230b58824bd56f7e478c4683c2e5475783e3c
7
+ data.tar.gz: 60d6f332459a50e624e21f70425b1e1f108366c091a1212ba9398a51bfeff5f337c99c1a79e83b4ff191c6cdf1b0b60471643e666619e5c3c11baf62b743622a
data/ChangeLog CHANGED
@@ -1,6 +1,9 @@
1
1
  == 0.9.8 / 2014-01-07 Yasumasa Ashida <ys.ashida@gmail.com>
2
2
 
3
- multi elements search support
3
+ * multi elements search support (addition of Meteor::Element#elements)
4
+ * purge of Ruby1.8 support codes
5
+ * change of Meteor::Element#find
6
+ * purge of Meteor::Hook module
4
7
 
5
8
  == 0.9.0.1 / 2008-10-03 Yasumasa Ashida <ys.ashida@gmail.com>
6
9
 
data/README.md CHANGED
@@ -12,26 +12,46 @@ Meteor
12
12
  gem install meteor-*.gem
13
13
  ```
14
14
 
15
- ##Explanation
16
- Sorry, written in Japanese.
15
+ ## Explanation
16
+ This libarary is lightweight (X)HTML(5) parser.
17
+ This can use as XML parser.
18
+ This may be false parser.
19
+
20
+ This libarary doesn't support all of XML spec.
21
+ This supports a range of xml spec
22
+ thought to be the need routinely.
17
23
 
18
24
  軽量(簡易?)(X)HTML(5)パーサです。
19
25
  XMLパーサとしても使用可能です。
20
26
  パーサもどきかもしれません。
27
+
21
28
  (X)HTML(5)、XMLの仕様の全てをサポートしてはいません、
22
29
  日常的に必要と思われる範囲をサポートしています。
23
30
 
31
+ This doesn't convert the whole into objects but
32
+ converts only elements for the operation into objects.
33
+ (This library uses regular expression internally but user
34
+ don't need to concern yourself with internal logic.)
35
+
24
36
  DOMのように全体をオブジェクトのツリー構造に変換するのではなく、
25
- 操作対象の要素のみをオブジェクトにする仕組みになっています。
37
+ 操作対象の要素のみをオブジェクトに変換します。
26
38
  (内部では正規表現を使っていますが、ユーザがそれを意識する
27
39
  必要は全くありません。)
28
40
 
41
+ ## API
42
+ http://rubydoc.info/github/asip/meteor/master/frames
43
+
44
+ ## Gem
45
+ https://rubygems.org/gems/meteor
46
+
47
+ ## Examples
48
+ https://github.com/asip/meteor/tree/master/demo
29
49
 
30
50
  ## License
31
51
  Licensed under the LGPL V2.1.
32
52
 
33
- ##Author
53
+ ## Author
34
54
  Yasumasa Ashida (ys.ashida@gmail.com)
35
55
 
36
- ##Copyright
56
+ ## Copyright
37
57
  (c) 2008-2014 Yasumasa Ashida
@@ -5,12 +5,12 @@ require 'rubygems'
5
5
  require 'meteor'
6
6
 
7
7
  #pf = Meteor::ParserFactory.new
8
- #pf.bind(Meteor::HTML,'sample.html', 'UTF-8')
8
+ #pf.bind(:html,'sample.html', 'UTF-8')
9
9
 
10
10
  #root = pf.element('sample')
11
11
 
12
- Meteor::ElementFactory.options= {:type => Meteor::HTML}
13
- #Meteor::ElementFactory.bind(Meteor::HTML,'sample.html', 'UTF-8')
12
+ Meteor::ElementFactory.options= {:type => :html}
13
+ #Meteor::ElementFactory.bind(:html,'sample.html', 'UTF-8')
14
14
  Meteor::ElementFactory.bind('sample.html')
15
15
 
16
16
  root = Meteor::ElementFactory.element('sample')
@@ -43,7 +43,7 @@ elm_text1 = root.element('input','id'=>'text1')
43
43
  #elm_text1.attr = {'value' => 'メモ'}
44
44
  #elm_text1.attr('disabled'=>true)
45
45
  #elm_text1['disabled'] = true
46
- elm_text1.attrs = {'value' => 'メモ','disabled' => true, 'readonly' => true}
46
+ elm_text1.attrs = {value: 'メモ','disabled' => true, 'readonly' => true}
47
47
  #puts elm_text1.attrs
48
48
  #elm_text1.remove_attr('disabled')
49
49
  #map = elm_text1.attr_map
@@ -79,6 +79,7 @@ elm_text1.attrs = {'value' => 'メモ','disabled' => true, 'readonly' => true}
79
79
  ##puts elm_option1.attr('selected')
80
80
  #puts elm_option1['selected']
81
81
  #puts elm_text1.attr('readonly')
82
+ #puts elm_text1['readonly']
82
83
 
83
84
  #elm_select2 = ps.element('select','id'=>'select2')
84
85
  #elm_select2['multiple'] = 'true'
@@ -97,10 +98,10 @@ elm_text1.attrs = {'value' => 'メモ','disabled' => true, 'readonly' => true}
97
98
  # co_ps.flush
98
99
  #}
99
100
 
100
- elm_tr1 = root.element('tr','id'=>'loop')
101
+ elm_tr1 = root.element('tr',id: 'loop')
101
102
  #elm_tr1 = ps.find('tr[id=loop]')
102
103
  elm_ = root.element(elm_tr1)
103
- elm_dt1_ = elm_.element('id'=>'aa')
104
+ elm_dt1_ = elm_.element(id: 'aa')
104
105
  elm_dt2_ = elm_.element('id'=>'bb')
105
106
  elm_dt3_ = elm_.element('id'=>'cc')
106
107
  10.times do |i|
@@ -130,4 +131,4 @@ end_time = Time.new.to_f
130
131
 
131
132
  puts root.document
132
133
 
133
- puts '' + (end_time - start_time).to_s + ' sec'
134
+ puts '' + (end_time - start_time).to_s + ' sec'
@@ -5,11 +5,11 @@ require 'rubygems'
5
5
  require 'meteor'
6
6
 
7
7
  #pf = Meteor::ParserFactory.new
8
- #pf.bind(Meteor::Parser::HTML5,'sample_5.html', 'UTF-8')
8
+ #pf.bind(:html5,'sample_5.html', 'UTF-8')
9
9
 
10
10
  #root = pf.element('sample_5')
11
11
 
12
- Meteor::ElementFactory.bind(Meteor::Parser::HTML5,"sample_5.html", 'UTF-8')
12
+ Meteor::ElementFactory.bind(:html5,"sample_5.html", 'UTF-8')
13
13
  root = Meteor::ElementFactory.element('sample_5')
14
14
 
15
15
  start_time = Time.new.to_f
@@ -99,4 +99,4 @@ end_time = Time.new.to_f
99
99
 
100
100
  puts root.document
101
101
 
102
- puts '' + (end_time - start_time).to_s + ' sec'
102
+ puts '' + (end_time - start_time).to_s + ' sec'
@@ -5,11 +5,11 @@ require 'rubygems'
5
5
  require 'meteor'
6
6
 
7
7
  #pf = Meteor::ParserFactory.new
8
- #pf.bind(Meteor::Parser::XHTML,"sample_x.html", "UTF-8")
8
+ #pf.bind(:html,"sample_x.html", "UTF-8")
9
9
 
10
10
  #root = pf.element('sample_x')
11
11
 
12
- Meteor::ElementFactory.bind(Meteor::Parser::XHTML,'sample_x.html', 'UTF-8')
12
+ Meteor::ElementFactory.bind(:html,'sample_x.html', 'UTF-8')
13
13
  root = Meteor::ElementFactory.element('sample_x')
14
14
 
15
15
  startTime = Time.new.to_f
@@ -99,4 +99,4 @@ endTime = Time.new.to_f
99
99
 
100
100
  puts root.document
101
101
 
102
- puts '' + (endTime - startTime).to_s + ' sec'
102
+ puts '' + (endTime - startTime).to_s + ' sec'
@@ -5,11 +5,11 @@ require 'rubygems'
5
5
  require 'meteor'
6
6
 
7
7
  #pf = Meteor::ParserFactory.new
8
- #pf.bind(Meteor::Parser::XHTML5,"sample_x5.html", "UTF-8")
8
+ #pf.bind(:xhtml5,"sample_x5.html", "UTF-8")
9
9
 
10
10
  #root = pf.element('sample_x5')
11
11
 
12
- Meteor::ElementFactory.bind(Meteor::Parser::XHTML5,'sample_x5.html', 'UTF-8')
12
+ Meteor::ElementFactory.bind(:xhtml5,'sample_x5.html', 'UTF-8')
13
13
  root = Meteor::ElementFactory.element('sample_x5')
14
14
 
15
15
  startTime = Time.new.to_f
@@ -104,4 +104,4 @@ endTime = Time.new.to_f
104
104
 
105
105
  puts root.document
106
106
 
107
- puts '' + (endTime - startTime).to_s + ' sec'
107
+ puts '' + (endTime - startTime).to_s + ' sec'
@@ -18,12 +18,12 @@
18
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
19
  #
20
20
  # @author Yasumasa Ashida
21
- # @version 0.9.8
21
+ # @version 0.9.8.1
22
22
  #
23
23
 
24
24
  module Meteor
25
25
 
26
- VERSION = '0.9.8'
26
+ VERSION = '0.9.8.1'.freeze
27
27
 
28
28
  #require 'fileutils'
29
29
 
@@ -51,6 +51,8 @@ module Meteor
51
51
  # @return [String] attributes (属性群)
52
52
  # @!attribute [rw] mixed_content
53
53
  # @return [String] content (内容)
54
+ # @!attribute [rw] raw_content
55
+ # @return [false,true] entity ref flag of content (内容のエンティティ参照フラグ)
54
56
  # @!attribute [rw] pattern
55
57
  # @return [String] pattern (パターン)
56
58
  # @!attribute [rw] document_sync
@@ -79,6 +81,7 @@ module Meteor
79
81
  attr_accessor :tag
80
82
  attr_accessor :attributes
81
83
  attr_accessor :mixed_content
84
+ attr_accessor :raw_content
82
85
  attr_accessor :pattern
83
86
  attr_accessor :document_sync
84
87
  attr_accessor :empty
@@ -479,10 +482,12 @@ module Meteor
479
482
  # @param [String] content content of element (要素の内容)
480
483
  # @param [true,false] entity_ref entity reference flag (エンティティ参照フラグ)
481
484
  # @return [Meteor::Element] element (要素)
485
+ # @deprecated
482
486
  # @overload content(content)
483
487
  # set content of element (要素の内容をセットする)
484
488
  # @param [String] content content of element (要素の内容)
485
489
  # @return [Meteor::Element] element (要素)
490
+ # @deprecated
486
491
  # @overload content()
487
492
  # get content of element (要素の内容を取得する)
488
493
  # @return [String] content (内容)
@@ -706,7 +711,7 @@ module Meteor
706
711
 
707
712
  #
708
713
  # set a couple of attribute name and attribute value (属性名と属性値を対としてセットする)
709
- #
714
+ #
710
715
  # @param [String] name attribute name (属性名)
711
716
  # @param [String] value attribute value (属性値)
712
717
  #
@@ -716,7 +721,7 @@ module Meteor
716
721
 
717
722
  #
718
723
  # get attribute value using attribute name (属性名で属性値を取得する)
719
- #
724
+ #
720
725
  # @param [String] name attribute name (属性名)
721
726
  # @return [String] attribute value (属性値)
722
727
  #
@@ -771,7 +776,7 @@ module Meteor
771
776
  # Parser Factory Class (パーサファクトリクラス)
772
777
  #
773
778
  # @!attribute [rw] type
774
- # @return [FixNum] default type of parser (デフォルトのパーサ・タイプ)
779
+ # @return [FixNum,Symbol] default type of parser (デフォルトのパーサ・タイプ)
775
780
  # @!attribute [rw] root
776
781
  # @return [String] root root directory (基準ディレクトリ)
777
782
  # @!attribute [rw] enc
@@ -809,7 +814,7 @@ module Meteor
809
814
  # @param [String] root root directory (基準ディレクトリ)
810
815
  # @param [String] enc default character encoding (デフォルトエンコーディング)
811
816
  # @overload initialize(type, root, enc)
812
- # @param [FixNum] type default type of parser (デフォルトのパーサ・タイプ)
817
+ # @param [FixNum,Symbol] type default type of parser (デフォルトのパーサ・タイプ)
813
818
  # @param [String] root root directory (基準ディレクトリ)
814
819
  # @param [String] enc default character encoding (デフォルト文字エンコーディング)
815
820
  #
@@ -866,7 +871,7 @@ module Meteor
866
871
 
867
872
  #
868
873
  # イニシャライザ
869
- # @param [FixNum] type default type of parser (デフォルトのパーサ・タイプ)
874
+ # @param [FixNum,Symbol] type default type of parser (デフォルトのパーサ・タイプ)
870
875
  # @param [String] root root directory (基準ディレクトリ)
871
876
  # @param [String] enc default character encoding (デフォルト文字エンコーディング)
872
877
  #
@@ -886,8 +891,8 @@ module Meteor
886
891
  # @option @deprecated opts [String] :base_dir root directory (基準ディレクトリ)
887
892
  # @option opts [String] :enc default character encoding (デフォルト文字エンコーディング)
888
893
  # @option @deprecated opts [String] :base_enc default character encoding (デフォルト文字エンコーディング)
889
- # @option opts [FixNum] :type default type of parser (デフォルトのパーサ・タイプ)
890
- # @option @deprecated opts [FixNum] :base_type default type of parser (デフォルトのパーサ・タイプ)
894
+ # @option opts [FixNum,Symbol] :type default type of parser (デフォルトのパーサ・タイプ)
895
+ # @option @deprecated opts [FixNum | Symbol] :base_type default type of parser (デフォルトのパーサ・タイプ)
891
896
  #
892
897
  def options=(opts)
893
898
  if opts.kind_of?(Hash)
@@ -923,13 +928,13 @@ module Meteor
923
928
  # @return [Meteor::Parser] parser (パーサ)
924
929
  #@overload bind(type,relative_path,enc)
925
930
  # generate parser (パーサを作成する)
926
- # @param [Fixnum] type type of parser (パーサ・タイプ)
931
+ # @param [Fixnum,Symbol] type type of parser (パーサ・タイプ)
927
932
  # @param [String] relative_path relative file path (相対ファイルパス)
928
933
  # @param [String] enc character encoding (文字エンコーディング)
929
934
  # @return [Meteor::Parser] parser (パーサ)
930
935
  #@overload bind(type,relative_path)
931
936
  # generate parser (パーサを作成する)
932
- # @param [Fixnum] type type of parser (パーサ・タイプ)
937
+ # @param [Fixnum,Symbol] type type of parser (パーサ・タイプ)
933
938
  # @param [String] relative_path relative file path (相対ファイルパス)
934
939
  # @return [Meteor::Parser] parser (パーサ)
935
940
  #
@@ -938,7 +943,7 @@ module Meteor
938
943
  when 1
939
944
  bind_1(args[0])
940
945
  when 2
941
- if args[0].kind_of?(Fixnum)
946
+ if args[0].kind_of?(Fixnum) || args[0].kind_of?(Symbol)
942
947
  bind_2_n(args[0], args[1])
943
948
  elsif args[0].kind_of?(String)
944
949
  bind_2_s(args[0], args[1])
@@ -978,7 +983,7 @@ module Meteor
978
983
 
979
984
  #
980
985
  # generate parser (パーサを作成する)
981
- # @param [Fixnum] type type of parser (パーサ・タイプ)
986
+ # @param [Fixnum,Symbol] type type of parser (パーサ・タイプ)
982
987
  # @param [String] relative_path relative file path (相対ファイルパス)
983
988
  # @param [String] enc character encoding (文字エンコーディング)
984
989
  # @return [Meteor::Parser] parser(パーサ)
@@ -988,7 +993,7 @@ module Meteor
988
993
  relative_url = path_to_url(relative_path)
989
994
 
990
995
  case type
991
- when Parser::HTML
996
+ when Parser::HTML, :html
992
997
  html = Meteor::Ml::Html::ParserImpl.new
993
998
  html.read(File.expand_path(relative_path, @root), enc)
994
999
  @cache[relative_url] = html
@@ -996,15 +1001,15 @@ module Meteor
996
1001
  xhtml = Meteor::Ml::Xhtml::ParserImpl.new
997
1002
  xhtml.read(File.expand_path(relative_path, @root), enc)
998
1003
  @cache[relative_url] = xhtml
999
- when Parser::HTML5
1004
+ when Parser::HTML5, :html5
1000
1005
  html5 = Meteor::Ml::Html5::ParserImpl.new
1001
1006
  html5.read(File.expand_path(relative_path, @root), enc)
1002
1007
  @cache[relative_url] = html5
1003
- when Parser::XHTML5
1008
+ when Parser::XHTML5, :xhtml5
1004
1009
  xhtml5 = Meteor::Ml::Xhtml5::ParserImpl.new
1005
1010
  xhtml5.read(File.expand_path(relative_path, @root), enc)
1006
1011
  @cache[relative_url] = xhtml5
1007
- when Parser::XML
1012
+ when Parser::XML, :xml
1008
1013
  xml = Meteor::Ml::Xml::ParserImpl.new
1009
1014
  xml.read(File.expand_path(relative_path, @root), enc)
1010
1015
  @cache[relative_url] = xml
@@ -1015,7 +1020,7 @@ module Meteor
1015
1020
 
1016
1021
  #
1017
1022
  # generate parser (パーサを作成する)
1018
- # @param [Fixnum] type type of parser(パーサ・タイプ)
1023
+ # @param [Fixnum,Symbol] type type of parser(パーサ・タイプ)
1019
1024
  # @param [String] relative_path relative file path (相対ファイルパス)
1020
1025
  # @return [Meteor::Parser] parser (パーサ)
1021
1026
  #
@@ -1024,15 +1029,15 @@ module Meteor
1024
1029
  relative_url = path_to_url(relative_path)
1025
1030
 
1026
1031
  case type
1027
- when Parser::HTML
1032
+ when Parser::HTML, :html
1028
1033
  ps = Meteor::Ml::Html::ParserImpl.new
1029
- when Parser::XHTML
1034
+ when Parser::XHTML, :xhtml
1030
1035
  ps = Meteor::Ml::Xhtml::ParserImpl.new
1031
- when Parser::HTML5
1036
+ when Parser::HTML5, :html5
1032
1037
  ps = Meteor::Ml::Html5::ParserImpl.new
1033
- when Parser::XHTML5
1038
+ when Parser::XHTML5, :xhtml5
1034
1039
  ps = Meteor::Ml::Xhtml5::ParserImpl.new
1035
- when Parser::XML
1040
+ when Parser::XML, :xml
1036
1041
  ps = Meteor::Ml::Xml::ParserImpl.new
1037
1042
  end
1038
1043
 
@@ -1054,15 +1059,15 @@ module Meteor
1054
1059
  relative_url = path_to_url(relative_path)
1055
1060
 
1056
1061
  case @type
1057
- when Parser::HTML
1062
+ when Parser::HTML, :html
1058
1063
  ps = Meteor::Ml::Html::ParserImpl.new
1059
- when Parser::XHTML
1064
+ when Parser::XHTML, :xhtml
1060
1065
  ps = Meteor::Ml::Xhtml::ParserImpl.new
1061
- when Parser::HTML5
1066
+ when Parser::HTML5, :html5
1062
1067
  ps = Meteor::Ml::Html5::ParserImpl.new
1063
- when Parser::XHTML5
1068
+ when Parser::XHTML5, :xhtml5
1064
1069
  ps = Meteor::Ml::Xhtml5::ParserImpl.new
1065
- when Parser::XML
1070
+ when Parser::XML, :xml
1066
1071
  ps = Meteor::Ml::Xml::ParserImpl.new
1067
1072
  end
1068
1073
 
@@ -1083,15 +1088,15 @@ module Meteor
1083
1088
  relative_url = path_to_url(relative_path)
1084
1089
 
1085
1090
  case @type
1086
- when Parser::HTML
1091
+ when Parser::HTML, :html
1087
1092
  ps = Meteor::Ml::Html::ParserImpl.new
1088
- when Parser::XHTML
1093
+ when Parser::XHTML, :xhtml
1089
1094
  ps = Meteor::Ml::Xhtml::ParserImpl.new
1090
- when Parser::HTML5
1095
+ when Parser::HTML5, :html5
1091
1096
  ps = Meteor::Ml::Html5::ParserImpl.new
1092
- when Parser::XHTML5
1097
+ when Parser::XHTML5, :xhtml5
1093
1098
  ps = Meteor::Ml::Xhtml5::ParserImpl.new
1094
- when Parser::XML
1099
+ when Parser::XML, :xml
1095
1100
  ps = Meteor::Ml::Xml::ParserImpl.new
1096
1101
  else
1097
1102
  raise ArgumentError
@@ -1139,17 +1144,17 @@ module Meteor
1139
1144
  #
1140
1145
  def parser_1(key)
1141
1146
  @pif = @cache[key]
1142
-
1143
- if Meteor::Parser::HTML == @pif.doc_type
1144
- Meteor::Ml::Html::ParserImpl.new(@pif)
1145
- elsif Meteor::Parser::XHTML == @pif.doc_type
1146
- Meteor::Ml::Xhtml::ParserImpl.new(@pif)
1147
- elsif Meteor::Parser::HTML5 == @pif.doc_type
1148
- Meteor::Ml::Html5::ParserImpl.new(@pif)
1149
- elsif Meteor::Parser::XHTML5 == @pif.doc_type
1150
- Meteor::Ml::Xhtml5::ParserImpl.new(@pif)
1151
- elsif Meteor::Parser::XML == @pif.doc_type
1152
- Meteor::Ml::Xml::ParserImpl.new(@pif)
1147
+ case @pif.doc_type
1148
+ when Meteor::Parser::HTML
1149
+ Meteor::Ml::Html::ParserImpl.new(@pif)
1150
+ when Meteor::Parser::XHTML
1151
+ Meteor::Ml::Xhtml::ParserImpl.new(@pif)
1152
+ when Meteor::Parser::HTML5
1153
+ Meteor::Ml::Html5::ParserImpl.new(@pif)
1154
+ when Meteor::Parser::XHTML5
1155
+ Meteor::Ml::Xhtml5::ParserImpl.new(@pif)
1156
+ when Meteor::Parser::XML
1157
+ Meteor::Ml::Xml::ParserImpl.new(@pif)
1153
1158
  end
1154
1159
  end
1155
1160
 
@@ -1190,22 +1195,22 @@ module Meteor
1190
1195
 
1191
1196
  #
1192
1197
  # generate parser (パーサを作成する)
1193
- # @param [Fixnum] type type of parser (パーサ・タイプ)
1198
+ # @param [Fixnum,Symbol] type type of parser (パーサ・タイプ)
1194
1199
  # @param [String] relative_url relative URL (相対URL)
1195
1200
  # @param [String] doc document (ドキュメント)
1196
1201
  # @return [Meteor::Parser] parser (パーサ)
1197
1202
  #
1198
1203
  def bind_str_3(type, relative_url, doc)
1199
1204
  case type
1200
- when Parser::HTML
1205
+ when Parser::HTML, :html
1201
1206
  ps = Meteor::Ml::Html::ParserImpl.new
1202
- when Parser::XHTML
1207
+ when Parser::XHTML, :xhtml
1203
1208
  ps = Meteor::Ml::Xhtml::ParserImpl.new
1204
- when Parser::HTML5
1209
+ when Parser::HTML5, :html5
1205
1210
  ps = Meteor::Ml::Html5::ParserImpl.new
1206
- when Parser::XHTML5
1211
+ when Parser::XHTML5, :xhtml5
1207
1212
  ps = Meteor::Ml::Xhtml5::ParserImpl.new
1208
- when Parser::XML
1213
+ when Parser::XML, :xml
1209
1214
  ps = Meteor::Ml::Xml::ParserImpl.new
1210
1215
  end
1211
1216
 
@@ -1224,15 +1229,15 @@ module Meteor
1224
1229
  #
1225
1230
  def bind_str_2(relative_url, doc)
1226
1231
  case @type
1227
- when Parser::HTML
1232
+ when Parser::HTML, :html
1228
1233
  ps = Meteor::Ml::Html::ParserImpl.new
1229
- when Parser::XHTML
1234
+ when Parser::XHTML, :xhtml
1230
1235
  ps = Meteor::Ml::Xhtml::ParserImpl.new
1231
- when Parser::HTML5
1236
+ when Parser::HTML5, :html5
1232
1237
  ps = Meteor::Ml::Html5::ParserImpl.new
1233
- when Parser::XHTML5
1238
+ when Parser::XHTML5, :xhtml5
1234
1239
  ps = Meteor::Ml::Xhtml5::ParserImpl.new
1235
- when Parser::XML
1240
+ when Parser::XML, :xml
1236
1241
  ps = Meteor::Ml::Xml::ParserImpl.new
1237
1242
  end
1238
1243
 
@@ -1429,115 +1434,115 @@ module Meteor
1429
1434
  #
1430
1435
  class Kernel < Meteor::Parser
1431
1436
 
1432
- EMPTY = ''
1433
- SPACE = ' '
1434
- DOUBLE_QUATATION = '"'
1435
- TAG_OPEN = '<'
1436
- TAG_OPEN3 = '</'
1437
- #TAG_OPEN4 = '<\\\\/'
1438
- TAG_CLOSE = '>'
1439
- #TAG_CLOSE2 = '\\/>'
1440
- TAG_CLOSE3 = '/>'
1441
- ATTR_EQ = '="'
1437
+ EMPTY = ''.freeze
1438
+ SPACE = ' '.freeze
1439
+ DOUBLE_QUATATION = '"'.freeze
1440
+ TAG_OPEN = '<'.freeze
1441
+ TAG_OPEN3 = '</'.freeze
1442
+ #TAG_OPEN4 = '<\\\\/'.freeze
1443
+ TAG_CLOSE = '>'.freeze
1444
+ #TAG_CLOSE2 = '\\/>'.freeze
1445
+ TAG_CLOSE3 = '/>'.freeze
1446
+ ATTR_EQ = '="'.freeze
1442
1447
  #element
1443
- TAG_SEARCH_1_1 = '(|\\s[^<>]*)>(((?!('
1444
- TAG_SEARCH_1_2 = '[^<>]*>)).)*)<\\/'
1445
- TAG_SEARCH_1_3 = '(|\\s[^<>]*)\\/>'
1446
- TAG_SEARCH_1_4 = '(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1447
- TAG_SEARCH_1_4_2 = '(|\\s[^<>]*)>'
1448
-
1449
- TAG_SEARCH_NC_1_1 = '(?:|\\s[^<>]*)>((?!('
1450
- TAG_SEARCH_NC_1_2 = '[^<>]*>)).)*<\\/'
1451
- TAG_SEARCH_NC_1_3 = '(?:|\\s[^<>]*)\\/>'
1452
- TAG_SEARCH_NC_1_4 = '(?:\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1453
- TAG_SEARCH_NC_1_4_2 = '(?:|\\s[^<>]*)>'
1454
-
1455
- TAG_SEARCH_2_1 = '(\\s[^<>]*'
1456
- TAG_SEARCH_2_1_2 = '(\\s[^<>]*(?:'
1457
- TAG_SEARCH_2_2 = '"[^<>]*)>(((?!('
1458
- TAG_SEARCH_2_2_2 = '")[^<>]*)>(((?!('
1459
- TAG_SEARCH_2_3 = '"[^<>]*)'
1460
- TAG_SEARCH_2_3_2 = '"[^<>]*)\\/>'
1461
- TAG_SEARCH_2_3_2_2 = '")[^<>]*)\\/>'
1462
- TAG_SEARCH_2_4 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1463
- TAG_SEARCH_2_4_2 = '(?:[^<>\\/]*>|(?:(?!([^<>]*\\/>))[^<>]*>)))'
1464
- TAG_SEARCH_2_4_2_2 = '")([^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>)))'
1465
- TAG_SEARCH_2_4_2_3 = '"'
1466
- TAG_SEARCH_2_4_3 = '"[^<>]*)>'
1467
- TAG_SEARCH_2_4_3_2 = '")[^<>]*)>'
1468
- TAG_SEARCH_2_4_4 = '"[^<>]*>'
1469
-
1470
- TAG_SEARCH_2_6 = '"[^<>]*'
1471
- TAG_SEARCH_2_7 = '"|'
1472
-
1473
- TAG_SEARCH_NC_2_1 = '\\s[^<>]*'
1474
- TAG_SEARCH_NC_2_1_2 = '\\s[^<>]*(?:'
1475
- TAG_SEARCH_NC_2_2 = '"[^<>]*>((?!('
1476
- TAG_SEARCH_NC_2_2_2 = '")[^<>]*>((?!('
1477
- TAG_SEARCH_NC_2_3 = '"[^<>]*)'
1478
- TAG_SEARCH_NC_2_3_2 = '"[^<>]*\\/>'
1479
- TAG_SEARCH_NC_2_3_2_2 = '")[^<>]*\\/>'
1480
- TAG_SEARCH_NC_2_4 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1481
- TAG_SEARCH_NC_2_4_2 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1482
- TAG_SEARCH_NC_2_4_2_2 = '")(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1483
- TAG_SEARCH_NC_2_4_2_3 = '"'
1484
- TAG_SEARCH_NC_2_4_3 = '"[^<>]*>'
1485
- TAG_SEARCH_NC_2_4_3_2 = '")[^<>]*>'
1486
- TAG_SEARCH_NC_2_4_4 = '"[^<>]*>'
1487
- TAG_SEARCH_NC_2_6 = '"[^<>]*'
1488
- TAG_SEARCH_NC_2_7 = '"|'
1489
-
1490
- TAG_SEARCH_3_1 = '<([^<>"]*)\\s[^<>]*'
1491
- TAG_SEARCH_3_1_2 = '<([^<>"]*)\\s([^<>]*'
1492
- TAG_SEARCH_3_1_2_2 = '<([^<>"]*)\\s([^<>]*('
1493
-
1494
- TAG_SEARCH_3_2 = '"[^<>]*\\/>'
1495
- TAG_SEARCH_3_2_2 = '"[^<>]*)\\/>'
1496
- TAG_SEARCH_3_2_2_2 = '")[^<>]*)\\/>'
1497
-
1498
- TAG_SEARCH_4_1 = '(\\s[^<>\\/]*)>('
1499
- TAG_SEARCH_4_2 = '.*?<'
1500
- TAG_SEARCH_4_3 = '(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1501
- TAG_SEARCH_4_4 = '<\\/'
1502
- TAG_SEARCH_4_5 = '.*?<\/'
1503
- TAG_SEARCH_4_6 = '.*?)<\/'
1504
- TAG_SEARCH_4_7 = '"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))('
1505
- TAG_SEARCH_4_7_2 = '")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))('
1506
-
1507
- TAG_SEARCH_NC_3_1 = '<[^<>"]*\\s[^<>]*'
1508
- TAG_SEARCH_NC_3_1_2 = '<([^<>"]*)\\s(?:[^<>]*'
1509
- TAG_SEARCH_NC_3_1_2_2 = '<([^<>"]*)\\s(?:[^<>]*('
1510
- TAG_SEARCH_NC_3_2 = '"[^<>]*\\/>'
1511
- TAG_SEARCH_NC_3_2_2 = '"[^<>]*)\\/>'
1512
- TAG_SEARCH_NC_3_2_2_2 = '")[^<>]*)\\/>'
1513
- #TAG_SEARCH_NC_4_1 = "(?:\\s[^<>\\/]*)>("
1514
- #TAG_SEARCH_NC_4_2 = ".*?<"
1515
- #TAG_SEARCH_NC_4_3 = "(?:\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
1516
- #TAG_SEARCH_NC_4_4 = "<\\/"
1517
- #TAG_SEARCH_NC_4_5 = ".*?<\/"
1518
- #TAG_SEARCH_NC_4_6 = ".*?<\/"
1519
- #TAG_SEARCH_NC_4_7 = "\"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
1520
- #TAG_SEARCH_NC_4_7_2 = "\")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
1448
+ TAG_SEARCH_1_1 = '(|\\s[^<>]*)>(((?!('.freeze
1449
+ TAG_SEARCH_1_2 = '[^<>]*>)).)*)<\\/'.freeze
1450
+ TAG_SEARCH_1_3 = '(|\\s[^<>]*)\\/>'.freeze
1451
+ TAG_SEARCH_1_4 = '(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1452
+ TAG_SEARCH_1_4_2 = '(|\\s[^<>]*)>'.freeze
1453
+
1454
+ TAG_SEARCH_NC_1_1 = '(?:|\\s[^<>]*)>((?!('.freeze
1455
+ TAG_SEARCH_NC_1_2 = '[^<>]*>)).)*<\\/'.freeze
1456
+ TAG_SEARCH_NC_1_3 = '(?:|\\s[^<>]*)\\/>'.freeze
1457
+ TAG_SEARCH_NC_1_4 = '(?:\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1458
+ TAG_SEARCH_NC_1_4_2 = '(?:|\\s[^<>]*)>'.freeze
1459
+
1460
+ TAG_SEARCH_2_1 = '(\\s[^<>]*'.freeze
1461
+ TAG_SEARCH_2_1_2 = '(\\s[^<>]*(?:'.freeze
1462
+ TAG_SEARCH_2_2 = '"[^<>]*)>(((?!('.freeze
1463
+ TAG_SEARCH_2_2_2 = '")[^<>]*)>(((?!('.freeze
1464
+ TAG_SEARCH_2_3 = '"[^<>]*)'.freeze
1465
+ TAG_SEARCH_2_3_2 = '"[^<>]*)\\/>'.freeze
1466
+ TAG_SEARCH_2_3_2_2 = '")[^<>]*)\\/>'.freeze
1467
+ TAG_SEARCH_2_4 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1468
+ TAG_SEARCH_2_4_2 = '(?:[^<>\\/]*>|(?:(?!([^<>]*\\/>))[^<>]*>)))'.freeze
1469
+ TAG_SEARCH_2_4_2_2 = '")([^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>)))'.freeze
1470
+ TAG_SEARCH_2_4_2_3 = '"'.freeze
1471
+ TAG_SEARCH_2_4_3 = '"[^<>]*)>'.freeze
1472
+ TAG_SEARCH_2_4_3_2 = '")[^<>]*)>'.freeze
1473
+ TAG_SEARCH_2_4_4 = '"[^<>]*>'.freeze
1474
+
1475
+ TAG_SEARCH_2_6 = '"[^<>]*'.freeze
1476
+ TAG_SEARCH_2_7 = '"|'.freeze
1477
+
1478
+ TAG_SEARCH_NC_2_1 = '\\s[^<>]*'.freeze
1479
+ TAG_SEARCH_NC_2_1_2 = '\\s[^<>]*(?:'.freeze
1480
+ TAG_SEARCH_NC_2_2 = '"[^<>]*>((?!('.freeze
1481
+ TAG_SEARCH_NC_2_2_2 = '")[^<>]*>((?!('.freeze
1482
+ TAG_SEARCH_NC_2_3 = '"[^<>]*)'.freeze
1483
+ TAG_SEARCH_NC_2_3_2 = '"[^<>]*\\/>'.freeze
1484
+ TAG_SEARCH_NC_2_3_2_2 = '")[^<>]*\\/>'.freeze
1485
+ TAG_SEARCH_NC_2_4 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1486
+ TAG_SEARCH_NC_2_4_2 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1487
+ TAG_SEARCH_NC_2_4_2_2 = '")(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1488
+ TAG_SEARCH_NC_2_4_2_3 = '"'.freeze
1489
+ TAG_SEARCH_NC_2_4_3 = '"[^<>]*>'.freeze
1490
+ TAG_SEARCH_NC_2_4_3_2 = '")[^<>]*>'.freeze
1491
+ TAG_SEARCH_NC_2_4_4 = '"[^<>]*>'.freeze
1492
+ TAG_SEARCH_NC_2_6 = '"[^<>]*'.freeze
1493
+ TAG_SEARCH_NC_2_7 = '"|'.freeze
1494
+
1495
+ TAG_SEARCH_3_1 = '<([^<>"]*)\\s[^<>]*'.freeze
1496
+ TAG_SEARCH_3_1_2 = '<([^<>"]*)\\s([^<>]*'.freeze
1497
+ TAG_SEARCH_3_1_2_2 = '<([^<>"]*)\\s([^<>]*('.freeze
1498
+
1499
+ TAG_SEARCH_3_2 = '"[^<>]*\\/>'.freeze
1500
+ TAG_SEARCH_3_2_2 = '"[^<>]*)\\/>'.freeze
1501
+ TAG_SEARCH_3_2_2_2 = '")[^<>]*)\\/>'.freeze
1502
+
1503
+ TAG_SEARCH_4_1 = '(\\s[^<>\\/]*)>('.freeze
1504
+ TAG_SEARCH_4_2 = '.*?<'.freeze
1505
+ TAG_SEARCH_4_3 = '(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1506
+ TAG_SEARCH_4_4 = '<\\/'.freeze
1507
+ TAG_SEARCH_4_5 = '.*?<\/'.freeze
1508
+ TAG_SEARCH_4_6 = '.*?)<\/'.freeze
1509
+ TAG_SEARCH_4_7 = '"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))('.freeze
1510
+ TAG_SEARCH_4_7_2 = '")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))('.freeze
1511
+
1512
+ TAG_SEARCH_NC_3_1 = '<[^<>"]*\\s[^<>]*'.freeze
1513
+ TAG_SEARCH_NC_3_1_2 = '<([^<>"]*)\\s(?:[^<>]*'.freeze
1514
+ TAG_SEARCH_NC_3_1_2_2 = '<([^<>"]*)\\s(?:[^<>]*('.freeze
1515
+ TAG_SEARCH_NC_3_2 = '"[^<>]*\\/>'.freeze
1516
+ TAG_SEARCH_NC_3_2_2 = '"[^<>]*)\\/>'.freeze
1517
+ TAG_SEARCH_NC_3_2_2_2 = '")[^<>]*)\\/>'.freeze
1518
+ #TAG_SEARCH_NC_4_1 = "(?:\\s[^<>\\/]*)>(".freeze
1519
+ #TAG_SEARCH_NC_4_2 = ".*?<".freeze
1520
+ #TAG_SEARCH_NC_4_3 = "(?:\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))".freeze
1521
+ #TAG_SEARCH_NC_4_4 = "<\\/".freeze
1522
+ #TAG_SEARCH_NC_4_5 = ".*?<\/".freeze
1523
+ #TAG_SEARCH_NC_4_6 = ".*?<\/".freeze
1524
+ #TAG_SEARCH_NC_4_7 = "\"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))(".freeze
1525
+ #TAG_SEARCH_NC_4_7_2 = "\")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))(".freeze
1521
1526
 
1522
1527
  #find
1523
1528
  # E
1524
- PATTERN_FIND_1 = '^([^,\\[\\]#\\.]+)$'
1529
+ PATTERN_FIND_1 = '^([^,\\[\\]#\\.]+)$'.freeze
1525
1530
  # #id_attribute_value
1526
- PATTERN_FIND_2_1 = '^#([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1531
+ PATTERN_FIND_2_1 = '^#([^\\.,\\[\\]#][^,\\[\\]#]*)$'.freeze
1527
1532
  # .class_attribute_value
1528
- PATTERN_FIND_2_2 = '^\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1533
+ PATTERN_FIND_2_2 = '^\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'.freeze
1529
1534
  # [attribute_name=attribute_value]
1530
- PATTERN_FIND_2_3 = '^\\[([^\\[\\],]+)=([^\\[\\],]+)\\]$'
1535
+ PATTERN_FIND_2_3 = '^\\[([^\\[\\],]+)=([^\\[\\],]+)\\]$'.freeze
1531
1536
  # E[attribute_name=attribute_value]
1532
- PATTERN_FIND_3_1 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,\\[\\]]+)=([^,\\[\\]]+)\\]$'
1537
+ PATTERN_FIND_3_1 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,\\[\\]]+)=([^,\\[\\]]+)\\]$'.freeze
1533
1538
  # E#id_attribute_value
1534
- PATTERN_FIND_3_2 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)#([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1539
+ PATTERN_FIND_3_2 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)#([^\\.,\\[\\]#][^,\\[\\]#]*)$'.freeze
1535
1540
  # E.class_attribute_value
1536
- PATTERN_FIND_3_3 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1541
+ PATTERN_FIND_3_3 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'.freeze
1537
1542
  # [attribute_name1=attribute_value1][attribute_name2=attribute_value2]
1538
1543
  PATTERN_FIND_4 = '^\\[([^,]+)=([^,]+)\\]\\[([^,]+)=([^,]+)\\]$'
1539
1544
  # E[attribute_name1=attribute_value1][attribute_name2=attribute_value2]
1540
- PATTERN_FIND_5 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,]+)=([^,]+)\\]\\[([^,]+)=([^,]+)\\]$'
1545
+ PATTERN_FIND_5 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,]+)=([^,]+)\\]\\[([^,]+)=([^,]+)\\]$'.freeze
1541
1546
 
1542
1547
  @@pattern_find_1 = Regexp.new(PATTERN_FIND_1)
1543
1548
  @@pattern_find_2_1 = Regexp.new(PATTERN_FIND_2_1)
@@ -1550,98 +1555,98 @@ module Meteor
1550
1555
  @@pattern_find_5 = Regexp.new(PATTERN_FIND_5)
1551
1556
 
1552
1557
  #setAttribute
1553
- SET_ATTR_1 = '="[^"]*"'
1558
+ SET_ATTR_1 = '="[^"]*"'.freeze
1554
1559
  #getAttributeValue
1555
- GET_ATTR_1 = '="([^"]*)"'
1560
+ GET_ATTR_1 = '="([^"]*)"'.freeze
1556
1561
  #attributeMap
1557
- GET_ATTRS_MAP = '([^\\s]*)="([^\"]*)"'
1562
+ GET_ATTRS_MAP = '([^\\s]*)="([^\"]*)"'.freeze
1558
1563
  #removeAttribute
1559
- ERASE_ATTR_1 = '="[^"]*"\\s?'
1564
+ ERASE_ATTR_1 = '="[^"]*"\\s?'.freeze
1560
1565
 
1561
1566
  #cxtag
1562
- #SEARCH_CX_1 = '<!--\\s@'
1563
- #SEARCH_CX_2 = '\\s([^<>]*id="'
1564
- #SEARCH_CX_3 = '\"[^<>]*)-->(((?!(<!--\\s\\/@'
1565
- #SEARCH_CX_4 = ')).)*)<!--\\s\\/@'
1566
- #SEARCH_CX_5 = '\\s-->'
1567
- #SEARCH_CX_6 = '<!--\\s@([^<>]*)\\s[^<>]*id="'
1568
-
1569
- SEARCH_CX_1 = '<!--\\s@'
1567
+ #SEARCH_CX_1 = '<!--\\s@'.freeze
1568
+ #SEARCH_CX_2 = '\\s([^<>]*id="'.freeze
1569
+ #SEARCH_CX_3 = '\"[^<>]*)-->(((?!(<!--\\s\\/@'.freeze
1570
+ #SEARCH_CX_4 = ')).)*)<!--\\s\\/@'.freeze
1571
+ #SEARCH_CX_5 = '\\s-->'.freeze
1572
+ #SEARCH_CX_6 = '<!--\\s@([^<>]*)\\s[^<>]*id="'.freeze
1573
+
1574
+ SEARCH_CX_1 = '<!--\\s@'.freeze
1570
1575
  #SEARCH_CX_1 = "<!--\\s@"
1571
- SEARCH_CX_2 = '\\s([^<>]*id="'
1572
- #SEARCH_CX_2 = "\\s([^<>]*id=\""
1573
- SEARCH_CX_3 = '"[^<>]*)-->(((?!(<!--\\s/@'
1574
- #SEARCH_CX_3 = "\"[^<>]*)-->(((?!(<!--\\s/@"
1575
- SEARCH_CX_4 = ')).)*)<!--\\s/@'
1576
- #SEARCH_CX_4 = ")).)*)<!--\\s/@"
1577
- SEARCH_CX_5 = '\\s-->'
1578
- #SEARCH_CX_5 = "\\s-->"
1579
- SEARCH_CX_6 = '<!--\\s@([^<>]*)\\s[^<>]*id="'
1580
- #SEARCH_CX_6 = "<!--\\s@([^<>]*)\\s[^<>]*id=\""
1576
+ SEARCH_CX_2 = '\\s([^<>]*id="'.freeze
1577
+ #SEARCH_CX_2 = "\\s([^<>]*id=\"".freeze
1578
+ SEARCH_CX_3 = '"[^<>]*)-->(((?!(<!--\\s/@'.freeze
1579
+ #SEARCH_CX_3 = "\"[^<>]*)-->(((?!(<!--\\s/@".freeze
1580
+ SEARCH_CX_4 = ')).)*)<!--\\s/@'.freeze
1581
+ #SEARCH_CX_4 = ")).)*)<!--\\s/@".freeze
1582
+ SEARCH_CX_5 = '\\s-->'.freeze
1583
+ #SEARCH_CX_5 = "\\s-->".freeze
1584
+ SEARCH_CX_6 = '<!--\\s@([^<>]*)\\s[^<>]*id="'.freeze
1585
+ #SEARCH_CX_6 = "<!--\\s@([^<>]*)\\s[^<>]*id=\"".freeze
1581
1586
 
1582
1587
  #setElementToCXTag
1583
- SET_CX_1 = '<!-- @'
1584
- SET_CX_2 = '-->'
1585
- SET_CX_3 = '<!-- /@'
1586
- SET_CX_4 = ' -->'
1588
+ SET_CX_1 = '<!-- @'.freeze
1589
+ SET_CX_2 = '-->'.freeze
1590
+ SET_CX_3 = '<!-- /@'.freeze
1591
+ SET_CX_4 = ' -->'.freeze
1587
1592
 
1588
1593
  #setMonoInfo
1589
- SET_MONO_1 = '\\A[^<>]*\\Z'
1594
+ SET_MONO_1 = '\\A[^<>]*\\Z'.freeze
1590
1595
 
1591
1596
  @@pattern_set_mono1 = Regexp.new(SET_MONO_1)
1592
1597
 
1593
1598
  #clean
1594
- CLEAN_1 = '<!--\\s@[^<>]*\\s[^<>]*(\\s)*-->'
1595
- CLEAN_2 = '<!--\\s\\/@[^<>]*(\\s)*-->'
1599
+ CLEAN_1 = '<!--\\s@[^<>]*\\s[^<>]*(\\s)*-->'.freeze
1600
+ CLEAN_2 = '<!--\\s\\/@[^<>]*(\\s)*-->'.freeze
1596
1601
  #escape
1597
- AND_1 = '&'
1598
- AND_2 = '&amp;'
1599
- AND_3 = 'amp'
1600
- LT_1 = '<'
1601
- LT_2 = '&lt;'
1602
- LT_3 = 'lt'
1603
- GT_1 = '>'
1604
- GT_2 = '&gt;'
1605
- GT_3 = 'gt'
1606
- QO_2 = '&quot;'
1607
- QO_3 = 'quot'
1608
- AP_1 = '\''
1609
- AP_2 = '&apos;'
1610
- AP_3 = 'apos'
1611
- #EN_1 = "\\\\"
1612
- EN_1 = "\\"
1613
- #EN_2 = "\\\\\\\\"
1614
- #DOL_1 = "\\\$"
1615
- #DOL_2 = "\\\\\\$"
1616
- #PLUS_1 = "\\\+"
1617
- #PLUS_2 = "\\\\\\+"
1618
-
1619
- ESCAPE_ENTITY_REF = ''
1620
-
1621
- #SUB_REGEX1 = (\\\\*)\\\\([0-9]+)'
1622
- #SUB_REGEX2 = '\\1\\1\\\\\\\\\\2'
1623
- #SUB_REGEX3 = '\\1\\1\\1\\1\\\\\\\\\\\\\\\\\\2'
1624
-
1625
- #BRAC_OPEN_1 = "\\\("
1626
- #BRAC_OPEN_2 = "\\\\\\("
1627
- #BRAC_CLOSE_1 = "\\\)"
1628
- #BRAC_CLOSE_2 = "\\\\\\)"
1629
- #SBRAC_OPEN_1 = "\\\["
1630
- #SBRAC_OPEN_2 = "\\\\\\["
1631
- #SBRAC_CLOSE_1 = "\\\]"
1632
- #SBRAC_CLOSE_2 = "\\\\\\]"
1633
- #CBRAC_OPEN_1 = "\\\{"
1634
- #CBRAC_OPEN_2 = "\\\\\\{"
1635
- #CBRAC_CLOSE_1 = "\\\}"
1636
- #CBRAC_CLOSE_2 = "\\\\\\}"
1637
- #COMMA_1 = "\\\."
1638
- #COMMA_2 = "\\\\\\."
1639
- #VLINE_1 = "\\\|"
1640
- #VLINE_2 = "\\\\\\|"
1641
- #QMARK_1 = "\\\?"
1642
- #QMARK_2 = "\\\\\\?"
1643
- #ASTERISK_1 = "\\\*"
1644
- #ASTERISK_2 = "\\\\\\*"
1602
+ AND_1 = '&'.freeze
1603
+ AND_2 = '&amp;'.freeze
1604
+ AND_3 = 'amp'.freeze
1605
+ LT_1 = '<'.freeze
1606
+ LT_2 = '&lt;'.freeze
1607
+ LT_3 = 'lt'.freeze
1608
+ GT_1 = '>'.freeze
1609
+ GT_2 = '&gt;'.freeze
1610
+ GT_3 = 'gt'.freeze
1611
+ QO_2 = '&quot;'.freeze
1612
+ QO_3 = 'quot'.freeze
1613
+ AP_1 = '\''.freeze
1614
+ AP_2 = '&apos;'.freeze
1615
+ AP_3 = 'apos'.freeze
1616
+ #EN_1 = "\\\\".freeze
1617
+ EN_1 = "\\".freeze
1618
+ #EN_2 = "\\\\\\\\".freeze
1619
+ #DOL_1 = "\\\$".freeze
1620
+ #DOL_2 = "\\\\\\$".freeze
1621
+ #PLUS_1 = "\\\+".freeze
1622
+ #PLUS_2 = "\\\\\\+".freeze
1623
+
1624
+ ESCAPE_ENTITY_REF = ''.freeze
1625
+
1626
+ #SUB_REGEX1 = (\\\\*)\\\\([0-9]+)'.freeze
1627
+ #SUB_REGEX2 = '\\1\\1\\\\\\\\\\2'.freeze
1628
+ #SUB_REGEX3 = '\\1\\1\\1\\1\\\\\\\\\\\\\\\\\\2'.freeze
1629
+
1630
+ #BRAC_OPEN_1 = "\\\(".freeze
1631
+ #BRAC_OPEN_2 = "\\\\\\(".freeze
1632
+ #BRAC_CLOSE_1 = "\\\)".freeze
1633
+ #BRAC_CLOSE_2 = "\\\\\\)".freeze
1634
+ #SBRAC_OPEN_1 = "\\\[".freeze
1635
+ #SBRAC_OPEN_2 = "\\\\\\[".freeze
1636
+ #SBRAC_CLOSE_1 = "\\\]".freeze
1637
+ #SBRAC_CLOSE_2 = "\\\\\\]".freeze
1638
+ #CBRAC_OPEN_1 = "\\\{".freeze
1639
+ #CBRAC_OPEN_2 = "\\\\\\{".freeze
1640
+ #CBRAC_CLOSE_1 = "\\\}".freeze
1641
+ #CBRAC_CLOSE_2 = "\\\\\\}".freeze
1642
+ #COMMA_1 = "\\\.".freeze
1643
+ #COMMA_2 = "\\\\\\.".freeze
1644
+ #VLINE_1 = "\\\|".freeze
1645
+ #VLINE_2 = "\\\\\\|".freeze
1646
+ #QMARK_1 = "\\\?".freeze
1647
+ #QMARK_2 = "\\\\\\?".freeze
1648
+ #ASTERISK_1 = "\\\*".freeze
1649
+ #ASTERISK_2 = "\\\\\\*".freeze
1645
1650
 
1646
1651
  #@@pattern_en = Regexp.new(EN_1)
1647
1652
  #@@pattern_dol = Regexp.new(DOL_1)
@@ -1664,12 +1669,12 @@ module Meteor
1664
1669
  @@pattern_clean1 = Regexp.new(CLEAN_1)
1665
1670
  @@pattern_clean2 = Regexp.new(CLEAN_2)
1666
1671
 
1667
- MODE_UTF8 = 'r:UTF-8'
1668
- MODE_BF = 'r:'
1669
- MODE_AF = ':utf-8'
1672
+ MODE_UTF8 = 'r:UTF-8'.freeze
1673
+ MODE_BF = 'r:'.freeze
1674
+ MODE_AF = ':utf-8'.freeze
1670
1675
 
1671
- CSS_ID = 'id'
1672
- CSS_CLASS = 'class'
1676
+ CSS_ID = 'id'.freeze
1677
+ CSS_CLASS = 'class'.freeze
1673
1678
 
1674
1679
  attr_accessor :element_cache
1675
1680
  attr_accessor :doc_type
@@ -3153,18 +3158,18 @@ module Meteor
3153
3158
  # @return [String] attribute value (属性値)
3154
3159
  #
3155
3160
  def attr(elm, attr,*args)
3156
- if attr.kind_of?(String)
3161
+ if attr.kind_of?(String) || attr.kind_of?(Symbol)
3157
3162
  case args.length
3158
3163
  when ZERO
3159
- get_attr_value(elm, attr)
3164
+ get_attr_value(elm, attr.to_s)
3160
3165
  when ONE
3161
3166
  elm.document_sync = true
3162
- set_attribute_3(elm, attr,args[0])
3167
+ set_attribute_3(elm, attr.to_s,args[0])
3163
3168
  end
3164
3169
 
3165
3170
  elsif attr.kind_of?(Hash) && attr.size == 1
3166
3171
  elm.document_sync = true
3167
- set_attribute_3(elm, attr.keys[0], attr.values[0])
3172
+ set_attribute_3(elm, attr.keys[0].to_s, attr.values[0])
3168
3173
  #elsif attrs.kind_of?(Hash) && attrs.size >= 1
3169
3174
  # elm.document_sync = true
3170
3175
  # attrs.each{|name,value|
@@ -3271,7 +3276,7 @@ module Meteor
3271
3276
  if args[0].kind_of?(Hash)
3272
3277
  if args[0].size == 1
3273
3278
  elm.document_sync = true
3274
- set_attribute_3(elm, args[0].keys[0], args[0].values[0])
3279
+ set_attribute_3(elm, args[0].keys[0].to_s, args[0].values[0])
3275
3280
  elsif args[0].size >= 1
3276
3281
  set_attrs(elm, args[0])
3277
3282
  else
@@ -3312,7 +3317,7 @@ module Meteor
3312
3317
  if !elm.cx
3313
3318
  elm.document_sync = true
3314
3319
  attr_map.each do |name, value|
3315
- set_attribute_3(elm, name, value)
3320
+ set_attribute_3(elm, name.to_s, value)
3316
3321
  end
3317
3322
  end
3318
3323
  elm
@@ -3373,9 +3378,9 @@ module Meteor
3373
3378
  if !elm.cx
3374
3379
  attr_map.map.each do |name, attr|
3375
3380
  if attr_map.changed(name)
3376
- edit_attrs_(elm, name, attr.value)
3381
+ edit_attrs_(elm, name.to_s, attr.value)
3377
3382
  elsif attr_map.removed(name)
3378
- remove_attrs_(elm, name)
3383
+ remove_attrs_(elm, name.to_s)
3379
3384
  end
3380
3385
  end
3381
3386
  end
@@ -3391,6 +3396,7 @@ module Meteor
3391
3396
  # @param [String] content content of element (要素の内容)
3392
3397
  # @param [true,false] entity_ref entity reference flag (エンティティ参照フラグ)
3393
3398
  # @return [Meteor::Element] element (要素)
3399
+ # @deprecated
3394
3400
  # @overload content(elm,content)
3395
3401
  # set content of element (要素の内容をセットする)
3396
3402
  # @param [Meteor::Element] elm element (要素)
@@ -3433,7 +3439,7 @@ module Meteor
3433
3439
  #
3434
3440
  def set_content_3(elm, content, entity_ref=true)
3435
3441
 
3436
- if entity_ref
3442
+ if entity_ref || !elm.raw_content
3437
3443
  escape_content(content, elm)
3438
3444
  end
3439
3445
  elm.mixed_content = content
@@ -3450,7 +3456,10 @@ module Meteor
3450
3456
  #
3451
3457
  def set_content_2(elm, content)
3452
3458
  #set_content_3(elm, content)
3453
- elm.mixed_content = escape_content(content, elm)
3459
+ unless elm.raw_content
3460
+ escape_content(content, elm)
3461
+ end
3462
+ elm.mixed_content = content
3454
3463
  elm
3455
3464
  end
3456
3465
 
@@ -3484,7 +3493,7 @@ module Meteor
3484
3493
  def remove_attr(elm, attr_name)
3485
3494
  if !elm.cx
3486
3495
  elm.document_sync = true
3487
- remove_attrs_(elm, attr_name)
3496
+ remove_attrs_(elm, attr_name.to_s)
3488
3497
  end
3489
3498
 
3490
3499
  elm
@@ -3526,12 +3535,12 @@ module Meteor
3526
3535
  def cxtag(*args)
3527
3536
  case args.length
3528
3537
  when ONE
3529
- cxtag_1(args[0])
3538
+ cxtag_1(args[0].to_s)
3530
3539
  if @elm_
3531
3540
  @element_cache.store(@elm_.object_id, @elm_)
3532
3541
  end
3533
3542
  when TWO
3534
- cxtag_2(args[0], args[1])
3543
+ cxtag_2(args[0].to_s, args[1].to_s)
3535
3544
  if @elm_
3536
3545
  @element_cache.store(@elm_.object_id, @elm_)
3537
3546
  end
@@ -3729,7 +3738,7 @@ module Meteor
3729
3738
 
3730
3739
  #
3731
3740
  # mirror element (要素を射影する)
3732
- #
3741
+ #
3733
3742
  # @param [Meteor::Element] elm element (要素)
3734
3743
  # @return [Meteor::Element] element (要素)
3735
3744
  #
@@ -3952,41 +3961,41 @@ module Meteor
3952
3961
 
3953
3962
  #KAIGYO_CODE = "\r?\n|\r"
3954
3963
  #KAIGYO_CODE = "\r\n|\n|\r"
3955
- KAIGYO_CODE = ["\r\n", "\n", "\r"]
3956
- NBSP_2 = '&nbsp;'
3957
- NBSP_3 = 'nbsp'
3958
- BR_1 = "\r?\n|\r"
3959
- BR_2 = '<br>'
3964
+ KAIGYO_CODE = ["\r\n".freeze, "\n".freeze, "\r".freeze]
3965
+ NBSP_2 = '&nbsp;'.freeze
3966
+ NBSP_3 = 'nbsp'.freeze
3967
+ BR_1 = "\r?\n|\r".freeze
3968
+ BR_2 = '<br>'.freeze
3960
3969
 
3961
- META = 'META'
3962
- META_S = 'meta'
3970
+ META = 'META'.freeze
3971
+ META_S = 'meta'.freeze
3963
3972
 
3964
3973
  #MATCH_TAG = "br|hr|img|input|meta|base"
3965
- @@match_tag = ['br', 'hr', 'img', 'input', 'meta', 'base'] #[Array] 内容のない要素
3974
+ @@match_tag = ['br'.freeze, 'hr'.freeze, 'img'.freeze, 'input'.freeze, 'meta'.freeze, 'base'.freeze] #[Array] 内容のない要素
3966
3975
  #@@match_tag_2 = "textarea|option|pre"
3967
- @@match_tag_2 =['textarea', 'option', 'pre'] #[Array] 改行を<br>に変換する必要のない要素
3976
+ @@match_tag_2 =['textarea'.freeze, 'option'.freeze, 'pre'.freeze] #[Array] 改行を<br>に変換する必要のない要素
3968
3977
 
3969
- @@match_tag_sng = ['texarea', 'select', 'option', 'form', 'fieldset'] #[Array] 入れ子にできない要素
3978
+ @@match_tag_sng = ['texarea'.freeze, 'select'.freeze, 'option'.freeze, 'form'.freeze, 'fieldset'.freeze] #[Array] 入れ子にできない要素
3970
3979
 
3971
- HTTP_EQUIV = 'http-equiv'
3972
- CONTENT_TYPE = 'Content-Type'
3973
- CONTENT = 'content'
3980
+ HTTP_EQUIV = 'http-equiv'.freeze
3981
+ CONTENT_TYPE = 'Content-Type'.freeze
3982
+ CONTENT = 'content'.freeze
3974
3983
 
3975
- @@attr_logic = ['disabled', 'readonly', 'checked', 'selected', 'multiple'] #[Array] 論理値で指定する属性
3976
- OPTION = 'option'
3977
- SELECTED = 'selected'
3978
- INPUT = 'input'
3979
- CHECKED = 'checked'
3980
- RADIO = 'radio'
3984
+ @@attr_logic = ['disabled'.freeze, 'readonly'.freeze, 'checked'.freeze, 'selected'.freeze, 'multiple'.freeze] #[Array] 論理値で指定する属性
3985
+ OPTION = 'option'.freeze
3986
+ SELECTED = 'selected'.freeze
3987
+ INPUT = 'input'.freeze
3988
+ CHECKED = 'checked'.freeze
3989
+ RADIO = 'radio'.freeze
3981
3990
  #DISABLE_ELEMENT = "input|textarea|select|optgroup"
3982
- DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup'] #[Array] disabled属性のある要素
3983
- DISABLED = 'disabled'
3991
+ DISABLE_ELEMENT = ['input'.freeze, 'textarea'.freeze, 'select'.freeze, 'optgroup'.freeze] #[Array] disabled属性のある要素
3992
+ DISABLED = 'disabled'.freeze
3984
3993
  #READONLY_TYPE = "text|password"
3985
- READONLY_TYPE = ['text', 'password'] #[Array] readonly属性のあるinput要素のタイプ
3986
- TEXTAREA = 'textarea'
3987
- READONLY='readonly'
3988
- SELECT = 'select'
3989
- MULTIPLE = 'multiple'
3994
+ READONLY_TYPE = ['text'.freeze, 'password'.freeze] #[Array] readonly属性のあるinput要素のタイプ
3995
+ TEXTAREA = 'textarea'.freeze
3996
+ READONLY='readonly'.freeze
3997
+ SELECT = 'select'.freeze
3998
+ MULTIPLE = 'multiple'.freeze
3990
3999
 
3991
4000
  #@@pattern_option = Regexp.new(OPTION)
3992
4001
  #@@pattern_selected = Regexp.new(SELECTED)
@@ -4001,33 +4010,33 @@ module Meteor
4001
4010
  #@@pattern_select = Regexp.new(SELECT)
4002
4011
  #@@pattern_multiple = Regexp.new(MULTIPLE)
4003
4012
 
4004
- SELECTED_M = '\\sselected\\s|\\sselected$|\\sSELECTED\\s|\\sSELECTED$'
4013
+ SELECTED_M = '\\sselected\\s|\\sselected$|\\sSELECTED\\s|\\sSELECTED$'.freeze
4005
4014
  #SELECTED_M = [' selected ',' selected',' SELECTED ',' SELECTED']
4006
- SELECTED_R = 'selected\\s|selected$|SELECTED\\s|SELECTED$'
4007
- CHECKED_M = '\\schecked\\s|\\schecked$|\\sCHECKED\\s|\\sCHECKED$'
4015
+ SELECTED_R = 'selected\\s|selected$|SELECTED\\s|SELECTED$'.freeze
4016
+ CHECKED_M = '\\schecked\\s|\\schecked$|\\sCHECKED\\s|\\sCHECKED$'.freeze
4008
4017
  #CHECKED_M = [' checked ',' checked',' CHECKED ',' CHECKED']
4009
- CHECKED_R = 'checked\\s|checked$|CHECKED\\s|CHECKED$'
4010
- DISABLED_M = '\\sdisabled\\s|\\sdisabled$|\\sDISABLED\\s|\\sDISABLED$'
4018
+ CHECKED_R = 'checked\\s|checked$|CHECKED\\s|CHECKED$'.freeze
4019
+ DISABLED_M = '\\sdisabled\\s|\\sdisabled$|\\sDISABLED\\s|\\sDISABLED$'.freeze
4011
4020
  #DISABLED_M = [' disabled ',' disiabled',' DISABLED ',' DISABLED']
4012
- DISABLED_R = 'disabled\\s|disabled$|DISABLED\\s|DISABLED$'
4013
- READONLY_M = '\\sreadonly\\s|\\sreadonly$|\\sREADONLY\\s|\\sREADONLY$'
4021
+ DISABLED_R = 'disabled\\s|disabled$|DISABLED\\s|DISABLED$'.freeze
4022
+ READONLY_M = '\\sreadonly\\s|\\sreadonly$|\\sREADONLY\\s|\\sREADONLY$'.freeze
4014
4023
  #READONLY_M = [' readonly ',' readonly',' READONLY ',' READONLY']
4015
- READONLY_R = 'readonly\\s|readonly$|READONLY\\s|READONLY$'
4016
- MULTIPLE_M = '\\smultiple\\s|\\smultiple$|\\sMULTIPLE\\s|\\sMULTIPLE$'
4024
+ READONLY_R = 'readonly\\s|readonly$|READONLY\\s|READONLY$'.freeze
4025
+ MULTIPLE_M = '\\smultiple\\s|\\smultiple$|\\sMULTIPLE\\s|\\sMULTIPLE$'.freeze
4017
4026
  #MULTIPLE_M = [' multiple ',' multiple',' MULTIPLE ',' MULTIPLE']
4018
- MULTIPLE_R = 'multiple\\s|multiple$|MULTIPLE\\s|MULTIPLE$'
4027
+ MULTIPLE_R = 'multiple\\s|multiple$|MULTIPLE\\s|MULTIPLE$'.freeze
4019
4028
 
4020
- TRUE = 'true'
4021
- FALSE = 'false'
4029
+ TRUE = 'true'.freeze
4030
+ FALSE = 'false'.freeze
4022
4031
 
4023
4032
  #@@pattern_true = Regexp.new(TRUE)
4024
4033
  #@@pattern_false = Regexp.new(FALSE)
4025
4034
 
4026
- TYPE_L = 'type'
4027
- TYPE_U = 'TYPE'
4035
+ TYPE_L = 'type'.freeze
4036
+ TYPE_U = 'TYPE'.freeze
4028
4037
 
4029
- PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt|nbsp);'
4030
- GET_ATTRS_MAP2='\\s(disabled|readonly|checked|selected|multiple)'
4038
+ PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt|nbsp);'.freeze
4039
+ GET_ATTRS_MAP2='\\s(disabled|readonly|checked|selected|multiple)'.freeze
4031
4040
 
4032
4041
  @@pattern_selected_m = Regexp.new(SELECTED_M)
4033
4042
  @@pattern_selected_r = Regexp.new(SELECTED_R)
@@ -4047,28 +4056,28 @@ module Meteor
4047
4056
  #@@pattern_@@match_tag2 = Regexp.new(@@match_tag_2)
4048
4057
 
4049
4058
  TABLE_FOR_ESCAPE_ = {
4050
- '&' => '&amp;',
4051
- '"' => '&quot;',
4052
- '\'' => '&apos;',
4053
- '<' => '&lt;',
4054
- '>' => '&gt;',
4055
- ' ' => '&nbsp;',
4059
+ '&' => '&amp;'.freeze,
4060
+ '"' => '&quot;'.freeze,
4061
+ '\'' => '&apos;'.freeze,
4062
+ '<' => '&lt;'.freeze,
4063
+ '>' => '&gt;'.freeze,
4064
+ ' ' => '&nbsp;'.freeze,
4056
4065
  }
4057
4066
 
4058
4067
  TABLE_FOR_ESCAPE_CONTENT_ = {
4059
- '&' => '&amp;',
4060
- '"' => '&quot;',
4061
- '\'' => '&apos;',
4062
- '<' => '&lt;',
4063
- '>' => '&gt;',
4064
- ' ' => '&nbsp;',
4065
- "\r\n" => '<br>',
4066
- "\r" => '<br>',
4067
- "\n" => '<br>',
4068
+ '&' => '&amp;'.freeze,
4069
+ '"' => '&quot;'.freeze,
4070
+ '\'' => '&apos;'.freeze,
4071
+ '<' => '&lt;'.freeze,
4072
+ '>' => '&gt;'.freeze,
4073
+ ' ' => '&nbsp;'.freeze,
4074
+ "\r\n" => '<br>'.freeze,
4075
+ "\r" => '<br>'.freeze,
4076
+ "\n" => '<br>'.freeze,
4068
4077
  }
4069
4078
 
4070
- PATTERN_ESCAPE = "[&\"'<> ]"
4071
- PATTERN_ESCAPE_CONTENT = "[&\"'<> \\n]"
4079
+ PATTERN_ESCAPE = "[&\"'<> ]".freeze
4080
+ PATTERN_ESCAPE_CONTENT = "[&\"'<> \\n]".freeze
4072
4081
 
4073
4082
  @@pattern_escape = Regexp.new(PATTERN_ESCAPE)
4074
4083
  @@pattern_escape_content = Regexp.new(PATTERN_ESCAPE_CONTENT)
@@ -4652,35 +4661,35 @@ module Meteor
4652
4661
  #
4653
4662
  class ParserImpl < Meteor::Core::Kernel
4654
4663
 
4655
- #KAIGYO_CODE = "\r?\n|\r"
4656
- KAIGYO_CODE = ["\r\n", "\n", "\r"]
4657
- NBSP_2 = '&nbsp;'
4658
- NBSP_3 = 'nbsp'
4659
- BR_1 = "\r?\n|\r"
4660
- BR_2 = '<br/>'
4661
- BR_3 = '<br\\/>'
4664
+ #KAIGYO_CODE = "\r?\n|\r".freeze
4665
+ KAIGYO_CODE = ["\r\n".freeze, "\n".freeze, "\r".freeze]
4666
+ NBSP_2 = '&nbsp;'.freeze
4667
+ NBSP_3 = 'nbsp'.freeze
4668
+ BR_1 = "\r?\n|\r".freeze
4669
+ BR_2 = '<br/>'.freeze
4670
+ BR_3 = '<br\\/>'.freeze
4662
4671
 
4663
- META = 'META'
4664
- META_S = 'meta'
4672
+ META = 'META'.freeze
4673
+ META_S = 'meta'.freeze
4665
4674
 
4666
4675
  #@@match_tag_2 = "textarea|option|pre"
4667
- @@match_tag_2 = ['textarea', 'option', 'pre'] #[Array] 改行を<br/>に変換する必要のない要素
4668
-
4669
- @@attr_logic = ['disabled', 'readonly', 'checked', 'selected', 'multiple'] #[Array] 論理値で指定する属性
4670
- OPTION = 'option'
4671
- SELECTED = 'selected'
4672
- INPUT = 'input'
4673
- CHECKED = 'checked'
4674
- RADIO = 'radio'
4676
+ @@match_tag_2 = ['textarea'.freeze, 'option'.freeze, 'pre'.freeze] #[Array] 改行を<br/>に変換する必要のない要素
4677
+
4678
+ @@attr_logic = ['disabled'.freeze, 'readonly'.freeze, 'checked'.freeze, 'selected'.freeze, 'multiple'.freeze] #[Array] 論理値で指定する属性
4679
+ OPTION = 'option'.freeze
4680
+ SELECTED = 'selected'.freeze
4681
+ INPUT = 'input'.freeze
4682
+ CHECKED = 'checked'.freeze
4683
+ RADIO = 'radio'.freeze
4675
4684
  #DISABLE_ELEMENT = "input|textarea|select|optgroup"
4676
- DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup'] #[Array] disabled属性のある要素
4677
- DISABLED = 'disabled'
4685
+ DISABLE_ELEMENT = ['input'.freeze, 'textarea'.freeze, 'select'.freeze, 'optgroup'.freeze] #[Array] disabled属性のある要素
4686
+ DISABLED = 'disabled'.freeze
4678
4687
  #READONLY_TYPE = "text|password"
4679
- READONLY_TYPE = ['text', 'password'] #[Array] readonly属性のあるinput要素のタイプ
4680
- TEXTAREA = 'textarea'
4681
- READONLY='readonly'
4682
- SELECT = 'select'
4683
- MULTIPLE = 'multiple'
4688
+ READONLY_TYPE = ['text'.freeze, 'password'.freeze] #[Array] readonly属性のあるinput要素のタイプ
4689
+ TEXTAREA = 'textarea'.freeze
4690
+ READONLY='readonly'.freeze
4691
+ SELECT = 'select'.freeze
4692
+ MULTIPLE = 'multiple'.freeze
4684
4693
 
4685
4694
  #@@pattern_option = Regexp.new(OPTION)
4686
4695
  #@@pattern_selected = Regexp.new(SELECTED)
@@ -4695,38 +4704,38 @@ module Meteor
4695
4704
  #@@pattern_select = Regexp.new(SELECT)
4696
4705
  #@@pattern_multiple = Regexp.new(MULTIPLE)
4697
4706
 
4698
- SELECTED_M = '\\sselected="[^"]*"\\s|\\sselected="[^"]*"$'
4699
- SELECTED_M1 = '\\sselected="([^"]*)"\\s|\\sselected="([^"]*)"$'
4700
- SELECTED_R = 'selected="[^"]*"'
4701
- SELECTED_U = 'selected="selected"'
4702
- CHECKED_M = '\\schecked="[^"]*"\\s|\\schecked="[^"]*"$'
4703
- CHECKED_M1 = '\\schecked="([^"]*)"\\s|\\schecked="([^"]*)"$'
4704
- CHECKED_R = 'checked="[^"]*"'
4705
- CHECKED_U = 'checked="checked"'
4706
- DISABLED_M = '\\sdisabled="[^"]*"\\s|\\sdisabled="[^"]*"$'
4707
- DISABLED_M1 = '\\sdisabled="([^"]*)"\\s|\\sdisabled="([^"]*)"$'
4708
- DISABLED_R = 'disabled="[^"]*"'
4709
- DISABLED_U = 'disabled="disabled"'
4710
- READONLY_M = '\\sreadonly="[^"]*"\\s|\\sreadonly="[^"]*"$'
4711
- READONLY_M1 = '\\sreadonly="([^"]*)"\\s|\\sreadonly="([^"]*)"$'
4712
- READONLY_R = 'readonly="[^"]*"'
4713
- READONLY_U = 'readonly="readonly"'
4714
- MULTIPLE_M = '\\smultiple="[^"]*"\\s|\\smultiple="[^"]*"$'
4715
- MULTIPLE_M1 = '\\smultiple="([^"]*)"\\s|\\smultiple="([^"]*)"$'
4716
- MULTIPLE_R = 'multiple="[^"]*"'
4717
- MULTIPLE_U = 'multiple="multiple"'
4718
-
4719
- HTTP_EQUIV = 'http-equiv'
4720
- CONTENT_TYPE = 'Content-Type'
4721
- CONTENT = 'content'
4722
-
4723
- TRUE = 'true'
4724
- FALSE = 'false'
4725
-
4726
- TYPE_L = 'type'
4727
- TYPE_U = 'TYPE'
4728
-
4729
- PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt|nbsp);'
4707
+ SELECTED_M = '\\sselected="[^"]*"\\s|\\sselected="[^"]*"$'.freeze
4708
+ SELECTED_M1 = '\\sselected="([^"]*)"\\s|\\sselected="([^"]*)"$'.freeze
4709
+ SELECTED_R = 'selected="[^"]*"'.freeze
4710
+ SELECTED_U = 'selected="selected"'.freeze
4711
+ CHECKED_M = '\\schecked="[^"]*"\\s|\\schecked="[^"]*"$'.freeze
4712
+ CHECKED_M1 = '\\schecked="([^"]*)"\\s|\\schecked="([^"]*)"$'.freeze
4713
+ CHECKED_R = 'checked="[^"]*"'.freeze
4714
+ CHECKED_U = 'checked="checked"'.freeze
4715
+ DISABLED_M = '\\sdisabled="[^"]*"\\s|\\sdisabled="[^"]*"$'.freeze
4716
+ DISABLED_M1 = '\\sdisabled="([^"]*)"\\s|\\sdisabled="([^"]*)"$'.freeze
4717
+ DISABLED_R = 'disabled="[^"]*"'.freeze
4718
+ DISABLED_U = 'disabled="disabled"'.freeze
4719
+ READONLY_M = '\\sreadonly="[^"]*"\\s|\\sreadonly="[^"]*"$'.freeze
4720
+ READONLY_M1 = '\\sreadonly="([^"]*)"\\s|\\sreadonly="([^"]*)"$'.freeze
4721
+ READONLY_R = 'readonly="[^"]*"'.freeze
4722
+ READONLY_U = 'readonly="readonly"'.freeze
4723
+ MULTIPLE_M = '\\smultiple="[^"]*"\\s|\\smultiple="[^"]*"$'.freeze
4724
+ MULTIPLE_M1 = '\\smultiple="([^"]*)"\\s|\\smultiple="([^"]*)"$'.freeze
4725
+ MULTIPLE_R = 'multiple="[^"]*"'.freeze
4726
+ MULTIPLE_U = 'multiple="multiple"'.freeze
4727
+
4728
+ HTTP_EQUIV = 'http-equiv'.freeze
4729
+ CONTENT_TYPE = 'Content-Type'.freeze
4730
+ CONTENT = 'content'.freeze
4731
+
4732
+ TRUE = 'true'.freeze
4733
+ FALSE = 'false'.freeze
4734
+
4735
+ TYPE_L = 'type'.freeze
4736
+ TYPE_U = 'TYPE'.freeze
4737
+
4738
+ PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt|nbsp);'.freeze
4730
4739
 
4731
4740
  @@pattern_selected_m = Regexp.new(SELECTED_M)
4732
4741
  @@pattern_selected_m1 = Regexp.new(SELECTED_M1)
@@ -4752,28 +4761,28 @@ module Meteor
4752
4761
  #@@pattern_@@match_tag2 = Regexp.new(@@match_tag_2)
4753
4762
 
4754
4763
  TABLE_FOR_ESCAPE_ = {
4755
- '&' => '&amp;',
4756
- '"' => '&quot;',
4757
- '\'' => '&apos;',
4758
- '<' => '&lt;',
4759
- '>' => '&gt;',
4760
- ' ' => '&nbsp;',
4764
+ '&' => '&amp;'.freeze,
4765
+ '"' => '&quot;'.freeze,
4766
+ '\'' => '&apos;'.freeze,
4767
+ '<' => '&lt;'.freeze,
4768
+ '>' => '&gt;'.freeze,
4769
+ ' ' => '&nbsp;'.freeze,
4761
4770
  }
4762
4771
 
4763
4772
  TABLE_FOR_ESCAPE_CONTENT_ = {
4764
- '&' => '&amp;',
4765
- '"' => '&quot;',
4766
- '\'' => '&apos;',
4767
- '<' => '&lt;',
4768
- '>' => '&gt;',
4769
- ' ' => '&nbsp;',
4770
- "\r\n" => '<br/>',
4771
- "\r" => '<br/>',
4772
- "\n" => '<br/>',
4773
+ '&' => '&amp;'.freeze,
4774
+ '"' => '&quot;'.freeze,
4775
+ '\'' => '&apos;'.freeze,
4776
+ '<' => '&lt;'.freeze,
4777
+ '>' => '&gt;'.freeze,
4778
+ ' ' => '&nbsp;'.freeze,
4779
+ "\r\n" => '<br/>'.freeze,
4780
+ "\r" => '<br/>'.freeze,
4781
+ "\n" => '<br/>'.freeze,
4773
4782
  }
4774
4783
 
4775
- PATTERN_ESCAPE = '[&"\'<> ]'
4776
- PATTERN_ESCAPE_CONTENT = '[&"\'<> \\n]'
4784
+ PATTERN_ESCAPE = '[&"\'<> ]'.freeze
4785
+ PATTERN_ESCAPE_CONTENT = '[&"\'<> \\n]'.freeze
4777
4786
  @@pattern_escape = Regexp.new(PATTERN_ESCAPE)
4778
4787
  @@pattern_escape_content = Regexp.new(PATTERN_ESCAPE_CONTENT)
4779
4788
 
@@ -5086,23 +5095,23 @@ module Meteor
5086
5095
  #
5087
5096
  class ParserImpl < Meteor::Ml::Html::ParserImpl
5088
5097
 
5089
- CHARSET = 'charset'
5090
- UTF8 = 'utf-8'
5098
+ CHARSET = 'charset'.freeze
5099
+ UTF8 = 'utf-8'.freeze
5091
5100
 
5092
- MATCH_TAG = ['br', 'hr', 'img', 'input', 'meta', 'base', 'embed', 'command', 'keygen'] #[Array] 内容のない要素
5101
+ MATCH_TAG = ['br'.freeze, 'hr'.freeze, 'img'.freeze, 'input'.freeze, 'meta'.freeze, 'base'.freeze, 'embed'.freeze, 'command'.freeze, 'keygen'.freeze] #[Array] 内容のない要素
5093
5102
 
5094
- MATCH_TAG_SNG = ['texarea', 'select', 'option', 'form', 'fieldset', 'figure', 'figcaption', 'video', 'audio', 'progress', 'meter', 'time', 'ruby', 'rt', 'rp', 'datalist', 'output'] #[Array] 入れ子にできない要素
5103
+ MATCH_TAG_SNG = ['texarea'.freeze, 'select'.freeze, 'option'.freeze, 'form'.freeze, 'fieldset'.freeze, 'figure'.freeze, 'figcaption'.freeze, 'video'.freeze, 'audio'.freeze, 'progress'.freeze, 'meter'.freeze, 'time'.freeze, 'ruby'.freeze, 'rt'.freeze, 'rp'.freeze, 'datalist'.freeze, 'output'.freeze] #[Array] 入れ子にできない要素
5095
5104
 
5096
- ATTR_LOGIC = ['disabled', 'readonly', 'checked', 'selected', 'multiple', 'required'] #[Array] 論理値で指定する属性
5105
+ ATTR_LOGIC = ['disabled'.freeze, 'readonly'.freeze, 'checked'.freeze, 'selected'.freeze, 'multiple'.freeze, 'required'.freeze] #[Array] 論理値で指定する属性
5097
5106
 
5098
- DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup', 'fieldset'] #[Array] disabled属性のある要素
5107
+ DISABLE_ELEMENT = ['input'.freeze, 'textarea'.freeze, 'select'.freeze, 'optgroup'.freeze, 'fieldset'.freeze] #[Array] disabled属性のある要素
5099
5108
 
5100
5109
  REQUIRE_ELEMENT = ['input', 'textarea'] #[Array] required属性のある要素
5101
5110
  REQUIRED = 'required'
5102
5111
 
5103
- REQUIRED_M = '\\srequired\\s|\\srequired$|\\sREQUIRED\\s|\\sREQUIRED$'
5112
+ REQUIRED_M = '\\srequired\\s|\\srequired$|\\sREQUIRED\\s|\\sREQUIRED$'.freeze
5104
5113
  #REQUIRED_M = [' required ',' required',' REQUIRED ',' REQUIRED']
5105
- REQUIRED_R = 'required\\s|required$|REQUIRED\\s|REQUIRED$'
5114
+ REQUIRED_R = 'required\\s|required$|REQUIRED\\s|REQUIRED$'.freeze
5106
5115
 
5107
5116
  @@pattern_required_m = Regexp.new(REQUIRED_M)
5108
5117
  @@pattern_required_r = Regexp.new(REQUIRED_R)
@@ -5226,20 +5235,20 @@ module Meteor
5226
5235
  #
5227
5236
  class ParserImpl < Meteor::Ml::Xhtml::ParserImpl
5228
5237
 
5229
- CHARSET = 'charset'
5230
- UTF8 = 'utf-8'
5238
+ CHARSET = 'charset'.freeze
5239
+ UTF8 = 'utf-8'.freeze
5231
5240
 
5232
- ATTR_LOGIC = ['disabled', 'readonly', 'checked', 'selected', 'multiple', 'required'] #[Array] 論理値で指定する属性
5241
+ ATTR_LOGIC = ['disabled'.freeze, 'readonly'.freeze, 'checked'.freeze, 'selected'.freeze, 'multiple'.freeze, 'required'.freeze] #[Array] 論理値で指定する属性
5233
5242
 
5234
- DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup', 'fieldset'] #[Array] disabled属性のある要素
5243
+ DISABLE_ELEMENT = ['input'.freeze, 'textarea'.freeze, 'select'.freeze, 'optgroup'.freeze, 'fieldset'.freeze] #[Array] disabled属性のある要素
5235
5244
 
5236
- REQUIRE_ELEMENT = ['input', 'textarea'] #[Array] required属性のある要素
5237
- REQUIRED = 'required'
5245
+ REQUIRE_ELEMENT = ['input'.freeze, 'textarea'.freeze] #[Array] required属性のある要素
5246
+ REQUIRED = 'required'.freeze
5238
5247
 
5239
- REQUIRED_M = '\\srequired="[^"]*"\\s|\\srequired="[^"]*"$'
5240
- REQUIRED_M1 = '\\srequired="([^"]*)"\\s|\\srequired="([^"]*)"$'
5241
- REQUIRED_R = 'required="[^"]*"'
5242
- REQUIRED_U = 'required="required"'
5248
+ REQUIRED_M = '\\srequired="[^"]*"\\s|\\srequired="[^"]*"$'.freeze
5249
+ REQUIRED_M1 = '\\srequired="([^"]*)"\\s|\\srequired="([^"]*)"$'.freeze
5250
+ REQUIRED_R = 'required="[^"]*"'.freeze
5251
+ REQUIRED_U = 'required="required"'.freeze
5243
5252
 
5244
5253
  @@pattern_required_m = Regexp.new(REQUIRED_M)
5245
5254
  @@pattern_required_m1 = Regexp.new(REQUIRED_M1)
@@ -5364,18 +5373,18 @@ module Meteor
5364
5373
  #
5365
5374
  class ParserImpl < Meteor::Core::Kernel
5366
5375
 
5367
- PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt);'
5376
+ PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt);'.freeze
5368
5377
 
5369
5378
  @@pattern_unescape = Regexp.new(PATTERN_UNESCAPE)
5370
5379
 
5371
5380
  TABLE_FOR_ESCAPE_ = {
5372
- '&' => '&amp;',
5373
- '"' => '&quot;',
5374
- '\'' => '&apos;',
5375
- '<' => '&lt;',
5376
- '>' => '&gt;',
5381
+ '&' => '&amp;'.freeze,
5382
+ '"' => '&quot;'.freeze,
5383
+ '\'' => '&apos;'.freeze,
5384
+ '<' => '&lt;'.freeze,
5385
+ '>' => '&gt;'.freeze,
5377
5386
  }
5378
- PATTERN_ESCAPE = '[&\"\'<>]'
5387
+ PATTERN_ESCAPE = '[&\"\'<>]'.freeze
5379
5388
  @@pattern_escape = Regexp.new(PATTERN_ESCAPE)
5380
5389
 
5381
5390
  #
@@ -5479,4 +5488,4 @@ module Meteor
5479
5488
  end
5480
5489
  end
5481
5490
 
5482
- end
5491
+ end