meteor 0.9.9.0 → 0.9.12

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.
data/lib/meteor.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  # -* coding: UTF-8 -*-
2
+ # frozen_string_literal: true
3
+
2
4
  # Meteor - A lightweight (X)HTML(5) & XML parser
3
5
  #
4
6
  # Copyright (C) 2008-2021 Yasumasa Ashida.
@@ -18,12 +20,12 @@
18
20
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
21
  #
20
22
  # @author Yasumasa Ashida
21
- # @version 0.9.9.0
23
+ # @version 0.9.12
22
24
  #
23
25
 
24
26
  module Meteor
25
27
 
26
- VERSION = '0.9.9.0'.freeze
28
+ VERSION = '0.9.12'
27
29
 
28
30
  #require 'fileutils'
29
31
 
@@ -37,11 +39,10 @@ module Meteor
37
39
  SEVEN = 7
38
40
 
39
41
  HTML = ZERO
40
- HTML5 = ONE
41
- XHTML5 = TWO
42
- HTML4 = THREE
43
- XHTML4 = FOUR
44
- XML = FIVE
42
+ XHTML = ONE
43
+ HTML4 = TWO
44
+ XHTML4 = THREE
45
+ XML = FOUR
45
46
 
46
47
  #
47
48
  # Element Class (要素クラス)
@@ -242,29 +243,29 @@ module Meteor
242
243
  if @document_sync
243
244
  @document_sync = false
244
245
  case @parser.doc_type
245
- when Parser::HTML, Parser::HTML5, Parser::HTML4
246
+ when Parser::HTML, Parser::HTML4
246
247
  if @cx
247
- #@pattern_cc = '' << SET_CX_1 << elm.name << SPACE << elm.attributes << SET_CX_2 << elm.mixed_content << SET_CX_3 << elm.name << SET_CX_4
248
+ #@pattern_cc = String.new('') << SET_CX_1 << elm.name << SPACE << elm.attributes << SET_CX_2 << elm.mixed_content << SET_CX_3 << elm.name << SET_CX_4
248
249
  @document = "<!-- @#{@name} #{@attributes} -->#{@mixed_content}<!-- /@#{@name} -->"
249
250
  else
250
251
  if @empty
251
- #@pattern_cc = '' << TAG_OPEN << elm.name << elm.attributes << TAG_CLOSE << elm.mixed_content << TAG_OPEN3 << elm.name << TAG_CLOSE
252
+ #@pattern_cc = String.new('') << TAG_OPEN << elm.name << elm.attributes << TAG_CLOSE << elm.mixed_content << TAG_OPEN3 << elm.name << TAG_CLOSE
252
253
  @document = "<#{@name}#{@attributes}>#{@mixed_content}</#{@name}>"
253
254
  else
254
- @document = '' << Meteor::Core::Kernel::TAG_OPEN << @name << @attributes << Meteor::Core::Kernel::TAG_CLOSE
255
+ @document = String.new('') << Meteor::Core::Kernel::TAG_OPEN << @name << @attributes << Meteor::Core::Kernel::TAG_CLOSE
255
256
  #@document = "<#{@name}#{@attributes}>"
256
257
  end
257
258
  end
258
- when Parser::XHTML4, Parser::XHTML5, Parser::XML
259
+ when Parser::XHTML, Parser::XHTML4, Parser::XML
259
260
  if @cx
260
- #@pattern_cc = '' << SET_CX_1 << elm.name << SPACE << elm.attributes << SET_CX_2 << elm.mixed_content << SET_CX_3 << elm.name << SET_CX_4
261
+ #@pattern_cc = String.new('') << SET_CX_1 << elm.name << SPACE << elm.attributes << SET_CX_2 << elm.mixed_content << SET_CX_3 << elm.name << SET_CX_4
261
262
  @document = "<!-- @#{@name} #{@attributes} -->#{@mixed_content}<!-- /@#{@name} -->"
262
263
  else
263
264
  if @empty
264
- #@pattern_cc = '' << TAG_OPEN << elm.name << elm.attributes << TAG_CLOSE << elm.mixed_content << TAG_OPEN3 << elm.name << TAG_CLOSE
265
+ #@pattern_cc = String.new('') << TAG_OPEN << elm.name << elm.attributes << TAG_CLOSE << elm.mixed_content << TAG_OPEN3 << elm.name << TAG_CLOSE
265
266
  @document = "<#{@name}#{@attributes}>#{@mixed_content}</#{@name}>"
266
267
  else
267
- @document = '' << Meteor::Core::Kernel::TAG_OPEN << @name << @attributes << Meteor::Core::Kernel::TAG_CLOSE3
268
+ @document = String.new('') << Meteor::Core::Kernel::TAG_OPEN << @name << @attributes << Meteor::Core::Kernel::TAG_CLOSE3
268
269
  #@document = "<#{@name}#{@attributes}/>"
269
270
  end
270
271
  end
@@ -777,11 +778,10 @@ module Meteor
777
778
  #
778
779
  class Parser
779
780
  HTML = ZERO
780
- HTML5 = ONE
781
- XHTML5 = TWO
782
- HTML4 = THREE
783
- XHTML4 = FOUR
784
- XML = FIVE
781
+ XHTML = ONE
782
+ HTML4 = TWO
783
+ XHTML4 = THREE
784
+ XML = FOUR
785
785
  end
786
786
 
787
787
  #
@@ -983,10 +983,10 @@ module Meteor
983
983
  if CURRENT_DIR.eql?(paths[0])
984
984
  paths.delete_at 0
985
985
  paths[paths.length - 1] = File.basename(paths[paths.length - 1], ABST_EXT_NAME)
986
- return '' << SLASH << paths.join(SLASH)
986
+ return String.new('') << SLASH << paths.join(SLASH)
987
987
  else
988
988
  paths[paths.length - 1] = File.basename(paths[paths.length - 1], ABST_EXT_NAME)
989
- return '' << SLASH << paths.join(SLASH)
989
+ return String.new('') << SLASH << paths.join(SLASH)
990
990
  end
991
991
  end
992
992
  end
@@ -1013,14 +1013,14 @@ module Meteor
1013
1013
  xhtml4 = Meteor::Ml::Xhtml4::ParserImpl.new
1014
1014
  xhtml4.read(File.expand_path(relative_path, @root), enc)
1015
1015
  @cache[relative_url] = xhtml4
1016
- when Parser::HTML, :html, Parser::HTML5, :html5
1017
- html5 = Meteor::Ml::Html5::ParserImpl.new
1018
- html5.read(File.expand_path(relative_path, @root), enc)
1019
- @cache[relative_url] = html5
1020
- when Parser::XHTML5, :xhtml5
1021
- xhtml5 = Meteor::Ml::Xhtml5::ParserImpl.new
1022
- xhtml5.read(File.expand_path(relative_path, @root), enc)
1023
- @cache[relative_url] = xhtml5
1016
+ when Parser::HTML, :html, :html5
1017
+ html = Meteor::Ml::Html::ParserImpl.new
1018
+ html.read(File.expand_path(relative_path, @root), enc)
1019
+ @cache[relative_url] = html
1020
+ when Parser::XHTML, :xhtml, :xhtml5
1021
+ xhtml = Meteor::Ml::Xhtml::ParserImpl.new
1022
+ xhtml.read(File.expand_path(relative_path, @root), enc)
1023
+ @cache[relative_url] = xhtml
1024
1024
  when Parser::XML, :xml
1025
1025
  xml = Meteor::Ml::Xml::ParserImpl.new
1026
1026
  xml.read(File.expand_path(relative_path, @root), enc)
@@ -1043,12 +1043,12 @@ module Meteor
1043
1043
  case type
1044
1044
  when Parser::HTML4, :html4
1045
1045
  ps = Meteor::Ml::Html4::ParserImpl.new
1046
- when Parser::XHTML, :xhtml
1046
+ when Parser::XHTML4, :xhtml4
1047
1047
  ps = Meteor::Ml::Xhtml4::ParserImpl.new
1048
- when Parser::HTML, :html, Parser::HTML5, :html5
1049
- ps = Meteor::Ml::Html5::ParserImpl.new
1050
- when Parser::XHTML5, :xhtml5
1051
- ps = Meteor::Ml::Xhtml5::ParserImpl.new
1048
+ when Parser::HTML, :html, :html5
1049
+ ps = Meteor::Ml::Html::ParserImpl.new
1050
+ when Parser::XHTML, :xhtml, :xhtml5
1051
+ ps = Meteor::Ml::Xhtml::ParserImpl.new
1052
1052
  when Parser::XML, :xml
1053
1053
  ps = Meteor::Ml::Xml::ParserImpl.new
1054
1054
  end
@@ -1073,12 +1073,12 @@ module Meteor
1073
1073
  case @type
1074
1074
  when Parser::HTML4, :html4
1075
1075
  ps = Meteor::Ml::Html4::ParserImpl.new
1076
- when Parser::XHTML, :xhtml
1076
+ when Parser::XHTML4, :xhtml4
1077
1077
  ps = Meteor::Ml::Xhtml4::ParserImpl.new
1078
- when Parser::HTML, :html, Parser::HTML5, :html5
1079
- ps = Meteor::Ml::Html5::ParserImpl.new
1080
- when Parser::XHTML5, :xhtml5
1081
- ps = Meteor::Ml::Xhtml5::ParserImpl.new
1078
+ when Parser::HTML, :html
1079
+ ps = Meteor::Ml::Html::ParserImpl.new
1080
+ when Parser::XHTML, :xhtml
1081
+ ps = Meteor::Ml::Xhtml::ParserImpl.new
1082
1082
  when Parser::XML, :xml
1083
1083
  ps = Meteor::Ml::Xml::ParserImpl.new
1084
1084
  end
@@ -1104,10 +1104,10 @@ module Meteor
1104
1104
  ps = Meteor::Ml::Html4::ParserImpl.new
1105
1105
  when Parser::XHTML, :xhtml
1106
1106
  ps = Meteor::Ml::Xhtml4::ParserImpl.new
1107
- when Parser::HTML, :html, Parser::HTML5, :html5
1108
- ps = Meteor::Ml::Html5::ParserImpl.new
1109
- when Parser::XHTML5, :xhtml5
1110
- ps = Meteor::Ml::Xhtml5::ParserImpl.new
1107
+ when Parser::HTML, :html
1108
+ ps = Meteor::Ml::Html::ParserImpl.new
1109
+ when Parser::XHTML, :xhtml
1110
+ ps = Meteor::Ml::Xhtml::ParserImpl.new
1111
1111
  when Parser::XML, :xml
1112
1112
  ps = Meteor::Ml::Xml::ParserImpl.new
1113
1113
  else
@@ -1161,10 +1161,10 @@ module Meteor
1161
1161
  Meteor::Ml::Html4::ParserImpl.new(@pif)
1162
1162
  when Meteor::Parser::XHTML4
1163
1163
  Meteor::Ml::Xhtml4::ParserImpl.new(@pif)
1164
- when Meteor::Parser::HTML, Meteor::Parser::HTML5
1165
- Meteor::Ml::Html5::ParserImpl.new(@pif)
1166
- when Meteor::Parser::XHTML5
1167
- Meteor::Ml::Xhtml5::ParserImpl.new(@pif)
1164
+ when Meteor::Parser::HTML
1165
+ Meteor::Ml::Html::ParserImpl.new(@pif)
1166
+ when Meteor::Parser::XHTML
1167
+ Meteor::Ml::Xhtml::ParserImpl.new(@pif)
1168
1168
  when Meteor::Parser::XML
1169
1169
  Meteor::Ml::Xml::ParserImpl.new(@pif)
1170
1170
  end
@@ -1216,12 +1216,12 @@ module Meteor
1216
1216
  case type
1217
1217
  when Parser::HTML4, :html
1218
1218
  ps = Meteor::Ml::Html4::ParserImpl.new
1219
- when Parser::XHTML, :xhtml
1219
+ when Parser::XHTML4, :xhtml4
1220
1220
  ps = Meteor::Ml::Xhtml4::ParserImpl.new
1221
- when Parser::HTML, :html, Parser::HTML5, :html5
1222
- ps = Meteor::Ml::Html5::ParserImpl.new
1223
- when Parser::XHTML5, :xhtml5
1224
- ps = Meteor::Ml::Xhtml5::ParserImpl.new
1221
+ when Parser::HTML, :html
1222
+ ps = Meteor::Ml::Html::ParserImpl.new
1223
+ when Parser::XHTML, :xhtml
1224
+ ps = Meteor::Ml::Xhtml::ParserImpl.new
1225
1225
  when Parser::XML, :xml
1226
1226
  ps = Meteor::Ml::Xml::ParserImpl.new
1227
1227
  end
@@ -1245,10 +1245,10 @@ module Meteor
1245
1245
  ps = Meteor::Ml::Html4::ParserImpl.new
1246
1246
  when Parser::XHTML, :xhtml
1247
1247
  ps = Meteor::Ml::Xhtml4::ParserImpl.new
