meteor 0.9.7.3 → 0.9.7.4

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.
Files changed (2) hide show
  1. data/lib/meteor.rb +314 -286
  2. metadata +5 -4
data/lib/meteor.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # -* coding: UTF-8 -*-
2
2
  # Meteor - A lightweight (X)HTML(5) & XML parser
3
3
  #
4
- # Copyright (C) 2008-2011 Yasumasa Ashida.
4
+ # Copyright (C) 2008-2013 Yasumasa Ashida.
5
5
  #
6
6
  # This program is free software; you can redistribute it and/or modify
7
7
  # it under the terms of the GNU Lesser General Public License as published by
@@ -18,12 +18,12 @@
18
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
19
  #
20
20
  # @author Yasumasa Ashida
21
- # @version 0.9.7.3
21
+ # @version 0.9.7.4
22
22
  #
23
23
 
24
24
  module Meteor
25
25
 
26
- VERSION = "0.9.7.3"
26
+ VERSION = "0.9.7.4"
27
27
 
28
28
  RUBY_VERSION_1_9_0 = '1.9.0'
29
29
 
@@ -42,6 +42,12 @@ module Meteor
42
42
  SIX = 6
43
43
  SEVEN = 7
44
44
 
45
+ HTML = ZERO
46
+ XHTML = ONE
47
+ HTML5 = TWO
48
+ XHTML5 = THREE
49
+ XML = FOUR
50
+
45
51
  #
46
52
  # Element Class (要素クラス)
47
53
  #
@@ -49,8 +55,8 @@ module Meteor
49
55
 
50
56
  #
51
57
  # initializer (イニシャライザ)
52
- # @overload initialize(name)
53
- # @param [String] name element name (名前)
58
+ # @overload initialize(tag)
59
+ # @param [String] tag tag name (タグ名)
54
60
  # @overload initialize(elm)
55
61
  # @param [Meteor::Element] elm element (要素)
56
62
  # @overload initialize(elm,ps)
@@ -81,6 +87,7 @@ module Meteor
81
87
  #@usable = false
82
88
  @origin = args[0]
83
89
  args[0].copy = self
90
+ when ZERO
84
91
  else
85
92
  raise ArgumentError
86
93
  end
@@ -88,10 +95,10 @@ module Meteor
88
95
 
89
96
  #
90
97
  # initializer (イニシャライザ)
91
- # @param [String] name element name (名前)
98
+ # @param [String] tag tag name (タグ名)
92
99
  #
93
- def initialize_s(name)
94
- @name = name
100
+ def initialize_s(tag)
101
+ @name = tag
95
102
  #@attributes = nil
96
103
  #@mixed_content = nil
97
104
  #@pattern = nil
@@ -173,7 +180,7 @@ module Meteor
173
180
  end
174
181
  end
175
182
 
176
- attr_accessor :name #[String] element name (要素名)
183
+ attr_accessor :name #[String] tag name (要素名)
177
184
  attr_accessor :attributes #[String] attributes (属性群)
178
185
  attr_accessor :mixed_content #[String] content (内容)
179
186
  attr_accessor :pattern #[String] pattern (パターン)
@@ -241,23 +248,23 @@ module Meteor
241
248
  # get element (要素を取得する)
242
249
  # @overload element()
243
250
  # get element (要素を取得する)
244
- # @return [Meteor::Element] element (要素)
245
- # @overload element(elm_name)
246
- # get element using element name (要素名で要素を取得する)
247
- # @param [String] elm_name element name (要素名)
251
+ # @return [Meteor::Element,NilClass] element (要素)
252
+ # @overload element(tag)
253
+ # get element using tag name (要素のタグ名で要素を取得する)
254
+ # @param [String] tag tag name (タグ名)
248
255
  # @return [Meteor::Element] 要素
249
- # @overload element(elm_name,attrs)
250
- # get element using element name and attribute map (要素名と属性(属性名="属性値")あるいは属性1・属性2(属性名="属性値")で要素を取得する)
251
- # @param [String] elm_name element name (要素名)
256
+ # @overload element(tag,attrs)
257
+ # get element using tag name and attribute map (要素のタグ名と属性(属性名="属性値")あるいは属性1・属性2(属性名="属性値")で要素を取得する)
258
+ # @param [String] tag tag name (タグ名)
252
259
  # @param [Hash] attrs attribute map (属性マップ)
253
260
  # @return [Meteor::Element] element (要素)
254
261
  # @overload element(attrs)
255
262
  # get element using attribute map (属性(属性名="属性値")あるいは属性1・属性2(属性名="属性値")で要素を取得する)
256
263
  # @param [Hash] attrs attribute map (属性マップ)
257
264
  # @return [Meteor::Element] 要素
258
- # @overload element(elm_name,attr_name,attr_value)
259
- # get element using element name and attribute(name="value") (要素名と属性(属性名="属性値")で要素を取得する)
260
- # @param [String] elm_name element name (要素名)
265
+ # @overload element(tag,attr_name,attr_value)
266
+ # get element using tag name and attribute(name="value") (要素のタグ名と属性(属性名="属性値")で要素を取得する)
267
+ # @param [String] tag tag name (タグ名)
261
268
  # @param [String] attr_name attribute name (属性名)
262
269
  # @param [String] attr_value attribute value (属性値)
263
270
  # @return [Meteor::Element] element (要素)
@@ -266,9 +273,9 @@ module Meteor
266
273
  # @param [String] attr_name 属性名
267
274
  # @param [String] attr_value 属性値
268
275
  # @return [Meteor::Element] 要素
269
- # @overload element(elm_name,attr_name1,attr_value1,attr_name2,attr_value2)
270
- # get element using element name and attribute1,2(name="value") (要素名と属性1・属性2(属性名="属性値")で要素を取得する)
271
- # @param [String] elm_name element name (要素名)
276
+ # @overload element(tag,attr_name1,attr_value1,attr_name2,attr_value2)
277
+ # get element using tag name and attribute1,2(name="value") (要素のタグ名と属性1・属性2(属性名="属性値")で要素を取得する)
278
+ # @param [String] tag tag name (タグ名)
272
279
  # @param [String] attr_name1 attribute name1 (属性名1)
273
280
  # @param [String] attr_value1 attribute value1 (属性値1)
274
281
  # @param [String] attr_name2 attribute name2 (属性名2)
@@ -299,19 +306,22 @@ module Meteor
299
306
  alias child element
300
307
 
301
308
  #
302
- # get child element using selector (子要素を取得する)
309
+ # get child element using selector like css3(CSS3のようにセレクタを用いて子要素を取得する)
310
+ # CSS3 selector partial support (CSS3セレクタの部分的サポート)
303
311
  # @param selector [String] selector (セレクタ)
304
312
  # @return [Meteor::Element] element (要素)
305
313
  #
306
- def find(selector)
307
- @parser.find(selector)
314
+ def css(selector)
315
+ @parser.css(selector)
308
316
  end
309
317
 
318
+ alias :find :css
319
+
310
320
  #
311
321
  # get cx(comment extension) tag (CX(コメント拡張)タグを取得する)
312
- # @overload cxtag(elm_name,id)
313
- # 要素名とID属性(id="ID属性値")でCX(コメント拡張)タグを取得する
314
- # @param [String] elm_name 要素名
322
+ # @overload cxtag(tag,id)
323
+ # 要素のタグ名とID属性(id="ID属性値")でCX(コメント拡張)タグを取得する
324
+ # @param [String] tag タグ名
315
325
  # @param [String] id ID属性値
316
326
  # @return [Meteor::Element] 要素
317
327
  # @overload cxtag(id)
@@ -446,17 +456,17 @@ module Meteor
446
456
 
447
457
  EMPTY = ''
448
458
 
449
- #
450
- # イニシャライザ
451
- #
452
- def initialize()
453
- #コンテントタイプ
454
- #@contentType = ''
455
- #改行コード
456
- #@kaigyoCode = ''
457
- #文字コード
458
- #@character_encoding=''
459
- end
459
+ ##
460
+ ## イニシャライザ
461
+ ##
462
+ #def initialize()
463
+ # #コンテントタイプ
464
+ # #@contentType = ''
465
+ # #改行コード
466
+ # #@kaigyoCode = ''
467
+ # #文字コード
468
+ # #@character_encoding=''
469
+ #end
460
470
 
461
471
  attr_accessor :content_type #[String] content type (コンテントタイプ)
462
472
  attr_accessor :kaigyo_code #[String] newline (改行コード)
@@ -1057,13 +1067,13 @@ module Meteor
1057
1067
 
1058
1068
  #
1059
1069
  # initializer (イニシャライザ)
1060
- # @overload initialize(elm_name)
1061
- # @param [String] elm_name element name (要素名)
1070
+ # @overload initialize(tag)
1071
+ # @param [String] tag tag name (タグ名)
1062
1072
  # @overload initialize(attr_name,attr_value)
1063
1073
  # @param [String] attr_name attribute name (属性名)
1064
1074
  # @param [String] attr_value attribute value (属性値)
1065
- # @overload initialize(elm_name,attr_name,attr_value)
1066
- # @param [String] elm_name element name (要素名)
1075
+ # @overload initialize(tag,attr_name,attr_value)
1076
+ # @param [String] tag tag name (タグ名)
1067
1077
  # @param [String] attr_name attribute name (属性名)
1068
1078
  # @param [String] attr_value attribute value (属性値)
1069
1079
  # @overload initialize(attr_name1,attr_value1,attr_name2,attr_value2)
@@ -1071,8 +1081,8 @@ module Meteor
1071
1081
  # @param [String] attr_value1 attribute value1 (属性値1)
1072
1082
  # @param [String] attr_name2 attribute name2 (属性名2)
1073
1083
  # @param [String] attr_value2 attribute value2 (属性値2)
