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