1248
- when Parser::HTML, :html, Parser::HTML5, :html5
1249
- ps = Meteor::Ml::Html5::ParserImpl.new
1250
- when Parser::XHTML5, :xhtml5
1251
- ps = Meteor::Ml::Xhtml5::ParserImpl.new
1248
+ when Parser::HTML, :html
1249
+ ps = Meteor::Ml::Html::ParserImpl.new
1250
+ when Parser::XHTML, :xhtml
1251
+ ps = Meteor::Ml::Xhtml::ParserImpl.new
1252
1252
  when Parser::XML, :xml
1253
1253
  ps = Meteor::Ml::Xml::ParserImpl.new
1254
1254
  end
@@ -1449,115 +1449,115 @@ module Meteor
1449
1449
  #
1450
1450
  class Kernel < Meteor::Parser
1451
1451
 
1452
- EMPTY = ''.freeze
1453
- SPACE = ' '.freeze
1454
- DOUBLE_QUATATION = '"'.freeze
1455
- TAG_OPEN = '<'.freeze
1456
- TAG_OPEN3 = '</'.freeze
1457
- #TAG_OPEN4 = '<\\\\/'.freeze
1458
- TAG_CLOSE = '>'.freeze
1459
- #TAG_CLOSE2 = '\\/>'.freeze
1460
- TAG_CLOSE3 = '/>'.freeze
1461
- ATTR_EQ = '="'.freeze
1452
+ EMPTY = ''
1453
+ SPACE = ' '
1454
+ DOUBLE_QUATATION = '"'
1455
+ TAG_OPEN = '<'
1456
+ TAG_OPEN3 = '</'
1457
+ #TAG_OPEN4 = '<\\\\/'
1458
+ TAG_CLOSE = '>'
1459
+ #TAG_CLOSE2 = '\\/>'
1460
+ TAG_CLOSE3 = '/>'
1461
+ ATTR_EQ = '="'
1462
1462
  #element
1463
- TAG_SEARCH_1_1 = '(|\\s[^<>]*)>(((?!('.freeze
1464
- TAG_SEARCH_1_2 = '[^<>]*>)).)*)<\\/'.freeze
1465
- TAG_SEARCH_1_3 = '(|\\s[^<>]*)\\/>'.freeze
1466
- TAG_SEARCH_1_4 = '(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1467
- TAG_SEARCH_1_4_2 = '(|\\s[^<>]*)>'.freeze
1468
-
1469
- TAG_SEARCH_NC_1_1 = '(?:|\\s[^<>]*)>((?!('.freeze
1470
- TAG_SEARCH_NC_1_2 = '[^<>]*>)).)*<\\/'.freeze
1471
- TAG_SEARCH_NC_1_3 = '(?:|\\s[^<>]*)\\/>'.freeze
1472
- TAG_SEARCH_NC_1_4 = '(?:\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1473
- TAG_SEARCH_NC_1_4_2 = '(?:|\\s[^<>]*)>'.freeze
1474
-
1475
- TAG_SEARCH_2_1 = '(\\s[^<>]*'.freeze
1476
- TAG_SEARCH_2_1_2 = '(\\s[^<>]*(?:'.freeze
1477
- TAG_SEARCH_2_2 = '"[^<>]*)>(((?!('.freeze
1478
- TAG_SEARCH_2_2_2 = '")[^<>]*)>(((?!('.freeze
1479
- TAG_SEARCH_2_3 = '"[^<>]*)'.freeze
1480
- TAG_SEARCH_2_3_2 = '"[^<>]*)\\/>'.freeze
1481
- TAG_SEARCH_2_3_2_2 = '")[^<>]*)\\/>'.freeze
1482
- TAG_SEARCH_2_4 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1483
- TAG_SEARCH_2_4_2 = '(?:[^<>\\/]*>|(?:(?!([^<>]*\\/>))[^<>]*>)))'.freeze
1484
- TAG_SEARCH_2_4_2_2 = '")([^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>)))'.freeze
1485
- TAG_SEARCH_2_4_2_3 = '"'.freeze
1486
- TAG_SEARCH_2_4_3 = '"[^<>]*)>'.freeze
1487
- TAG_SEARCH_2_4_3_2 = '")[^<>]*)>'.freeze
1488
- TAG_SEARCH_2_4_4 = '"[^<>]*>'.freeze
1489
-
1490
- TAG_SEARCH_2_6 = '"[^<>]*'.freeze
1491
- TAG_SEARCH_2_7 = '"|'.freeze
1492
-
1493
- TAG_SEARCH_NC_2_1 = '\\s[^<>]*'.freeze
1494
- TAG_SEARCH_NC_2_1_2 = '\\s[^<>]*(?:'.freeze
1495
- TAG_SEARCH_NC_2_2 = '"[^<>]*>((?!('.freeze
1496
- TAG_SEARCH_NC_2_2_2 = '")[^<>]*>((?!('.freeze
1497
- TAG_SEARCH_NC_2_3 = '"[^<>]*)'.freeze
1498
- TAG_SEARCH_NC_2_3_2 = '"[^<>]*\\/>'.freeze
1499
- TAG_SEARCH_NC_2_3_2_2 = '")[^<>]*\\/>'.freeze
1500
- TAG_SEARCH_NC_2_4 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1501
- TAG_SEARCH_NC_2_4_2 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1502
- TAG_SEARCH_NC_2_4_2_2 = '")(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1503
- TAG_SEARCH_NC_2_4_2_3 = '"'.freeze
1504
- TAG_SEARCH_NC_2_4_3 = '"[^<>]*>'.freeze
1505
- TAG_SEARCH_NC_2_4_3_2 = '")[^<>]*>'.freeze
1506
- TAG_SEARCH_NC_2_4_4 = '"[^<>]*>'.freeze
1507
- TAG_SEARCH_NC_2_6 = '"[^<>]*'.freeze
1508
- TAG_SEARCH_NC_2_7 = '"|'.freeze
1509
-
1510
- TAG_SEARCH_3_1 = '<([^<>"]*)\\s[^<>]*'.freeze
1511
- TAG_SEARCH_3_1_2 = '<([^<>"]*)\\s([^<>]*'.freeze
1512
- TAG_SEARCH_3_1_2_2 = '<([^<>"]*)\\s([^<>]*('.freeze
1513
-
1514
- TAG_SEARCH_3_2 = '"[^<>]*\\/>'.freeze
1515
- TAG_SEARCH_3_2_2 = '"[^<>]*)\\/>'.freeze
1516
- TAG_SEARCH_3_2_2_2 = '")[^<>]*)\\/>'.freeze
1517
-
1518
- TAG_SEARCH_4_1 = '(\\s[^<>\\/]*)>('.freeze
1519
- TAG_SEARCH_4_2 = '.*?<'.freeze
1520
- TAG_SEARCH_4_3 = '(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'.freeze
1521
- TAG_SEARCH_4_4 = '<\\/'.freeze
1522
- TAG_SEARCH_4_5 = '.*?<\/'.freeze
1523
- TAG_SEARCH_4_6 = '.*?)<\/'.freeze
1524
- TAG_SEARCH_4_7 = '"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))('.freeze
1525
- TAG_SEARCH_4_7_2 = '")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))('.freeze
1526
-
1527
- TAG_SEARCH_NC_3_1 = '<[^<>"]*\\s[^<>]*'.freeze
1528
- TAG_SEARCH_NC_3_1_2 = '<([^<>"]*)\\s(?:[^<>]*'.freeze
1529
- TAG_SEARCH_NC_3_1_2_2 = '<([^<>"]*)\\s(?:[^<>]*('.freeze
1530
- TAG_SEARCH_NC_3_2 = '"[^<>]*\\/>'.freeze
1531
- TAG_SEARCH_NC_3_2_2 = '"[^<>]*)\\/>'.freeze
1532
- TAG_SEARCH_NC_3_2_2_2 = '")[^<>]*)\\/>'.freeze
1533
- #TAG_SEARCH_NC_4_1 = "(?:\\s[^<>\\/]*)>(".freeze
1534
- #TAG_SEARCH_NC_4_2 = ".*?<".freeze
1535
- #TAG_SEARCH_NC_4_3 = "(?:\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))".freeze
1536
- #TAG_SEARCH_NC_4_4 = "<\\/".freeze
1537
- #TAG_SEARCH_NC_4_5 = ".*?<\/".freeze
1538
- #TAG_SEARCH_NC_4_6 = ".*?<\/".freeze
1539
- #TAG_SEARCH_NC_4_7 = "\"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))(".freeze
1540
- #TAG_SEARCH_NC_4_7_2 = "\")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))(".freeze
1463
+ TAG_SEARCH_1_1 = '(|\\s[^<>]*)>(((?!('
1464
+ TAG_SEARCH_1_2 = '[^<>]*>)).)*)<\\/'
1465
+ TAG_SEARCH_1_3 = '(|\\s[^<>]*)\\/>'
1466
+ TAG_SEARCH_1_4 = '(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1467
+ TAG_SEARCH_1_4_2 = '(|\\s[^<>]*)>'
1468
+
1469
+ TAG_SEARCH_NC_1_1 = '(?:|\\s[^<>]*)>((?!('
1470
+ TAG_SEARCH_NC_1_2 = '[^<>]*>)).)*<\\/'
1471
+ TAG_SEARCH_NC_1_3 = '(?:|\\s[^<>]*)\\/>'
1472
+ TAG_SEARCH_NC_1_4 = '(?:\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1473
+ TAG_SEARCH_NC_1_4_2 = '(?:|\\s[^<>]*)>'
1474
+
1475
+ TAG_SEARCH_2_1 = '(\\s[^<>]*'
1476
+ TAG_SEARCH_2_1_2 = '(\\s[^<>]*(?:'
1477
+ TAG_SEARCH_2_2 = '"[^<>]*)>(((?!('
1478
+ TAG_SEARCH_2_2_2 = '")[^<>]*)>(((?!('
1479
+ TAG_SEARCH_2_3 = '"[^<>]*)'
1480
+ TAG_SEARCH_2_3_2 = '"[^<>]*)\\/>'
1481
+ TAG_SEARCH_2_3_2_2 = '")[^<>]*)\\/>'
1482
+ TAG_SEARCH_2_4 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1483
+ TAG_SEARCH_2_4_2 = '(?:[^<>\\/]*>|(?:(?!([^<>]*\\/>))[^<>]*>)))'
1484
+ TAG_SEARCH_2_4_2_2 = '")([^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>)))'
1485
+ TAG_SEARCH_2_4_2_3 = '"'
1486
+ TAG_SEARCH_2_4_3 = '"[^<>]*)>'
1487
+ TAG_SEARCH_2_4_3_2 = '")[^<>]*)>'
1488
+ TAG_SEARCH_2_4_4 = '"[^<>]*>'
1489
+
1490
+ TAG_SEARCH_2_6 = '"[^<>]*'
1491
+ TAG_SEARCH_2_7 = '"|'
1492
+
1493
+ TAG_SEARCH_NC_2_1 = '\\s[^<>]*'
1494
+ TAG_SEARCH_NC_2_1_2 = '\\s[^<>]*(?:'
1495
+ TAG_SEARCH_NC_2_2 = '"[^<>]*>((?!('
1496
+ TAG_SEARCH_NC_2_2_2 = '")[^<>]*>((?!('
1497
+ TAG_SEARCH_NC_2_3 = '"[^<>]*)'
1498
+ TAG_SEARCH_NC_2_3_2 = '"[^<>]*\\/>'
1499
+ TAG_SEARCH_NC_2_3_2_2 = '")[^<>]*\\/>'
1500
+ TAG_SEARCH_NC_2_4 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1501
+ TAG_SEARCH_NC_2_4_2 = '(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1502
+ TAG_SEARCH_NC_2_4_2_2 = '")(?:[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1503
+ TAG_SEARCH_NC_2_4_2_3 = '"'
1504
+ TAG_SEARCH_NC_2_4_3 = '"[^<>]*>'
1505
+ TAG_SEARCH_NC_2_4_3_2 = '")[^<>]*>'
1506
+ TAG_SEARCH_NC_2_4_4 = '"[^<>]*>'
1507
+ TAG_SEARCH_NC_2_6 = '"[^<>]*'
1508
+ TAG_SEARCH_NC_2_7 = '"|'
1509
+
1510
+ TAG_SEARCH_3_1 = '<([^<>"]*)\\s[^<>]*'
1511
+ TAG_SEARCH_3_1_2 = '<([^<>"]*)\\s([^<>]*'
1512
+ TAG_SEARCH_3_1_2_2 = '<([^<>"]*)\\s([^<>]*('
1513
+
1514
+ TAG_SEARCH_3_2 = '"[^<>]*\\/>'
1515
+ TAG_SEARCH_3_2_2 = '"[^<>]*)\\/>'
1516
+ TAG_SEARCH_3_2_2_2 = '")[^<>]*)\\/>'
1517
+
1518
+ TAG_SEARCH_4_1 = '(\\s[^<>\\/]*)>('
1519
+ TAG_SEARCH_4_2 = '.*?<'
1520
+ TAG_SEARCH_4_3 = '(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))'
1521
+ TAG_SEARCH_4_4 = '<\\/'
1522
+ TAG_SEARCH_4_5 = '.*?<\/'
1523
+ TAG_SEARCH_4_6 = '.*?)<\/'
1524
+ TAG_SEARCH_4_7 = '"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))('
1525
+ TAG_SEARCH_4_7_2 = '")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))('
1526
+
1527
+ TAG_SEARCH_NC_3_1 = '<[^<>"]*\\s[^<>]*'
1528
+ TAG_SEARCH_NC_3_1_2 = '<([^<>"]*)\\s(?:[^<>]*'
1529
+ TAG_SEARCH_NC_3_1_2_2 = '<([^<>"]*)\\s(?:[^<>]*('
1530
+ TAG_SEARCH_NC_3_2 = '"[^<>]*\\/>'
1531
+ TAG_SEARCH_NC_3_2_2 = '"[^<>]*)\\/>'
1532
+ TAG_SEARCH_NC_3_2_2_2 = '")[^<>]*)\\/>'
1533
+ #TAG_SEARCH_NC_4_1 = "(?:\\s[^<>\\/]*)>("
1534
+ #TAG_SEARCH_NC_4_2 = ".*?<"
1535
+ #TAG_SEARCH_NC_4_3 = "(?:\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
1536
+ #TAG_SEARCH_NC_4_4 = "<\\/"
1537
+ #TAG_SEARCH_NC_4_5 = ".*?<\/"
1538
+ #TAG_SEARCH_NC_4_6 = ".*?<\/"
1539
+ #TAG_SEARCH_NC_4_7 = "\"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
1540
+ #TAG_SEARCH_NC_4_7_2 = "\")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
1541
1541
 
