spicycode-rcov 0.8.2 → 0.8.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/rcov/report.rb +19 -24
- data/lib/rcov/version.rb +1 -1
- data/lib/rcov/xx.rb +104 -299
- metadata +1 -2
- data/lib/rcov/binding_of_caller.rb +0 -83
data/lib/rcov/report.rb
CHANGED
@@ -25,6 +25,8 @@ begin
|
|
25
25
|
rescue LoadError
|
26
26
|
end
|
27
27
|
|
28
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'rexml_extensions' ))
|
29
|
+
|
28
30
|
if (RUBY_VERSION == "1.8.6" || RUBY_VERSION == "1.8.7") && defined? REXML::Formatters::Transitive
|
29
31
|
class REXML::Document
|
30
32
|
remove_method :write rescue nil
|
@@ -74,6 +76,7 @@ if (RUBY_VERSION == "1.8.6" || RUBY_VERSION == "1.8.7") && defined? REXML::Forma
|
|
74
76
|
output << ' '*@level
|
75
77
|
end
|
76
78
|
end
|
79
|
+
|
77
80
|
end
|
78
81
|
|
79
82
|
class Formatter # :nodoc:
|
@@ -85,11 +88,11 @@ class Formatter # :nodoc:
|
|
85
88
|
/\btest\//,
|
86
89
|
/\bvendor\//,
|
87
90
|
/\A#{Regexp.escape(__FILE__)}\z/]
|
88
|
-
|
91
|
+
|
89
92
|
DEFAULT_OPTS = {:ignore => ignore_files, :sort => :name, :sort_reverse => false,
|
90
93
|
:output_threshold => 101, :dont_ignore => [],
|
91
94
|
:callsite_analyzer => nil, :comments_run_by_default => false}
|
92
|
-
|
95
|
+
|
93
96
|
def initialize(opts = {})
|
94
97
|
options = DEFAULT_OPTS.clone.update(opts)
|
95
98
|
@files = {}
|
@@ -535,7 +538,7 @@ class HTMLCoverage < Formatter # :nodoc:
|
|
535
538
|
require 'fileutils'
|
536
539
|
JAVASCRIPT_PROLOG = <<-EOS
|
537
540
|
|
538
|
-
//
|
541
|
+
// <![CDATA[
|
539
542
|
function toggleCode( id ) {
|
540
543
|
if ( document.getElementById )
|
541
544
|
elem = document.getElementById( id );
|
@@ -556,7 +559,7 @@ class HTMLCoverage < Formatter # :nodoc:
|
|
556
559
|
}
|
557
560
|
|
558
561
|
// Make cross-references hidden by default
|
559
|
-
document.writeln( "
|
562
|
+
document.writeln( "<style type=\\"text/css\\">span.cross-ref { display: none }</style>" )
|
560
563
|
// ]]>
|
561
564
|
EOS
|
562
565
|
|
@@ -718,7 +721,7 @@ EOS
|
|
718
721
|
return if @files.empty?
|
719
722
|
FileUtils.mkdir_p @dest
|
720
723
|
create_index(File.join(@dest, "index.html"))
|
721
|
-
|
724
|
+
|
722
725
|
each_file_pair_sorted do |filename, fileinfo|
|
723
726
|
create_file(File.join(@dest, mangle_filename(filename)), fileinfo)
|
724
727
|
end
|
@@ -813,29 +816,29 @@ EOS
|
|
813
816
|
end
|
814
817
|
|
815
818
|
class SummaryFileInfo # :nodoc:
|
816
|
-
|
819
|
+
|
817
820
|
def initialize(obj)
|
818
|
-
@o = obj
|
821
|
+
@o = obj
|
819
822
|
end
|
820
|
-
|
823
|
+
|
821
824
|
def num_lines
|
822
825
|
@o.num_lines
|
823
826
|
end
|
824
|
-
|
827
|
+
|
825
828
|
def num_code_lines
|
826
829
|
@o.num_code_lines
|
827
830
|
end
|
828
|
-
|
831
|
+
|
829
832
|
def code_coverage
|
830
833
|
@o.code_coverage
|
831
834
|
end
|
832
|
-
|
835
|
+
|
833
836
|
def total_coverage
|
834
837
|
@o.total_coverage
|
835
838
|
end
|
836
|
-
|
839
|
+
|
837
840
|
def name
|
838
|
-
"TOTAL"
|
841
|
+
"TOTAL"
|
839
842
|
end
|
840
843
|
|
841
844
|
end
|
@@ -883,11 +886,7 @@ EOS
|
|
883
886
|
end
|
884
887
|
}
|
885
888
|
} }
|
886
|
-
|
887
|
-
lines = output.pretty.lines.to_a
|
888
|
-
else
|
889
|
-
lines = output.pretty.to_a
|
890
|
-
end
|
889
|
+
lines = output.pretty.to_a
|
891
890
|
lines.unshift lines.pop if /DOCTYPE/ =~ lines[-1]
|
892
891
|
File.open(destname, "w") do |f|
|
893
892
|
f.puts lines
|
@@ -1039,11 +1038,7 @@ EOS
|
|
1039
1038
|
}
|
1040
1039
|
} }
|
1041
1040
|
# .pretty needed to make sure DOCTYPE is in a separate line
|
1042
|
-
|
1043
|
-
lines = output.pretty.lines.to_a
|
1044
|
-
else
|
1045
|
-
lines = output.pretty.to_a
|
1046
|
-
end
|
1041
|
+
lines = output.pretty.to_a
|
1047
1042
|
lines.unshift lines.pop if /DOCTYPE/ =~ lines[-1]
|
1048
1043
|
File.open(destfile, "w") do |f|
|
1049
1044
|
f.puts lines
|
@@ -1158,7 +1153,7 @@ class HTMLProfiling < HTMLCoverage # :nodoc:
|
|
1158
1153
|
nil
|
1159
1154
|
end
|
1160
1155
|
end
|
1161
|
-
|
1156
|
+
|
1162
1157
|
end
|
1163
1158
|
|
1164
1159
|
class RubyAnnotation < Formatter # :nodoc:
|
data/lib/rcov/version.rb
CHANGED
data/lib/rcov/xx.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# xx can be redistributed and used under the following conditions
|
2
2
|
# (just keep the following copyright notice, list of conditions and disclaimer
|
3
3
|
# in order to satisfy rcov's "Ruby license" and xx's license simultaneously).
|
4
|
-
#
|
4
|
+
#
|
5
5
|
#ePark Labs Public License version 1
|
6
6
|
#Copyright (c) 2005, ePark Labs, Inc. and contributors
|
7
7
|
#All rights reserved.
|
@@ -29,19 +29,14 @@
|
|
29
29
|
#(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
30
30
|
#SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
31
|
|
32
|
-
unless
|
32
|
+
unless defined? $__xx_rb__
|
33
33
|
|
34
34
|
require "rexml/document"
|
35
35
|
|
36
|
+
|
36
37
|
module XX
|
37
38
|
#--{{{
|
38
|
-
VERSION = "
|
39
|
-
def self.version() VERSION end
|
40
|
-
|
41
|
-
LIBDIR = File.dirname(File.expand_path(__FILE__)) << File::SEPARATOR
|
42
|
-
def self.libdir() LIBDIR end
|
43
|
-
|
44
|
-
require libdir + "binding_of_caller"
|
39
|
+
VERSION = "0.1.0"
|
45
40
|
|
46
41
|
%w(
|
47
42
|
CRAZY_LIKE_A_HELL
|
@@ -55,13 +50,11 @@ module XX
|
|
55
50
|
attr "doc"
|
56
51
|
attr "stack"
|
57
52
|
attr "size"
|
58
|
-
attr_accessor "xmldecl"
|
59
53
|
|
60
54
|
def initialize *a, &b
|
61
55
|
#--{{{
|
62
|
-
@doc = ::REXML::Document::new
|
56
|
+
@doc = ::REXML::Document::new(*a, &b)
|
63
57
|
@stack = [@doc]
|
64
|
-
@xmldecl = nil
|
65
58
|
@size = 0
|
66
59
|
#--}}}
|
67
60
|
end
|
@@ -89,23 +82,17 @@ module XX
|
|
89
82
|
end
|
90
83
|
def to_str port = ""
|
91
84
|
#--{{{
|
92
|
-
|
93
|
-
#--}}}
|
94
|
-
end
|
95
|
-
alias_method "to_s", "to_str"
|
96
|
-
def pretty port = ""
|
97
|
-
#--{{{
|
98
|
-
@doc.write port, indent=0, transitive=false, ie_hack=true
|
85
|
+
@doc.write port, indent=-1, transitive=false, ie_hack=true
|
99
86
|
port
|
100
87
|
#--}}}
|
101
88
|
end
|
102
|
-
|
89
|
+
alias_method "to_s", "to_str"
|
90
|
+
def pretty port = ''
|
103
91
|
#--{{{
|
104
|
-
@doc.write port, indent
|
92
|
+
@doc.write port, indent=2, transitive=false, ie_hack=true
|
105
93
|
port
|
106
94
|
#--}}}
|
107
95
|
end
|
108
|
-
alias_method "compact", "ugly"
|
109
96
|
def create element
|
110
97
|
#--{{{
|
111
98
|
push element
|
@@ -187,7 +174,7 @@ module XX
|
|
187
174
|
x.to_s
|
188
175
|
end
|
189
176
|
|
190
|
-
else # other - try anyhow
|
177
|
+
else # other - try anyhow
|
191
178
|
t <<
|
192
179
|
case x
|
193
180
|
when ::REXML::Document
|
@@ -217,34 +204,67 @@ module XX
|
|
217
204
|
|
218
205
|
module InstanceMethods
|
219
206
|
#--{{{
|
220
|
-
def
|
207
|
+
def method_missing m, *a, &b
|
221
208
|
#--{{{
|
222
|
-
|
209
|
+
m = m.to_s
|
223
210
|
|
224
|
-
|
225
|
-
|
211
|
+
tag_method, tag_name = xx_class::xx_tag_method_name m
|
212
|
+
|
213
|
+
c_method_missing = xx_class::xx_config_for "method_missing", xx_which
|
214
|
+
c_tags = xx_class::xx_config_for "tags", xx_which
|
226
215
|
|
227
|
-
|
228
|
-
|
216
|
+
pat =
|
217
|
+
case c_method_missing
|
218
|
+
when ::XX::CRAZY_LIKE_A_HELL
|
219
|
+
%r/.*/
|
220
|
+
when ::XX::PERMISSIVE
|
221
|
+
%r/_$/o
|
222
|
+
when ::XX::STRICT
|
223
|
+
%r/_$/o
|
224
|
+
else
|
225
|
+
super(m.to_sym, *a, &b)
|
226
|
+
end
|
229
227
|
|
230
|
-
|
228
|
+
super(m.to_sym, *a, &b) unless m =~ pat
|
229
|
+
|
230
|
+
if c_method_missing == ::XX::STRICT
|
231
|
+
super(m.to_sym, *a, &b) unless c_tags.include? tag_name
|
232
|
+
end
|
233
|
+
|
234
|
+
ret, defined = nil
|
235
|
+
|
236
|
+
begin
|
237
|
+
xx_class::xx_define_tmp_method tag_method
|
238
|
+
xx_class::xx_define_tag_method tag_method, tag_name
|
239
|
+
ret = send tag_method, *a, &b
|
240
|
+
defined = true
|
241
|
+
ensure
|
242
|
+
xx_class::xx_remove_tag_method tag_method unless defined
|
243
|
+
end
|
244
|
+
|
245
|
+
ret
|
231
246
|
#--}}}
|
232
247
|
end
|
233
|
-
|
234
|
-
alias_method "__" , "_"
|
235
|
-
alias_method "g__" , "_"
|
236
|
-
def method_missing m, *a, &b
|
248
|
+
def xx_tag_ tag_name, *a, &b
|
237
249
|
#--{{{
|
238
|
-
|
250
|
+
tag_method, tag_name = xx_class::xx_tag_method_name tag_name
|
239
251
|
|
240
|
-
|
252
|
+
ret, defined = nil
|
241
253
|
|
242
|
-
|
254
|
+
begin
|
255
|
+
xx_class::xx_define_tmp_method tag_method
|
256
|
+
xx_class::xx_define_tag_method tag_method, tag_name
|
257
|
+
ret = send tag_method, *a, &b
|
258
|
+
defined = true
|
259
|
+
ensure
|
260
|
+
xx_class::xx_remove_tag_method tag_method unless defined
|
261
|
+
end
|
243
262
|
|
244
|
-
|
263
|
+
ret
|
245
264
|
#--}}}
|
246
265
|
end
|
247
|
-
|
266
|
+
alias_method "g_", "xx_tag_"
|
267
|
+
def xx_which *argv
|
248
268
|
#--{{{
|
249
269
|
@xx_which = nil unless defined? @xx_which
|
250
270
|
if argv.empty?
|
@@ -252,7 +272,7 @@ module XX
|
|
252
272
|
else
|
253
273
|
xx_which = @xx_which
|
254
274
|
begin
|
255
|
-
@xx_which = argv.shift
|
275
|
+
@xx_which = argv.shift
|
256
276
|
return yield
|
257
277
|
ensure
|
258
278
|
@xx_which = xx_which
|
@@ -263,15 +283,16 @@ module XX
|
|
263
283
|
def xx_with_doc_in_effect *a, &b
|
264
284
|
#--{{{
|
265
285
|
@xx_docs ||= []
|
266
|
-
doc = ::XX::Document::new
|
286
|
+
doc = ::XX::Document::new(*a)
|
267
287
|
ddoc = doc.doc
|
268
288
|
begin
|
269
289
|
@xx_docs.push doc
|
290
|
+
b.call doc if b
|
270
291
|
|
271
292
|
doctype = xx_config_for "doctype", xx_which
|
272
293
|
if doctype
|
273
294
|
unless ddoc.doctype
|
274
|
-
doctype = ::REXML::DocType::new doctype unless
|
295
|
+
doctype = ::REXML::DocType::new doctype unless
|
275
296
|
::REXML::DocType === doctype
|
276
297
|
ddoc << doctype
|
277
298
|
end
|
@@ -283,12 +304,9 @@ module XX
|
|
283
304
|
xmldecl = ::REXML::XMLDecl::new xmldecl unless
|
284
305
|
::REXML::XMLDecl === xmldecl
|
285
306
|
ddoc << xmldecl
|
286
|
-
doc.xmldecl = ::REXML::XMLDecl
|
287
307
|
end
|
288
308
|
end
|
289
309
|
|
290
|
-
b.call doc if b
|
291
|
-
|
292
310
|
return doc
|
293
311
|
ensure
|
294
312
|
@xx_docs.pop
|
@@ -305,26 +323,26 @@ module XX
|
|
305
323
|
doc = xx_doc
|
306
324
|
|
307
325
|
text =
|
308
|
-
::REXML::Text::new("",
|
326
|
+
::REXML::Text::new("",
|
309
327
|
respect_whitespace=true, parent=nil
|
310
328
|
)
|
311
329
|
|
312
|
-
objects.each do |object|
|
330
|
+
objects.each do |object|
|
313
331
|
text << object.to_s if object
|
314
332
|
end
|
315
333
|
|
316
334
|
doc.create text, &b
|
317
335
|
#--}}}
|
318
336
|
end
|
319
|
-
alias_method "
|
320
|
-
alias_method "
|
337
|
+
alias_method "text_", "xx_text_"
|
338
|
+
alias_method "t_", "xx_text_"
|
321
339
|
def xx_markup_ *objects, &b
|
322
340
|
#--{{{
|
323
341
|
doc = xx_doc
|
324
342
|
|
325
343
|
doc2 = ::REXML::Document::new ""
|
326
344
|
|
327
|
-
objects.each do |object|
|
345
|
+
objects.each do |object|
|
328
346
|
(doc2.root ? doc2.root : doc2) << ::REXML::Document::new(object.to_s)
|
329
347
|
end
|
330
348
|
|
@@ -335,43 +353,41 @@ module XX
|
|
335
353
|
ret
|
336
354
|
#--}}}
|
337
355
|
end
|
338
|
-
alias_method "
|
339
|
-
alias_method "markup__", "xx_markup_"
|
356
|
+
alias_method "x_", "xx_markup_"
|
340
357
|
def xx_any_ *objects, &b
|
341
358
|
#--{{{
|
342
359
|
doc = xx_doc
|
343
360
|
nothing = %r/.^/m
|
344
361
|
|
345
362
|
text =
|
346
|
-
::REXML::Text::new("",
|
363
|
+
::REXML::Text::new("",
|
347
364
|
respect_whitespace=true, parent=nil, raw=true, entity_filter=nil, illegal=nothing
|
348
365
|
)
|
349
366
|
|
350
|
-
objects.each do |object|
|
367
|
+
objects.each do |object|
|
351
368
|
text << object.to_s if object
|
352
369
|
end
|
353
370
|
|
354
371
|
doc.create text, &b
|
355
372
|
#--}}}
|
356
373
|
end
|
357
|
-
alias_method "
|
358
|
-
|
359
|
-
alias_method "
|
374
|
+
alias_method "h_", "xx_any_"
|
375
|
+
remove_method "x_" if instance_methods.include? "x_"
|
376
|
+
alias_method "x_", "xx_any_" # supplant for now
|
360
377
|
def xx_cdata_ *objects, &b
|
361
378
|
#--{{{
|
362
379
|
doc = xx_doc
|
363
380
|
|
364
381
|
cdata = ::REXML::CData::new ""
|
365
382
|
|
366
|
-
objects.each do |object|
|
383
|
+
objects.each do |object|
|
367
384
|
cdata << object.to_s if object
|
368
385
|
end
|
369
386
|
|
370
387
|
doc.create cdata, &b
|
371
388
|
#--}}}
|
372
389
|
end
|
373
|
-
alias_method "
|
374
|
-
alias_method "c__", "xx_cdata_"
|
390
|
+
alias_method "c_", "xx_cdata_"
|
375
391
|
def xx_parse_attributes string
|
376
392
|
#--{{{
|
377
393
|
string = string.to_s
|
@@ -380,7 +396,7 @@ module XX
|
|
380
396
|
xx_parse_yaml_attributes(tokens.join(','))
|
381
397
|
#--}}}
|
382
398
|
end
|
383
|
-
alias_method "
|
399
|
+
alias_method "att_", "xx_parse_attributes"
|
384
400
|
def xx_parse_yaml_attributes string
|
385
401
|
#--{{{
|
386
402
|
require "yaml"
|
@@ -392,30 +408,31 @@ module XX
|
|
392
408
|
obj
|
393
409
|
#--}}}
|
394
410
|
end
|
395
|
-
alias_method "
|
411
|
+
alias_method "at_", "xx_parse_yaml_attributes"
|
412
|
+
alias_method "yat_", "xx_parse_yaml_attributes"
|
396
413
|
def xx_class
|
397
414
|
#--{{{
|
398
415
|
@xx_class ||= self.class
|
399
416
|
#--}}}
|
400
417
|
end
|
401
|
-
def xx_tag_method_name *a, &b
|
418
|
+
def xx_tag_method_name *a, &b
|
402
419
|
#--{{{
|
403
|
-
xx_class.xx_tag_method_name
|
420
|
+
xx_class.xx_tag_method_name(*a, &b)
|
404
421
|
#--}}}
|
405
422
|
end
|
406
|
-
def xx_define_tmp_method *a, &b
|
423
|
+
def xx_define_tmp_method *a, &b
|
407
424
|
#--{{{
|
408
|
-
xx_class.
|
425
|
+
xx_class.xx_define_tmp_methodr(*a, &b)
|
409
426
|
#--}}}
|
410
427
|
end
|
411
|
-
def xx_define_tag_method *a, &b
|
428
|
+
def xx_define_tag_method *a, &b
|
412
429
|
#--{{{
|
413
|
-
xx_class.xx_define_tag_method
|
430
|
+
xx_class.xx_define_tag_method(*a, &b)
|
414
431
|
#--}}}
|
415
432
|
end
|
416
|
-
def xx_remove_tag_method *a, &b
|
433
|
+
def xx_remove_tag_method *a, &b
|
417
434
|
#--{{{
|
418
|
-
xx_class.xx_tag_remove_method
|
435
|
+
xx_class.xx_tag_remove_method(*a, &b)
|
419
436
|
#--}}}
|
420
437
|
end
|
421
438
|
def xx_ancestors
|
@@ -431,12 +448,12 @@ module XX
|
|
431
448
|
end
|
432
449
|
def xx_config_for *a, &b
|
433
450
|
#--{{{
|
434
|
-
xx_class.xx_config_for
|
451
|
+
xx_class.xx_config_for(*a, &b)
|
435
452
|
#--}}}
|
436
453
|
end
|
437
454
|
def xx_configure *a, &b
|
438
455
|
#--{{{
|
439
|
-
xx_class.xx_configure
|
456
|
+
xx_class.xx_configure(*a, &b)
|
440
457
|
#--}}}
|
441
458
|
end
|
442
459
|
#--}}}
|
@@ -451,7 +468,7 @@ module XX
|
|
451
468
|
[ tag_method, tag_name ]
|
452
469
|
#--}}}
|
453
470
|
end
|
454
|
-
def xx_define_tmp_method m
|
471
|
+
def xx_define_tmp_method m
|
455
472
|
#--{{{
|
456
473
|
define_method(m){ raise NotImplementedError, m.to_s }
|
457
474
|
#--}}}
|
@@ -459,9 +476,10 @@ module XX
|
|
459
476
|
def xx_define_tag_method tag_method, tag_name = nil
|
460
477
|
#--{{{
|
461
478
|
tag_method = tag_method.to_s
|
462
|
-
tag_name ||= tag_method.
|
479
|
+
tag_name ||= tag_method.gsub %r/_+$/, ""
|
463
480
|
|
464
|
-
|
481
|
+
remove_method tag_method if instance_methods.include? tag_method
|
482
|
+
module_eval <<-code, __FILE__, __LINE__+1
|
465
483
|
def #{ tag_method } *a, &b
|
466
484
|
hashes, nothashes = a.partition{|x| Hash === x}
|
467
485
|
|
@@ -499,9 +517,9 @@ module XX
|
|
499
517
|
@@xx_config ||= Hash::new{|h,k| h[k] = {}}
|
500
518
|
#--}}}
|
501
519
|
end
|
502
|
-
def xx_config_for key, xx_which = nil
|
520
|
+
def xx_config_for key, xx_which = nil
|
503
521
|
#--{{{
|
504
|
-
key = key.to_s
|
522
|
+
key = key.to_s
|
505
523
|
xx_which ||= self
|
506
524
|
xx_ancestors(xx_which).each do |a|
|
507
525
|
if xx_config[a].has_key? key
|
@@ -511,7 +529,7 @@ module XX
|
|
511
529
|
nil
|
512
530
|
#--}}}
|
513
531
|
end
|
514
|
-
def xx_configure key, value, xx_which = nil
|
532
|
+
def xx_configure key, value, xx_which = nil
|
515
533
|
#--{{{
|
516
534
|
key = key.to_s
|
517
535
|
xx_which ||= self
|
@@ -554,10 +572,10 @@ module XX
|
|
554
572
|
def xhtml_ which = XHTML, *a, &b
|
555
573
|
#--{{{
|
556
574
|
xx_which(which) do
|
557
|
-
doc = xx_with_doc_in_effect
|
575
|
+
doc = xx_with_doc_in_effect(*a, &b)
|
558
576
|
ddoc = doc.doc
|
559
577
|
root = ddoc.root
|
560
|
-
if root and root.name and root.name =~ %r/^html$/i
|
578
|
+
if root and root.name and root.name =~ %r/^html$/i
|
561
579
|
if root.attribute("lang",nil).nil? or root.attribute("lang",nil).to_s.empty?
|
562
580
|
root.add_attribute "lang", "en"
|
563
581
|
end
|
@@ -572,7 +590,6 @@ module XX
|
|
572
590
|
end
|
573
591
|
#--}}}
|
574
592
|
end
|
575
|
-
alias_method "xhtml__", "xhtml_"
|
576
593
|
|
577
594
|
module Strict
|
578
595
|
#--{{{
|
@@ -594,7 +611,6 @@ module XX
|
|
594
611
|
super(which, *a, &b)
|
595
612
|
#--}}}
|
596
613
|
end
|
597
|
-
alias_method "xhtml__", "xhtml_"
|
598
614
|
#--}}}
|
599
615
|
end
|
600
616
|
|
@@ -607,7 +623,6 @@ module XX
|
|
607
623
|
super(which, *a, &b)
|
608
624
|
#--}}}
|
609
625
|
end
|
610
|
-
alias_method "xhtml__", "xhtml_"
|
611
626
|
#--}}}
|
612
627
|
end
|
613
628
|
#--}}}
|
@@ -617,13 +632,12 @@ module XX
|
|
617
632
|
#--{{{
|
618
633
|
include Markup
|
619
634
|
xx_configure "doctype", %(html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN")
|
620
|
-
|
635
|
+
|
621
636
|
def html4_ which = HTML4, *a, &b
|
622
637
|
#--{{{
|
623
|
-
xx_which(which){ xx_with_doc_in_effect
|
638
|
+
xx_which(which){ xx_with_doc_in_effect(*a, &b) }
|
624
639
|
#--}}}
|
625
640
|
end
|
626
|
-
alias_method "html4__", "html4_"
|
627
641
|
|
628
642
|
module Strict
|
629
643
|
#--{{{
|
@@ -644,7 +658,6 @@ module XX
|
|
644
658
|
super(which, *a, &b)
|
645
659
|
#--}}}
|
646
660
|
end
|
647
|
-
alias_method "html4__", "html4_"
|
648
661
|
#--}}}
|
649
662
|
end
|
650
663
|
|
@@ -657,7 +670,6 @@ module XX
|
|
657
670
|
super(which, *a, &b)
|
658
671
|
#--}}}
|
659
672
|
end
|
660
|
-
alias_method "html4__", "html4_"
|
661
673
|
#--}}}
|
662
674
|
end
|
663
675
|
#--}}}
|
@@ -671,218 +683,11 @@ module XX
|
|
671
683
|
|
672
684
|
def xml_ *a, &b
|
673
685
|
#--{{{
|
674
|
-
xx_which(XML){ xx_with_doc_in_effect
|
686
|
+
xx_which(XML){ xx_with_doc_in_effect(*a, &b)}
|
675
687
|
#--}}}
|
676
688
|
end
|
677
|
-
alias_method "xml__", "xml_"
|
678
689
|
#--}}}
|
679
690
|
end
|
680
|
-
|
681
|
-
module Template
|
682
|
-
#--{{{
|
683
|
-
class Basic
|
684
|
-
#--{{{
|
685
|
-
%w( path inline type object template port pretty ).each{|a| attr_accessor a}
|
686
|
-
def initialize opts = {}, &b
|
687
|
-
#--{{{
|
688
|
-
@path = opts['path'] || opts[:path]
|
689
|
-
@inline = opts['inline'] || opts[:inline]
|
690
|
-
@type = opts['type'] || opts[:type]
|
691
|
-
@object = opts['object'] || opts[:object]
|
692
|
-
@pretty = opts['pretty'] || opts[:pretty]
|
693
|
-
@port = opts['port'] || opts[:port] || STDOUT
|
694
|
-
|
695
|
-
bool = lambda{|value| value ? true : false}
|
696
|
-
raise ArgumentError unless(bool[@path] ^ bool[@inline])
|
697
|
-
|
698
|
-
path_init(&b) if @path
|
699
|
-
inline_init(&b) if @inline
|
700
|
-
|
701
|
-
@type =
|
702
|
-
case @type.to_s.downcase.strip
|
703
|
-
when /^xhtml$/
|
704
|
-
XHTML
|
705
|
-
when /^xml$/
|
706
|
-
XML
|
707
|
-
when /^html4$/
|
708
|
-
HTML4
|
709
|
-
else
|
710
|
-
XHTML
|
711
|
-
end
|
712
|
-
#--}}}
|
713
|
-
end
|
714
|
-
def path_init &b
|
715
|
-
#--{{{
|
716
|
-
@template = IO.read @path
|
717
|
-
@type = @path[%r/\.[^\.]+$/o] || XHTML unless @type
|
718
|
-
#--}}}
|
719
|
-
end
|
720
|
-
def inline_init &b
|
721
|
-
#--{{{
|
722
|
-
@template = (@inline || b.call).to_s
|
723
|
-
@type ||= XHTML
|
724
|
-
#--}}}
|
725
|
-
end
|
726
|
-
def expand binding, opts = {}
|
727
|
-
#--{{{
|
728
|
-
port = opts['port'] || opts[:port] || STDOUT
|
729
|
-
pretty = opts['pretty'] || opts[:pretty]
|
730
|
-
|
731
|
-
object = eval 'self', binding
|
732
|
-
|
733
|
-
unless type === object
|
734
|
-
__m = type
|
735
|
-
klass = object.class
|
736
|
-
klass.module_eval{ include __m }
|
737
|
-
end
|
738
|
-
|
739
|
-
doc = eval @template, binding
|
740
|
-
|
741
|
-
display = pretty ? 'pretty' : 'to_str'
|
742
|
-
|
743
|
-
doc.send display, port
|
744
|
-
#--}}}
|
745
|
-
end
|
746
|
-
alias_method "result", "expand"
|
747
|
-
#--}}}
|
748
|
-
end
|
749
|
-
|
750
|
-
class File < Basic
|
751
|
-
#--{{{
|
752
|
-
def initialize *argv, &b
|
753
|
-
#--{{{
|
754
|
-
opts, argv = argv.partition{|arg| Hash === arg}
|
755
|
-
opts = opts.inject{|a,b| a.update b}
|
756
|
-
path = argv.shift
|
757
|
-
raise ArgumentError, "no path" unless path
|
758
|
-
raise ArgumentError, "bad opts" unless Hash === opts or opts.nil?
|
759
|
-
opts ||= {}
|
760
|
-
opts['path'] = opts[:path] = path.to_s
|
761
|
-
super opts, &b
|
762
|
-
#--}}}
|
763
|
-
end
|
764
|
-
#--}}}
|
765
|
-
end
|
766
|
-
|
767
|
-
class Inline < Basic
|
768
|
-
#--{{{
|
769
|
-
def initialize *argv, &b
|
770
|
-
#--{{{
|
771
|
-
opts, argv = argv.partition{|arg| Hash === arg}
|
772
|
-
opts = opts.inject{|a,b| a.update b}
|
773
|
-
inline = argv.shift || b.call
|
774
|
-
raise ArgumentError, "no inline" unless inline
|
775
|
-
raise ArgumentError, "bad opts" unless Hash === opts or opts.nil?
|
776
|
-
opts ||= {}
|
777
|
-
opts['inline'] = opts[:inline] = inline.to_s
|
778
|
-
super opts, &b
|
779
|
-
#--}}}
|
780
|
-
end
|
781
|
-
#--}}}
|
782
|
-
end
|
783
|
-
#--}}}
|
784
|
-
end
|
785
|
-
|
786
|
-
module Expandable
|
787
|
-
#--{{{
|
788
|
-
module InstanceMethods
|
789
|
-
#--{{{
|
790
|
-
def xx_template_file *a, &b
|
791
|
-
#--{{{
|
792
|
-
template = XX::Template::File.new *a, &b
|
793
|
-
template.object ||= self
|
794
|
-
template
|
795
|
-
#--}}}
|
796
|
-
end
|
797
|
-
def xx_template_inline *a, &b
|
798
|
-
#--{{{
|
799
|
-
template = XX::Template::Inline.new *a, &b
|
800
|
-
template.object ||= self
|
801
|
-
template
|
802
|
-
#--}}}
|
803
|
-
end
|
804
|
-
def xx_expand template, opts = {}
|
805
|
-
#--{{{
|
806
|
-
port = opts['port'] || opts[:port] || STDOUT
|
807
|
-
pretty = opts['pretty'] || opts[:pretty]
|
808
|
-
binding = opts['binding'] || opts[:binding]
|
809
|
-
|
810
|
-
type = template.type
|
811
|
-
|
812
|
-
unless type === self
|
813
|
-
klass = self.class
|
814
|
-
klass.module_eval{ include type }
|
815
|
-
end
|
816
|
-
|
817
|
-
display = pretty ? 'pretty' : 'to_str'
|
818
|
-
|
819
|
-
Binding.of_caller do |scope|
|
820
|
-
binding ||= eval('binding', scope)
|
821
|
-
doc = eval template.template, binding
|
822
|
-
doc.send display, port
|
823
|
-
end
|
824
|
-
#--}}}
|
825
|
-
end
|
826
|
-
def xx_expand_file *a, &b
|
827
|
-
#--{{{
|
828
|
-
template = xx_template_file *a, &b
|
829
|
-
|
830
|
-
type = template.type
|
831
|
-
pretty = template.pretty
|
832
|
-
port = template.port
|
833
|
-
|
834
|
-
unless type === self
|
835
|
-
klass = self.class
|
836
|
-
klass.module_eval{ include type }
|
837
|
-
end
|
838
|
-
|
839
|
-
display = pretty ? 'pretty' : 'to_str'
|
840
|
-
|
841
|
-
Binding.of_caller do |scope|
|
842
|
-
binding ||= eval('binding', scope)
|
843
|
-
doc = eval template.template, binding
|
844
|
-
doc.send display, port
|
845
|
-
end
|
846
|
-
#--}}}
|
847
|
-
end
|
848
|
-
alias_method "xx_expand_path", "xx_expand_file"
|
849
|
-
alias_method "xx_expand_template", "xx_expand_file"
|
850
|
-
def xx_expand_inline *a, &b
|
851
|
-
#--{{{
|
852
|
-
template = xx_template_inline *a, &b
|
853
|
-
|
854
|
-
type = template.type
|
855
|
-
pretty = template.pretty
|
856
|
-
port = template.port
|
857
|
-
|
858
|
-
unless type === self
|
859
|
-
klass = self.class
|
860
|
-
klass.module_eval{ include type }
|
861
|
-
end
|
862
|
-
|
863
|
-
display = pretty ? 'pretty' : 'to_str'
|
864
|
-
|
865
|
-
Binding.of_caller do |scope|
|
866
|
-
binding ||= eval('binding', scope)
|
867
|
-
doc = eval template.template, binding
|
868
|
-
doc.send display, port
|
869
|
-
end
|
870
|
-
#--}}}
|
871
|
-
end
|
872
|
-
alias_method "xx_expand_string", "xx_expand_inline"
|
873
|
-
#--}}}
|
874
|
-
end
|
875
|
-
module ClassMethods
|
876
|
-
end
|
877
|
-
def self.included other
|
878
|
-
#--{{{
|
879
|
-
other.instance_eval{ include InstanceMethods }
|
880
|
-
other.extend ClassMethods
|
881
|
-
#--}}}
|
882
|
-
end
|
883
|
-
#--}}}
|
884
|
-
end
|
885
|
-
|
886
691
|
#--}}}
|
887
692
|
end
|
888
693
|
|
@@ -909,7 +714,7 @@ if __FILE__ == $0
|
|
909
714
|
include XX::HTML4::Strict
|
910
715
|
include XX::XML
|
911
716
|
|
912
|
-
def doc
|
717
|
+
def doc
|
913
718
|
html_{
|
914
719
|
head_{ title_{ "xhtml/html4/xml demo" } }
|
915
720
|
|
@@ -921,7 +726,7 @@ if __FILE__ == $0
|
|
921
726
|
|
922
727
|
x_{ "<any_valid> xml </any_valid>" }
|
923
728
|
|
924
|
-
div_(:style => :sweet){
|
729
|
+
div_(:style => :sweet){
|
925
730
|
em_ "this is a table"
|
926
731
|
|
927
732
|
table_(:width => 42, :height => 42){
|
@@ -944,7 +749,7 @@ if __FILE__ == $0
|
|
944
749
|
end
|
945
750
|
|
946
751
|
table = Table[ %w( 0 1 2 ), %w( a b c ) ]
|
947
|
-
|
752
|
+
|
948
753
|
methods = %w( to_xhtml to_html4 to_xml )
|
949
754
|
|
950
755
|
methods.each do |method|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spicycode-rcov
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.2
|
4
|
+
version: 0.8.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mauricio Fernandez
|
@@ -33,7 +33,6 @@ files:
|
|
33
33
|
- lib/rcov/version.rb
|
34
34
|
- lib/rcov/rant.rb
|
35
35
|
- lib/rcov/report.rb
|
36
|
-
- lib/rcov/binding_of_caller.rb
|
37
36
|
- lib/rcov/rcovtask.rb
|
38
37
|
- lib/rcov/rexml_extensions.rb
|
39
38
|
- ext/rcovrt/extconf.rb
|
@@ -1,83 +0,0 @@
|
|
1
|
-
unless(defined?(Continuation) and Continuation.respond_to?('create'))
|
2
|
-
# to satisfy rdoc
|
3
|
-
class Continuation #:nodoc:
|
4
|
-
end
|
5
|
-
def Continuation.create(*args, &block) # :nodoc:
|
6
|
-
cc = nil; result = callcc {|c| cc = c; block.call(cc) if block and args.empty?}
|
7
|
-
result ||= args
|
8
|
-
return *[cc, *result]
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class Binding; end # for RDoc
|
13
|
-
# This method returns the binding of the method that called your
|
14
|
-
# method. It will raise an Exception when you're not inside a method.
|
15
|
-
#
|
16
|
-
# It's used like this:
|
17
|
-
# def inc_counter(amount = 1)
|
18
|
-
# Binding.of_caller do |binding|
|
19
|
-
# # Create a lambda that will increase the variable 'counter'
|
20
|
-
# # in the caller of this method when called.
|
21
|
-
# inc = eval("lambda { |arg| counter += arg }", binding)
|
22
|
-
# # We can refer to amount from inside this block safely.
|
23
|
-
# inc.call(amount)
|
24
|
-
# end
|
25
|
-
# # No other statements can go here. Put them inside the block.
|
26
|
-
# end
|
27
|
-
# counter = 0
|
28
|
-
# 2.times { inc_counter }
|
29
|
-
# counter # => 2
|
30
|
-
#
|
31
|
-
# Binding.of_caller must be the last statement in the method.
|
32
|
-
# This means that you will have to put everything you want to
|
33
|
-
# do after the call to Binding.of_caller into the block of it.
|
34
|
-
# This should be no problem however, because Ruby has closures.
|
35
|
-
# If you don't do this an Exception will be raised. Because of
|
36
|
-
# the way that Binding.of_caller is implemented it has to be
|
37
|
-
# done this way.
|
38
|
-
def Binding.of_caller(&block)
|
39
|
-
old_critical = Thread.critical
|
40
|
-
Thread.critical = true
|
41
|
-
count = 0
|
42
|
-
cc, result, error, extra_data = Continuation.create(nil, nil)
|
43
|
-
error.call if error
|
44
|
-
|
45
|
-
tracer = lambda do |*args|
|
46
|
-
type, context, extra_data = args[0], args[4], args
|
47
|
-
if type == "return"
|
48
|
-
count += 1
|
49
|
-
# First this method and then calling one will return --
|
50
|
-
# the trace event of the second event gets the context
|
51
|
-
# of the method which called the method that called this
|
52
|
-
# method.
|
53
|
-
if count == 2
|
54
|
-
# It would be nice if we could restore the trace_func
|
55
|
-
# that was set before we swapped in our own one, but
|
56
|
-
# this is impossible without overloading set_trace_func
|
57
|
-
# in current Ruby.
|
58
|
-
set_trace_func(nil)
|
59
|
-
cc.call(eval("binding", context), nil, extra_data)
|
60
|
-
end
|
61
|
-
elsif type == "line" then
|
62
|
-
nil
|
63
|
-
elsif type == "c-return" and extra_data[3] == :set_trace_func then
|
64
|
-
nil
|
65
|
-
else
|
66
|
-
set_trace_func(nil)
|
67
|
-
error_msg = "Binding.of_caller used in non-method context or " +
|
68
|
-
"trailing statements of method using it aren't in the block."
|
69
|
-
cc.call(nil, lambda { raise(ArgumentError, error_msg) }, nil)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
unless result
|
74
|
-
set_trace_func(tracer)
|
75
|
-
return nil
|
76
|
-
else
|
77
|
-
Thread.critical = old_critical
|
78
|
-
case block.arity
|
79
|
-
when 1 then yield(result)
|
80
|
-
else yield(result, extra_data)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|