1074
- # @overload initialize(elm_name,attr_name1,attr_value1,attr_name2,attr_value2)
1075
- # @param [String] elm_name element name (要素名)
1084
+ # @overload initialize(tag,attr_name1,attr_value1,attr_name2,attr_value2)
1085
+ # @param [String] tag tag name (タグ名)
1076
1086
  # @param [String] attr_name1 attribute name1 (属性名1)
1077
1087
  # @param [String] attr_value1 attribute value1 (属性値1)
1078
1088
  # @param [String] attr_name2 attribute name2 (属性名2)
@@ -1093,8 +1103,8 @@ module Meteor
1093
1103
  end
1094
1104
  end
1095
1105
 
1096
- def initialize_1(elm_name)
1097
- self.message="element not found : #{elm_name}"
1106
+ def initialize_1(tag)
1107
+ self.message="element not found : #{tag}"
1098
1108
  end
1099
1109
 
1100
1110
  private :initialize_1
@@ -1105,8 +1115,8 @@ module Meteor
1105
1115
 
1106
1116
  private :initialize_2
1107
1117
 
1108
- def initialize_3(elm_name, attr_name, attr_value)
1109
- self.message="element not found : #{elm_name}[#{attr_name}=#{attr_value}]"
1118
+ def initialize_3(tag, attr_name, attr_value)
1119
+ self.message="element not found : #{tag}[#{attr_name}=#{attr_value}]"
1110
1120
  end
1111
1121
 
1112
1122
  private :initialize_3
@@ -1117,8 +1127,8 @@ module Meteor
1117
1127
 
1118
1128
  private :initialize_4
1119
1129
 
1120
- def initialize_5(elm_name, attr_name1, attr_value1, attr_name2, attr_value2)
1121
- self.message="element not found : #{elm_name}[#{attr_name1}=#{attr_value1}][#{attr_name2}=#{attr_value2}]"
1130
+ def initialize_5(tag, attr_name1, attr_value1, attr_name2, attr_value2)
1131
+ self.message="element not found : #{tag}[#{attr_name1}=#{attr_value1}][#{attr_name2}=#{attr_value2}]"
1122
1132
  end
1123
1133
 
1124
1134
  private :initialize_5
@@ -1229,15 +1239,19 @@ module Meteor
1229
1239
  PATTERN_FIND_2_1 = '^#([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1230
1240
  PATTERN_FIND_2_2 = '^\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1231
1241
  PATTERN_FIND_2_3 = '^\\[([^\\[\\],]+)=([^\\[\\],]+)\\]$'