1542
1542
  #find
1543
1543
  # E
1544
- PATTERN_FIND_1 = '^([^,\\[\\]#\\.]+)$'.freeze
1544
+ PATTERN_FIND_1 = '^([^,\\[\\]#\\.]+)$'
1545
1545
  # #id_attribute_value
1546
- PATTERN_FIND_2_1 = '^#([^\\.,\\[\\]#][^,\\[\\]#]*)$'.freeze
1546
+ PATTERN_FIND_2_1 = '^#([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1547
1547
  # .class_attribute_value
1548
- PATTERN_FIND_2_2 = '^\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'.freeze
1548
+ PATTERN_FIND_2_2 = '^\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1549
1549
  # [attribute_name=attribute_value]
1550
- PATTERN_FIND_2_3 = '^\\[([^\\[\\],]+)=([^\\[\\],]+)\\]$'.freeze
1550
+ PATTERN_FIND_2_3 = '^\\[([^\\[\\],]+)=([^\\[\\],]+)\\]$'
1551
1551
  # E[attribute_name=attribute_value]
1552
- PATTERN_FIND_3_1 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,\\[\\]]+)=([^,\\[\\]]+)\\]$'.freeze
1552
+ PATTERN_FIND_3_1 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,\\[\\]]+)=([^,\\[\\]]+)\\]$'
1553
1553
  # E#id_attribute_value
1554
- PATTERN_FIND_3_2 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)#([^\\.,\\[\\]#][^,\\[\\]#]*)$'.freeze
1554
+ PATTERN_FIND_3_2 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)#([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1555
1555
  # E.class_attribute_value
1556
- PATTERN_FIND_3_3 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'.freeze
1556
+ PATTERN_FIND_3_3 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1557
1557
  # [attribute_name1=attribute_value1][attribute_name2=attribute_value2]
1558
1558
  PATTERN_FIND_4 = '^\\[([^,]+)=([^,]+)\\]\\[([^,]+)=([^,]+)\\]$'
1559
1559
  # E[attribute_name1=attribute_value1][attribute_name2=attribute_value2]
1560
- PATTERN_FIND_5 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,]+)=([^,]+)\\]\\[([^,]+)=([^,]+)\\]$'.freeze
1560
+ PATTERN_FIND_5 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,]+)=([^,]+)\\]\\[([^,]+)=([^,]+)\\]$'
1561
1561
 
1562
1562
  @@pattern_find_1 = Regexp.new(PATTERN_FIND_1)
1563
1563
  @@pattern_find_2_1 = Regexp.new(PATTERN_FIND_2_1)
@@ -1570,98 +1570,98 @@ module Meteor
1570
1570
  @@pattern_find_5 = Regexp.new(PATTERN_FIND_5)
1571
1571
 
1572
1572
  #setAttribute
1573
- SET_ATTR_1 = '="[^"]*"'.freeze
1573
+ SET_ATTR_1 = '="[^"]*"'
1574
1574
  #getAttributeValue
1575
- GET_ATTR_1 = '="([^"]*)"'.freeze
1575
+ GET_ATTR_1 = '="([^"]*)"'
1576
1576
  #attributeMap
1577
- GET_ATTRS_MAP = '([^\\s]*)="([^\"]*)"'.freeze
1577
+ GET_ATTRS_MAP = '([^\\s]*)="([^\"]*)"'
1578
1578
  #removeAttribute
1579
- ERASE_ATTR_1 = '="[^"]*"\\s?'.freeze
1579
+ ERASE_ATTR_1 = '="[^"]*"\\s?'
1580
1580
 
1581
1581
  #cxtag
1582
- #SEARCH_CX_1 = '<!--\\s@'.freeze
1583
- #SEARCH_CX_2 = '\\s([^<>]*id="'.freeze
1584
- #SEARCH_CX_3 = '\"[^<>]*)-->(((?!(<!--\\s\\/@'.freeze
1585
- #SEARCH_CX_4 = ')).)*)<!--\\s\\/@'.freeze
1586
- #SEARCH_CX_5 = '\\s-->'.freeze
1587
- #SEARCH_CX_6 = '<!--\\s@([^<>]*)\\s[^<>]*id="'.freeze
1588
-
1589
- SEARCH_CX_1 = '<!--\\s@'.freeze
1582
+ #SEARCH_CX_1 = '<!--\\s@'
1583
+ #SEARCH_CX_2 = '\\s([^<>]*id="'
1584
+ #SEARCH_CX_3 = '\"[^<>]*)-->(((?!(<!--\\s\\/@'
1585
+ #SEARCH_CX_4 = ')).)*)<!--\\s\\/@'
1586
+ #SEARCH_CX_5 = '\\s-->'
1587
+ #SEARCH_CX_6 = '<!--\\s@([^<>]*)\\s[^<>]*id="'
1588
+
1589
+ SEARCH_CX_1 = '<!--\\s@'
1590
1590
  #SEARCH_CX_1 = "<!--\\s@"
1591
- SEARCH_CX_2 = '\\s([^<>]*id="'.freeze
1592
- #SEARCH_CX_2 = "\\s([^<>]*id=\"".freeze
1593
- SEARCH_CX_3 = '"[^<>]*)-->(((?!(<!--\\s/@'.freeze
1594
- #SEARCH_CX_3 = "\"[^<>]*)-->(((?!(<!--\\s/@".freeze
1595
- SEARCH_CX_4 = ')).)*)<!--\\s/@'.freeze
1596
- #SEARCH_CX_4 = ")).)*)<!--\\s/@".freeze
1597
- SEARCH_CX_5 = '\\s-->'.freeze
1598
- #SEARCH_CX_5 = "\\s-->".freeze
1599
- SEARCH_CX_6 = '<!--\\s@([^<>]*)\\s[^<>]*id="'.freeze
1600
- #SEARCH_CX_6 = "<!--\\s@([^<>]*)\\s[^<>]*id=\"".freeze
1591
+ SEARCH_CX_2 = '\\s([^<>]*id="'
1592
+ #SEARCH_CX_2 = "\\s([^<>]*id=\""
1593
+ SEARCH_CX_3 = '"[^<>]*)-->(((?!(<!--\\s/@'
1594
+ #SEARCH_CX_3 = "\"[^<>]*)-->(((?!(<!--\\s/@"
1595
+ SEARCH_CX_4 = ')).)*)<!--\\s/@'
1596
+ #SEARCH_CX_4 = ")).)*)<!--\\s/@"
1597
+ SEARCH_CX_5 = '\\s-->'
1598
+ #SEARCH_CX_5 = "\\s-->"
1599
+ SEARCH_CX_6 = '<!--\\s@([^<>]*)\\s[^<>]*id="'
1600
+ #SEARCH_CX_6 = "<!--\\s@([^<>]*)\\s[^<>]*id=\""
1601
1601
 
1602
1602
  #setElementToCXTag
1603
- SET_CX_1 = '<!-- @'.freeze
1604
- SET_CX_2 = '-->'.freeze
1605
- SET_CX_3 = '<!-- /@'.freeze
1606
- SET_CX_4 = ' -->'.freeze
1603
+ SET_CX_1 = '<!-- @'
1604
+ SET_CX_2 = '-->'
1605
+ SET_CX_3 = '<!-- /@'
1606
+ SET_CX_4 = ' -->'
1607
1607
 
1608
1608
  #setMonoInfo
1609
- SET_MONO_1 = '\\A[^<>]*\\Z'.freeze
1609
+ SET_MONO_1 = '\\A[^<>]*\\Z'
1610
1610
 
1611
1611
  @@pattern_set_mono1 = Regexp.new(SET_MONO_1)
1612
1612
 
1613
1613
  #clean
1614
- CLEAN_1 = '<!--\\s@[^<>]*\\s[^<>]*(\\s)*-->'.freeze
1615
- CLEAN_2 = '<!--\\s\\/@[^<>]*(\\s)*-->'.freeze
1614
+ CLEAN_1 = '<!--\\s@[^<>]*\\s[^<>]*(\\s)*-->'
1615
+ CLEAN_2 = '<!--\\s\\/@[^<>]*(\\s)*-->'
1616
1616
  #escape
1617
- AND_1 = '&'.freeze
1618
- AND_2 = '&amp;'.freeze
1619
- AND_3 = 'amp'.freeze
1620
- LT_1 = '<'.freeze
1621
- LT_2 = '&lt;'.freeze
1622
- LT_3 = 'lt'.freeze
1623
- GT_1 = '>'.freeze
1624
- GT_2 = '&gt;'.freeze
1625
- GT_3 = 'gt'.freeze
1626
- QO_2 = '&quot;'.freeze
1627
- QO_3 = 'quot'.freeze
1628
- AP_1 = '\''.freeze
1629
- AP_2 = '&apos;'.freeze
1630
- AP_3 = 'apos'.freeze
1631
- #EN_1 = "\\\\".freeze
1632
- EN_1 = "\\".freeze
1633
- #EN_2 = "\\\\\\\\".freeze
1634
- #DOL_1 = "\\\$".freeze
1635
- #DOL_2 = "\\\\\\$".freeze
1636
- #PLUS_1 = "\\\+".freeze
1637
- #PLUS_2 = "\\\\\\+".freeze
1638
-
1639
- ESCAPE_ENTITY_REF = ''.freeze
1640
-
1641
- #SUB_REGEX1 = (\\\\*)\\\\([0-9]+)'.freeze
1642
- #SUB_REGEX2 = '\\1\\1\\\\\\\\\\2'.freeze
1643
- #SUB_REGEX3 = '\\1\\1\\1\\1\\\\\\\\\\\\\\\\\\2'.freeze
1644
-
1645
- #BRAC_OPEN_1 = "\\\(".freeze
1646
- #BRAC_OPEN_2 = "\\\\\\(".freeze
1647
- #BRAC_CLOSE_1 = "\\\)".freeze
1648
- #BRAC_CLOSE_2 = "\\\\\\)".freeze
1649
- #SBRAC_OPEN_1 = "\\\[".freeze
1650
- #SBRAC_OPEN_2 = "\\\\\\[".freeze
1651
- #SBRAC_CLOSE_1 = "\\\]".freeze
1652
- #SBRAC_CLOSE_2 = "\\\\\\]".freeze
1653
- #CBRAC_OPEN_1 = "\\\{".freeze
1654
- #CBRAC_OPEN_2 = "\\\\\\{".freeze
1655
- #CBRAC_CLOSE_1 = "\\\}".freeze
1656
- #CBRAC_CLOSE_2 = "\\\\\\}".freeze
1657
- #COMMA_1 = "\\\.".freeze
1658
- #COMMA_2 = "\\\\\\.".freeze
1659
- #VLINE_1 = "\\\|".freeze
1660
- #VLINE_2 = "\\\\\\|".freeze
1661
- #QMARK_1 = "\\\?".freeze
1662
- #QMARK_2 = "\\\\\\?".freeze
1663
- #ASTERISK_1 = "\\\*".freeze
1664
- #ASTERISK_2 = "\\\\\\*".freeze
1617
+ AND_1 = '&'
1618
+ AND_2 = '&amp;'
1619
+ AND_3 = 'amp'
1620
+ LT_1 = '<'
1621
+ LT_2 = '&lt;'
1622
+ LT_3 = 'lt'
1623
+ GT_1 = '>'
1624
+ GT_2 = '&gt;'
1625
+ GT_3 = 'gt'
1626
+ QO_2 = '&quot;'
1627
+ QO_3 = 'quot'
1628
+ AP_1 = '\''
1629
+ AP_2 = '&apos;'
1630
+ AP_3 = 'apos'
1631
+ #EN_1 = "\\\\"
1632
+ EN_1 = "\\"
1633
+ #EN_2 = "\\\\\\\\"
1634
+ #DOL_1 = "\\\$"
1635
+ #DOL_2 = "\\\\\\$"
1636
+ #PLUS_1 = "\\\+"
1637
+ #PLUS_2 = "\\\\\\+"
1638
+
1639
+ ESCAPE_ENTITY_REF = String.new('')
1640
+
1641
+ #SUB_REGEX1 = (\\\\*)\\\\([0-9]+)'
1642
+ #SUB_REGEX2 = '\\1\\1\\\\\\\\\\2'
1643
+ #SUB_REGEX3 = '\\1\\1\\1\\1\\\\\\\\\\\\\\\\\\2'
1644
+
1645
+ #BRAC_OPEN_1 = "\\\("
1646
+ #BRAC_OPEN_2 = "\\\\\\("
1647
+ #BRAC_CLOSE_1 = "\\\)"
1648
+ #BRAC_CLOSE_2 = "\\\\\\)"
1649
+ #SBRAC_OPEN_1 = "\\\["
1650
+ #SBRAC_OPEN_2 = "\\\\\\["
1651
+ #SBRAC_CLOSE_1 = "\\\]"
1652
+ #SBRAC_CLOSE_2 = "\\\\\\]"
1653
+ #CBRAC_OPEN_1 = "\\\{"
1654
+ #CBRAC_OPEN_2 = "\\\\\\{"
1655
+ #CBRAC_CLOSE_1 = "\\\}"
1656
+ #CBRAC_CLOSE_2 = "\\\\\\}"
1657
+ #COMMA_1 = "\\\."
1658
+ #COMMA_2 = "\\\\\\."
1659
+ #VLINE_1 = "\\\|"
1660
+ #VLINE_2 = "\\\\\\|"
1661
+ #QMARK_1 = "\\\?"
1662
+ #QMARK_2 = "\\\\\\?"
1663
+ #ASTERISK_1 = "\\\*"
1664
+ #ASTERISK_2 = "\\\\\\*"
1665
1665
 
