@@ -296,12 +296,11 @@ def generate_index
296
296
@title = @options . title
297
297
@main_page = @files . find { |f | f . full_name == @options . main_page }
298
298
299
- render_template template_file , out_file do |io |
300
- here = binding
301
- here . local_variable_set ( :asset_rel_prefix , asset_rel_prefix )
302
- here . local_variable_set ( :target , @main_page )
303
- here
304
- end
299
+ render_template template_file , out_file : out_file , locals : {
300
+ rel_prefix : rel_prefix ,
301
+ asset_rel_prefix : asset_rel_prefix ,
302
+ target : @main_page ,
303
+ }
305
304
rescue => e
306
305
error = RDoc ::Error . new \
307
306
"error generating index.html: #{ e . message } (#{ e . class } )"
@@ -340,18 +339,19 @@ def generate_class klass, template_file = nil
340
339
klass_sections = klass . sort_sections
341
340
342
341
debug_msg " rendering #{ out_file } "
343
- render_template template_file , out_file do |io |
344
- here = binding
345
- here . local_variable_set ( :asset_rel_prefix , asset_rel_prefix )
346
- here . local_variable_set ( :svninfo , svninfo )
347
- here . local_variable_set ( :breadcrumb , breadcrumb )
348
- here . local_variable_set ( :klass_class_methods , klass_class_methods )
349
- here . local_variable_set ( :klass_instance_methods , klass_instance_methods )
350
- here . local_variable_set ( :klass_extends , klass_extends )
351
- here . local_variable_set ( :klass_includes , klass_includes )
352
- here . local_variable_set ( :klass_sections , klass_sections )
353
- here
354
- end
342
+ render_template template_file , out_file : out_file , locals : {
343
+ asset_rel_prefix : asset_rel_prefix ,
344
+ rel_prefix : rel_prefix ,
345
+ target : target ,
346
+ svninfo : svninfo ,
347
+ klass : klass ,
348
+ breadcrumb : breadcrumb ,
349
+ klass_class_methods : klass_class_methods ,
350
+ klass_instance_methods : klass_instance_methods ,
351
+ klass_extends : klass_extends ,
352
+ klass_includes : klass_includes ,
353
+ klass_sections : klass_sections ,
354
+ }
355
355
end
356
356
357
357
##
@@ -434,12 +434,12 @@ def generate_file_files
434
434
@title += " - #{ @options . title } "
435
435
template_file ||= filepage_file
436
436
437
- render_template template_file , out_file do | io |
438
- here = binding
439
- here . local_variable_set ( : asset_rel_prefix, asset_rel_prefix )
440
- here . local_variable_set ( :target , target )
441
- here
442
- end
437
+ render_template template_file , out_file : out_file , locals : {
438
+ rel_prefix : rel_prefix ,
439
+ asset_rel_prefix : asset_rel_prefix ,
440
+ file : file ,
441
+ target : target ,
442
+ }
443
443
end
444
444
rescue => e
445
445
error =
@@ -469,12 +469,12 @@ def generate_page file
469
469
@title = "#{ file . page_name } - #{ @options . title } "
470
470
471
471
debug_msg " rendering #{ out_file } "
472
- render_template template_file , out_file do | io |
473
- here = binding
474
- here . local_variable_set ( : target, target )
475
- here . local_variable_set ( : asset_rel_prefix, asset_rel_prefix )
476
- here
477
- end
472
+ render_template template_file , out_file : out_file , locals : {
473
+ file : file ,
474
+ target : target ,
475
+ asset_rel_prefix : asset_rel_prefix ,
476
+ rel_prefix : rel_prefix ,
477
+ }
478
478
end
479
479
480
480
##
@@ -496,11 +496,11 @@ def generate_servlet_not_found message
496
496
497
497
@title = 'Not Found'
498
498
499
- render_template template_file do | io |
500
- here = binding
501
- here . local_variable_set ( :asset_rel_prefix , asset_rel_prefix )
502
- here
503
- end
499
+ render_template template_file , locals : {
500
+ asset_rel_prefix : asset_rel_prefix ,
501
+ rel_prefix : rel_prefix ,
502
+ message : message
503
+ }
504
504
rescue => e
505
505
error = RDoc ::Error . new \
506
506
"error generating servlet_not_found: #{ e . message } (#{ e . class } )"
@@ -527,7 +527,11 @@ def generate_servlet_root installed
527
527
528
528
@title = 'Local RDoc Documentation'
529
529
530
- render_template template_file do |io | binding end
530
+ render_template template_file , locals : {
531
+ asset_rel_prefix : asset_rel_prefix ,
532
+ rel_prefix : rel_prefix ,
533
+ installed : installed
534
+ }
531
535
rescue => e
532
536
error = RDoc ::Error . new \
533
537
"error generating servlet_root: #{ e . message } (#{ e . class } )"
@@ -556,11 +560,10 @@ def generate_table_of_contents
556
560
557
561
@title = "Table of Contents - #{ @options . title } "
558
562
559
- render_template template_file , out_file do |io |
560
- here = binding
561
- here . local_variable_set ( :asset_rel_prefix , asset_rel_prefix )
562
- here
563
- end
563
+ render_template template_file , out_file : out_file , locals : {
564
+ rel_prefix : rel_prefix ,
565
+ asset_rel_prefix : asset_rel_prefix ,
566
+ }
564
567
rescue => e
565
568
error = RDoc ::Error . new \
566
569
"error generating table_of_contents.html: #{ e . message } (#{ e . class } )"
@@ -698,26 +701,28 @@ def render file_name
698
701
#
699
702
# An io will be yielded which must be captured by binding in the caller.
700
703
701
- def render_template template_file , out_file = nil # :yield: io
704
+ def render_template template_file , out_file : nil , locals : { }
702
705
io_output = out_file && !@dry_run && @file_output
703
706
erb_klass = io_output ? RDoc ::ERBIO : ERB
704
707
705
708
template = template_for template_file , true , erb_klass
706
709
710
+ @context = binding
711
+ locals . each do |key , value |
712
+ @context . local_variable_set ( key , value )
713
+ end
714
+
707
715
if io_output then
708
716
debug_msg "Outputting to %s" % [ out_file . expand_path ]
709
717
710
718
out_file . dirname . mkpath
711
719
out_file . open 'w' , 0644 do |io |
712
720
io . set_encoding @options . encoding
713
-
714
- @context = yield io
721
+ @context . local_variable_set ( :io , io )
715
722
716
723
template_result template , @context , template_file
717
724
end
718
725
else
719
- @context = yield nil
720
-
721
726
output = template_result template , @context , template_file
722
727
723
728
debug_msg " would have written %d characters to %s" % [
0 commit comments