~/rubytesting/TheRubyProgrammingLanguage/chapter8ReflectionandMetaprogramming$ cat -n ruport_example.rb
1 require 'ruport'
2
3 table = Ruport::Data::Table.new(
4 :column_names => [ "alu", "nota"],
5 :data => [
6 ["Almeida Gonzalez", 4.5],
7 ["Hernandez Perez", 6.5],
8 ["Mendez Chavez", 4.5],
9 ["Rodriguez Luis", 9.5]
10 ]
11 )
12
13 puts table.to_text
14
15 dubious = table.rows_with_nota(4.5)
16 dubious.each do |cal|
17 puts cal.to_csv
18 end
~$ sudo gem install ruport Password: Fetching: fastercsv-1.5.4.gem (100%) Fetching: color-1.4.1.gem (100%) Fetching: hoe-2.12.3.gem (100%) Fetching: transaction-simple-1.4.0.gem (100%) WARNING: transaction-simple-1.4.0 has an invalid nil value for @cert_chain Fetching: pdf-writer-1.1.8.gem (100%) WARNING: pdf-writer-1.1.8 has an invalid nil value for @cert_chain Fetching: ruport-1.6.3.gem (100%) Successfully installed fastercsv-1.5.4 Successfully installed color-1.4.1 Successfully installed hoe-2.12.3 Successfully installed transaction-simple-1.4.0 Successfully installed pdf-writer-1.1.8 Successfully installed ruport-1.6.3 6 gems installed Installing ri documentation for fastercsv-1.5.4... Installing ri documentation for color-1.4.1... Installing ri documentation for hoe-2.12.3... Installing ri documentation for transaction-simple-1.4.0... Installing ri documentation for pdf-writer-1.1.8... Installing ri documentation for ruport-1.6.3... Installing RDoc documentation for fastercsv-1.5.4... Installing RDoc documentation for color-1.4.1... Installing RDoc documentation for hoe-2.12.3... Installing RDoc documentation for transaction-simple-1.4.0... Installing RDoc documentation for pdf-writer-1.1.8... Installing RDoc documentation for ruport-1.6.3...Instale también
ruport-util
sudo gem install ruport-util $ sudo gem install scruffy $ sudo gem install gruff
~/rubytesting/TheRubyProgrammingLanguage/chapter8ReflectionandMetaprogramming$ gem query --local | grep rupo ruport (1.6.3)
$ export RUBYOPT=rubygems ~/rubytesting/TheRubyProgrammingLanguage/chapter8ReflectionandMetaprogramming$ ruby ruport_example.rb +-------------------------+ | alu | nota | +-------------------------+ | Almeida Gonzalez | 4.5 | | Hernandez Perez | 6.5 | | Mendez Chavez | 4.5 | | Rodriguez Luis | 9.5 | +-------------------------+ Almeida Gonzalez,4.5 Mendez Chavez,4.5
~$ gem which ruport /Library/Ruby/Gems/1.8/gems/ruport-1.6.3/lib/ruport.rb
vi /Library/Ruby/Gems/1.8/gems/ruport-1.6.3/lib/ruport/data/table.rb
868 def method_missing(id,*args,&block) 869 return as($1.to_sym,*args,&block) if id.to_s =~ /^to_(.*)/ 870 return rows_with($1.to_sym => args[0]) if id.to_s =~ /^rows_with_(.*)/ 871 super 872 end
Vemos que la llamada dubious = table.rows_with_nota(4.5)
se convierte en la línea 870 en una llamada a
rows_with(nota.to_sym => args[0])