1666
1666
  #@@pattern_en = Regexp.new(EN_1)
1667
1667
  #@@pattern_dol = Regexp.new(DOL_1)
@@ -1684,12 +1684,12 @@ module Meteor
1684
1684
  @@pattern_clean1 = Regexp.new(CLEAN_1)
1685
1685
  @@pattern_clean2 = Regexp.new(CLEAN_2)
1686
1686
 
1687
- MODE_UTF8 = 'r:UTF-8'.freeze
1688
- MODE_BF = 'r:'.freeze
1689
- MODE_AF = ':utf-8'.freeze
1687
+ MODE_UTF8 = 'r:UTF-8'
1688
+ MODE_BF = 'r:'
1689
+ MODE_AF = ':utf-8'
1690
1690
 
1691
- CSS_ID = 'id'.freeze
1692
- CSS_CLASS = 'class'.freeze
1691
+ CSS_ID = 'id'
1692
+ CSS_CLASS = 'class'
1693
1693
 
1694
1694
  attr_accessor :element_cache
1695
1695
  attr_accessor :doc_type
@@ -1752,7 +1752,7 @@ module Meteor
1752
1752
  #要素キャッシュ
1753
1753
  @element_cache = Hash.new
1754
1754
  #フックドキュメント
1755
- @document_hook = ''
1755
+ @document_hook = String.new('')
1756
1756
 
1757
1757
  @error_check = true
1758
1758
  end
@@ -1771,7 +1771,7 @@ module Meteor
1771
1771
  #io = File.open(file_path,MODE_BF << enc)
1772
1772
  io = File.open(file_path, MODE_UTF8)
1773
1773
  else
1774
- io = File.open(file_path, '' << MODE_BF << enc << MODE_AF)
1774
+ io = File.open(file_path, String.new('') << MODE_BF << enc << MODE_AF)
1775
1775
  end
1776
1776
 
1777
1777
  #読込及び格納
@@ -1965,7 +1965,7 @@ module Meteor
1965
1965
  @elm_.document = @res[0]
1966
1966
  end
1967
1967
  #内容あり要素検索用パターン
1968
- #@pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_NC_1_1 << @_name
1968
+ #@pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_NC_1_1 << @_name
1969
1969
  #@pattern_cc << TAG_SEARCH_NC_1_2 << @_name << TAG_CLOSE
1970
1970
  @pattern_cc = "<#{@_name}(|\\s[^<>]*)>(((?!(#{@_name}[^<>]*>)).)*)<\\/#{@_name}>"
1971
1971
 
@@ -1988,7 +1988,7 @@ module Meteor
1988
1988
  #全体
1989
1989
  @elm_.document = @res[0]
1990
1990
  #空要素検索用パターン
1991
- @pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_1_3
1991
+ @pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_1_3
1992
1992
  #@pattern_cc = "<#{@_name}(|\\s[^<>]*)\\/>"
1993
1993
  @elm_.pattern = @pattern_cc
1994
1994
 
@@ -2089,7 +2089,7 @@ module Meteor
2089
2089
  #全体
2090
2090
  @elm_.document = @res[0]
2091
2091
  #内容あり要素検索用パターン
2092
- #@pattern_cc = ''<< TAG_OPEN << @_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2092
+ #@pattern_cc = String.new('')<< TAG_OPEN << @_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2093
2093
  #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_name
2094
2094
  #@pattern_cc << TAG_SEARCH_NC_1_2 << @_name << TAG_CLOSE
2095
2095
  @pattern_cc = "<#{@_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)>(((?!(#{@_name}[^<>]*>)).)*)<\\/#{@_name}>"
@@ -2110,7 +2110,7 @@ module Meteor
2110
2110
  #全体
2111
2111
  @elm_.document = @res[0]
2112
2112
  #内容あり要素検索用パターン
2113
- #@pattern_cc = ''<< TAG_OPEN << @_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2113
+ #@pattern_cc = String.new('')<< TAG_OPEN << @_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2114
2114
  #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_name
2115
2115
  #@pattern_cc << TAG_SEARCH_NC_1_2 << @_name << TAG_CLOSE
2116
2116
  @pattern_cc = "<#{@_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)>((?!(#{@_name}[^<>]*>)).)*<\\/#{@_name}>"
@@ -2167,34 +2167,34 @@ module Meteor
2167
2167
 
2168
2168
  def element_pattern_with_3_2
2169
2169
 
2170
- #@pattern_cc_1 = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2170
+ #@pattern_cc_1 = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2171
2171
  #@pattern_cc_1 << @_attr_value << TAG_SEARCH_2_4_2
2172
2172
  @pattern_cc_1 = "<#{@_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}(?:[^<>\\/]*>|(?:(?!([^<>]*\\/>))[^<>]*>)))"
2173
2173
 
2174
- @pattern_cc_1b = '' << TAG_OPEN << @_name << TAG_SEARCH_1_4
2174
+ @pattern_cc_1b = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_1_4
2175
2175
  #@pattern_cc_1b = "<#{@_name}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
2176
2176
 
2177
- #@pattern_cc_1_1 = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2177
+ #@pattern_cc_1_1 = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2178
2178
  #@pattern_cc_1_1 << @_attr_value << TAG_SEARCH_4_7
2179
2179
  @pattern_cc_1_1 = "<#{@_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
2180
2180
 
2181
- @pattern_cc_1_2 = '' << TAG_SEARCH_4_2 << @_name << TAG_SEARCH_4_3
2181
+ @pattern_cc_1_2 = String.new('') << TAG_SEARCH_4_2 << @_name << TAG_SEARCH_4_3
2182
2182
  #@pattern_cc_1_2 = ".*?<#{@_name}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
2183
2183
 
2184
2184
 
2185
- @pattern_cc_2 = '' << TAG_SEARCH_4_4 << @_name << TAG_CLOSE
2186
- #@pattern_cc_2 = '' << "<\\/#{@_name}>"
2185
+ @pattern_cc_2 = String.new('') << TAG_SEARCH_4_4 << @_name << TAG_CLOSE
2186
+ #@pattern_cc_2 = String.new('') << "<\\/#{@_name}>"
2187
2187
 
2188
- @pattern_cc_2_1 = '' << TAG_SEARCH_4_5 << @_name << TAG_CLOSE
2188
+ @pattern_cc_2_1 = String.new('') << TAG_SEARCH_4_5 << @_name << TAG_CLOSE
2189
2189
  #@pattern_cc_2_1 = ".*?<\\/#{@_name}>"
2190
2190
 
2191
- @pattern_cc_2_2 = '' << TAG_SEARCH_4_6 << @_name << TAG_CLOSE
2191
+ @pattern_cc_2_2 = String.new('') << TAG_SEARCH_4_6 << @_name << TAG_CLOSE
2192
2192
  #@pattern_cc_2_2 = ".*?)<\\/#{@_name}>"
2193
2193
 
2194
2194
  #内容あり要素検索
2195
2195
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc_1)
2196
2196
 
2197
- @sbuf = ''
2197
+ @sbuf = String.new('')
2198
2198
 
2199
2199
  @pattern_2 = Meteor::Core::Util::PatternCache.get(@pattern_cc_2)
2200
2200
  @pattern_1b = Meteor::Core::Util::PatternCache.get(@pattern_cc_1b)
@@ -2224,7 +2224,7 @@ module Meteor
2224
2224
  #全体
2225
2225
  @elm_.document = @res[0]
2226
2226
  #空要素検索用パターン
2227
- @pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ << @_attr_value << closer
2227
+ @pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ << @_attr_value << closer
2228
2228
  #@pattern_cc = "<#{@_name}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}#{closer}"
2229
2229
  @elm_.pattern = @pattern_cc
2230
2230
 
@@ -2323,8 +2323,8 @@ module Meteor
2323
2323
 
2324
2324
  def element_pattern_2
2325
2325
 
2326
- ##@pattern_cc = '' << TAG_SEARCH_3_1 << @_attr_name << ATTR_EQ << @_attr_value << TAG_SEARCH_2_4
2327
- #@pattern_cc = '' << TAG_SEARCH_3_1 << @_attr_name << ATTR_EQ << @_attr_value << TAG_SEARCH_2_4_2_3
2326
+ ##@pattern_cc = String.new('') << TAG_SEARCH_3_1 << @_attr_name << ATTR_EQ << @_attr_value << TAG_SEARCH_2_4
2327
+ #@pattern_cc = String.new('') << TAG_SEARCH_3_1 << @_attr_name << ATTR_EQ << @_attr_value << TAG_SEARCH_2_4_2_3
2328
2328
  @pattern_cc = "<([^<>\"]*)\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\""
2329
2329
  end
2330
2330
 
@@ -2345,7 +2345,7 @@ module Meteor
2345
2345
  #全体
2346
2346
  @elm_.document = @res[0]
2347
2347
  #内容あり要素検索用パターン
2348
- #@pattern_cc = ''<< TAG_OPEN << @_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2348
+ #@pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2349
2349
  #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_name
2350
2350
  #@pattern_cc << TAG_SEARCH_NC_1_2 << @_name << TAG_CLOSE
2351
2351
  @pattern_cc = "<#{@_name}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>((?!(#{@_name}[^<>]*>)).)*<\\/#{@_name}>"
@@ -2367,7 +2367,7 @@ module Meteor
2367
2367
  #全体
2368
2368
  @elm_.document = @res[0]
2369
2369
  #内容あり要素検索用パターン
2370
- #@pattern_cc = ''<< TAG_OPEN << @_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2370
+ #@pattern_cc = String.new()<< TAG_OPEN << @_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2371
2371
  #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_name
2372
2372
  #@pattern_cc << TAG_SEARCH_NC_1_2 << @_name << TAG_CLOSE
2373
2373
  @pattern_cc = "<#{@_name}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>((?!(#{@_name}[^<>]*>)).)*<\\/#{@_name}>"
@@ -2404,14 +2404,14 @@ module Meteor
2404
2404
 
2405
2405
  def element_with_2_2
2406
2406
 
2407
- #@pattern_cc_1 = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2407
+ #@pattern_cc_1 = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2408
2408
  #@pattern_cc_1 << @_attr_value << TAG_SEARCH_2_4_2
2409
2409
  @pattern_cc_1 = "<([^<>\"]*)(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}(?:[^<>\\/]*>|(?:(?!([^<>]*\\/>))[^<>]*>)))"
2410
2410
 
2411
2411
  #内容あり要素検索
2412
2412
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc_1)
2413
2413
 
2414
- @sbuf = ''
2414
+ @sbuf = String.new('')
2415
2415
 
2416
2416
  @cnt = 0
2417
2417
 
@@ -2435,19 +2435,19 @@ module Meteor
2435
2435
 
2436
2436
  #puts @_name
2437
2437
 
2438
- @pattern_cc_1b = '' << TAG_OPEN << @_name << TAG_SEARCH_1_4
2438
+ @pattern_cc_1b = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_1_4
2439
2439
 
2440
- #@pattern_cc_1_1 = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2440
+ #@pattern_cc_1_1 = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2441
2441
  #@pattern_cc_1_1 << @_attr_value << TAG_SEARCH_4_7
2442
2442
  @pattern_cc_1_1 = "<#{@_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
2443
2443
 
2444
- @pattern_cc_1_2 = '' << TAG_SEARCH_4_2 << @_name << TAG_SEARCH_4_3
2444
+ @pattern_cc_1_2 = String.new('') << TAG_SEARCH_4_2 << @_name << TAG_SEARCH_4_3
2445
2445
 
