meteor 0.9.8 → 0.9.8.1

Sign up to get free protection for your applications and to get access to all the features.
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