asip-meteor 0.9.2.0 → 0.9.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/meteor.rb +156 -95
- metadata +2 -2
data/lib/meteor.rb
CHANGED
@@ -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.2.
|
21
|
+
# @version 0.9.2.1
|
22
22
|
#
|
23
23
|
|
24
24
|
module Meteor
|
25
25
|
|
26
|
-
VERSION = "0.9.2.
|
26
|
+
VERSION = "0.9.2.1"
|
27
27
|
|
28
28
|
RUBY_VERSION_1_9_0 = '1.9.0'
|
29
29
|
|
@@ -61,6 +61,19 @@ module Meteor
|
|
61
61
|
else
|
62
62
|
raise ArgumentError
|
63
63
|
end
|
64
|
+
when TWO
|
65
|
+
@name = args[0].name
|
66
|
+
@attributes = String.new(args[0].attributes)
|
67
|
+
@mixed_content = String.new(args[0].mixed_content)
|
68
|
+
@pattern = String.new(args[0].pattern)
|
69
|
+
@document = String.new(args[0].document)
|
70
|
+
@empty = args[0].empty
|
71
|
+
@cx = args[0].cx
|
72
|
+
@mono = args[0].mono
|
73
|
+
@parser = args[1]
|
74
|
+
@arguments = AttributeMap.new(args[0].arguments)
|
75
|
+
#@usable = false
|
76
|
+
@origin = args[0]
|
64
77
|
else
|
65
78
|
raise ArgumentError
|
66
79
|
end
|
@@ -93,7 +106,6 @@ module Meteor
|
|
93
106
|
def initialize_e(elm)
|
94
107
|
@name = elm.name
|
95
108
|
@attributes = String.new(elm.attributes)
|
96
|
-
@mixed_content = String.new(elm.mixed_content)
|
97
109
|
@pattern = String.new(elm.pattern)
|
98
110
|
@document = String.new(elm.document)
|
99
111
|
@empty = elm.empty
|
@@ -101,27 +113,55 @@ module Meteor
|
|
101
113
|
@mono = elm.mono
|
102
114
|
@parser = elm.parser
|
103
115
|
@arguments = AttributeMap.new(elm.arguments)
|
104
|
-
@
|
105
|
-
@
|
106
|
-
|
116
|
+
@origin = elm
|
117
|
+
@usable = true
|
118
|
+
end
|
119
|
+
private :initialize_e
|
120
|
+
|
121
|
+
#
|
122
|
+
# コピーを作成する
|
123
|
+
# @param [Array] args 引数配列
|
124
|
+
#
|
125
|
+
def self.new!(*args)
|
126
|
+
case args.length
|
127
|
+
when ONE
|
128
|
+
self.new_1!(args[0])
|
129
|
+
when TWO
|
130
|
+
@obj = args[1].root_element.element
|
131
|
+
if @obj then
|
132
|
+
@obj.attributes = String.new(args[0].attributes)
|
133
|
+
@obj.mixed_content = String.new(args[0].mixed_content)
|
134
|
+
@obj.pattern = String.new(args[0].pattern)
|
135
|
+
@obj.document = String.new(args[0].document)
|
136
|
+
@obj.arguments = AttributeMap.new(args[0].arguments)
|
137
|
+
@obj
|
138
|
+
else
|
139
|
+
@obj = self.new(args[0],args[1])
|
140
|
+
args[1].root_element.element = @obj
|
141
|
+
@obj
|
142
|
+
end
|
143
|
+
end
|
107
144
|
end
|
108
|
-
private :initialize_e
|
109
145
|
|
110
|
-
|
146
|
+
#
|
147
|
+
# コピーを作成する
|
148
|
+
# @param [Element] elm 要素
|
149
|
+
#
|
150
|
+
def self.new_1!(elm)
|
111
151
|
@obj = elm.parser.e_cache[elm.object_id]
|
112
|
-
if @obj then
|
152
|
+
if @obj then
|
113
153
|
@obj.attributes = String.new(elm.attributes)
|
114
154
|
@obj.mixed_content = String.new(elm.mixed_content)
|
115
155
|
@obj.pattern = String.new(elm.pattern)
|
116
|
-
@obj.document = String.new(elm.document)
|
156
|
+
@obj.document = String.new(elm.document)
|
117
157
|
@obj.arguments = AttributeMap.new(elm.arguments)
|
118
158
|
@obj.usable = true
|
119
159
|
@obj
|
120
|
-
else
|
160
|
+
else
|
121
161
|
@obj = self.new(elm)
|
162
|
+
elm.parser.e_cache[elm.object_id] = @obj
|
122
163
|
@obj
|
123
164
|
end
|
124
|
-
|
125
165
|
end
|
126
166
|
|
127
167
|
attr_accessor :name
|
@@ -183,7 +223,7 @@ module Meteor
|
|
183
223
|
# @return [String] 内容
|
184
224
|
#
|
185
225
|
def content(*args)
|
186
|
-
@parser.content(self
|
226
|
+
@parser.content(self,*args)
|
187
227
|
end
|
188
228
|
|
189
229
|
#
|
@@ -205,7 +245,7 @@ module Meteor
|
|
205
245
|
if !name.kind_of?(String) || name != CONTENT_STR then
|
206
246
|
attribute(name,value)
|
207
247
|
else
|
208
|
-
content
|
248
|
+
@parser.content(self,value)
|
209
249
|
end
|
210
250
|
end
|
211
251
|
|
@@ -807,9 +847,9 @@ module Meteor
|
|
807
847
|
|
808
848
|
ESCAPE_ENTITY_REF = ''
|
809
849
|
|
810
|
-
SUB_REGEX1 =
|
811
|
-
SUB_REGEX2 = '\\1\\1\\\\\\\\\\2'
|
812
|
-
SUB_REGEX3 = '\\1\\1\\1\\1\\\\\\\\\\\\\\\\\\2'
|
850
|
+
#SUB_REGEX1 = (\\\\*)\\\\([0-9]+)'
|
851
|
+
#SUB_REGEX2 = '\\1\\1\\\\\\\\\\2'
|
852
|
+
#SUB_REGEX3 = '\\1\\1\\1\\1\\\\\\\\\\\\\\\\\\2'
|
813
853
|
|
814
854
|
@@pattern_get_attrs_map = Regexp.new(GET_ATTRS_MAP)
|
815
855
|
|
@@ -848,7 +888,7 @@ module Meteor
|
|
848
888
|
#@@pattern_qmark = Regexp.new(QMARK_1)
|
849
889
|
#@@pattern_asterisk = Regexp.new(ASTERISK_1)
|
850
890
|
|
851
|
-
|
891
|
+
#@@pattern_sub_regex1 = Regexp.new(SUB_REGEX1)
|
852
892
|
|
853
893
|
@@pattern_clean1 = Regexp.new(CLEAN_1)
|
854
894
|
@@pattern_clean2 = Regexp.new(CLEAN_2)
|
@@ -1019,6 +1059,7 @@ module Meteor
|
|
1019
1059
|
when ONE
|
1020
1060
|
if args[0].kind_of?(String) then
|
1021
1061
|
element_1(args[0])
|
1062
|
+
@e_cache.store(@elm_.object_id,@elm_)
|
1022
1063
|
elsif args[0].kind_of?(Meteor::Element) then
|
1023
1064
|
shadow(args[0])
|
1024
1065
|
else
|
@@ -1026,16 +1067,19 @@ module Meteor
|
|
1026
1067
|
end
|
1027
1068
|
when TWO
|
1028
1069
|
element_2(args[0],args[1])
|
1070
|
+
@e_cache.store(@elm_.object_id,@elm_)
|
1029
1071
|
when THREE
|
1030
1072
|
element_3(args[0],args[1],args[2])
|
1073
|
+
@e_cache.store(@elm_.object_id,@elm_)
|
1031
1074
|
when FOUR
|
1032
1075
|
element_4(args[0],args[1],args[2],args[3])
|
1076
|
+
@e_cache.store(@elm_.object_id,@elm_)
|
1033
1077
|
when FIVE
|
1034
1078
|
element_5(args[0],args[1],args[2],args[3],args[4])
|
1079
|
+
@e_cache.store(@elm_.object_id,@elm_)
|
1035
1080
|
else
|
1036
1081
|
raise ArgumentError
|
1037
1082
|
end
|
1038
|
-
@e_cache.store(@elm_.object_id,@elm_)
|
1039
1083
|
@elm_
|
1040
1084
|
end
|
1041
1085
|
|
@@ -1849,12 +1893,12 @@ module Meteor
|
|
1849
1893
|
if elm.attributes.include?(' ' << attr_name << ATTR_EQ) then
|
1850
1894
|
|
1851
1895
|
@_attr_value = attr_value
|
1852
|
-
|
1853
|
-
if elm.origin then
|
1854
|
-
|
1855
|
-
else
|
1856
|
-
|
1857
|
-
end
|
1896
|
+
##replace2regex(@_attr_value)
|
1897
|
+
#if elm.origin then
|
1898
|
+
# replace4regex(@_attr_value)
|
1899
|
+
#else
|
1900
|
+
# replace2regex(@_attr_value)
|
1901
|
+
#end
|
1858
1902
|
#属性の置換
|
1859
1903
|
@pattern = Meteor::Core::Util::PatternCache.get('' << attr_name << SET_ATTR_1)
|
1860
1904
|
|
@@ -1863,11 +1907,11 @@ module Meteor
|
|
1863
1907
|
else
|
1864
1908
|
#属性文字列の最後に新規の属性を追加する
|
1865
1909
|
@_attr_value = attr_value
|
1866
|
-
|
1867
|
-
if elm.origin then
|
1868
|
-
|
1869
|
-
end
|
1870
|
-
|
1910
|
+
##replace2regex(@_attr_value)
|
1911
|
+
#if elm.origin then
|
1912
|
+
# replace2regex(@_attr_value)
|
1913
|
+
#end
|
1914
|
+
|
1871
1915
|
if EMPTY != elm.attributes && EMPTY != elm.attributes.strip then
|
1872
1916
|
elm.attributes = '' << SPACE << elm.attributes.strip
|
1873
1917
|
else
|
@@ -1889,44 +1933,40 @@ module Meteor
|
|
1889
1933
|
def edit_document_2(elm,closer)
|
1890
1934
|
if !elm.cx then
|
1891
1935
|
@_attributes = elm.attributes
|
1892
|
-
replace2regex(@_attributes)
|
1936
|
+
#replace2regex(@_attributes)
|
1893
1937
|
|
1894
1938
|
if elm.empty then
|
1895
1939
|
#内容あり要素の場合
|
1896
1940
|
@_content = elm.mixed_content
|
1897
|
-
|
1898
|
-
if elm.origin then
|
1899
|
-
|
1900
|
-
else
|
1901
|
-
|
1902
|
-
end
|
1903
|
-
|
1904
|
-
|
1905
|
-
|
1906
|
-
@root.document.sub!(@pattern,'' << TAG_OPEN << elm.name << @_attributes << TAG_CLOSE << @_content << TAG_OPEN3 << elm.name << TAG_CLOSE)
|
1907
|
-
#@root.document.sub!(@pattern,"<#{elm.name}#{@_attributes}>#{@_content}</#{elm.name}>")
|
1941
|
+
##replace2regex(@_content)
|
1942
|
+
#if elm.origin then
|
1943
|
+
# replace4regex(@_content)
|
1944
|
+
#else
|
1945
|
+
# replace2regex(@_content)
|
1946
|
+
#end
|
1947
|
+
|
1948
|
+
elm.document = '' << TAG_OPEN << elm.name << @_attributes << TAG_CLOSE << @_content << TAG_OPEN3 << elm.name << TAG_CLOSE
|
1949
|
+
#elm.document = "<#{elm.name}#{@_attributes}>#{@_content}</#{elm.name}>"
|
1908
1950
|
else
|
1909
1951
|
#空要素の場合
|
1910
|
-
|
1911
|
-
@pattern = Meteor::Core::Util::PatternCache.get(elm.pattern)
|
1912
|
-
@root.document.sub!(@pattern,'' << TAG_OPEN << elm.name << @_attributes << closer)
|
1952
|
+
elm.document = '' << TAG_OPEN << elm.name << @_attributes << closer
|
1913
1953
|
end
|
1914
1954
|
else
|
1915
1955
|
@_content = elm.mixed_content
|
1916
|
-
if elm.origin then
|
1917
|
-
|
1918
|
-
else
|
1919
|
-
|
1920
|
-
end
|
1921
|
-
|
1922
|
-
|
1923
|
-
|
1924
|
-
|
1925
|
-
#@pattern_cc = '' << SET_CX_1 << elm.name << SPACE << elm.attributes << SET_CX_2
|
1926
|
-
#@pattern_cc << @_content << SET_CX_3 << elm.name << SET_CX_4
|
1927
|
-
@pattern_cc = "<!-- @#{elm.name} #{elm.attributes}-->#{@_content}<!-- /@#{elm.name} -->"
|
1928
|
-
@root.document.sub!(@pattern,@pattern_cc)
|
1956
|
+
#if elm.origin then
|
1957
|
+
# replace4regex(@_content)
|
1958
|
+
#else
|
1959
|
+
# replace2regex(@_content)
|
1960
|
+
#end
|
1961
|
+
|
1962
|
+
#elm.document = '' << SET_CX_1 << elm.name << SPACE << elm.attributes << SET_CX_2
|
1963
|
+
#elm.document << @_content << SET_CX_3 << elm.name << SET_CX_4
|
1964
|
+
elm.document = "<!-- @#{elm.name} #{elm.attributes}-->#{@_content}<!-- /@#{elm.name} -->"
|
1929
1965
|
end
|
1966
|
+
|
1967
|
+
#タグ置換
|
1968
|
+
@pattern = Meteor::Core::Util::PatternCache.get(elm.pattern)
|
1969
|
+
@root.document.sub!(@pattern,elm.document)
|
1930
1970
|
end
|
1931
1971
|
private :edit_document_2
|
1932
1972
|
|
@@ -1935,7 +1975,7 @@ module Meteor
|
|
1935
1975
|
elm.arguments.map.each do |name, attr|
|
1936
1976
|
if attr.changed then
|
1937
1977
|
@_attr_value = escape_regex(attr.value)
|
1938
|
-
|
1978
|
+
##replace2regex(@_attr_value)
|
1939
1979
|
#@pattern_cc = '' << name << SET_ATTR_1
|
1940
1980
|
@pattern_cc = "#{attr.name}=\"[^\"]*\""
|
1941
1981
|
@pattern = Meteor::Core::Util::PatternCache.get(@pattern_cc)
|
@@ -2336,21 +2376,28 @@ module Meteor
|
|
2336
2376
|
#
|
2337
2377
|
def replace(elm,replace_document)
|
2338
2378
|
#文字エスケープ
|
2339
|
-
if replace_document.size > ZERO && elm.origin && elm.mono then
|
2340
|
-
|
2341
|
-
end
|
2379
|
+
#if replace_document.size > ZERO && elm.origin && elm.mono then
|
2380
|
+
# replace2regex(replace_document)
|
2381
|
+
#end
|
2342
2382
|
#タグ置換パターン
|
2343
2383
|
@pattern = Meteor::Core::Util::PatternCache.get(elm.pattern)
|
2344
2384
|
#タグ置換
|
2345
2385
|
@root.document.sub!(@pattern,replace_document)
|
2346
2386
|
end
|
2347
|
-
|
2387
|
+
private :replace
|
2388
|
+
|
2348
2389
|
def reflect()
|
2349
|
-
|
2390
|
+
#puts @e_cache.size.to_s
|
2350
2391
|
@e_cache.values.each do |item|
|
2351
2392
|
if item.usable then
|
2352
|
-
|
2353
|
-
|
2393
|
+
#puts "#{item.name}:#{item.document}"
|
2394
|
+
if item.name == EMPTY then
|
2395
|
+
@pattern = Meteor::Core::Util::PatternCache.get(item.pattern)
|
2396
|
+
@root.document.sub!(@pattern,item.document)
|
2397
|
+
else
|
2398
|
+
edit_document_1(item)
|
2399
|
+
edit_pattern_(item)
|
2400
|
+
end
|
2354
2401
|
item.usable = false
|
2355
2402
|
end
|
2356
2403
|
end
|
@@ -2361,12 +2408,13 @@ module Meteor
|
|
2361
2408
|
# 出力する
|
2362
2409
|
#
|
2363
2410
|
def print
|
2364
|
-
reflect
|
2365
|
-
|
2366
|
-
|
2411
|
+
reflect
|
2412
|
+
|
2413
|
+
#puts @root.document
|
2414
|
+
if @root.element then
|
2367
2415
|
if !@root.element.origin.mono then
|
2368
2416
|
@_attributes = @root.element.attributes
|
2369
|
-
replace2regex(@_attributes)
|
2417
|
+
#replace2regex(@_attributes)
|
2370
2418
|
if @root.element.origin.cx then
|
2371
2419
|
#@root.hookDocument << SET_CX_1 << @root.element.name << SPACE
|
2372
2420
|
#@root.hookDocument << @_attributes << SET_CX_2
|
@@ -2379,8 +2427,7 @@ module Meteor
|
|
2379
2427
|
#@root.hookDocument << TAG_OPEN3 << @root.element.name << TAG_CLOSE
|
2380
2428
|
@root.hook_document << "<#{@root.element.name}#{@_attributes}>#{@root.document}</#{@root.element.name}>"
|
2381
2429
|
end
|
2382
|
-
@root.element = Element.new!(@root.element.origin)
|
2383
|
-
@root.document = String.new(@root.element.origin.mixed_content)
|
2430
|
+
@root.element = Element.new!(@root.element.origin,self)
|
2384
2431
|
else
|
2385
2432
|
if @root.element.origin.cx then
|
2386
2433
|
#@root.hookDocument << SET_CX_1 << @root.element.name << SPACE
|
@@ -2388,14 +2435,20 @@ module Meteor
|
|
2388
2435
|
#@root.hookDocument << @root.element.mixed_content << SET_CX_3
|
2389
2436
|
#@root.hookDocument << @root.element.name << SET_CX_4
|
2390
2437
|
@root.hook_document << "<!-- @#{@root.element.name} #{@root.element.attributes}-->#{@root.element.mixed_content}<!-- /@#{@root.element.name} -->"
|
2438
|
+
#@root.hook_document << @root.document
|
2391
2439
|
else
|
2392
2440
|
#@root.hookDocument << TAG_OPEN << @root.element.name
|
2393
2441
|
#@root.hookDocument << @root.element.attributes << TAG_CLOSE << @root.element.mixed_content
|
2394
2442
|
#@root.hookDocument << TAG_OPEN3 << @root.element.name << TAG_CLOSE
|
2395
2443
|
@root.hook_document << "<#{@root.element.name}#{@root.element.attributes}>#{@root.element.mixed_content}</#{@root.element.name}>"
|
2444
|
+
#@root.hook_document << @root.document
|
2396
2445
|
end
|
2397
|
-
|
2446
|
+
#@root.hook_document << @root.document
|
2447
|
+
@root.element = Element.new!(@root.element.origin,self)
|
2448
|
+
#@root.document = String.new(@root.element.document)
|
2398
2449
|
end
|
2450
|
+
#@root.element.origin.document = @root.hook_document
|
2451
|
+
#@root.element.origin.name = EMPTY
|
2399
2452
|
else
|
2400
2453
|
#フック判定がFALSEの場合
|
2401
2454
|
clean
|
@@ -2426,13 +2479,15 @@ module Meteor
|
|
2426
2479
|
|
2427
2480
|
pif2 = create(self)
|
2428
2481
|
|
2429
|
-
|
2430
|
-
@elm_
|
2431
|
-
|
2482
|
+
#@elm_ = Element.new(elm,pif2)
|
2483
|
+
@elm_ = Element.new!(elm,pif2)
|
2484
|
+
|
2432
2485
|
if !elm.mono then
|
2433
|
-
pif2.root_element.document = String.new(elm.mixed_content)
|
2434
|
-
|
2435
|
-
|
2486
|
+
pif2.root_element.document = String.new(elm.mixed_content)
|
2487
|
+
else
|
2488
|
+
pif2.root_element.document = String.new(elm.document)
|
2489
|
+
end
|
2490
|
+
#pif2.root_element.element = @elm_
|
2436
2491
|
|
2437
2492
|
@elm_
|
2438
2493
|
end
|
@@ -2460,8 +2515,12 @@ module Meteor
|
|
2460
2515
|
#
|
2461
2516
|
def flush
|
2462
2517
|
if @root.element && @root.element.origin then
|
2463
|
-
|
2464
|
-
|
2518
|
+
##@root.element.origin.parser.reflect
|
2519
|
+
##@root.element.origin.parser.replace(@root.element.origin, @root.hook_document)
|
2520
|
+
##puts "[aa]"
|
2521
|
+
##puts @root.hook_document
|
2522
|
+
@root.element.origin.document = @root.hook_document
|
2523
|
+
@root.element.origin.name = EMPTY
|
2465
2524
|
end
|
2466
2525
|
end
|
2467
2526
|
|
@@ -2501,19 +2560,19 @@ module Meteor
|
|
2501
2560
|
end
|
2502
2561
|
private :escape_regex
|
2503
2562
|
|
2504
|
-
def replace2regex(str)
|
2505
|
-
|
2506
|
-
|
2507
|
-
|
2508
|
-
end
|
2509
|
-
private :replace2regex
|
2510
|
-
|
2511
|
-
def replace4regex(str)
|
2512
|
-
|
2513
|
-
|
2514
|
-
|
2515
|
-
end
|
2516
|
-
private :replace4regex
|
2563
|
+
#def replace2regex(str)
|
2564
|
+
# #if str.include?(EN_1) then
|
2565
|
+
# # str.gsub!(@@pattern_sub_regex1,SUB_REGEX2)
|
2566
|
+
# #end
|
2567
|
+
#end
|
2568
|
+
#private :replace2regex
|
2569
|
+
|
2570
|
+
#def replace4regex(str)
|
2571
|
+
# #if str.include?(EN_1) then
|
2572
|
+
# # str.gsub!(@@pattern_sub_regex1,SUB_REGEX3)
|
2573
|
+
# #end
|
2574
|
+
#end
|
2575
|
+
#private :replace4regex
|
2517
2576
|
|
2518
2577
|
#
|
2519
2578
|
# @param [String] content 入力文字列
|
@@ -4135,7 +4194,8 @@ module Meteor
|
|
4135
4194
|
#
|
4136
4195
|
def initialize_0
|
4137
4196
|
end
|
4138
|
-
|
4197
|
+
private :initialize_0
|
4198
|
+
|
4139
4199
|
#
|
4140
4200
|
# イニシャライザ
|
4141
4201
|
#
|
@@ -4145,6 +4205,7 @@ module Meteor
|
|
4145
4205
|
@root.document = String.new(ps.document)
|
4146
4206
|
@root.hook_document = String.new(ps.root_element.hook_document)
|
4147
4207
|
end
|
4208
|
+
private :initialize_1
|
4148
4209
|
|
4149
4210
|
#
|
4150
4211
|
# ドキュメントをパーサにセットする
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asip-meteor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.2.
|
4
|
+
version: 0.9.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- asip
|
@@ -9,7 +9,7 @@ autorequire: meteor
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-06-04 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|