2446
- @pattern_cc_2 = '' << TAG_SEARCH_4_4 << @_name << TAG_CLOSE
2446
+ @pattern_cc_2 = String.new('') << TAG_SEARCH_4_4 << @_name << TAG_CLOSE
2447
2447
 
2448
- @pattern_cc_2_1 = '' << TAG_SEARCH_4_5 << @_name << TAG_CLOSE
2448
+ @pattern_cc_2_1 = String.new('') << TAG_SEARCH_4_5 << @_name << TAG_CLOSE
2449
2449
 
2450
- @pattern_cc_2_2 = '' << TAG_SEARCH_4_6 << @_name << TAG_CLOSE
2450
+ @pattern_cc_2_2 = String.new('') << TAG_SEARCH_4_6 << @_name << TAG_CLOSE
2451
2451
 
2452
2452
  @pattern_2 = Meteor::Core::Util::PatternCache.get(@pattern_cc_2)
2453
2453
  @pattern_1b = Meteor::Core::Util::PatternCache.get(@pattern_cc_1b)
@@ -2469,7 +2469,7 @@ module Meteor
2469
2469
  #全体
2470
2470
  @elm_.document = @res[0]
2471
2471
  #空要素検索用パターン
2472
- @pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ << @_attr_value << closer
2472
+ @pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ << @_attr_value << closer
2473
2473
  @elm_.pattern = @pattern_cc
2474
2474
 
2475
2475
  @elm_.parser = self
@@ -2568,7 +2568,7 @@ module Meteor
2568
2568
  #全体
2569
2569
  @elm_.document = @res[0]
2570
2570
  #内容あり要素検索用パターン
2571
- #@pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2571
+ #@pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2572
2572
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_NC_2_6 << @_attr_name2 << ATTR_EQ
2573
2573
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_7 << @_attr_name2 << ATTR_EQ
2574
2574
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_6 << @_attr_name1 << ATTR_EQ
@@ -2591,7 +2591,7 @@ module Meteor
2591
2591
  #全体
2592
2592
  @elm_.document = @res[0]
2593
2593
  #内容あり要素検索用パターン
2594
- #@pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2594
+ #@pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2595
2595
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_NC_2_6 << @_attr_name2 << ATTR_EQ
2596
2596
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_7 << @_attr_name2 << ATTR_EQ
2597
2597
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_6 << @_attr_name1 << ATTR_EQ
@@ -2644,34 +2644,34 @@ module Meteor
2644
2644
 
2645
2645
  def element_pattern_with_5_2
2646
2646
 
2647
- #@pattern_cc_1 = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
2647
+ #@pattern_cc_1 = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
2648
2648
  #@pattern_cc_1 << @_attr_value1 << TAG_SEARCH_2_6 << @_attr_name2 << ATTR_EQ
2649
2649
  #@pattern_cc_1 << @_attr_value2 << TAG_SEARCH_2_7 << @_attr_name2 << ATTR_EQ
2650
2650
  #@pattern_cc_1 << @_attr_value2 << TAG_SEARCH_2_6 << @_attr_name1 << ATTR_EQ
2651
2651
  #@pattern_cc_1 << @_attr_value1 << TAG_SEARCH_2_4_2_2
2652
2652
  @pattern_cc_1 = "<#{@_name}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")([^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>)))"
2653
2653
 
2654
- @pattern_cc_1b = '' << TAG_OPEN << @_name << TAG_SEARCH_1_4
2654
+ @pattern_cc_1b = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_1_4
2655
2655
  #@pattern_cc_1b = "<#{@_name}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
2656
2656
 
2657
- #@pattern_cc_1_1 = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
2657
+ #@pattern_cc_1_1 = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
2658
2658
  #@pattern_cc_1_1 << @_attr_value1 << TAG_SEARCH_2_6 << @_attr_name2 << ATTR_EQ
2659
2659
  #@pattern_cc_1_1 << @_attr_value2 << TAG_SEARCH_2_7 << @_attr_name2 << ATTR_EQ
2660
2660
  #@pattern_cc_1_1 << @_attr_value2 << TAG_SEARCH_2_6 << @_attr_name1 << ATTR_EQ
2661
2661
  #@pattern_cc_1_1 << @_attr_value1 << TAG_SEARCH_4_7_2
2662
2662
  @pattern_cc_1_1 = "<#{@_name}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
2663
2663
 
2664
- @pattern_cc_1_2 = '' << TAG_SEARCH_4_2 << @_name << TAG_SEARCH_4_3
2664
+ @pattern_cc_1_2 = String.new('') << TAG_SEARCH_4_2 << @_name << TAG_SEARCH_4_3
2665
2665
 
2666
- @pattern_cc_2 = '' << TAG_SEARCH_4_4 << @_name << TAG_CLOSE
2666
+ @pattern_cc_2 = String.new('') << TAG_SEARCH_4_4 << @_name << TAG_CLOSE
2667
2667
 
2668
- @pattern_cc_2_1 = '' << TAG_SEARCH_4_5 << @_name << TAG_CLOSE
2668
+ @pattern_cc_2_1 = String.new('') << TAG_SEARCH_4_5 << @_name << TAG_CLOSE
2669
2669
 
2670
- @pattern_cc_2_2 = '' << TAG_SEARCH_4_6 << @_name << TAG_CLOSE
2670
+ @pattern_cc_2_2 = String.new('') << TAG_SEARCH_4_6 << @_name << TAG_CLOSE
2671
2671
 
2672
2672
  #@pattern_cc_1_2 = ".*?<#{@_name}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
2673
2673
  #
2674
- #@pattern_cc_2 = '' << "<\\/#{@_name}>"
2674
+ #@pattern_cc_2 = String.new('') << "<\\/#{@_name}>"
2675
2675
  #
2676
2676
  #@pattern_cc_2_1 = ".*?<\\/#{@_name}>"
2677
2677
  #
@@ -2680,7 +2680,7 @@ module Meteor
2680
2680
  #内容あり要素検索
2681
2681
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc_1)
2682
2682
 
2683
- @sbuf = ''
2683
+ @sbuf = String.new('')
2684
2684
 
2685
2685
  @pattern_2 = Meteor::Core::Util::PatternCache.get(@pattern_cc_2)
2686
2686
  @pattern_1b = Meteor::Core::Util::PatternCache.get(@pattern_cc_1b)
@@ -2710,7 +2710,7 @@ module Meteor
2710
2710
  #全体
2711
2711
  @elm_.document = @res[0]
2712
2712
  #空要素検索用パターン
2713
- #@pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2713
+ #@pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2714
2714
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_NC_2_6 << @_attr_name2 << ATTR_EQ
2715
2715
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_7 << @_attr_name2 << ATTR_EQ
2716
2716
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_6 << @_attr_name1 << ATTR_EQ
@@ -2769,7 +2769,7 @@ module Meteor
2769
2769
 
2770
2770
  def element_pattern_4
2771
2771
 
2772
- #@pattern_cc = '' << TAG_SEARCH_3_1_2_2 << @_attr_name1 << ATTR_EQ
2772
+ #@pattern_cc = String.new('') << TAG_SEARCH_3_1_2_2 << @_attr_name1 << ATTR_EQ
2773
2773
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_2_6 << @_attr_name2 << ATTR_EQ
2774
2774
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_2_7 << @_attr_name2 << ATTR_EQ
2775
2775
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_2_6 << @_attr_name1 << ATTR_EQ
@@ -3265,24 +3265,24 @@ module Meteor
3265
3265
  #@res = @pattern.match(elm.attributes)
3266
3266
 
3267
3267
  #検索対象属性の存在判定
3268
- if elm.attributes.include?(' ' << attr_name << ATTR_EQ)
3268
+ if elm.attributes.include?(String.new(' ') << attr_name << ATTR_EQ)
3269
3269
 
3270
3270
  @_attr_value = attr_value
3271
3271
 
3272
3272
  #属性の置換
3273
- @pattern = Meteor::Core::Util::PatternCache.get('' << attr_name << SET_ATTR_1)
3273
+ @pattern = Meteor::Core::Util::PatternCache.get(String.new('') << attr_name << SET_ATTR_1)
3274
3274
  #@pattern = Meteor::Core::Util::PatternCache.get("#{attr_name}=\"[^\"]*\"")
3275
3275
 
3276
- elm.attributes.sub!(@pattern,'' << attr_name << ATTR_EQ << @_attr_value << DOUBLE_QUATATION)
3276
+ elm.attributes.sub!(@pattern, String.new('') << attr_name << ATTR_EQ << @_attr_value << DOUBLE_QUATATION)
3277
3277
  #elm.attributes.sub!(@pattern, "#{attr_name}=\"#{@_attr_value}\"")
3278
3278
  else
3279
3279
  #属性文字列の最後に新規の属性を追加する
3280
3280
  @_attr_value = attr_value
3281
3281
 
3282
3282
  if EMPTY != elm.attributes && EMPTY != elm.attributes.strip
3283
- elm.attributes = '' << SPACE << elm.attributes.strip
3283
+ elm.attributes = String.new('') << SPACE << elm.attributes.strip
3284
3284
  else
3285
- elm.attributes = ''
3285
+ elm.attributes = String.new('')
3286
3286
  end
3287
3287
 
3288
3288
  elm.attributes << SPACE << attr_name << ATTR_EQ << @_attr_value << DOUBLE_QUATATION
@@ -3307,7 +3307,7 @@ module Meteor
3307
3307
  def get_attr_value_(elm, attr_name)
3308
3308
 
3309
3309
  #属性検索用パターン
3310
- @pattern = Meteor::Core::Util::PatternCache.get('' << attr_name << GET_ATTR_1)
3310
+ @pattern = Meteor::Core::Util::PatternCache.get(String.new('') << attr_name << GET_ATTR_1)
3311
3311
  #@pattern = Meteor::Core::Util::PatternCache.get("#{attr_name}=\"([^\"]*)\"")
3312
3312
 
3313
3313
  @res = @pattern.match(elm.attributes)
@@ -3562,7 +3562,7 @@ module Meteor
3562
3562
 
3563
3563
  def remove_attrs_(elm, attr_name)
3564
3564
  #属性検索用パターン
3565
- @pattern = Meteor::Core::Util::PatternCache.get('' << attr_name << ERASE_ATTR_1)
3565
+ @pattern = Meteor::Core::Util::PatternCache.get(String.new('') << attr_name << ERASE_ATTR_1)
3566
3566
  #@pattern = Meteor::Core::Util::PatternCache.get("#{attr_name}=\"[^\"]*\"\\s?")
3567
3567
  #属性の置換
3568
3568
  elm.attributes.sub!(@pattern, EMPTY)
@@ -3620,7 +3620,7 @@ module Meteor
3620
3620
  @_id = Regexp.quote(id)
3621
3621
 
3622
3622
  #CXタグ検索用パターン
3623
- #@pattern_cc = '' << SEARCH_CX_1 << @_name << SEARCH_CX_2
3623
+ #@pattern_cc = String.new('') << SEARCH_CX_1 << @_name << SEARCH_CX_2
3624
3624
  #@pattern_cc << id << SEARCH_CX_3 << @_name << SEARCH_CX_4 << @_name << SEARCH_CX_5
3625
3625
  #@pattern_cc = "<!--\\s@#{tag}\\s([^<>]*id=\"#{id}\"[^<>]*)-->(((?!(<!--\\s\\/@#{tag})).)*)<!--\\s\\/@#{tag}\\s-->"
3626
3626
  @pattern_cc = "<!--\\s@#{@_name}\\s([^<>]*id=\"#{@_id}\"[^<>]*)-->(((?!(<!--\\s/@#{@_name})).)*)<!--\\s/@#{@_name}\\s-->"
@@ -3664,7 +3664,7 @@ module Meteor
3664
3664
 
3665
3665
  @_id = Regexp.quote(id)
3666
3666
 
3667
- @pattern_cc = '' << SEARCH_CX_6 << @_id << DOUBLE_QUATATION
3667
+ @pattern_cc = String.new('') << SEARCH_CX_6 << @_id << DOUBLE_QUATATION
3668
3668
  #@pattern_cc = "<!--\\s@([^<>]*)\\s[^<>]*id=\"#{@_id}\""
3669
3669
 
3670
3670
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
@@ -3898,10 +3898,10 @@ module Meteor
3898
3898
  Meteor::Ml::Html4::ParserImpl.new
3899
3899
  when Parser::XHTML4
3900
3900
  Meteor::Ml::Xhtml4::ParserImpl.new
3901
- when Parser::HTML, Parser::HTML5
3902
- Meteor::Ml::Html5::ParserImpl.new
3903
- when Parser::XHTML5
3904
- Meteor::Ml::Xhtml5::ParserImpl.new
3901
+ when Parser::HTML
3902
+ Meteor::Ml::Html::ParserImpl.new
3903
+ when Parser::XHTML
3904
+ Meteor::Ml::Xhtml::ParserImpl.new
3905
3905
  when Parser::XML
3906
3906
  Meteor::Ml::Xml::ParserImpl.new
3907
3907
  else
@@ -4029,41 +4029,41 @@ module Meteor
4029
4029
 
4030
4030
  #KAIGYO_CODE = "\r?\n|\r"
4031
4031
  #KAIGYO_CODE = "\r\n|\n|\r"