1232
- PATTERN_FIND_3 = '^([^\\.,\\[\\]#][^,\\[\\]#]*)\\[([^,\\[\\]]+)=([^,\\[\\]]+)\\]$'
1242
+ PATTERN_FIND_3_1 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,\\[\\]]+)=([^,\\[\\]]+)\\]$'
1243
+ PATTERN_FIND_3_2 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)#([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1244
+ PATTERN_FIND_3_3 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\.([^\\.,\\[\\]#][^,\\[\\]#]*)$'
1233
1245
  PATTERN_FIND_4 = '^\\[([^,]+)=([^,]+)\\]\\[([^,]+)=([^,]+)\\]$'
1234
- PATTERN_FIND_5 = '^([^\\.,\\[\\]#][^,\\[\\]#]*)\\[([^,]+)=([^,]+)\\]\\[([^,]+)=([^,]+)\\]$'
1246
+ PATTERN_FIND_5 = '^([^\\.,\\[\\]#][^,\\[\\]#]+)\\[([^,]+)=([^,]+)\\]\\[([^,]+)=([^,]+)\\]$'
1235
1247
 
1236
1248
  @@pattern_find_1 = Regexp.new(PATTERN_FIND_1)
1237
1249
  @@pattern_find_2_1 = Regexp.new(PATTERN_FIND_2_1)
1238
1250
  @@pattern_find_2_2 = Regexp.new(PATTERN_FIND_2_2)
1239
1251
  @@pattern_find_2_3 = Regexp.new(PATTERN_FIND_2_3)
1240
- @@pattern_find_3 = Regexp.new(PATTERN_FIND_3)
1252
+ @@pattern_find_3_1 = Regexp.new(PATTERN_FIND_3_1)
1253
+ @@pattern_find_3_2 = Regexp.new(PATTERN_FIND_3_2)
1254
+ @@pattern_find_3_3 = Regexp.new(PATTERN_FIND_3_3)
1241
1255
  @@pattern_find_4 = Regexp.new(PATTERN_FIND_4)
1242
1256
  @@pattern_find_5 = Regexp.new(PATTERN_FIND_5)
1243
1257
 
@@ -1360,6 +1374,9 @@ module Meteor
1360
1374
  MODE_BF = 'r:'
1361
1375
  MODE_AF = ':utf-8'
1362
1376
 
1377
+ CSS_ID = 'id'
1378
+ CSS_CLASS = 'class'
1379
+
1363
1380
  #
1364
1381
  # initializer (イニシャライザ)
1365
1382
  #
@@ -1450,22 +1467,22 @@ module Meteor
1450
1467
 
1451
1468
  #
1452
1469
  # get element (要素を取得する)
1453
- # @overload element(elm_name)
1454
- # get element using element name (要素名で要素を取得する)
1455
- # @param [String] elm_name element name (要素名)
1470
+ # @overload element(tag)
1471
+ # get element using tag name (要素のタグ名で要素を取得する)
1472
+ # @param [String] tag tag name (タグ名)
1456
1473
  # @return [Meteor::Element] element(要素)
1457
- # @overload element(elm_name,attrs)
1458
- # 要素名と属性(属性名="属性値")あるいは属性1・属性2(属性名="属性値")で要素を取得する
1459
- # @param [String] elm_name 要素名
1474
+ # @overload element(tag,attrs)
1475
+ # 要素のタグ名と属性(属性名="属性値")あるいは属性1・属性2(属性名="属性値")で要素を取得する
1476
+ # @param [String] tag タグ名
1460
1477
  # @param [Hash] attrs 属性マップ
1461
1478
  # @return [Meteor::Element] 要素
1462
1479
  # @overload element(attrs)
1463
- # get element using element name and attribute map (属性(属性名="属性値")あるいは属性1・属性2(属性名="属性値")で要素を取得する)
1480
+ # get element using tag name and attribute map (属性(属性名="属性値")あるいは属性1・属性2(属性名="属性値")で要素を取得する)
1464
1481
  # @param [Hash] attrs attribute map (属性マップ)
1465
1482
  # @return [Meteor::Element] element (要素)
1466
- # @overload element(elm_name,attr_name,attr_value)
1467
- # get element using element name and attribute(name="value") (要素名と属性(属性名="属性値")で要素を取得する)
1468
- # @param [String] elm_name element name (要素名)
1483
+ # @overload element(tag,attr_name,attr_value)
1484
+ # get element using tag name and attribute(name="value") (要素のタグ名と属性(属性名="属性値")で要素を取得する)
1485
+ # @param [String] tag tag name (タグ名)
1469
1486
  # @param [String] attr_name attribute name (属性名)
1470
1487
  # @param [String] attr_value attribute value (属性値)
1471
1488
  # @return [Meteor::Element] element (要素)
@@ -1474,9 +1491,9 @@ module Meteor
1474
1491
  # @param [String] attr_name attribute name (属性名)
1475
1492
  # @param [String] attr_value attribute value (属性値)
1476
1493
  # @return [Meteor::Element] element (要素)
1477
- # @overload element(elm_name,attr_name1,attr_value1,attr_name2,attr_value2)
1478
- # get element using element name and attribute1,2(name="value") (要素名と属性1・属性2(属性名="属性値")で要素を取得する)
1479
- # @param [String] elm_name element name (要素の名前)
1494
+ # @overload element(tag,attr_name1,attr_value1,attr_name2,attr_value2)
1495
+ # get element using tag name and attribute1,2(name="value") (要素のタグ名と属性1・属性2(属性名="属性値")で要素を取得する)
1496
+ # @param [String] tag tag name (タグ名)
1480
1497
  # @param [String] attr_name1 attribute name1 (属性名1)
1481
1498
  # @param [String] attr_value1 attribute value1 (属性値1)
1482
1499
  # @param [String] attr_name2 attribute name2 (属性名2)
@@ -1568,11 +1585,12 @@ module Meteor
1568
1585
  end
1569
1586
 
1570
1587
  #
1571
- # get element using selector (要素を取得する)
1588
+ # get element using selector like CSS3 (CSS3のようにセレクタを用いて要素を取得する)
1589
+ # CSS3 selector partial support (CSS3セレクタの部分的サポート)
1572
1590
  # @param [String] selector selector (セレクタ)
1573
1591
  # @return [Meteor::Element] element (要素)
1574
1592
  #
1575
- def find(selector)
1593
+ def css(selector)
1576
1594
  #puts selector
1577
1595
  if @res = @@pattern_find_1.match(selector) then
1578
1596
  element_1(@res[1])
@@ -1580,15 +1598,25 @@ module Meteor
1580
1598
  @element_cache.store(@elm_.object_id, @elm_)
1581
1599
  end
1582
1600
  elsif @res = @@pattern_find_2_1.match(selector) then
1583
- element_2('id', @res[1])
1601
+ element_2(CSS_ID, @res[1])
1584
1602
  if @elm_ then
1585
1603
  @element_cache.store(@elm_.object_id, @elm_)
1586
1604
  end
1587
- elsif @res = @@pattern_find_3.match(selector) then
1605
+ elsif @res = @@pattern_find_3_1.match(selector) then
1588
1606
  element_3(@res[1], @res[2], @res[3])
1589
1607
  if @elm_ then
1590
1608
  @element_cache.store(@elm_.object_id, @elm_)
1591
1609
  end
1610
+ elsif @res = @@pattern_find_3_2.match(selector) then
1611
+ element_3(@res[1], CSS_ID, @res[2])
1612
+ if @elm_ then
1613
+ @element_cache.store(@elm_.object_id, @elm_)
1614
+ end
1615
+ elsif @res = @@pattern_find_3_3.match(selector) then
1616
+ element_3(@res[1], CSS_CLASS, @res[2])
1617
+ if @elm_ then
1618
+ @element_cache.store(@elm_.object_id, @elm_)
1619
+ end
1592
1620
  elsif @res = @@pattern_find_5.match(selector) then
1593
1621
  element_5(@res[1], @res[2], @res[3], @res[4], @res[5])
1594
1622
  if @elm_ then
@@ -1605,7 +1633,7 @@ module Meteor
1605
1633
  @element_cache.store(@elm_.object_id, @elm_)
1606
1634
  end
1607
1635
  elsif @res = @@pattern_find_2_2.match(selector) then
1608
- element_2('class', @res[1])
1636
+ element_2(CSS_CLASS, @res[1])
1609
1637
  if @elm_ then
1610
1638
  @element_cache.store(@elm_.object_id, @elm_)
1611
1639
  end
@@ -1615,16 +1643,16 @@ module Meteor
1615
1643
  end
1616
1644
 
1617
1645
  #
1618
- # get element using element name (要素名で検索し、要素を取得する)
1619
- # @param [String] elm_name element name (要素名)
1646
+ # get element using tag name (タグ名で検索し、要素を取得する)
1647
+ # @param [String] tag tag name (タグ名)
1620
1648
  # @return [Meteor::Element] element(要素)
1621
1649
  #
1622
- def element_1(elm_name)
1650
+ def element_1(tag)
1623
1651
 
1624
- @_elm_name = Regexp.quote(elm_name)
1652
+ @_tag = Regexp.quote(tag)
1625
1653
 
1626
1654
  #要素検索用パターン
1627
- @pattern_cc = "<#{@_elm_name}(|\\s[^<>]*)\\/>|<#{@_elm_name}((?:|\\s[^<>]*))>(((?!(#{@_elm_name}[^<>]*>)).)*)<\\/#{@_elm_name}>"
1655
+ @pattern_cc = "<#{@_tag}(|\\s[^<>]*)\\/>|<#{@_tag}((?:|\\s[^<>]*))>(((?!(#{@_tag}[^<>]*>)).)*)<\\/#{@_tag}>"
1628
1656
 
1629
1657
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
1630
1658
  #内容あり要素検索
@@ -1632,9 +1660,9 @@ module Meteor
1632
1660
 
1633
1661
  if @res
1634
1662
  if @res[1]
1635
- element_without_1(elm_name)
1663
+ element_without_1(tag)
1636
1664
  else
1637
- element_with_1(elm_name)
1665
+ element_with_1(tag)
1638
1666
  end
1639
1667
  else
1640
1668
 
@@ -1645,9 +1673,9 @@ module Meteor
1645
1673
 
1646
1674
  private :element_1
1647
1675
 
1648
- def element_with_1(elm_name)
1676
+ def element_with_1(tag)
1649
1677
 
1650
- @elm_ = Element.new(elm_name)
1678
+ @elm_ = Element.new(tag)
1651
1679
  #属性
1652
1680
  @elm_.attributes = @res[2]
1653
1681
  #内容
@@ -1655,9 +1683,9 @@ module Meteor
1655
1683
  #全体
1656
1684
  @elm_.document = @res[0]
1657
1685
 
1658
- #@pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_NC_1_1 << @_elm_name
1659
- #@pattern_cc << TAG_SEARCH_NC_1_2 << @_elm_name << TAG_CLOSE
1660
- @pattern_cc = "<#{@_elm_name}(?:|\\s[^<>]*)>((?!(#{@_elm_name}[^<>]*>)).)*<\\/#{@_elm_name}>"
1686
+ #@pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_NC_1_1 << @_tag
1687
+ #@pattern_cc << TAG_SEARCH_NC_1_2 << @_tag << TAG_CLOSE
1688
+ @pattern_cc = "<#{@_tag}(?:|\\s[^<>]*)>((?!(#{@_tag}[^<>]*>)).)*<\\/#{@_tag}>"
1661
1689
 
1662
1690
  #内容あり要素検索用パターン
1663
1691
  @elm_.pattern = @pattern_cc
@@ -1671,16 +1699,16 @@ module Meteor
1671
1699
 
1672
1700
  private :element_with_1
1673
1701
 
1674
- def element_without_1(elm_name)
1702
+ def element_without_1(tag)
1675
1703
  #要素
1676
- @elm_ = Element.new(elm_name)
1704
+ @elm_ = Element.new(tag)
1677
1705
  #属性
1678
1706
  @elm_.attributes = @res[1]
1679
1707
  #全体
1680
1708
  @elm_.document = @res[0]
1681
1709
  #空要素検索用パターン
1682
- @pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_NC_1_3
1683
- #@pattern_cc = "<#{@_elm_name}(?:|\\s[^<>]*)\\/>"
1710
+ @pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_NC_1_3
1711
+ #@pattern_cc = "<#{@_tag}(?:|\\s[^<>]*)\\/>"
1684
1712
  @elm_.pattern = @pattern_cc
1685
1713
 
1686
1714
  @elm_.empty = false
@@ -1693,19 +1721,19 @@ module Meteor
1693
1721
  private :element_without_1
1694
1722
 
1695
1723
  #
1696
- # get element using element name and attribute(name="value") (要素名と属性(属性名="属性値")で検索し、要素を取得する)
1697
- # @param [String] elm_name element name (要素名)
1724
+ # get element using tag name and attribute(name="value") (要素のタグ名と属性(属性名="属性値")で検索し、要素を取得する)
1725
+ # @param [String] tag tag name (タグ名)
1698
1726
  # @param [String] attrName attribute name (属性名)
1699
1727
  # @param [String] attr_value attribute value (属性値)
1700
1728
  # @return [Meteor::Element] element (要素)
1701
- def element_3(elm_name, attr_name, attr_value)
1729
+ def element_3(tag, attr_name, attr_value)
1702
1730
 
1703
- @_elm_name = Regexp.quote(elm_name)
1731
+ @_tag = Regexp.quote(tag)
1704
1732
  @_attr_name = Regexp.quote(attr_name)
1705
1733
  @_attr_value = Regexp.quote(attr_value)
1706
1734
 
1707
1735
 
1708
- @pattern_cc_1 = "<#{@_elm_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)\\/>|<#{@_elm_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)>(((?!(#{@_elm_name}[^<>]*>)).)*)<\\/#{@_elm_name}>"
1736
+ @pattern_cc_1 = "<#{@_tag}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)\\/>|<#{@_tag}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)>(((?!(#{@_tag}[^<>]*>)).)*)<\\/#{@_tag}>"
1709
1737
 
1710
1738
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc_1)
1711
1739
  @res1 = @pattern.match(@root.document)
@@ -1723,29 +1751,29 @@ module Meteor
1723
1751
  @res = @res1
1724
1752
  #@pattern_cc = @pattern_cc_1
1725
1753
  if @res[1]
1726
- element_without_3(elm_name)
1754
+ element_without_3(tag)
1727
1755
  else
1728
- element_with_3_1(elm_name)
1756
+ element_with_3_1(tag)
1729
1757
  end
1730
1758
  elsif @res1.begin(0) > @res2.begin(0)
1731
1759
  @res = @res2
1732
1760
  #@pattern_cc = @pattern_cc_2
1733
- element_with_3_1(elm_name)
1761
+ element_with_3_1(tag)
1734
1762
  end
1735
1763
  elsif @res1 && !@res2 then
1736
1764
  @res = @res1
1737
1765
  #@pattern_cc = @pattern_cc_1
1738
1766
  if @res[1]
1739
- element_without_3(elm_name)
1767
+ element_without_3(tag)
1740
1768
  else
1741
- element_with_3_1(elm_name)
1769
+ element_with_3_1(tag)
1742
1770
  end
1743
1771
  elsif @res2 && !@res1 then
1744
1772
  @res = @res2
1745
1773
  #@pattern_cc = @pattern_cc_2
1746
- element_with_3_1(elm_name)
1774
+ element_with_3_1(tag)
1747
1775
  else
1748
- puts Meteor::Exception::NoSuchElementException.new(elm_name, attr_name, attr_value).message
1776
+ puts Meteor::Exception::NoSuchElementException.new(tag, attr_name, attr_value).message
1749
1777
  @elm_ = nil
1750
1778
  end
1751
1779
 
@@ -1754,11 +1782,11 @@ module Meteor
1754
1782
 
1755
1783
  private :element_3
1756
1784
 
1757
- def element_with_3_1(elm_name)
1785
+ def element_with_3_1(tag)
1758
1786
  case @res.captures.length
1759
1787
  when FOUR
1760
1788
  #要素
1761
- @elm_ = Element.new(elm_name)
1789
+ @elm_ = Element.new(tag)
1762
1790
  #属性
1763
1791
  @elm_.attributes = @res[1]
1764
1792
  #内容
@@ -1766,10 +1794,10 @@ module Meteor
1766
1794
  #全体
1767
1795
  @elm_.document = @res[0]
1768
1796
  #内容あり要素検索用パターン
1769
- #@pattern_cc = ''<< TAG_OPEN << @_elm_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
1770
- #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_elm_name
1771
- #@pattern_cc << TAG_SEARCH_NC_1_2 << @_elm_name << TAG_CLOSE
1772
- @pattern_cc = "<#{@_elm_name}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>((?!(#{@_elm_name}[^<>]*>)).)*<\\/#{@_elm_name}>"
1797
+ #@pattern_cc = ''<< TAG_OPEN << @_tag << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
1798
+ #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_tag
1799
+ #@pattern_cc << TAG_SEARCH_NC_1_2 << @_tag << TAG_CLOSE
1800
+ @pattern_cc = "<#{@_tag}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>((?!(#{@_tag}[^<>]*>)).)*<\\/#{@_tag}>"
1773
1801
 
1774
1802
  @elm_.pattern = @pattern_cc
1775
1803
 
@@ -1779,7 +1807,7 @@ module Meteor
1779
1807
 
1780
1808
  when FIVE
1781
1809
  #要素
1782
- @elm_ = Element.new(elm_name)
1810
+ @elm_ = Element.new(tag)
1783
1811
  #属性
1784
1812
  @elm_.attributes = @res[2]
1785
1813
  #内容
@@ -1787,10 +1815,10 @@ module Meteor
1787
1815
  #全体
1788
1816
  @elm_.document = @res[0]
1789
1817
  #内容あり要素検索用パターン
1790
- #@pattern_cc = ''<< TAG_OPEN << @_elm_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
1791
- #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_elm_name
1792
- #@pattern_cc << TAG_SEARCH_NC_1_2 << @_elm_name << TAG_CLOSE
1793
- @pattern_cc = "<#{@_elm_name}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>((?!(#{@_elm_name}[^<>]*>)).)*<\\/#{@_elm_name}>"
1818
+ #@pattern_cc = ''<< TAG_OPEN << @_tag << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
1819
+ #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_tag
1820
+ #@pattern_cc << TAG_SEARCH_NC_1_2 << @_tag << TAG_CLOSE
1821
+ @pattern_cc = "<#{@_tag}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>((?!(#{@_tag}[^<>]*>)).)*<\\/#{@_tag}>"
1794
1822
 
1795
1823
  @elm_.pattern = @pattern_cc
1796
1824
 
@@ -1800,7 +1828,7 @@ module Meteor
1800
1828
 
1801
1829
  when THREE,SIX
1802
1830
  #内容
1803
- @elm_ = Element.new(elm_name)
1831
+ @elm_ = Element.new(tag)
1804
1832
  #属性
1805
1833
  @elm_.attributes = @res[1].chop
1806
1834
  #内容
@@ -1821,29 +1849,29 @@ module Meteor
1821
1849
 
1822
1850
  def element_with_3_2
1823
1851
 
1824
- #@pattern_cc_1 = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
1852
+ #@pattern_cc_1 = '' << TAG_OPEN << @_tag << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
1825
1853
  #@pattern_cc_1 << @_attr_value << TAG_SEARCH_2_4_2
1826
- @pattern_cc_1 = "<#{@_elm_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}(?:[^<>\\/]*>|(?:(?!([^<>]*\\/>))[^<>]*>)))"
1854
+ @pattern_cc_1 = "<#{@_tag}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}(?:[^<>\\/]*>|(?:(?!([^<>]*\\/>))[^<>]*>)))"
1827
1855
 
1828
- @pattern_cc_1b = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_1_4
1829
- #@pattern_cc_1b = "<#{@_elm_name}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
1856
+ @pattern_cc_1b = '' << TAG_OPEN << @_tag << TAG_SEARCH_1_4
1857
+ #@pattern_cc_1b = "<#{@_tag}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
1830
1858
 
1831
- #@pattern_cc_1_1 = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
1859
+ #@pattern_cc_1_1 = '' << TAG_OPEN << @_tag << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
1832
1860
  #@pattern_cc_1_1 << @_attr_value << TAG_SEARCH_4_7
1833
- @pattern_cc_1_1 = "<#{@_elm_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
1861
+ @pattern_cc_1_1 = "<#{@_tag}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
1834
1862
 
1835
- @pattern_cc_1_2 = '' << TAG_SEARCH_4_2 << @_elm_name << TAG_SEARCH_4_3
1836
- #@pattern_cc_1_2 = ".*?<#{@_elm_name}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
1863
+ @pattern_cc_1_2 = '' << TAG_SEARCH_4_2 << @_tag << TAG_SEARCH_4_3
1864
+ #@pattern_cc_1_2 = ".*?<#{@_tag}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
1837
1865
 
1838
1866
 
1839
- @pattern_cc_2 = '' << TAG_SEARCH_4_4 << @_elm_name << TAG_CLOSE
1840
- #@pattern_cc_2 = '' << "<\\/#{@_elm_name}>"
1867
+ @pattern_cc_2 = '' << TAG_SEARCH_4_4 << @_tag << TAG_CLOSE
1868
+ #@pattern_cc_2 = '' << "<\\/#{@_tag}>"
1841
1869
 
1842
- @pattern_cc_2_1 = '' << TAG_SEARCH_4_5 << @_elm_name << TAG_CLOSE
1843
- #@pattern_cc_2_1 = ".*?<\\/#{@_elm_name}>"
1870
+ @pattern_cc_2_1 = '' << TAG_SEARCH_4_5 << @_tag << TAG_CLOSE
1871
+ #@pattern_cc_2_1 = ".*?<\\/#{@_tag}>"
1844
1872
 
1845
- @pattern_cc_2_2 = '' << TAG_SEARCH_4_6 << @_elm_name << TAG_CLOSE
1846
- #@pattern_cc_2_2 = ".*?)<\\/#{@_elm_name}>"
1873
+ @pattern_cc_2_2 = '' << TAG_SEARCH_4_6 << @_tag << TAG_CLOSE
1874
+ #@pattern_cc_2_2 = ".*?)<\\/#{@_tag}>"
1847
1875
 
1848
1876
  #内容あり要素検索
1849
1877
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc_1)
@@ -1871,23 +1899,23 @@ module Meteor
1871
1899
 
