@@ -316,11 +316,23 @@ fname はスクリプトを定義する際のファイル名です。主にエ
316316
317317例:
318318
319- `````
320- require 'erb'
321- erb = ERB.new(script)
322- erb.def_method(MyClass, 'foo(bar)', 'foo.erb')
323- `````
319+ ``` rb title="例"
320+ require " erb"
321+
322+ class MyClass
323+ end
324+
325+ erb = ERB .new (<<~ERB )
326+ arg1: <%= arg1 %>
327+ arg2: <%= arg2 %>
328+ ERB
329+
330+ erb.def_method(MyClass , " m(arg1, arg2)" )
331+
332+ print MyClass .new .m(" foo" , 123 )
333+ # => arg1: foo
334+ # arg2: 123
335+ ```
324336
325337### def def_module(methodname='erb') -> Module
326338
@@ -329,17 +341,22 @@ erb.def_method(MyClass, 'foo(bar)', 'foo.erb')
329341- ** param** ` methodname ` -- メソッド名
330342
331343``` ruby title="例"
332- require ' erb'
333- filename = ' example.rhtml'
334- erb = ERB .new (" test1<%= arg1 %>\n test2<%= arg2 %>\n " )
335- erb.filename = filename
336- MyModule = erb.def_module(' render(arg1, arg2)' )
344+ require " erb"
345+
346+ erb = ERB .new (<<~ERB )
347+ arg1: <%= arg1 %>
348+ arg2: <%= arg2 %>
349+ ERB
350+
351+ MyModule = erb.def_module(" render(arg1, arg2)" )
352+
337353class MyClass
338354 include MyModule
339355end
340- print MyClass .new .render(' foo' , 123 )
341- # test1foo
342- # test2123
356+
357+ print MyClass .new .render(" foo" , 123 )
358+ # => arg1: foo
359+ # arg2: 123
343360```
344361
345362### def def_class(superklass=Object, methodname='erb') -> Class
@@ -353,22 +370,25 @@ print MyClass.new.render('foo', 123)
353370- ** param** ` methodname ` -- メソッド名
354371
355372``` ruby title="例"
356- require ' erb'
373+ require " erb"
357374
358- class MyClass_
375+ class MyBaseClass
359376 def initialize (arg1 , arg2 )
360- @arg1 = arg1; @arg2 = arg2
377+ @arg1 = arg1
378+ @arg2 = arg2
361379 end
362380end
363- filename = ' example.rhtml' # @arg1 と @arg2 が使われている example.rhtml
364381
365- erb = ERB .new (File .read(filename))
366- erb.filename = filename
367- MyClass = erb.def_class(MyClass_ , ' render()' )
368- print MyClass .new (' foo' , 123 ).render()
382+ erb = ERB .new (<<~ERB )
383+ arg1: <%= @arg1 %>
384+ arg2: <%= @arg2 %>
385+ ERB
386+
387+ MySubClass = erb.def_class(MyBaseClass , :render )
369388
370- # => test1foo
371- # test2123
389+ print MySubClass .new (" foo" , 123 ).render()
390+ # => arg1: foo
391+ # arg2: 123
372392```
373393
374394### def set_eoutvar(compiler, eoutvar = '_ erbout') -> Array
0 commit comments