4032
- KAIGYO_CODE = ["\r\n".freeze, "\n".freeze, "\r".freeze]
4033
- NBSP_2 = '&nbsp;'.freeze
4034
- NBSP_3 = 'nbsp'.freeze
4035
- BR_1 = "\r?\n|\r".freeze
4036
- BR_2 = '<br>'.freeze
4032
+ KAIGYO_CODE = ["\r\n", "\n", "\r"]
4033
+ NBSP_2 = '&nbsp;'
4034
+ NBSP_3 = 'nbsp'
4035
+ BR_1 = "\r?\n|\r"
4036
+ BR_2 = '<br>'
4037
4037
 
4038
- META = 'META'.freeze
4039
- META_S = 'meta'.freeze
4038
+ META = 'META'
4039
+ META_S = 'meta'
4040
4040
 
4041
4041
  #MATCH_TAG = "br|hr|img|input|meta|base"
4042
- @@match_tag = ['br'.freeze, 'hr'.freeze, 'img'.freeze, 'input'.freeze, 'meta'.freeze, 'base'.freeze] #[Array] 内容のない要素
4042
+ @@match_tag = ['br', 'hr', 'img', 'input', 'meta', 'base'] #[Array] 内容のない要素
4043
4043
  #@@match_tag_2 = "textarea|option|pre"
4044
- @@match_tag_2 =['textarea'.freeze, 'option'.freeze, 'pre'.freeze] #[Array] 改行を<br>に変換する必要のない要素
4044
+ @@match_tag_2 =['textarea', 'option', 'pre'] #[Array] 改行を<br>に変換する必要のない要素
4045
4045
 
4046
- @@match_tag_sng = ['texarea'.freeze, 'select'.freeze, 'option'.freeze, 'form'.freeze, 'fieldset'.freeze] #[Array] 入れ子にできない要素
4046
+ @@match_tag_sng = ['texarea', 'select', 'option', 'form', 'fieldset'] #[Array] 入れ子にできない要素
4047
4047
 
4048
- HTTP_EQUIV = 'http-equiv'.freeze
4049
- CONTENT_TYPE = 'Content-Type'.freeze
4050
- CONTENT = 'content'.freeze
4048
+ HTTP_EQUIV = 'http-equiv'
4049
+ CONTENT_TYPE = 'Content-Type'
4050
+ CONTENT = 'content'
4051
4051
 
4052
- @@attr_logic = ['disabled'.freeze, 'readonly'.freeze, 'checked'.freeze, 'selected'.freeze, 'multiple'.freeze] #[Array] 論理値で指定する属性
4053
- OPTION = 'option'.freeze
4054
- SELECTED = 'selected'.freeze
4055
- INPUT = 'input'.freeze
4056
- CHECKED = 'checked'.freeze
4057
- RADIO = 'radio'.freeze
4052
+ @@attr_logic = ['disabled', 'readonly', 'checked', 'selected', 'multiple'] #[Array] 論理値で指定する属性
4053
+ OPTION = 'option'
4054
+ SELECTED = 'selected'
4055
+ INPUT = 'input'
4056
+ CHECKED = 'checked'
4057
+ RADIO = 'radio'
4058
4058
  #DISABLE_ELEMENT = "input|textarea|select|optgroup"
4059
- DISABLE_ELEMENT = ['input'.freeze, 'textarea'.freeze, 'select'.freeze, 'optgroup'.freeze] #[Array] disabled属性のある要素
4060
- DISABLED = 'disabled'.freeze
4059
+ DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup'] #[Array] disabled属性のある要素
4060
+ DISABLED = 'disabled'
4061
4061
  #READONLY_TYPE = "text|password"
4062
- READONLY_TYPE = ['text'.freeze, 'password'.freeze] #[Array] readonly属性のあるinput要素のタイプ
4063
- TEXTAREA = 'textarea'.freeze
4064
- READONLY='readonly'.freeze
4065
- SELECT = 'select'.freeze
4066
- MULTIPLE = 'multiple'.freeze
4062
+ READONLY_TYPE = ['text', 'password'] #[Array] readonly属性のあるinput要素のタイプ
4063
+ TEXTAREA = 'textarea'
4064
+ READONLY='readonly'
4065
+ SELECT = 'select'
4066
+ MULTIPLE = 'multiple'
4067
4067
 
4068
4068
  #@@pattern_option = Regexp.new(OPTION)
4069
4069
  #@@pattern_selected = Regexp.new(SELECTED)
@@ -4078,33 +4078,33 @@ module Meteor
4078
4078
  #@@pattern_select = Regexp.new(SELECT)
4079
4079
  #@@pattern_multiple = Regexp.new(MULTIPLE)
4080
4080
 
4081
- SELECTED_M = '\\sselected\\s|\\sselected$|\\sSELECTED\\s|\\sSELECTED$'.freeze
4081
+ SELECTED_M = '\\sselected\\s|\\sselected$|\\sSELECTED\\s|\\sSELECTED$'
4082
4082
  #SELECTED_M = [' selected ',' selected',' SELECTED ',' SELECTED']
4083
- SELECTED_R = 'selected\\s|selected$|SELECTED\\s|SELECTED$'.freeze
4084
- CHECKED_M = '\\schecked\\s|\\schecked$|\\sCHECKED\\s|\\sCHECKED$'.freeze
4083
+ SELECTED_R = 'selected\\s|selected$|SELECTED\\s|SELECTED$'
4084
+ CHECKED_M = '\\schecked\\s|\\schecked$|\\sCHECKED\\s|\\sCHECKED$'
4085
4085
  #CHECKED_M = [' checked ',' checked',' CHECKED ',' CHECKED']
4086
- CHECKED_R = 'checked\\s|checked$|CHECKED\\s|CHECKED$'.freeze
4087
- DISABLED_M = '\\sdisabled\\s|\\sdisabled$|\\sDISABLED\\s|\\sDISABLED$'.freeze
4086
+ CHECKED_R = 'checked\\s|checked$|CHECKED\\s|CHECKED$'
4087
+ DISABLED_M = '\\sdisabled\\s|\\sdisabled$|\\sDISABLED\\s|\\sDISABLED$'
4088
4088
  #DISABLED_M = [' disabled ',' disiabled',' DISABLED ',' DISABLED']
4089
- DISABLED_R = 'disabled\\s|disabled$|DISABLED\\s|DISABLED$'.freeze
4090
- READONLY_M = '\\sreadonly\\s|\\sreadonly$|\\sREADONLY\\s|\\sREADONLY$'.freeze
4089
+ DISABLED_R = 'disabled\\s|disabled$|DISABLED\\s|DISABLED$'
4090
+ READONLY_M = '\\sreadonly\\s|\\sreadonly$|\\sREADONLY\\s|\\sREADONLY$'
4091
4091
  #READONLY_M = [' readonly ',' readonly',' READONLY ',' READONLY']
4092
- READONLY_R = 'readonly\\s|readonly$|READONLY\\s|READONLY$'.freeze
4093
- MULTIPLE_M = '\\smultiple\\s|\\smultiple$|\\sMULTIPLE\\s|\\sMULTIPLE$'.freeze
4092
+ READONLY_R = 'readonly\\s|readonly$|READONLY\\s|READONLY$'
4093
+ MULTIPLE_M = '\\smultiple\\s|\\smultiple$|\\sMULTIPLE\\s|\\sMULTIPLE$'
4094
4094
  #MULTIPLE_M = [' multiple ',' multiple',' MULTIPLE ',' MULTIPLE']
4095
- MULTIPLE_R = 'multiple\\s|multiple$|MULTIPLE\\s|MULTIPLE$'.freeze
4095
+ MULTIPLE_R = 'multiple\\s|multiple$|MULTIPLE\\s|MULTIPLE$'
4096
4096
 
4097
- TRUE = 'true'.freeze
4098
- FALSE = 'false'.freeze
4097
+ TRUE = 'true'
4098
+ FALSE = 'false'
4099
4099
 
4100
4100
  #@@pattern_true = Regexp.new(TRUE)
4101
4101
  #@@pattern_false = Regexp.new(FALSE)
4102
4102
 
4103
- TYPE_L = 'type'.freeze
4104
- TYPE_U = 'TYPE'.freeze
4103
+ TYPE_L = 'type'
4104
+ TYPE_U = 'TYPE'
4105
4105
 
4106
- PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt|nbsp);'.freeze
4107
- GET_ATTRS_MAP2='\\s(disabled|readonly|checked|selected|multiple)'.freeze
4106
+ PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt|nbsp);'
4107
+ GET_ATTRS_MAP2='\\s(disabled|readonly|checked|selected|multiple)'
4108
4108
 
4109
4109
  @@pattern_selected_m = Regexp.new(SELECTED_M)
4110
4110
  @@pattern_selected_r = Regexp.new(SELECTED_R)
@@ -4124,28 +4124,28 @@ module Meteor
4124
4124
  #@@pattern_@@match_tag2 = Regexp.new(@@match_tag_2)
4125
4125
 
4126
4126
  TABLE_FOR_ESCAPE_ = {
4127
- '&' => '&amp;'.freeze,
4128
- '"' => '&quot;'.freeze,
4129
- '\'' => '&apos;'.freeze,
4130
- '<' => '&lt;'.freeze,
4131
- '>' => '&gt;'.freeze,
4132
- ' ' => '&nbsp;'.freeze,
4127
+ '&' => '&amp;',
4128
+ '"' => '&quot;',
4129
+ '\'' => '&apos;',
4130
+ '<' => '&lt;',
4131
+ '>' => '&gt;',
4132
+ ' ' => '&nbsp;',
4133
4133
  }
4134
4134
 
4135
4135
  TABLE_FOR_ESCAPE_CONTENT_ = {
4136
- '&' => '&amp;'.freeze,
4137
- '"' => '&quot;'.freeze,
4138
- '\'' => '&apos;'.freeze,
4139
- '<' => '&lt;'.freeze,
4140
- '>' => '&gt;'.freeze,
4141
- ' ' => '&nbsp;'.freeze,
4142
- "\r\n" => '<br>'.freeze,
4143
- "\r" => '<br>'.freeze,
4144
- "\n" => '<br>'.freeze,
4136
+ '&' => '&amp;',
4137
+ '"' => '&quot;',
4138
+ '\'' => '&apos;',
4139
+ '<' => '&lt;',
4140
+ '>' => '&gt;',
4141
+ ' ' => '&nbsp;',
4142
+ "\r\n" => '<br>',
4143
+ "\r" => '<br>',
4144
+ "\n" => '<br>',
4145
4145
  }
4146
4146
 
4147
- PATTERN_ESCAPE = "[&\"'<> ]".freeze
4148
- PATTERN_ESCAPE_CONTENT = "[&\"'<> \\n]".freeze
4147
+ PATTERN_ESCAPE = "[&\"'<> ]"
4148
+ PATTERN_ESCAPE_CONTENT = "[&\"'<> \\n]"
4149
4149
 
4150
4150
  @@pattern_escape = Regexp.new(PATTERN_ESCAPE)
4151
4151
  @@pattern_escape_content = Regexp.new(PATTERN_ESCAPE_CONTENT)
@@ -4271,7 +4271,7 @@ module Meteor
4271
4271
  #空要素の場合(<->内容あり要素の場合)
4272
4272
  if is_match(@@match_tag, name)
4273
4273
  #空要素検索用パターン
4274
- @pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_1_4_2
4274
+ @pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_1_4_2
4275
4275
  #@pattern_cc = "<#{@_name}(|\\s[^<>]*)>"
4276
4276
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
4277
4277
  @res = @pattern.match(@root.document)
@@ -4285,7 +4285,7 @@ module Meteor
4285
4285
  end
4286
4286
  else
4287
4287
  #内容あり要素検索用パターン
4288
- #@pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_1_1 << @_name
4288
+ #@pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_1_1 << @_name
4289
4289
  #@pattern_cc << TAG_SEARCH_1_2 << @_name << TAG_CLOSE
4290
4290
  @pattern_cc = "<#{@_name}(|\\s[^<>]*)>(((?!(#{tag}[^<>]*>)).)*)<\\/#{@_name}>"
4291
4291
 
@@ -4336,7 +4336,7 @@ module Meteor
4336
4336
  #空要素の場合(<->内容あり要素の場合)
4337
4337
  if is_match(@@match_tag, name)
4338
4338
  #空要素検索パターン
4339
- #@pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
4339
+ #@pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
4340
4340
  #@pattern_cc << @_attr_value << TAG_SEARCH_2_4_3
4341
4341
  @pattern_cc = "<#{@_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)>"
4342
4342
 
@@ -4353,7 +4353,7 @@ module Meteor
4353
4353
  end
4354
4354
  else
4355
4355
  #内容あり要素検索パターン
4356
- #@pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
4356
+ #@pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
4357
4357
  #@pattern_cc << @_attr_value << TAG_SEARCH_2_2 << @_name
4358
4358
  #@pattern_cc << TAG_SEARCH_1_2 << @_name << TAG_CLOSE
4359
4359
  @pattern_cc = "<#{@_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)>(((?!(#{@_name}[^<>]*>)).)*)<\\/#{@_name}>"
@@ -4397,7 +4397,7 @@ module Meteor
4397
4397
 
4398
4398
  element_quote_2(attr_name, attr_value)