1872
1900
  private :element_with_3_2
1873
1901
 
1874
- def element_without_3(elm_name)
1875
- element_without_3_1(elm_name, TAG_SEARCH_NC_2_3_2)
1902
+ def element_without_3(tag)
1903
+ element_without_3_1(tag, TAG_SEARCH_NC_2_3_2)
1876
1904
  end
1877
1905
 
1878
1906
  private :element_without_3
1879
1907
 
1880
- def element_without_3_1(elm_name, closer)
1908
+ def element_without_3_1(tag, closer)
1881
1909
 
1882
1910
  #要素
1883
- @elm_ = Element.new(elm_name)
1911
+ @elm_ = Element.new(tag)
1884
1912
  #属性
1885
1913
  @elm_.attributes = @res[1]
1886
1914
  #全体
1887
1915
  @elm_.document = @res[0]
1888
1916
  #空要素検索用パターン
1889
- @pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ << @_attr_value << closer
1890
- #@pattern_cc = "<#{@_elm_name}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}#{closer}"
1917
+ @pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ << @_attr_value << closer
1918
+ #@pattern_cc = "<#{@_tag}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}#{closer}"
1891
1919
  @elm_.pattern = @pattern_cc
1892
1920
 
1893
1921
  @elm_.parser = self
@@ -1980,9 +2008,9 @@ module Meteor
1980
2008
  #puts @res.captures.length
1981
2009
  case @res.captures.length
1982
2010
  when FOUR
1983
- @_elm_name = @res[1]
2011
+ @_tag = @res[1]
1984
2012
  #要素
1985
- @elm_ = Element.new(@_elm_name)
2013
+ @elm_ = Element.new(@_tag)
1986
2014
  #属性
1987
2015
  @elm_.attributes = @res[2]
1988
2016
  #内容
@@ -1990,10 +2018,10 @@ module Meteor
1990
2018
  #全体
1991
2019
  @elm_.document = @res[0]
1992
2020
  #内容あり要素検索用パターン
1993
- #@pattern_cc = ''<< TAG_OPEN << @_elm_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
1994
- #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_elm_name
1995
- #@pattern_cc << TAG_SEARCH_NC_1_2 << @_elm_name << TAG_CLOSE
1996
- @pattern_cc = "<#{@_elm_name}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>((?!(#{@_elm_name}[^<>]*>)).)*<\\/#{@_elm_name}>"
2021
+ #@pattern_cc = ''<< TAG_OPEN << @_tag << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2022
+ #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_tag
2023
+ #@pattern_cc << TAG_SEARCH_NC_1_2 << @_tag << TAG_CLOSE
2024
+ @pattern_cc = "<#{@_tag}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>((?!(#{@_tag}[^<>]*>)).)*<\\/#{@_tag}>"
1997
2025
 
1998
2026
  @elm_.pattern = @pattern_cc
1999
2027
 
@@ -2002,9 +2030,9 @@ module Meteor
2002
2030
  @elm_.parser = self
2003
2031
 
2004
2032
  when FIVE,SEVEN
2005
- @_elm_name = @res[3]
2033
+ @_tag = @res[3]
2006
2034
  #要素
2007
- @elm_ = Element.new(@_elm_name)
2035
+ @elm_ = Element.new(@_tag)
2008
2036
  #属性
2009
2037
  @elm_.attributes = @res[4]
2010
2038
  #内容
@@ -2012,10 +2040,10 @@ module Meteor
2012
2040
  #全体
2013
2041
  @elm_.document = @res[0]
2014
2042
  #内容あり要素検索用パターン
