asip-meteor 0.9.2.0 → 0.9.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|