4399
4399
 
4400
- #@pattern_cc = '' << TAG_SEARCH_3_1 << @_attr_name << ATTR_EQ << @_attr_value
4400
+ #@pattern_cc = String.new('') << TAG_SEARCH_3_1 << @_attr_name << ATTR_EQ << @_attr_value
4401
4401
  #@pattern_cc << TAG_SEARCH_2_4_4
4402
4402
  @pattern_cc = "<([^<>\"]*)\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>"
4403
4403
 
@@ -4434,7 +4434,7 @@ module Meteor
4434
4434
  #空要素の場合(<->内容あり要素の場合)
4435
4435
  if is_match(@@match_tag, name)
4436
4436
  #空要素検索パターン
4437
- #@pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
4437
+ #@pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
4438
4438
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_2_6 << @_attr_name2 << ATTR_EQ
4439
4439
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_2_7 << @_attr_name2 << ATTR_EQ
4440
4440
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_2_6 << @_attr_name1 << ATTR_EQ
@@ -4455,7 +4455,7 @@ module Meteor
4455
4455
  end
4456
4456
  else
4457
4457
  #内容あり要素検索パターン
4458
- #@pattern_cc = '' << TAG_OPEN << @_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
4458
+ #@pattern_cc = String.new('') << TAG_OPEN << @_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
4459
4459
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_2_6 << @_attr_name2 << ATTR_EQ
4460
4460
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_2_7 << @_attr_name2 << ATTR_EQ
4461
4461
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_2_6 << @_attr_name1 << ATTR_EQ
@@ -4505,7 +4505,7 @@ module Meteor
4505
4505
 
4506
4506
  element_quote_4(attr_name1, attr_value1, attr_name2, attr_value2)
4507
4507
 
4508
- #@pattern_cc = '' << TAG_SEARCH_3_1_2_2 << @_attr_name1 << ATTR_EQ << @_attr_value1
4508
+ #@pattern_cc = String.new('') << TAG_SEARCH_3_1_2_2 << @_attr_name1 << ATTR_EQ << @_attr_value1
4509
4509
  #@pattern_cc << TAG_SEARCH_2_6 << @_attr_name2 << ATTR_EQ << @_attr_value2
4510
4510
  #@pattern_cc << TAG_SEARCH_2_7 << @_attr_name2 << ATTR_EQ << @_attr_value2
4511
4511
  #@pattern_cc << TAG_SEARCH_2_6 << @_attr_name1 << ATTR_EQ << @_attr_value1
@@ -4555,9 +4555,9 @@ module Meteor
4555
4555
 
4556
4556
  if !@res
4557
4557
  if !EMPTY.eql?(elm.attributes) && !EMPTY.eql?(elm.attributes.strip)
4558
- elm.attributes = '' << SPACE << elm.attributes.strip
4558
+ elm.attributes = String.new('') << SPACE << elm.attributes.strip
4559
4559
  else
4560
- elm.attributes = ''
4560
+ elm.attributes = String.new('')
4561
4561
  end
4562
4562
  elm.attributes << SPACE << attr_name
4563
4563
  #else
@@ -4667,7 +4667,7 @@ module Meteor
4667
4667
  #検索対象属性の論理型是非判定
4668
4668
  if !is_match(@@attr_logic, attr_name)
4669
4669
  #属性検索用パターン
4670
- @pattern = Meteor::Core::Util::PatternCache.get('' << attr_name << ERASE_ATTR_1)
4670
+ @pattern = Meteor::Core::Util::PatternCache.get(String.new('') << attr_name << ERASE_ATTR_1)
4671
4671
  #@pattern = Meteor::Core::Util::PatternCache.get("#{attr_name}=\"[^\"]*\"\\s?")
4672
4672
  elm.attributes.sub!(@pattern, EMPTY)
4673
4673
  else
@@ -4680,14 +4680,15 @@ module Meteor
4680
4680
  private :remove_attrs_
4681
4681
 
4682
4682
  def escape(content)
4683
- #特殊文字の置換
4683
+ # 特殊文字の置換
4684
4684
  content = content.gsub(@@pattern_escape, TABLE_FOR_ESCAPE_)
4685
4685
 
4686
4686
  content
4687
4687
  end
4688
4688
 
4689
4689
  def escape_content(content, elm)
4690
- content.gsub!(@@pattern_escape_content, TABLE_FOR_ESCAPE_CONTENT_)
4690
+ # 特殊文字の置換
4691
+ content = content.gsub(@@pattern_escape_content, TABLE_FOR_ESCAPE_CONTENT_)
4691
4692
 
4692
4693
  content
4693
4694
  end
@@ -4750,35 +4751,35 @@ module Meteor
4750
4751
  #
4751
4752
  class ParserImpl < Meteor::Core::Kernel
4752
4753
 
4753
- #KAIGYO_CODE = "\r?\n|\r".freeze
4754
- KAIGYO_CODE = ["\r\n".freeze, "\n".freeze, "\r".freeze]
4755
- NBSP_2 = '&nbsp;'.freeze
4756
- NBSP_3 = 'nbsp'.freeze
4757
- BR_1 = "\r?\n|\r".freeze
4758
- BR_2 = '<br/>'.freeze
4759
- BR_3 = '<br\\/>'.freeze
4754
+ #KAIGYO_CODE = "\r?\n|\r"
4755
+ KAIGYO_CODE = ["\r\n", "\n", "\r"]
4756
+ NBSP_2 = '&nbsp;'
4757
+ NBSP_3 = 'nbsp'
4758
+ BR_1 = "\r?\n|\r"
4759
+ BR_2 = '<br/>'
4760
+ BR_3 = '<br\\/>'
4760
4761
 
4761
- META = 'META'.freeze
4762
- META_S = 'meta'.freeze
4762
+ META = 'META'
4763
+ META_S = 'meta'
4763
4764
 
4764
4765
  #@@match_tag_2 = "textarea|option|pre"
4765
- @@match_tag_2 = ['textarea'.freeze, 'option'.freeze, 'pre'.freeze] #[Array] 改行を<br/>に変換する必要のない要素
4766
-
4767
- @@attr_logic = ['disabled'.freeze, 'readonly'.freeze, 'checked'.freeze, 'selected'.freeze, 'multiple'.freeze] #[Array] 論理値で指定する属性
4768
- OPTION = 'option'.freeze
4769
- SELECTED = 'selected'.freeze
4770
- INPUT = 'input'.freeze
4771
- CHECKED = 'checked'.freeze
4772
- RADIO = 'radio'.freeze
4766
+ @@match_tag_2 = ['textarea', 'option', 'pre'] #[Array] 改行を<br/>に変換する必要のない要素
4767
+
4768
+ @@attr_logic = ['disabled', 'readonly', 'checked', 'selected', 'multiple'] #[Array] 論理値で指定する属性
4769
+ OPTION = 'option'
4770
+ SELECTED = 'selected'
4771
+ INPUT = 'input'
4772
+ CHECKED = 'checked'
4773
+ RADIO = 'radio'
4773
4774
  #DISABLE_ELEMENT = "input|textarea|select|optgroup"
4774
- DISABLE_ELEMENT = ['input'.freeze, 'textarea'.freeze, 'select'.freeze, 'optgroup'.freeze] #[Array] disabled属性のある要素
4775
- DISABLED = 'disabled'.freeze
4775
+ DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup'] #[Array] disabled属性のある要素
4776
+ DISABLED = 'disabled'
4776
4777
  #READONLY_TYPE = "text|password"
4777
- READONLY_TYPE = ['text'.freeze, 'password'.freeze] #[Array] readonly属性のあるinput要素のタイプ
4778
- TEXTAREA = 'textarea'.freeze
4779
- READONLY='readonly'.freeze
4780
- SELECT = 'select'.freeze
4781
- MULTIPLE = 'multiple'.freeze
4778
+ READONLY_TYPE = ['text', 'password'] #[Array] readonly属性のあるinput要素のタイプ
4779
+ TEXTAREA = 'textarea'
4780
+ READONLY='readonly'
4781
+ SELECT = 'select'
4782
+ MULTIPLE = 'multiple'
4782
4783
 
4783
4784
  #@@pattern_option = Regexp.new(OPTION)
4784
4785
  #@@pattern_selected = Regexp.new(SELECTED)
@@ -4793,38 +4794,38 @@ module Meteor
4793
4794
  #@@pattern_select = Regexp.new(SELECT)
4794
4795
  #@@pattern_multiple = Regexp.new(MULTIPLE)
4795
4796
 
4796
- SELECTED_M = '\\sselected="[^"]*"\\s|\\sselected="[^"]*"$'.freeze
4797
- SELECTED_M1 = '\\sselected="([^"]*)"\\s|\\sselected="([^"]*)"$'.freeze
4798
- SELECTED_R = 'selected="[^"]*"'.freeze
4799
- SELECTED_U = 'selected="selected"'.freeze
4800
- CHECKED_M = '\\schecked="[^"]*"\\s|\\schecked="[^"]*"$'.freeze
4801
- CHECKED_M1 = '\\schecked="([^"]*)"\\s|\\schecked="([^"]*)"$'.freeze
4802
- CHECKED_R = 'checked="[^"]*"'.freeze
4803
- CHECKED_U = 'checked="checked"'.freeze
4804
- DISABLED_M = '\\sdisabled="[^"]*"\\s|\\sdisabled="[^"]*"$'.freeze
4805
- DISABLED_M1 = '\\sdisabled="([^"]*)"\\s|\\sdisabled="([^"]*)"$'.freeze
4806
- DISABLED_R = 'disabled="[^"]*"'.freeze
4807
- DISABLED_U = 'disabled="disabled"'.freeze
4808
- READONLY_M = '\\sreadonly="[^"]*"\\s|\\sreadonly="[^"]*"$'.freeze
4809
- READONLY_M1 = '\\sreadonly="([^"]*)"\\s|\\sreadonly="([^"]*)"$'.freeze
4810
- READONLY_R = 'readonly="[^"]*"'.freeze
4811
- READONLY_U = 'readonly="readonly"'.freeze
4812
- MULTIPLE_M = '\\smultiple="[^"]*"\\s|\\smultiple="[^"]*"$'.freeze
4813
- MULTIPLE_M1 = '\\smultiple="([^"]*)"\\s|\\smultiple="([^"]*)"$'.freeze
4814
- MULTIPLE_R = 'multiple="[^"]*"'.freeze
4815
- MULTIPLE_U = 'multiple="multiple"'.freeze
4816
-
4817
- HTTP_EQUIV = 'http-equiv'.freeze
4818
- CONTENT_TYPE = 'Content-Type'.freeze
4819
- CONTENT = 'content'.freeze
4820
-
4821
- TRUE = 'true'.freeze
4822
- FALSE = 'false'.freeze
4823
-
4824
- TYPE_L = 'type'.freeze
4825
- TYPE_U = 'TYPE'.freeze
4826
-
4827
- PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt|nbsp);'.freeze
4797
+ SELECTED_M = '\\sselected="[^"]*"\\s|\\sselected="[^"]*"$'
4798
+ SELECTED_M1 = '\\sselected="([^"]*)"\\s|\\sselected="([^"]*)"$'
4799
+ SELECTED_R = 'selected="[^"]*"'
4800
+ SELECTED_U = 'selected="selected"'
4801
+ CHECKED_M = '\\schecked="[^"]*"\\s|\\schecked="[^"]*"$'
4802
+ CHECKED_M1 = '\\schecked="([^"]*)"\\s|\\schecked="([^"]*)"$'
4803
+ CHECKED_R = 'checked="[^"]*"'
4804
+ CHECKED_U = 'checked="checked"'
4805
+ DISABLED_M = '\\sdisabled="[^"]*"\\s|\\sdisabled="[^"]*"$'
4806
+ DISABLED_M1 = '\\sdisabled="([^"]*)"\\s|\\sdisabled="([^"]*)"$'
4807
+ DISABLED_R = 'disabled="[^"]*"'
4808
+ DISABLED_U = 'disabled="disabled"'
4809
+ READONLY_M = '\\sreadonly="[^"]*"\\s|\\sreadonly="[^"]*"$'
4810
+ READONLY_M1 = '\\sreadonly="([^"]*)"\\s|\\sreadonly="([^"]*)"$'
4811
+ READONLY_R = 'readonly="[^"]*"'
4812
+ READONLY_U = 'readonly="readonly"'
4813
+ MULTIPLE_M = '\\smultiple="[^"]*"\\s|\\smultiple="[^"]*"$'
4814
+ MULTIPLE_M1 = '\\smultiple="([^"]*)"\\s|\\smultiple="([^"]*)"$'
4815
+ MULTIPLE_R = 'multiple="[^"]*"'
4816
+ MULTIPLE_U = 'multiple="multiple"'
4817
+
4818
+ HTTP_EQUIV = 'http-equiv'
4819
+ CONTENT_TYPE = 'Content-Type'
4820
+ CONTENT = 'content'
4821
+
4822
+ TRUE = 'true'
4823
+ FALSE = 'false'
4824
+
4825
+ TYPE_L = 'type'
4826
+ TYPE_U = 'TYPE'
4827
+
4828
+ PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt|nbsp);'
4828
4829
 