2015
- #@pattern_cc = ''<< TAG_OPEN << @_elm_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2016
- #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_elm_name
2017
- #@pattern_cc << TAG_SEARCH_NC_1_2 << @_elm_name << TAG_CLOSE
2018
- @pattern_cc = "<#{@_elm_name}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>((?!(#{@_elm_name}[^<>]*>)).)*<\\/#{@_elm_name}>"
2043
+ #@pattern_cc = ''<< TAG_OPEN << @_tag << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ
2044
+ #@pattern_cc << @_attr_value << TAG_SEARCH_NC_2_2 << @_tag
2045
+ #@pattern_cc << TAG_SEARCH_NC_1_2 << @_tag << TAG_CLOSE
2046
+ @pattern_cc = "<#{@_tag}\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*>((?!(#{@_tag}[^<>]*>)).)*<\\/#{@_tag}>"
2019
2047
 
2020
2048
  @elm_.pattern = @pattern_cc
2021
2049
 
@@ -2026,9 +2054,9 @@ module Meteor
2026
2054
  when THREE,SIX
2027
2055
  #puts @res[1]
2028
2056
  #puts @res[3]
2029
- #@_elm_name = @res[1]
2057
+ #@_tag = @res[1]
2030
2058
  #内容
2031
- @elm_ = Element.new(@_elm_name)
2059
+ @elm_ = Element.new(@_tag)
2032
2060
  #属性
2033
2061
  @elm_.attributes = @res[1].chop
2034
2062
  #内容
@@ -2049,7 +2077,7 @@ module Meteor
2049
2077
 
2050
2078
  def element_with_2_2
2051
2079
 
2052
- #@pattern_cc_1 = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2080
+ #@pattern_cc_1 = '' << TAG_OPEN << @_tag << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2053
2081
  #@pattern_cc_1 << @_attr_value << TAG_SEARCH_2_4_2
2054
2082
  @pattern_cc_1 = "<([^<>\"]*)(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}(?:[^<>\\/]*>|(?:(?!([^<>]*\\/>))[^<>]*>)))"
2055
2083
 
@@ -2078,21 +2106,21 @@ module Meteor
2078
2106
 
2079
2107
  def create_pattern_2(args_cnt)
2080
2108
 
2081
- #puts @_elm_name
2109
+ #puts @_tag
2082
2110
 
2083
- @pattern_cc_1b = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_1_4
2111
+ @pattern_cc_1b = '' << TAG_OPEN << @_tag << TAG_SEARCH_1_4
2084
2112
 
2085
- #@pattern_cc_1_1 = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2113
+ #@pattern_cc_1_1 = '' << TAG_OPEN << @_tag << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
2086
2114
  #@pattern_cc_1_1 << @_attr_value << TAG_SEARCH_4_7
2087
- @pattern_cc_1_1 = "<#{@_elm_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
2115
+ @pattern_cc_1_1 = "<#{@_tag}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
2088
2116
 
2089
- @pattern_cc_1_2 = '' << TAG_SEARCH_4_2 << @_elm_name << TAG_SEARCH_4_3
2117
+ @pattern_cc_1_2 = '' << TAG_SEARCH_4_2 << @_tag << TAG_SEARCH_4_3
2090
2118
 
2091
- @pattern_cc_2 = '' << TAG_SEARCH_4_4 << @_elm_name << TAG_CLOSE
2119
+ @pattern_cc_2 = '' << TAG_SEARCH_4_4 << @_tag << TAG_CLOSE
2092
2120
 
2093
- @pattern_cc_2_1 = '' << TAG_SEARCH_4_5 << @_elm_name << TAG_CLOSE
2121
+ @pattern_cc_2_1 = '' << TAG_SEARCH_4_5 << @_tag << TAG_CLOSE
2094
2122
 
2095
- @pattern_cc_2_2 = '' << TAG_SEARCH_4_6 << @_elm_name << TAG_CLOSE
2123
+ @pattern_cc_2_2 = '' << TAG_SEARCH_4_6 << @_tag << TAG_CLOSE
2096
2124
 
2097
2125
  @pattern_2 = Meteor::Core::Util::PatternCache.get(@pattern_cc_2)
2098
2126
  @pattern_1b = Meteor::Core::Util::PatternCache.get(@pattern_cc_1b)
@@ -2114,7 +2142,7 @@ module Meteor
2114
2142
  #全体
2115
2143
  @elm_.document = @res[0]
2116
2144
  #空要素検索用パターン
2117
- @pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ << @_attr_value << closer
2145
+ @pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_NC_2_1 << @_attr_name << ATTR_EQ << @_attr_value << closer
2118
2146
  @elm_.pattern = @pattern_cc
2119
2147
 
2120
2148
  @elm_.parser = self
@@ -2126,24 +2154,24 @@ module Meteor
2126
2154
  =end
2127
2155
 
2128
2156
  #
2129
- # get element using element name and attribute1,2(name="value") (要素名と属性1・属性2(属性名="属性値")で検索し、要素を取得する)
2130
- # @param [String] elm_name element name (要素の名前)
2157
+ # get element using tag name and attribute1,2(name="value") (要素のタグ名と属性1・属性2(属性名="属性値")で検索し、要素を取得する)
2158
+ # @param [String] tag tag name (タグ名)
2131
2159
  # @param [String] attr_name1 attribute name1 (属性名1)
2132
2160
  # @param [String] attr_value1 attribute value1 (属性値1)
2133
2161
  # @param [String] attr_name2 attribute name2 (属性名2)
2134
2162
  # @param [String] attr_value2 attribute value2 (属性値2)
2135
2163
  # @return [Meteor::Element] element (要素)
2136
2164
  #
2137
- def element_5(elm_name, attr_name1, attr_value1, attr_name2, attr_value2)
2165
+ def element_5(tag, attr_name1, attr_value1, attr_name2, attr_value2)
2138
2166
 
2139
- @_elm_name = Regexp.quote(elm_name)
2167
+ @_tag = Regexp.quote(tag)
2140
2168
  @_attr_name1 = Regexp.quote(attr_name1)
2141
2169
  @_attr_name2 = Regexp.quote(attr_name2)
2142
2170
  @_attr_value1 = Regexp.quote(attr_value1)
2143
2171
  @_attr_value2 = Regexp.quote(attr_value2)
2144
2172
 
2145
2173
 
2146
- @pattern_cc_1 = "<#{@_elm_name}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*)\\/>|<#{@_elm_name}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*)>(((?!(#{@_elm_name}[^<>]*>)).)*)<\\/#{@_elm_name}>"
2174
+ @pattern_cc_1 = "<#{@_tag}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*)\\/>|<#{@_tag}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*)>(((?!(#{@_tag}[^<>]*>)).)*)<\\/#{@_tag}>"
2147
2175
 
2148
2176
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc_1)
2149
2177
  @res1 = @pattern.match(@root.document)
@@ -2161,29 +2189,29 @@ module Meteor
2161
2189
  @res = @res1
2162
2190
  #@pattern_cc = @pattern_cc_1
2163
2191
  if @res[1]
2164
- element_without_5(elm_name)
2192
+ element_without_5(tag)
2165
2193
  else
2166
- element_with_5_1(elm_name)
2194
+ element_with_5_1(tag)
2167
2195
  end
2168
2196
  elsif @res1.begin(0) > @res2.begin(0)
2169
2197
  @res = @res2
2170
2198
  #@pattern_cc = @pattern_cc_2
2171
- element_with_5_1(elm_name)
2199
+ element_with_5_1(tag)
2172
2200
  end
2173
2201
  elsif @res1 && !@res2 then
2174
2202
  @res = @res1
2175
2203
  #@pattern_cc = @pattern_cc_1
2176
2204
  if @res[1]
2177
- element_without_5(elm_name)
2205
+ element_without_5(tag)
2178
2206
  else
2179
- element_with_5_1(elm_name)
2207
+ element_with_5_1(tag)
2180
2208
  end
2181
2209
  elsif @res2 && !@res1 then
2182
2210
  @res = @res2
2183
2211
  #@pattern_cc = @pattern_cc_2
2184
- element_with_5_1(elm_name)
2212
+ element_with_5_1(tag)
2185
2213
  else
2186
- puts Meteor::Exception::NoSuchElementException.new(elm_name, attr_name, attr_value).message
2214
+ puts Meteor::Exception::NoSuchElementException.new(tag, attr_name, attr_value).message
2187
2215
  @elm_ = nil
2188
2216
  end
2189
2217
 
@@ -2192,13 +2220,13 @@ module Meteor
2192
2220
 
2193
2221
  private :element_5
2194
2222
 
2195
- def element_with_5_1(elm_name)
2223
+ def element_with_5_1(tag)
2196
2224
 
2197
2225
  #puts @res.captures.length
2198
2226
  case @res.captures.length
2199
2227
  when FOUR
2200
2228
  #要素
2201
- @elm_ = Element.new(elm_name)
2229
+ @elm_ = Element.new(tag)
2202
2230
  #属性
2203
2231
  @elm_.attributes = @res[1]
2204
2232
  #内容
@@ -2206,13 +2234,13 @@ module Meteor
2206
2234
  #全体
2207
2235
  @elm_.document = @res[0]
2208
2236
  #内容あり要素検索用パターン
2209
- #@pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2237
+ #@pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2210
2238
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_NC_2_6 << @_attr_name2 << ATTR_EQ
2211
2239
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_7 << @_attr_name2 << ATTR_EQ
2212
2240
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_6 << @_attr_name1 << ATTR_EQ
2213
- #@pattern_cc << @_attr_value1 << TAG_SEARCH_NC_2_2_2 << @_elm_name
2214
- #@pattern_cc << TAG_SEARCH_NC_1_2 << @_elm_name << TAG_CLOSE
2215
- @pattern_cc = "<#{@_elm_name}\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*>((?!(#{@_elm_name}[^<>]*>)).)*<\\/#{@_elm_name}>"
2241
+ #@pattern_cc << @_attr_value1 << TAG_SEARCH_NC_2_2_2 << @_tag
2242
+ #@pattern_cc << TAG_SEARCH_NC_1_2 << @_tag << TAG_CLOSE
2243
+ @pattern_cc = "<#{@_tag}\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*>((?!(#{@_tag}[^<>]*>)).)*<\\/#{@_tag}>"
2216
2244
 
