1 group Sample 2 3 class_definition ::= 4 <<< 5 class <%= @name %><% if @superclass %> < <%= @superclass %><% end %> 6 % if @attributes 7 8 % for attr in @attributes 9 <%= attribute( *attr ).to_s.chomp %> 10 % end 11 % end 12 % if @methods 13 % for method in ( @methods || [] ) 14 <%= method( method ) %> 15 % end 16 % end 17 end 18 >>> 19 20 attribute( name, access = 'rw' ) ::= 21 <<< 22 % case @access.to_s.downcase 23 % when 'r' 24 attr_reader :<%= @name %> 25 % when 'w' 26 attr_writer :<%= @name %> 27 % else 28 attr_accessor :<%= @name %> 29 % end 30 >>> 31 32 method ::= 33 <<< 34 35 def <%= @name %><% if @arguments and not @arguments.empty? %>( <%= @arguments.join( ', ' ) %> )<% end %> 36 <%= @body.gsub( /^/, ' ' ) %> 37 end 38 >>> 39