4829
4830
  @@pattern_selected_m = Regexp.new(SELECTED_M)
4830
4831
  @@pattern_selected_m1 = Regexp.new(SELECTED_M1)
@@ -4850,28 +4851,28 @@ module Meteor
4850
4851
  #@@pattern_@@match_tag2 = Regexp.new(@@match_tag_2)
4851
4852
 
4852
4853
  TABLE_FOR_ESCAPE_ = {
4853
- '&' => '&amp;'.freeze,
4854
- '"' => '&quot;'.freeze,
4855
- '\'' => '&apos;'.freeze,
4856
- '<' => '&lt;'.freeze,
4857
- '>' => '&gt;'.freeze,
4858
- ' ' => '&nbsp;'.freeze,
4854
+ '&' => '&amp;',
4855
+ '"' => '&quot;',
4856
+ '\'' => '&apos;',
4857
+ '<' => '&lt;',
4858
+ '>' => '&gt;',
4859
+ ' ' => '&nbsp;',
4859
4860
  }
4860
4861
 
4861
4862
  TABLE_FOR_ESCAPE_CONTENT_ = {
4862
- '&' => '&amp;'.freeze,
4863
- '"' => '&quot;'.freeze,
4864
- '\'' => '&apos;'.freeze,
4865
- '<' => '&lt;'.freeze,
4866
- '>' => '&gt;'.freeze,
4867
- ' ' => '&nbsp;'.freeze,
4868
- "\r\n" => '<br/>'.freeze,
4869
- "\r" => '<br/>'.freeze,
4870
- "\n" => '<br/>'.freeze,
4863
+ '&' => '&amp;',
4864
+ '"' => '&quot;',
4865
+ '\'' => '&apos;',
4866
+ '<' => '&lt;',
4867
+ '>' => '&gt;',
4868
+ ' ' => '&nbsp;',
4869
+ "\r\n" => '<br/>',
4870
+ "\r" => '<br/>',
4871
+ "\n" => '<br/>',
4871
4872
  }
4872
4873
 
4873
- PATTERN_ESCAPE = '[&"\'<> ]'.freeze
4874
- PATTERN_ESCAPE_CONTENT = '[&"\'<> \\n]'.freeze
4874
+ PATTERN_ESCAPE = '[&"\'<> ]'
4875
+ PATTERN_ESCAPE_CONTENT = '[&"\'<> \\n]'
4875
4876
  @@pattern_escape = Regexp.new(PATTERN_ESCAPE)
4876
4877
  @@pattern_escape_content = Regexp.new(PATTERN_ESCAPE_CONTENT)
4877
4878
 
@@ -5012,7 +5013,7 @@ module Meteor
5012
5013
  if !@res
5013
5014
  #属性文字列の最後に新規の属性を追加する
5014
5015
  if elm.attributes != EMPTY
5015
- elm.attributes = '' << SPACE << elm.attributes.strip
5016
+ elm.attributes = String.new('') << SPACE << elm.attributes.strip
5016
5017
  #else
5017
5018
  end
5018
5019
  elm.attributes << SPACE << replace_update
@@ -5120,14 +5121,15 @@ module Meteor
5120
5121
  private :get_attr_map
5121
5122
 
5122
5123
  def escape(content)
5123
- #特殊文字の置換
5124
+ # 特殊文字の置換
5124
5125
  content = content.gsub(@@pattern_escape, TABLE_FOR_ESCAPE_)
5125
5126
 
5126
5127
  content
5127
5128
  end
5128
5129
 
5129
5130
  def escape_content(content, elm)
5130
- content.gsub!(@@pattern_escape_content, TABLE_FOR_ESCAPE_CONTENT_)
5131
+ # 特殊文字の置換
5132
+ content = content.gsub(@@pattern_escape_content, TABLE_FOR_ESCAPE_CONTENT_)
5131
5133
 
5132
5134
  content
5133
5135
  end
@@ -5136,7 +5138,7 @@ module Meteor
5136
5138
  private :escape_content
5137
5139
 
5138
5140
  def unescape(content)
5139
- #特殊文字の置換
5141
+ # 特殊文字の置換
5140
5142
  #「<」<-「&lt;」
5141
5143
  #「>」<-「&gt;」
5142
5144
  #「"」<-「&quotl」
@@ -5181,30 +5183,30 @@ module Meteor
5181
5183
 
5182
5184
  end
5183
5185
 
5184
- module Html5
5186
+ module Html
5185
5187
 
5186
5188
  #
5187
- # HTML5 parser (HTML5パーサ)
5189
+ # HTML parser (HTMLパーサ)
5188
5190
  #
5189
5191
  class ParserImpl < Meteor::Ml::Html4::ParserImpl
5190
5192
 
5191
- CHARSET = 'charset'.freeze
5192
- UTF8 = 'utf-8'.freeze
5193
+ CHARSET = 'charset'
5194
+ UTF8 = 'utf-8'
5193
5195
 
5194
- MATCH_TAG = ['br'.freeze, 'hr'.freeze, 'img'.freeze, 'input'.freeze, 'meta'.freeze, 'base'.freeze, 'embed'.freeze, 'command'.freeze, 'keygen'.freeze] #[Array] 内容のない要素
5196
+ MATCH_TAG = ['br', 'hr', 'img', 'input', 'meta', 'base', 'embed', 'command', 'keygen'] #[Array] 内容のない要素
5195
5197
 
5196
- 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] 入れ子にできない要素
5198
+ MATCH_TAG_SNG = ['texarea', 'select', 'option', 'form', 'fieldset', 'figure', 'figcaption', 'video', 'audio', 'progress', 'meter', 'time', 'ruby', 'rt', 'rp', 'datalist', 'output'] #[Array] 入れ子にできない要素
5197
5199
 
5198
- ATTR_LOGIC = ['disabled'.freeze, 'readonly'.freeze, 'checked'.freeze, 'selected'.freeze, 'multiple'.freeze, 'required'.freeze] #[Array] 論理値で指定する属性
5200
+ ATTR_LOGIC = ['disabled', 'readonly', 'checked', 'selected', 'multiple', 'required'] #[Array] 論理値で指定する属性
5199
5201
 
5200
- DISABLE_ELEMENT = ['input'.freeze, 'textarea'.freeze, 'select'.freeze, 'optgroup'.freeze, 'fieldset'.freeze] #[Array] disabled属性のある要素
5202
+ DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup', 'fieldset'] #[Array] disabled属性のある要素
5201
5203
 
5202
5204
  REQUIRE_ELEMENT = ['input', 'textarea'] #[Array] required属性のある要素
5203
5205
  REQUIRED = 'required'
5204
5206
 
5205
- REQUIRED_M = '\\srequired\\s|\\srequired$|\\sREQUIRED\\s|\\sREQUIRED$'.freeze
5207
+ REQUIRED_M = '\\srequired\\s|\\srequired$|\\sREQUIRED\\s|\\sREQUIRED$'
5206
5208
  #REQUIRED_M = [' required ',' required',' REQUIRED ',' REQUIRED']
5207
- REQUIRED_R = 'required\\s|required$|REQUIRED\\s|REQUIRED$'.freeze
5209
+ REQUIRED_R = 'required\\s|required$|REQUIRED\\s|REQUIRED$'
5208
5210
 
5209
5211
  @@pattern_required_m = Regexp.new(REQUIRED_M)
5210
5212
  @@pattern_required_r = Regexp.new(REQUIRED_R)
@@ -5220,7 +5222,7 @@ module Meteor
5220
5222
  @@match_tag = MATCH_TAG
5221
5223
  @@match_tag_sng = MATCH_TAG_SNG
5222
5224
  @@attr_logic = ATTR_LOGIC
5223
- @doc_type = Parser::HTML5
5225
+ @doc_type = Parser::HTML
5224
5226
  case args.length
5225
5227
  when ZERO
5226
5228
  #initialize_0
@@ -5325,27 +5327,27 @@ module Meteor
5325
5327
 
5326
5328
  end
5327
5329
 
5328
- module Xhtml5
5330
+ module Xhtml
5329
5331
 
5330
5332
  #
5331
- # XHTML5 parser (XHTML5パーサ)
5333
+ # XHTML parser (XHTMLパーサ)
5332
5334
  #
5333
5335
  class ParserImpl < Meteor::Ml::Xhtml4::ParserImpl
5334
5336
 
5335
- CHARSET = 'charset'.freeze
5336
- UTF8 = 'utf-8'.freeze
5337
+ CHARSET = 'charset'
5338
+ UTF8 = 'utf-8'
5337
5339
 
5338
- ATTR_LOGIC = ['disabled'.freeze, 'readonly'.freeze, 'checked'.freeze, 'selected'.freeze, 'multiple'.freeze, 'required'.freeze] #[Array] 論理値で指定する属性
5340
+ ATTR_LOGIC = ['disabled', 'readonly', 'checked', 'selected', 'multiple', 'required'] #[Array] 論理値で指定する属性
5339
5341
 
5340
- DISABLE_ELEMENT = ['input'.freeze, 'textarea'.freeze, 'select'.freeze, 'optgroup'.freeze, 'fieldset'.freeze] #[Array] disabled属性のある要素
5342
+ DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup', 'fieldset'] #[Array] disabled属性のある要素
5341
5343
 
5342
- REQUIRE_ELEMENT = ['input'.freeze, 'textarea'.freeze] #[Array] required属性のある要素
5343
- REQUIRED = 'required'.freeze
5344
+ REQUIRE_ELEMENT = ['input', 'textarea'] #[Array] required属性のある要素
5345
+ REQUIRED = 'required'
5344
5346
 
5345
- REQUIRED_M = '\\srequired="[^"]*"\\s|\\srequired="[^"]*"$'.freeze
5346
- REQUIRED_M1 = '\\srequired="([^"]*)"\\s|\\srequired="([^"]*)"$'.freeze
5347
- REQUIRED_R = 'required="[^"]*"'.freeze
5348
- REQUIRED_U = 'required="required"'.freeze
5347
+ REQUIRED_M = '\\srequired="[^"]*"\\s|\\srequired="[^"]*"$'
5348
+ REQUIRED_M1 = '\\srequired="([^"]*)"\\s|\\srequired="([^"]*)"$'
5349
+ REQUIRED_R = 'required="[^"]*"'
5350
+ REQUIRED_U = 'required="required"'
5349
5351
 
5350
5352
  @@pattern_required_m = Regexp.new(REQUIRED_M)
5351
5353
  @@pattern_required_m1 = Regexp.new(REQUIRED_M1)
@@ -5360,7 +5362,7 @@ module Meteor
5360
5362
  def initialize(*args)
5361
5363
  super()
5362
5364
  @@attr_logic = ATTR_LOGIC
5363
- @doc_type = Parser::XHTML5
5365
+ @doc_type = Parser::XHTML
5364
5366
  case args.length
5365
5367
  when ZERO
5366
5368
  #initialize_0
@@ -5474,21 +5476,21 @@ module Meteor
5474
5476
  #
5475
5477
  class ParserImpl < Meteor::Core::Kernel
5476
5478
 
5477
- #KAIGYO_CODE = "\r?\n|\r".freeze
5478
- KAIGYO_CODE = ["\r\n".freeze, "\n".freeze, "\r".freeze]
5479
+ #KAIGYO_CODE = "\r?\n|\r"
5480
+ KAIGYO_CODE = ["\r\n", "\n", "\r"]
5479
5481
 
5480
- PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt);'.freeze
5482
+ PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt);'
5481
5483
 
5482
5484
  @@pattern_unescape = Regexp.new(PATTERN_UNESCAPE)
5483
5485
 
5484
5486
  TABLE_FOR_ESCAPE_ = {
5485
- '&' => '&amp;'.freeze,
5486
- '"' => '&quot;'.freeze,
5487
- '\'' => '&apos;'.freeze,
5488
- '<' => '&lt;'.freeze,
5489
- '>' => '&gt;'.freeze,
5487
+ '&' => '&amp;',
5488
+ '"' => '&quot;',
5489
+ '\'' => '&apos;',
5490
+ '<' => '&lt;',
5491
+ '>' => '&gt;',
5490
5492
  }
5491
- PATTERN_ESCAPE = '[&\"\'<>]'.freeze
5493
+ PATTERN_ESCAPE = '[&\"\'<>]'
5492
5494
  @@pattern_escape = Regexp.new(PATTERN_ESCAPE)
5493
5495
 
5494
5496
  #
@@ -5577,8 +5579,8 @@ module Meteor
5577
5579
  private :analyze_kaigyo_code
5578
5580
 
5579
5581
  def escape(content)
5580
- #特殊文字の置換
5581
- content.gsub!(@@pattern_escape, TABLE_FOR_ESCAPE_)
5582
+ # 特殊文字の置換
5583
+ content = content.gsub(@@pattern_escape, TABLE_FOR_ESCAPE_)
5582
5584
 
5583
5585
  content
5584
5586
  end
@@ -5592,7 +5594,7 @@ module Meteor
5592
5594
  private :escape_content
5593
5595
 
5594
5596
  def unescape(content)
5595
- #特殊文字の置換
5597
+ # 特殊文字の置換
5596
5598
  #「<」<-「&lt;」
5597
5599
  #「>」<-「&gt;」
5598
5600
  #「"」<-「&quot;」