2217
2245
  @elm_.pattern = @pattern_cc
2218
2246
  #
@@ -2221,7 +2249,7 @@ module Meteor
2221
2249
  @elm_.parser = self
2222
2250
  when FIVE
2223
2251
  #要素
2224
- @elm_ = Element.new(elm_name)
2252
+ @elm_ = Element.new(tag)
2225
2253
  #属性
2226
2254
  @elm_.attributes = @res[2]
2227
2255
  #内容
@@ -2229,13 +2257,13 @@ module Meteor
2229
2257
  #全体
2230
2258
  @elm_.document = @res[0]
2231
2259
  #内容あり要素検索用パターン
2232
- #@pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2260
+ #@pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2233
2261
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_NC_2_6 << @_attr_name2 << ATTR_EQ
2234
2262
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_7 << @_attr_name2 << ATTR_EQ
2235
2263
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_6 << @_attr_name1 << ATTR_EQ
2236
- #@pattern_cc << @_attr_value1 << TAG_SEARCH_NC_2_2_2 << @_elm_name
2237
- #@pattern_cc << TAG_SEARCH_NC_1_2 << @_elm_name << TAG_CLOSE
2238
- @pattern_cc = "<#{@_elm_name}\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*>((?!(#{@_elm_name}[^<>]*>)).)*<\\/#{@_elm_name}>"
2264
+ #@pattern_cc << @_attr_value1 << TAG_SEARCH_NC_2_2_2 << @_tag
2265
+ #@pattern_cc << TAG_SEARCH_NC_1_2 << @_tag << TAG_CLOSE
2266
+ @pattern_cc = "<#{@_tag}\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*>((?!(#{@_tag}[^<>]*>)).)*<\\/#{@_tag}>"
2239
2267
 
2240
2268
  @elm_.pattern = @pattern_cc
2241
2269
  #
@@ -2245,7 +2273,7 @@ module Meteor
2245
2273
 
2246
2274
  when THREE,SIX
2247
2275
  #要素
2248
- @elm_ = Element.new(elm_name)
2276
+ @elm_ = Element.new(tag)
2249
2277
  #属性
2250
2278
  @elm_.attributes = @res[1].chop
2251
2279
  #要素
@@ -2266,38 +2294,38 @@ module Meteor
2266
2294
 
2267
2295
  def element_with_5_2
2268
2296
 
2269
- #@pattern_cc_1 = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
2297
+ #@pattern_cc_1 = '' << TAG_OPEN << @_tag << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
2270
2298
  #@pattern_cc_1 << @_attr_value1 << TAG_SEARCH_2_6 << @_attr_name2 << ATTR_EQ
2271
2299
  #@pattern_cc_1 << @_attr_value2 << TAG_SEARCH_2_7 << @_attr_name2 << ATTR_EQ
2272
2300
  #@pattern_cc_1 << @_attr_value2 << TAG_SEARCH_2_6 << @_attr_name1 << ATTR_EQ
2273
2301
  #@pattern_cc_1 << @_attr_value1 << TAG_SEARCH_2_4_2_2
2274
- @pattern_cc_1 = "<#{@_elm_name}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")([^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>)))"
2302
+ @pattern_cc_1 = "<#{@_tag}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")([^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>)))"
2275
2303
 
2276
- @pattern_cc_1b = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_1_4
2277
- #@pattern_cc_1b = "<#{@_elm_name}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
2304
+ @pattern_cc_1b = '' << TAG_OPEN << @_tag << TAG_SEARCH_1_4
2305
+ #@pattern_cc_1b = "<#{@_tag}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
2278
2306
 
2279
- #@pattern_cc_1_1 = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
2307
+ #@pattern_cc_1_1 = '' << TAG_OPEN << @_tag << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
2280
2308
  #@pattern_cc_1_1 << @_attr_value1 << TAG_SEARCH_2_6 << @_attr_name2 << ATTR_EQ
2281
2309
  #@pattern_cc_1_1 << @_attr_value2 << TAG_SEARCH_2_7 << @_attr_name2 << ATTR_EQ
2282
2310
  #@pattern_cc_1_1 << @_attr_value2 << TAG_SEARCH_2_6 << @_attr_name1 << ATTR_EQ
2283
2311
  #@pattern_cc_1_1 << @_attr_value1 << TAG_SEARCH_4_7_2
2284
- @pattern_cc_1_1 = "<#{@_elm_name}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
2312
+ @pattern_cc_1_1 = "<#{@_tag}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")(?:[^<>\\/]*>|(?!([^<>]*\\/>))[^<>]*>))("
2285
2313
 
2286
- @pattern_cc_1_2 = '' << TAG_SEARCH_4_2 << @_elm_name << TAG_SEARCH_4_3
2314
+ @pattern_cc_1_2 = '' << TAG_SEARCH_4_2 << @_tag << TAG_SEARCH_4_3
2287
2315
 
2288
- @pattern_cc_2 = '' << TAG_SEARCH_4_4 << @_elm_name << TAG_CLOSE
2316
+ @pattern_cc_2 = '' << TAG_SEARCH_4_4 << @_tag << TAG_CLOSE
2289
2317
 
2290
- @pattern_cc_2_1 = '' << TAG_SEARCH_4_5 << @_elm_name << TAG_CLOSE
2318
+ @pattern_cc_2_1 = '' << TAG_SEARCH_4_5 << @_tag << TAG_CLOSE
2291
2319
 
2292
- @pattern_cc_2_2 = '' << TAG_SEARCH_4_6 << @_elm_name << TAG_CLOSE
2320
+ @pattern_cc_2_2 = '' << TAG_SEARCH_4_6 << @_tag << TAG_CLOSE
2293
2321
 
2294
- #@pattern_cc_1_2 = ".*?<#{@_elm_name}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
2322
+ #@pattern_cc_1_2 = ".*?<#{@_tag}(\\s[^<>\\/]*>|((?!([^<>]*\\/>))[^<>]*>))"
2295
2323
  #
2296
- #@pattern_cc_2 = '' << "<\\/#{@_elm_name}>"
2324
+ #@pattern_cc_2 = '' << "<\\/#{@_tag}>"
2297
2325
  #
2298
- #@pattern_cc_2_1 = ".*?<\\/#{@_elm_name}>"
2326
+ #@pattern_cc_2_1 = ".*?<\\/#{@_tag}>"
2299
2327
  #
2300
- #@pattern_cc_2_2 = ".*?)<\\/#{@_elm_name}>"
2328
+ #@pattern_cc_2_2 = ".*?)<\\/#{@_tag}>"
2301
2329
 
2302
2330
  #内容あり要素検索
2303
2331
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc_1)
@@ -2325,27 +2353,27 @@ module Meteor
2325
2353
 
2326
2354
  private :element_with_5_2
2327
2355
 
2328
- def element_without_5(elm_name)
2329
- element_without_5_1(elm_name, TAG_SEARCH_NC_2_3_2_2)
2356
+ def element_without_5(tag)
2357
+ element_without_5_1(tag, TAG_SEARCH_NC_2_3_2_2)
2330
2358
  end
2331
2359
 
2332
2360
  private :element_without_5
2333
2361
 
2334
- def element_without_5_1(elm_name, closer)
2362
+ def element_without_5_1(tag, closer)
2335
2363
 
2336
2364
  #要素
2337
- @elm_ = Element.new(elm_name)
2365
+ @elm_ = Element.new(tag)
2338
2366
  #属性
2339
2367
  @elm_.attributes = @res[1]
2340
2368
  #全体
2341
2369
  @elm_.document = @res[0]
2342
2370
  #空要素検索用パターン
2343
- #@pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2371
+ #@pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_NC_2_1_2 << @_attr_name1 << ATTR_EQ
2344
2372
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_NC_2_6 << @_attr_name2 << ATTR_EQ
2345
2373
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_7 << @_attr_name2 << ATTR_EQ
2346
2374
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_NC_2_6 << @_attr_name1 << ATTR_EQ
2347
2375
  #@pattern_cc << @_attr_value1 << closer
2348
- @pattern_cc = "<#{@_elm_name}\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}#{closer}"
2376
+ @pattern_cc = "<#{@_tag}\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}#{closer}"
2349
2377
 
2350
2378
  @elm_.pattern = @pattern_cc
2351
2379
 
@@ -2526,7 +2554,7 @@ module Meteor
2526
2554
  else
2527
2555
  @position = @res.end(0)
2528
2556
 
2529
- @_elm_name = @res[1]
2557
+ @_tag = @res[1]
2530
2558
 
2531
2559
  create_pattern_2(args_cnt)
2532
2560
 
@@ -2883,9 +2911,9 @@ module Meteor
2883
2911
 
2884
2912
  #
2885
2913
  # get cx(comment extension) tag (CX(コメント拡張)タグを取得する)
2886
- # @overload cxtag(elm_name,id)
2887
- # get cx(comment extension) tag using element name and id attribute (要素名とID属性(id="ID属性値")でCX(コメント拡張)タグを取得する)
2888
- # @param [String] elm_name element name (要素名)
2914
+ # @overload cxtag(tag,id)
2915
+ # get cx(comment extension) tag using tag name and id attribute (要素のタグ名とID属性(id="ID属性値")でCX(コメント拡張)タグを取得する)
2916
+ # @param [String] tag tag name (タグ名)
2889
2917
  # @param [String] id value of id attribute (ID属性値)
2890
2918
  # @return [Meteor::Element] element (要素)
2891
2919
  # @overload cxtag(id)
@@ -2911,21 +2939,21 @@ module Meteor
2911
2939
  end
2912
2940
 
