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.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/ChangeLog +4 -0
- data/README.md +10 -3
- data/Rakefile +1 -1
- data/demo/{demo_html5.rb → html.rb} +5 -4
- data/demo/{demo_html4.rb → html4.rb} +5 -4
- data/demo/ml/sample.xml +11 -11
- data/demo/ml/sample_html.html +32 -0
- data/demo/ml/sample_html4.html +40 -0
- data/demo/ml/sample_xhtml.html +33 -0
- data/demo/ml/sample_xhtml4.html +33 -0
- data/demo/{demo_xhtml5.rb → xhtml.rb} +6 -5
- data/demo/{demo_xhtml4.rb → xhtml4.rb} +5 -4
- data/demo/{demo_xml.rb → xml.rb} +1 -0
- data/lib/meteor.rb +477 -475
- data/meteor.gemspec +4 -3
- metadata +23 -26
- data/demo/ml/sample_4.html +0 -40
- data/demo/ml/sample_5.html +0 -32
- data/demo/ml/sample_x4.html +0 -33
- data/demo/ml/sample_x5.html +0 -33
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.
|
|
23
|
+
# @version 0.9.12
|
|
22
24
|
#
|
|
23
25
|
|
|
24
26
|
module Meteor
|
|
25
27
|
|
|
26
|
-
VERSION = '0.9.
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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::
|
|
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::
|
|
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
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
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,
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
@cache[relative_url] =
|
|
1020
|
-
when Parser::
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
@cache[relative_url] =
|
|
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::
|
|
1046
|
+
when Parser::XHTML4, :xhtml4
|
|
1047
1047
|
ps = Meteor::Ml::Xhtml4::ParserImpl.new
|
|
1048
|
-
when Parser::HTML, :html,
|
|
1049
|
-
ps = Meteor::Ml::
|
|
1050
|
-
when Parser::
|
|
1051
|
-
ps = Meteor::Ml::
|
|
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::
|
|
1076
|
+
when Parser::XHTML4, :xhtml4
|
|
1077
1077
|
ps = Meteor::Ml::Xhtml4::ParserImpl.new
|
|
1078
|
-
when Parser::HTML, :html
|
|
1079
|
-
ps = Meteor::Ml::
|
|
1080
|
-
when Parser::
|
|
1081
|
-
ps = Meteor::Ml::
|
|
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
|
|
1108
|
-
ps = Meteor::Ml::
|
|
1109
|
-
when Parser::
|
|
1110
|
-
ps = Meteor::Ml::
|
|
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
|
|
1165
|
-
Meteor::Ml::
|
|
1166
|
-
when Meteor::Parser::
|
|
1167
|
-
Meteor::Ml::
|
|
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::
|
|
1219
|
+
when Parser::XHTML4, :xhtml4
|
|
1220
1220
|
ps = Meteor::Ml::Xhtml4::ParserImpl.new
|
|
1221
|
-
when Parser::HTML, :html
|
|
1222
|
-
ps = Meteor::Ml::
|
|
1223
|
-
when Parser::
|
|
1224
|
-
ps = Meteor::Ml::
|
|
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
|
|
1249
|
-
ps = Meteor::Ml::
|
|
1250
|
-
when Parser::
|
|
1251
|
-
ps = Meteor::Ml::
|
|
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 = ''
|
|
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 = '="'
|
|
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[^<>]*)>(((?!('
|
|
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 = "\")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
|
|
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 = '^([^,\\[\\]#\\.]+)$'
|
|
1544
|
+
PATTERN_FIND_1 = '^([^,\\[\\]#\\.]+)$'
|
|
1545
1545
|
# #id_attribute_value
|
|
1546
|
-
PATTERN_FIND_2_1 = '^#([^\\.,\\[\\]#][^,\\[\\]#]*)$'
|
|
1546
|
+
PATTERN_FIND_2_1 = '^#([^\\.,\\[\\]#][^,\\[\\]#]*)$'
|
|
1547
1547
|
# .class_attribute_value
|
|
1548
|
-
PATTERN_FIND_2_2 = '^\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'
|
|
1548
|
+
PATTERN_FIND_2_2 = '^\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'
|
|
1549
1549
|
# [attribute_name=attribute_value]
|
|
1550
|
-
PATTERN_FIND_2_3 = '^\\[([^\\[\\],]+)=([^\\[\\],]+)\\]$'
|
|
1550
|
+
PATTERN_FIND_2_3 = '^\\[([^\\[\\],]+)=([^\\[\\],]+)\\]$'
|
|
1551
1551
|
# E[attribute_name=attribute_value]
|
|
1552
|
-
PATTERN_FIND_3_1 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,\\[\\]]+)=([^,\\[\\]]+)\\]$'
|
|
1552
|
+
PATTERN_FIND_3_1 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,\\[\\]]+)=([^,\\[\\]]+)\\]$'
|
|
1553
1553
|
# E#id_attribute_value
|
|
1554
|
-
PATTERN_FIND_3_2 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)#([^\\.,\\[\\]#][^,\\[\\]#]*)$'
|
|
1554
|
+
PATTERN_FIND_3_2 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)#([^\\.,\\[\\]#][^,\\[\\]#]*)$'
|
|
1555
1555
|
# E.class_attribute_value
|
|
1556
|
-
PATTERN_FIND_3_3 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'
|
|
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 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,]+)=([^,]+)\\]\\[([^,]+)=([^,]+)\\]$'
|
|
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 = '="[^"]*"'
|
|
1573
|
+
SET_ATTR_1 = '="[^"]*"'
|
|
1574
1574
|
#getAttributeValue
|
|
1575
|
-
GET_ATTR_1 = '="([^"]*)"'
|
|
1575
|
+
GET_ATTR_1 = '="([^"]*)"'
|
|
1576
1576
|
#attributeMap
|
|
1577
|
-
GET_ATTRS_MAP = '([^\\s]*)="([^\"]*)"'
|
|
1577
|
+
GET_ATTRS_MAP = '([^\\s]*)="([^\"]*)"'
|
|
1578
1578
|
#removeAttribute
|
|
1579
|
-
ERASE_ATTR_1 = '="[^"]*"\\s?'
|
|
1579
|
+
ERASE_ATTR_1 = '="[^"]*"\\s?'
|
|
1580
1580
|
|
|
1581
1581
|
#cxtag
|
|
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@'
|
|
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="'
|
|
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=\""
|
|
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 = '<!-- @'
|
|
1604
|
-
SET_CX_2 = '-->'
|
|
1605
|
-
SET_CX_3 = '<!-- /@'
|
|
1606
|
-
SET_CX_4 = ' -->'
|
|
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'
|
|
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)*-->'
|
|
1615
|
-
CLEAN_2 = '<!--\\s\\/@[^<>]*(\\s)*-->'
|
|
1614
|
+
CLEAN_1 = '<!--\\s@[^<>]*\\s[^<>]*(\\s)*-->'
|
|
1615
|
+
CLEAN_2 = '<!--\\s\\/@[^<>]*(\\s)*-->'
|
|
1616
1616
|
#escape
|
|
1617
|
-
AND_1 = '&'
|
|
1618
|
-
AND_2 = '&'
|
|
1619
|
-
AND_3 = 'amp'
|
|
1620
|
-
LT_1 = '<'
|
|
1621
|
-
LT_2 = '<'
|
|
1622
|
-
LT_3 = 'lt'
|
|
1623
|
-
GT_1 = '>'
|
|
1624
|
-
GT_2 = '>'
|
|
1625
|
-
GT_3 = 'gt'
|
|
1626
|
-
QO_2 = '"'
|
|
1627
|
-
QO_3 = 'quot'
|
|
1628
|
-
AP_1 = '\''
|
|
1629
|
-
AP_2 = '''
|
|
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 = ''
|
|
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 = "\\\\\\*"
|
|
1617
|
+
AND_1 = '&'
|
|
1618
|
+
AND_2 = '&'
|
|
1619
|
+
AND_3 = 'amp'
|
|
1620
|
+
LT_1 = '<'
|
|
1621
|
+
LT_2 = '<'
|
|
1622
|
+
LT_3 = 'lt'
|
|
1623
|
+
GT_1 = '>'
|
|
1624
|
+
GT_2 = '>'
|
|
1625
|
+
GT_3 = 'gt'
|
|
1626
|
+
QO_2 = '"'
|
|
1627
|
+
QO_3 = 'quot'
|
|
1628
|
+
AP_1 = '\''
|
|
1629
|
+
AP_2 = '''
|
|
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'
|
|
1688
|
-
MODE_BF = 'r:'
|
|
1689
|
-
MODE_AF = ':utf-8'
|
|
1687
|
+
MODE_UTF8 = 'r:UTF-8'
|
|
1688
|
+
MODE_BF = 'r:'
|
|
1689
|
+
MODE_AF = ':utf-8'
|
|
1690
1690
|
|
|
1691
|
-
CSS_ID = 'id'
|
|
1692
|
-
CSS_CLASS = 'class'
|
|
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 =
|
|
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
|
|
3902
|
-
Meteor::Ml::
|
|
3903
|
-
when Parser::
|
|
3904
|
-
Meteor::Ml::
|
|
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"
|
|
4033
|
-
NBSP_2 = ' '
|
|
4034
|
-
NBSP_3 = 'nbsp'
|
|
4035
|
-
BR_1 = "\r?\n|\r"
|
|
4036
|
-
BR_2 = '<br>'
|
|
4032
|
+
KAIGYO_CODE = ["\r\n", "\n", "\r"]
|
|
4033
|
+
NBSP_2 = ' '
|
|
4034
|
+
NBSP_3 = 'nbsp'
|
|
4035
|
+
BR_1 = "\r?\n|\r"
|
|
4036
|
+
BR_2 = '<br>'
|
|
4037
4037
|
|
|
4038
|
-
META = 'META'
|
|
4039
|
-
META_S = 'meta'
|
|
4038
|
+
META = 'META'
|
|
4039
|
+
META_S = 'meta'
|
|
4040
4040
|
|
|
4041
4041
|
#MATCH_TAG = "br|hr|img|input|meta|base"
|
|
4042
|
-
@@match_tag = ['br'
|
|
4042
|
+
@@match_tag = ['br', 'hr', 'img', 'input', 'meta', 'base'] #[Array] 内容のない要素
|
|
4043
4043
|
#@@match_tag_2 = "textarea|option|pre"
|
|
4044
|
-
@@match_tag_2 =['textarea'
|
|
4044
|
+
@@match_tag_2 =['textarea', 'option', 'pre'] #[Array] 改行を<br>に変換する必要のない要素
|
|
4045
4045
|
|
|
4046
|
-
@@match_tag_sng = ['texarea'
|
|
4046
|
+
@@match_tag_sng = ['texarea', 'select', 'option', 'form', 'fieldset'] #[Array] 入れ子にできない要素
|
|
4047
4047
|
|
|
4048
|
-
HTTP_EQUIV = 'http-equiv'
|
|
4049
|
-
CONTENT_TYPE = 'Content-Type'
|
|
4050
|
-
CONTENT = 'content'
|
|
4048
|
+
HTTP_EQUIV = 'http-equiv'
|
|
4049
|
+
CONTENT_TYPE = 'Content-Type'
|
|
4050
|
+
CONTENT = 'content'
|
|
4051
4051
|
|
|
4052
|
-
@@attr_logic = ['disabled'
|
|
4053
|
-
OPTION = 'option'
|
|
4054
|
-
SELECTED = 'selected'
|
|
4055
|
-
INPUT = 'input'
|
|
4056
|
-
CHECKED = 'checked'
|
|
4057
|
-
RADIO = 'radio'
|
|
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'
|
|
4060
|
-
DISABLED = 'disabled'
|
|
4059
|
+
DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup'] #[Array] disabled属性のある要素
|
|
4060
|
+
DISABLED = 'disabled'
|
|
4061
4061
|
#READONLY_TYPE = "text|password"
|
|
4062
|
-
READONLY_TYPE = ['text'
|
|
4063
|
-
TEXTAREA = 'textarea'
|
|
4064
|
-
READONLY='readonly'
|
|
4065
|
-
SELECT = 'select'
|
|
4066
|
-
MULTIPLE = 'multiple'
|
|
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$'
|
|
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$'
|
|
4084
|
-
CHECKED_M = '\\schecked\\s|\\schecked$|\\sCHECKED\\s|\\sCHECKED$'
|
|
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$'
|
|
4087
|
-
DISABLED_M = '\\sdisabled\\s|\\sdisabled$|\\sDISABLED\\s|\\sDISABLED$'
|
|
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$'
|
|
4090
|
-
READONLY_M = '\\sreadonly\\s|\\sreadonly$|\\sREADONLY\\s|\\sREADONLY$'
|
|
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$'
|
|
4093
|
-
MULTIPLE_M = '\\smultiple\\s|\\smultiple$|\\sMULTIPLE\\s|\\sMULTIPLE$'
|
|
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$'
|
|
4095
|
+
MULTIPLE_R = 'multiple\\s|multiple$|MULTIPLE\\s|MULTIPLE$'
|
|
4096
4096
|
|
|
4097
|
-
TRUE = 'true'
|
|
4098
|
-
FALSE = 'false'
|
|
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'
|
|
4104
|
-
TYPE_U = 'TYPE'
|
|
4103
|
+
TYPE_L = 'type'
|
|
4104
|
+
TYPE_U = 'TYPE'
|
|
4105
4105
|
|
|
4106
|
-
PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt|nbsp);'
|
|
4107
|
-
GET_ATTRS_MAP2='\\s(disabled|readonly|checked|selected|multiple)'
|
|
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
|
-
'&' => '&'
|
|
4128
|
-
'"' => '"'
|
|
4129
|
-
'\'' => '''
|
|
4130
|
-
'<' => '<'
|
|
4131
|
-
'>' => '>'
|
|
4132
|
-
' ' => ' '
|
|
4127
|
+
'&' => '&',
|
|
4128
|
+
'"' => '"',
|
|
4129
|
+
'\'' => ''',
|
|
4130
|
+
'<' => '<',
|
|
4131
|
+
'>' => '>',
|
|
4132
|
+
' ' => ' ',
|
|
4133
4133
|
}
|
|
4134
4134
|
|
|
4135
4135
|
TABLE_FOR_ESCAPE_CONTENT_ = {
|
|
4136
|
-
'&' => '&'
|
|
4137
|
-
'"' => '"'
|
|
4138
|
-
'\'' => '''
|
|
4139
|
-
'<' => '<'
|
|
4140
|
-
'>' => '>'
|
|
4141
|
-
' ' => ' '
|
|
4142
|
-
"\r\n" => '<br>'
|
|
4143
|
-
"\r" => '<br>'
|
|
4144
|
-
"\n" => '<br>'
|
|
4136
|
+
'&' => '&',
|
|
4137
|
+
'"' => '"',
|
|
4138
|
+
'\'' => ''',
|
|
4139
|
+
'<' => '<',
|
|
4140
|
+
'>' => '>',
|
|
4141
|
+
' ' => ' ',
|
|
4142
|
+
"\r\n" => '<br>',
|
|
4143
|
+
"\r" => '<br>',
|
|
4144
|
+
"\n" => '<br>',
|
|
4145
4145
|
}
|
|
4146
4146
|
|
|
4147
|
-
PATTERN_ESCAPE = "[&\"'<> ]"
|
|
4148
|
-
PATTERN_ESCAPE_CONTENT = "[&\"'<> \\n]"
|
|
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
|
-
|
|
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"
|
|
4754
|
-
KAIGYO_CODE = ["\r\n"
|
|
4755
|
-
NBSP_2 = ' '
|
|
4756
|
-
NBSP_3 = 'nbsp'
|
|
4757
|
-
BR_1 = "\r?\n|\r"
|
|
4758
|
-
BR_2 = '<br/>'
|
|
4759
|
-
BR_3 = '<br\\/>'
|
|
4754
|
+
#KAIGYO_CODE = "\r?\n|\r"
|
|
4755
|
+
KAIGYO_CODE = ["\r\n", "\n", "\r"]
|
|
4756
|
+
NBSP_2 = ' '
|
|
4757
|
+
NBSP_3 = 'nbsp'
|
|
4758
|
+
BR_1 = "\r?\n|\r"
|
|
4759
|
+
BR_2 = '<br/>'
|
|
4760
|
+
BR_3 = '<br\\/>'
|
|
4760
4761
|
|
|
4761
|
-
META = 'META'
|
|
4762
|
-
META_S = 'meta'
|
|
4762
|
+
META = 'META'
|
|
4763
|
+
META_S = 'meta'
|
|
4763
4764
|
|
|
4764
4765
|
#@@match_tag_2 = "textarea|option|pre"
|
|
4765
|
-
@@match_tag_2 = ['textarea'
|
|
4766
|
-
|
|
4767
|
-
@@attr_logic = ['disabled'
|
|
4768
|
-
OPTION = 'option'
|
|
4769
|
-
SELECTED = 'selected'
|
|
4770
|
-
INPUT = 'input'
|
|
4771
|
-
CHECKED = 'checked'
|
|
4772
|
-
RADIO = 'radio'
|
|
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'
|
|
4775
|
-
DISABLED = 'disabled'
|
|
4775
|
+
DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup'] #[Array] disabled属性のある要素
|
|
4776
|
+
DISABLED = 'disabled'
|
|
4776
4777
|
#READONLY_TYPE = "text|password"
|
|
4777
|
-
READONLY_TYPE = ['text'
|
|
4778
|
-
TEXTAREA = 'textarea'
|
|
4779
|
-
READONLY='readonly'
|
|
4780
|
-
SELECT = 'select'
|
|
4781
|
-
MULTIPLE = 'multiple'
|
|
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="[^"]*"$'
|
|
4797
|
-
SELECTED_M1 = '\\sselected="([^"]*)"\\s|\\sselected="([^"]*)"$'
|
|
4798
|
-
SELECTED_R = 'selected="[^"]*"'
|
|
4799
|
-
SELECTED_U = 'selected="selected"'
|
|
4800
|
-
CHECKED_M = '\\schecked="[^"]*"\\s|\\schecked="[^"]*"$'
|
|
4801
|
-
CHECKED_M1 = '\\schecked="([^"]*)"\\s|\\schecked="([^"]*)"$'
|
|
4802
|
-
CHECKED_R = 'checked="[^"]*"'
|
|
4803
|
-
CHECKED_U = 'checked="checked"'
|
|
4804
|
-
DISABLED_M = '\\sdisabled="[^"]*"\\s|\\sdisabled="[^"]*"$'
|
|
4805
|
-
DISABLED_M1 = '\\sdisabled="([^"]*)"\\s|\\sdisabled="([^"]*)"$'
|
|
4806
|
-
DISABLED_R = 'disabled="[^"]*"'
|
|
4807
|
-
DISABLED_U = 'disabled="disabled"'
|
|
4808
|
-
READONLY_M = '\\sreadonly="[^"]*"\\s|\\sreadonly="[^"]*"$'
|
|
4809
|
-
READONLY_M1 = '\\sreadonly="([^"]*)"\\s|\\sreadonly="([^"]*)"$'
|
|
4810
|
-
READONLY_R = 'readonly="[^"]*"'
|
|
4811
|
-
READONLY_U = 'readonly="readonly"'
|
|
4812
|
-
MULTIPLE_M = '\\smultiple="[^"]*"\\s|\\smultiple="[^"]*"$'
|
|
4813
|
-
MULTIPLE_M1 = '\\smultiple="([^"]*)"\\s|\\smultiple="([^"]*)"$'
|
|
4814
|
-
MULTIPLE_R = 'multiple="[^"]*"'
|
|
4815
|
-
MULTIPLE_U = 'multiple="multiple"'
|
|
4816
|
-
|
|
4817
|
-
HTTP_EQUIV = 'http-equiv'
|
|
4818
|
-
CONTENT_TYPE = 'Content-Type'
|
|
4819
|
-
CONTENT = 'content'
|
|
4820
|
-
|
|
4821
|
-
TRUE = 'true'
|
|
4822
|
-
FALSE = 'false'
|
|
4823
|
-
|
|
4824
|
-
TYPE_L = 'type'
|
|
4825
|
-
TYPE_U = 'TYPE'
|
|
4826
|
-
|
|
4827
|
-
PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt|nbsp);'
|
|
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
|
-
'&' => '&'
|
|
4854
|
-
'"' => '"'
|
|
4855
|
-
'\'' => '''
|
|
4856
|
-
'<' => '<'
|
|
4857
|
-
'>' => '>'
|
|
4858
|
-
' ' => ' '
|
|
4854
|
+
'&' => '&',
|
|
4855
|
+
'"' => '"',
|
|
4856
|
+
'\'' => ''',
|
|
4857
|
+
'<' => '<',
|
|
4858
|
+
'>' => '>',
|
|
4859
|
+
' ' => ' ',
|
|
4859
4860
|
}
|
|
4860
4861
|
|
|
4861
4862
|
TABLE_FOR_ESCAPE_CONTENT_ = {
|
|
4862
|
-
'&' => '&'
|
|
4863
|
-
'"' => '"'
|
|
4864
|
-
'\'' => '''
|
|
4865
|
-
'<' => '<'
|
|
4866
|
-
'>' => '>'
|
|
4867
|
-
' ' => ' '
|
|
4868
|
-
"\r\n" => '<br/>'
|
|
4869
|
-
"\r" => '<br/>'
|
|
4870
|
-
"\n" => '<br/>'
|
|
4863
|
+
'&' => '&',
|
|
4864
|
+
'"' => '"',
|
|
4865
|
+
'\'' => ''',
|
|
4866
|
+
'<' => '<',
|
|
4867
|
+
'>' => '>',
|
|
4868
|
+
' ' => ' ',
|
|
4869
|
+
"\r\n" => '<br/>',
|
|
4870
|
+
"\r" => '<br/>',
|
|
4871
|
+
"\n" => '<br/>',
|
|
4871
4872
|
}
|
|
4872
4873
|
|
|
4873
|
-
PATTERN_ESCAPE = '[&"\'<> ]'
|
|
4874
|
-
PATTERN_ESCAPE_CONTENT = '[&"\'<> \\n]'
|
|
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
|
-
|
|
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
|
#「<」<-「<」
|
|
5141
5143
|
#「>」<-「>」
|
|
5142
5144
|
#「"」<-「"l」
|
|
@@ -5181,30 +5183,30 @@ module Meteor
|
|
|
5181
5183
|
|
|
5182
5184
|
end
|
|
5183
5185
|
|
|
5184
|
-
module
|
|
5186
|
+
module Html
|
|
5185
5187
|
|
|
5186
5188
|
#
|
|
5187
|
-
#
|
|
5189
|
+
# HTML parser (HTMLパーサ)
|
|
5188
5190
|
#
|
|
5189
5191
|
class ParserImpl < Meteor::Ml::Html4::ParserImpl
|
|
5190
5192
|
|
|
5191
|
-
CHARSET = 'charset'
|
|
5192
|
-
UTF8 = 'utf-8'
|
|
5193
|
+
CHARSET = 'charset'
|
|
5194
|
+
UTF8 = 'utf-8'
|
|
5193
5195
|
|
|
5194
|
-
MATCH_TAG = ['br'
|
|
5196
|
+
MATCH_TAG = ['br', 'hr', 'img', 'input', 'meta', 'base', 'embed', 'command', 'keygen'] #[Array] 内容のない要素
|
|
5195
5197
|
|
|
5196
|
-
MATCH_TAG_SNG = ['texarea'
|
|
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'
|
|
5200
|
+
ATTR_LOGIC = ['disabled', 'readonly', 'checked', 'selected', 'multiple', 'required'] #[Array] 論理値で指定する属性
|
|
5199
5201
|
|
|
5200
|
-
DISABLE_ELEMENT = ['input'
|
|
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$'
|
|
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$'
|
|
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::
|
|
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
|
|
5330
|
+
module Xhtml
|
|
5329
5331
|
|
|
5330
5332
|
#
|
|
5331
|
-
#
|
|
5333
|
+
# XHTML parser (XHTMLパーサ)
|
|
5332
5334
|
#
|
|
5333
5335
|
class ParserImpl < Meteor::Ml::Xhtml4::ParserImpl
|
|
5334
5336
|
|
|
5335
|
-
CHARSET = 'charset'
|
|
5336
|
-
UTF8 = 'utf-8'
|
|
5337
|
+
CHARSET = 'charset'
|
|
5338
|
+
UTF8 = 'utf-8'
|
|
5337
5339
|
|
|
5338
|
-
ATTR_LOGIC = ['disabled'
|
|
5340
|
+
ATTR_LOGIC = ['disabled', 'readonly', 'checked', 'selected', 'multiple', 'required'] #[Array] 論理値で指定する属性
|
|
5339
5341
|
|
|
5340
|
-
DISABLE_ELEMENT = ['input'
|
|
5342
|
+
DISABLE_ELEMENT = ['input', 'textarea', 'select', 'optgroup', 'fieldset'] #[Array] disabled属性のある要素
|
|
5341
5343
|
|
|
5342
|
-
REQUIRE_ELEMENT = ['input'
|
|
5343
|
-
REQUIRED = 'required'
|
|
5344
|
+
REQUIRE_ELEMENT = ['input', 'textarea'] #[Array] required属性のある要素
|
|
5345
|
+
REQUIRED = 'required'
|
|
5344
5346
|
|
|
5345
|
-
REQUIRED_M = '\\srequired="[^"]*"\\s|\\srequired="[^"]*"$'
|
|
5346
|
-
REQUIRED_M1 = '\\srequired="([^"]*)"\\s|\\srequired="([^"]*)"$'
|
|
5347
|
-
REQUIRED_R = 'required="[^"]*"'
|
|
5348
|
-
REQUIRED_U = 'required="required"'
|
|
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::
|
|
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"
|
|
5478
|
-
KAIGYO_CODE = ["\r\n"
|
|
5479
|
+
#KAIGYO_CODE = "\r?\n|\r"
|
|
5480
|
+
KAIGYO_CODE = ["\r\n", "\n", "\r"]
|
|
5479
5481
|
|
|
5480
|
-
PATTERN_UNESCAPE = '&(amp|quot|apos|gt|lt);'
|
|
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
|
-
'&' => '&'
|
|
5486
|
-
'"' => '"'
|
|
5487
|
-
'\'' => '''
|
|
5488
|
-
'<' => '<'
|
|
5489
|
-
'>' => '>'
|
|
5487
|
+
'&' => '&',
|
|
5488
|
+
'"' => '"',
|
|
5489
|
+
'\'' => ''',
|
|
5490
|
+
'<' => '<',
|
|
5491
|
+
'>' => '>',
|
|
5490
5492
|
}
|
|
5491
|
-
PATTERN_ESCAPE = '[&\"\'<>]'
|
|
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
|
|
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
|
#「<」<-「<」
|
|
5597
5599
|
#「>」<-「>」
|
|
5598
5600
|
#「"」<-「"」
|