2913
2941
  #
2914
- # get cx(comment extension) tag using element name and id attribute (要素名とID属性(id="ID属性値")でCX(コメント拡張)タグを取得する)
2915
- # @param [String] elm_name element name (要素名)
2942
+ # get cx(comment extension) tag using tag name and id attribute (要素のタグ名とID属性(id="ID属性値")でCX(コメント拡張)タグを取得する)
2943
+ # @param [String] tag tag name (タグ名)
2916
2944
  # @param [String] id value of id attribute (ID属性値)
2917
2945
  # @return [Meteor::Element] element (要素)
2918
2946
  #
2919
- def cxtag_2(elm_name, id)
2947
+ def cxtag_2(tag, id)
2920
2948
 
2921
- @_elm_name = Regexp.quote(elm_name)
2949
+ @_tag = Regexp.quote(tag)
2922
2950
  @_id = Regexp.quote(id)
2923
2951
 
2924
2952
  #CXタグ検索用パターン
2925
- #@pattern_cc = '' << SEARCH_CX_1 << @_elm_name << SEARCH_CX_2
2926
- #@pattern_cc << id << SEARCH_CX_3 << @_elm_name << SEARCH_CX_4 << @_elm_name << SEARCH_CX_5
2927
- #@pattern_cc = "<!--\\s@#{elm_name}\\s([^<>]*id=\"#{id}\"[^<>]*)-->(((?!(<!--\\s\\/@#{elm_name})).)*)<!--\\s\\/@#{elm_name}\\s-->"
2928
- @pattern_cc = "<!--\\s@#{@_elm_name}\\s([^<>]*id=\"#{@_id}\"[^<>]*)-->(((?!(<!--\\s/@#{@_elm_name})).)*)<!--\\s/@#{@_elm_name}\\s-->"
2953
+ #@pattern_cc = '' << SEARCH_CX_1 << @_tag << SEARCH_CX_2
2954
+ #@pattern_cc << id << SEARCH_CX_3 << @_tag << SEARCH_CX_4 << @_tag << SEARCH_CX_5
2955
+ #@pattern_cc = "<!--\\s@#{tag}\\s([^<>]*id=\"#{id}\"[^<>]*)-->(((?!(<!--\\s\\/@#{tag})).)*)<!--\\s\\/@#{tag}\\s-->"
2956
+ @pattern_cc = "<!--\\s@#{@_tag}\\s([^<>]*id=\"#{@_id}\"[^<>]*)-->(((?!(<!--\\s/@#{@_tag})).)*)<!--\\s/@#{@_tag}\\s-->"
2929
2957
 
2930
2958
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
2931
2959
  #CXタグ検索
@@ -2933,7 +2961,7 @@ module Meteor
2933
2961
 
2934
2962
  if @res then
2935
2963
  #要素
2936
- @elm_ = Element.new(elm_name)
2964
+ @elm_ = Element.new(tag)
2937
2965
 
2938
2966
  @elm_.cx = true
2939
2967
  #属性
@@ -3031,27 +3059,27 @@ module Meteor
3031
3059
  private :edit_document_1
3032
3060
 
3033
3061
  def edit_document_2(elm, closer)
3034
- if !elm.cx then
3035
- @_attributes = elm.attributes
3036
-
3037
- if elm.empty then
3038
- #内容あり要素の場合
3039
- @_content = elm.mixed_content
3040
-
3041
- elm.document = '' << TAG_OPEN << elm.name << @_attributes << TAG_CLOSE << @_content << TAG_OPEN3 << elm.name << TAG_CLOSE
3042
- #elm.document = "<#{elm.name}#{@_attributes}>#{@_content}</#{elm.name}>"
3043
- else
3044
- #空要素の場合
3045
- elm.document = '' << TAG_OPEN << elm.name << @_attributes << closer
3046
- #elm.document = "<#{elm.name}#{@_attributes}#{closer}"
3047
- end
3048
- else
3049
- @_content = elm.mixed_content
3050
-
3051
- #elm.document = '' << SET_CX_1 << elm.name << SPACE << elm.attributes << SET_CX_2
3052
- #elm.document << @_content << SET_CX_3 << elm.name << SET_CX_4
3053
- elm.document = "<!-- @#{elm.name} #{elm.attributes}-->#{@_content}<!-- /@#{elm.name} -->"
3054
- end
3062
+ #if !elm.cx then
3063
+ # @_attributes = elm.attributes
3064
+ #
3065
+ # if elm.empty then
3066
+ # #内容あり要素の場合
3067
+ # @_content = elm.mixed_content
3068
+ #
3069
+ # elm.document = '' << TAG_OPEN << elm.name << @_attributes << TAG_CLOSE << @_content << TAG_OPEN3 << elm.name << TAG_CLOSE
3070
+ # #elm.document = "<#{elm.name}#{@_attributes}>#{@_content}</#{elm.name}>"
3071
+ # else
3072
+ # #空要素の場合
3073
+ # elm.document = '' << TAG_OPEN << elm.name << @_attributes << closer
3074
+ # #elm.document = "<#{elm.name}#{@_attributes}#{closer}"
3075
+ # end
3076
+ #else
3077
+ # @_content = elm.mixed_content
3078
+ #
3079
+ # #elm.document = '' << SET_CX_1 << elm.name << SPACE << elm.attributes << SET_CX_2
3080
+ # #elm.document << @_content << SET_CX_3 << elm.name << SET_CX_4
3081
+ # elm.document = "<!-- @#{elm.name} #{elm.attributes}-->#{@_content}<!-- /@#{elm.name} -->"
3082
+ #end
3055
3083
 
3056
3084
  #タグ置換
3057
3085
  @pattern = Meteor::Core::Util::PatternCache.get(elm.pattern)
@@ -3745,40 +3773,40 @@ module Meteor
3745
3773
  private :analyze_kaigyo_code
3746
3774
 
3747
3775
  #
3748
- # get element using element name (要素名で検索し、要素を取得する)
3749
- # @param [String] elm_name element name (要素名)
3776
+ # get element using tag name (要素のタグ名で検索し、要素を取得する)
3777
+ # @param [String] tag tag name (タグ名)
3750
3778
  # @return [Meteor::Element] element (要素)
3751
3779
  #
3752
- def element_1(elm_name)
3753
- @_elm_name = Regexp.quote(elm_name)
3780
+ def element_1(tag)
3781
+ @_tag = Regexp.quote(tag)
3754
3782
 
3755
3783
  #空要素の場合(<->内容あり要素の場合)
3756
- if is_match(@@match_tag, elm_name) then
3784
+ if is_match(@@match_tag, tag) then
3757
3785
  #空要素検索用パターン
3758
- @pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_1_4_2
3759
- #@pattern_cc = "<#{@_elm_name}(|\\s[^<>]*)>"
3786
+ @pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_1_4_2
3787
+ #@pattern_cc = "<#{@_tag}(|\\s[^<>]*)>"
3760
3788
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
3761
3789
  @res = @pattern.match(@root.document)
3762
3790
  if @res then
3763
- element_without_1(elm_name)
3791
+ element_without_1(tag)
3764
3792
  else
3765
- puts Meteor::Exception::NoSuchElementException.new(elm_name).message
3793
+ puts Meteor::Exception::NoSuchElementException.new(tag).message
3766
3794
  @elm_ = nil
3767
3795
  end
3768
3796
  else
3769
3797
  #内容あり要素検索用パターン
3770
- #@pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_1_1 << elm_name
3771
- #@pattern_cc << TAG_SEARCH_1_2 << @_elm_name << TAG_CLOSE
3772
- @pattern_cc = "<#{elm_name}(|\\s[^<>]*)>(((?!(#{elm_name}[^<>]*>)).)*)<\\/#{elm_name}>"
3798
+ #@pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_1_1 << tag
3799
+ #@pattern_cc << TAG_SEARCH_1_2 << @_tag << TAG_CLOSE
3800
+ @pattern_cc = "<#{tag}(|\\s[^<>]*)>(((?!(#{tag}[^<>]*>)).)*)<\\/#{tag}>"
3773
3801
 
3774
3802
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
3775
3803
  #内容あり要素検索
3776
3804
  @res = @pattern.match(@root.document)
3777
3805
  #内容あり要素の場合
3778
3806
  if @res then
3779
- element_with_1(elm_name)
3807
+ element_with_1(tag)
3780
3808
  else
3781
- puts Meteor::Exception::NoSuchElementException.new(elm_name).message
3809
+ puts Meteor::Exception::NoSuchElementException.new(tag).message
3782
3810
  @elm_ = nil
3783
3811
  end
3784
3812
  end
@@ -3788,8 +3816,8 @@ module Meteor
3788
3816
 
3789
3817
  private :element_1
3790
3818
 
3791
- def element_without_1(elm_name)
3792
- @elm_ = Element.new(elm_name)
3819
+ def element_without_1(tag)
3820
+ @elm_ = Element.new(tag)
3793
3821
  #属性
3794
3822
  @elm_.attributes = @res[1]
3795
3823
  #空要素検索用パターン
@@ -3803,53 +3831,53 @@ module Meteor
3803
3831
  private :element_without_1
3804
3832
 
3805
3833
  #
3806
- # get element using element name and attribute(name="value") (要素名、属性(属性名="属性値")で検索し、要素を取得する)
3807
- # @param [String] elm_name element name (要素名)
3834
+ # get element using tag name and attribute(name="value") (要素のタグ名、属性(属性名="属性値")で検索し、要素を取得する)
3835
+ # @param [String] tag tag name (タグ名)
3808
3836
  # @param [String] attr_name attribute name (属性名)
3809
3837
  # @param [String] attr_value attribute value (属性値)
3810
3838
  # @return [Meteor::Element] element (要素)
3811
3839
  #
3812
- def element_3(elm_name, attr_name, attr_value)
3840
+ def element_3(tag, attr_name, attr_value)
3813
3841
 
3814
- @_elm_name = Regexp.quote(elm_name)
3842
+ @_tag = Regexp.quote(tag)
3815
3843
  @_attr_name = Regexp.quote(attr_name)
3816
3844
  @_attr_value = Regexp.quote(attr_value)
3817
3845
 
3818
3846
  #空要素の場合(<->内容あり要素の場合)
3819
- if is_match(@@match_tag, elm_name) then
3847
+ if is_match(@@match_tag, tag) then
3820
3848
  #空要素検索パターン
3821
- #@pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
3849
+ #@pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
3822
3850
  #@pattern_cc << @_attr_value << TAG_SEARCH_2_4_3
3823
- @pattern_cc = "<#{@_elm_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)>"
3851
+ @pattern_cc = "<#{@_tag}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)>"
3824
3852
 
3825
3853
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
3826
3854
  #空要素検索
3827
3855
  @res = @pattern.match(@root.document)
3828
3856
  if @res then
3829
- element_without_3(elm_name)
3857
+ element_without_3(tag)
3830
3858
  else
3831
- puts Meteor::Exception::NoSuchElementException.new(elm_name, attr_name, attr_value).message
3859
+ puts Meteor::Exception::NoSuchElementException.new(tag, attr_name, attr_value).message
3832
3860
  @elm_ = nil
3833
3861
  end
3834
3862
  else
3835
3863
  #内容あり要素検索パターン
3836
- #@pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
3837
- #@pattern_cc << @_attr_value << TAG_SEARCH_2_2 << @_elm_name
3838
- #@pattern_cc << TAG_SEARCH_1_2 << @_elm_name << TAG_CLOSE
3839
- @pattern_cc = "<#{@_elm_name}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)>(((?!(#{@_elm_name}[^<>]*>)).)*)<\\/#{@_elm_name}>"
3864
+ #@pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
3865
+ #@pattern_cc << @_attr_value << TAG_SEARCH_2_2 << @_tag
3866
+ #@pattern_cc << TAG_SEARCH_1_2 << @_tag << TAG_CLOSE
3867
+ @pattern_cc = "<#{@_tag}(\\s[^<>]*#{@_attr_name}=\"#{@_attr_value}\"[^<>]*)>(((?!(#{@_tag}[^<>]*>)).)*)<\\/#{@_tag}>"
3840
3868
 
3841
3869
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
3842
3870
  #内容あり要素検索
3843
3871
  @res = @pattern.match(@root.document)
3844
3872
 
3845
- if !@res && !is_match(@@match_tag_sng, elm_name) then
3873
+ if !@res && !is_match(@@match_tag_sng, tag) then
3846
3874
  @res = element_with_3_2
3847
3875
  end
3848
3876
 
3849
3877
  if @res then
3850
- element_with_3_1(elm_name)
3878
+ element_with_3_1(tag)
3851
3879
  else
3852
- puts Meteor::Exception::NoSuchElementException.new(elm_name, attr_name, attr_value).message
3880
+ puts Meteor::Exception::NoSuchElementException.new(tag, attr_name, attr_value).message
3853
3881
  @elm_ = nil
3854
3882
  end
3855
3883
  end
@@ -3859,8 +3887,8 @@ module Meteor
3859
3887
 
3860
3888
  private :element_3
3861
3889
 
3862
- def element_without_3(elm_name)
3863
- element_without_3_1(elm_name, TAG_SEARCH_NC_2_4_3)
3890
+ def element_without_3(tag)
3891
+ element_without_3_1(tag, TAG_SEARCH_NC_2_4_3)
3864
3892
  end
3865
3893
 
3866
3894
  private :element_without_3
@@ -3895,64 +3923,64 @@ module Meteor
3895
3923
  private :element_2
3896
3924
 
3897
3925
  #
3898
- # get element using element name and attribute1,2(name="value") (要素名と属性1・属性2(属性名="属性値")で検索し、要素を取得する)
3899
- # @param [String] elm_name element name (要素名)
3926
+ # get element using tag name and attribute1,2(name="value") (要素のタグ名と属性1・属性2(属性名="属性値")で検索し、要素を取得する)
3927
+ # @param [String] tag tag name (タグ名)
3900
3928
  # @param [String] attr_name1 attribute name1 (属性名1)
3901
3929
  # @param [String] attr_value1 attribute value1 (属性値1)
3902
3930
  # @param [String] attr_name2 attribute name2 (属性名2)
3903
3931
  # @param [String] attr_value2 attribute value2 (属性値2)
3904
3932
  # @return [Meteor::Element] element (要素)
3905
3933
  #
3906
- def element_5(elm_name, attr_name1, attr_value1, attr_name2, attr_value2)
3934
+ def element_5(tag, attr_name1, attr_value1, attr_name2, attr_value2)
3907
3935
 
3908
- @_elm_name = Regexp.quote(elm_name)
3936
+ @_tag = Regexp.quote(tag)
3909
3937
  @_attr_name1 = Regexp.quote(attr_name1)
3910
3938
  @_attr_value1 = Regexp.quote(attr_value1)
3911
3939
  @_attr_name2 = Regexp.quote(attr_name2)
3912
3940
  @_attr_value2 = Regexp.quote(attr_value2)
3913
3941
 
3914
3942
  #空要素の場合(<->内容あり要素の場合)
3915
- if is_match(@@match_tag, elm_name) then
3943
+ if is_match(@@match_tag, tag) then
3916
3944
  #空要素検索パターン
3917
- #@pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
3945
+ #@pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
3918
3946
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_2_6 << @_attr_name2 << ATTR_EQ
3919
3947
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_2_7 << @_attr_name2 << ATTR_EQ
3920
3948
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_2_6 << @_attr_name1 << ATTR_EQ
3921
3949
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_2_4_3_2
3922
- @pattern_cc = "<#{@_elm_name}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*)>"
3950
+ @pattern_cc = "<#{@_tag}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*)>"
3923
3951
 
3924
3952
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
3925
3953
  #空要素検索
3926
3954
  @res = @pattern.match(@root.document)
3927
3955
 
3928
3956
  if @res then
3929
- element_without_5(elm_name)
3957
+ element_without_5(tag)
3930
3958
  else
3931
- puts Meteor::Exception::NoSuchElementException.new(elm_name, attr_name1, attr_value1, attr_name2, attr_value2).message
3959
+ puts Meteor::Exception::NoSuchElementException.new(tag, attr_name1, attr_value1, attr_name2, attr_value2).message
3932
3960
  @elm_ = nil
3933
3961
  end
3934
3962
  else
3935
3963
  #内容あり要素検索パターン
3936
- #@pattern_cc = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
3964
+ #@pattern_cc = '' << TAG_OPEN << @_tag << TAG_SEARCH_2_1_2 << @_attr_name1 << ATTR_EQ
3937
3965
  #@pattern_cc << @_attr_value1 << TAG_SEARCH_2_6 << @_attr_name2 << ATTR_EQ
3938
3966
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_2_7 << @_attr_name2 << ATTR_EQ
3939
3967
  #@pattern_cc << @_attr_value2 << TAG_SEARCH_2_6 << @_attr_name1 << ATTR_EQ
3940
- #@pattern_cc << @_attr_value1 << TAG_SEARCH_2_2_2 << @_elm_name
3941
- #@pattern_cc << TAG_SEARCH_1_2 << @_elm_name << TAG_CLOSE
3942
- @pattern_cc = "<#{@_elm_name}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*)>(((?!(#{@_elm_name}[^<>]*>)).)*)<\\/#{@_elm_name}>"
3968
+ #@pattern_cc << @_attr_value1 << TAG_SEARCH_2_2_2 << @_tag
3969
+ #@pattern_cc << TAG_SEARCH_1_2 << @_tag << TAG_CLOSE
3970
+ @pattern_cc = "<#{@_tag}(\\s[^<>]*(?:#{@_attr_name1}=\"#{@_attr_value1}\"[^<>]*#{@_attr_name2}=\"#{@_attr_value2}\"|#{@_attr_name2}=\"#{@_attr_value2}\"[^<>]*#{@_attr_name1}=\"#{@_attr_value1}\")[^<>]*)>(((?!(#{@_tag}[^<>]*>)).)*)<\\/#{@_tag}>"
3943
3971
 
3944
3972
  @pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
3945
3973
  #内容あり要素検索
3946
3974
  @res = @pattern.match(@root.document)
3947
3975
 
3948
- if !@res && !is_match(@@match_tag_sng, elm_name) then
3976
+ if !@res && !is_match(@@match_tag_sng, tag) then
3949
3977
  @res = element_with_5_2
3950
3978
  end
3951
3979
 
3952
3980
  if @res then
3953
- element_with_5_1(elm_name)
3981
+ element_with_5_1(tag)
3954
3982
  else
3955
- puts Meteor::Exception::NoSuchElementException.new(elm_name, attr_name1, attr_value1, attr_name2, attr_value2).message
3983
+ puts Meteor::Exception::NoSuchElementException.new(tag, attr_name1, attr_value1, attr_name2, attr_value2).message
3956
3984
  @elm_ = nil
3957
3985
  end
3958
3986
  end
@@ -3962,8 +3990,8 @@ module Meteor
3962
3990
 
3963
3991
  private :element_5
3964
3992
 
3965
- def element_without_5(elm_name)
3966
- element_without_5_1(elm_name, TAG_SEARCH_NC_2_4_3_2)
3993
+ def element_without_5(tag)
3994
+ element_without_5_1(tag, TAG_SEARCH_NC_2_4_3_2)
3967
3995
  end
3968
3996
 
3969
3997
  private :element_without_5