Qualcuno di voi ha idea su come trasformare un block in una stringa
contente il suo codice?
mi serve per poter iniettare nuovo codice nel blocco per una DSL. mi
servono i binding del blocco, quindi non posso semplicemente
aggiungere una chiamata in coda alla chiamata al blocco.
–
Chiaroscuro
Liquid Development: http://liquiddevelopment.blogspot.com/
non sono un guru di DSL e non so rispondere alla tua domanda, ma prova a
dare un okkio qui
http://www.whytheluckystiff.net/articles/seeingMetaclassesClearly.html
forse trovi quello che cerchi (anche se non metti esattamente un blocco
in
una stringa)
ah… se trovi risposta ai tuoi dubbi faccelo sapere che sono curioso
On 4/27/06, chiaro scuro [email protected] wrote:
Liquid Development: http://liquiddevelopment.blogspot.com/
Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml
–
Paolo Donà
email me: paolo[dot]dona[at]gmail[dot]com
skype me: paolo[dot]dona
giovedi 27 aprile 2006, alle 11:10, il navigatore chiaro scuro scrisse:
Qualcuno di voi ha idea su come trasformare un block in una stringa
contente il suo codice?
http://www.zenspider.com/ZSS/Products/ParseTree/
dovrebbe fare al caso tuo
mi serve per poter iniettare nuovo codice nel blocco per una DSL.
mi servono i binding del blocco, quindi non posso semplicemente
aggiungere una chiamata in coda alla chiamata al blocco.
cosa intendi con i binding del blocco?
Qualcuno di voi ha idea su come trasformare un block in una stringa
contente il suo codice?
mi serve per poter iniettare nuovo codice nel blocco per una DSL. mi
servono i binding del blocco, quindi non posso semplicemente
aggiungere una chiamata in coda alla chiamata al blocco.
Se oltre al binding non ci sono altre considerazioni che ti fanno
scartare questa possibilità , puoi provare con qualcosa del genere:
bard@yokai:/tmp$ cat test.rb
def make_block
a = 5
proc {
puts "a => #{a}"
external_code_callback(binding)
puts "a => #{a}"
}
end
def external_code_callback(foreign_binding)
code_to_inject = "a = 6"
eval(code_to_inject, foreign_binding)
end
block = make_block
block.call
bard@yokai:/tmp$ ruby test.rb
a => 5
a => 6
–
blog: http://blog.hyperstruct.net
code: http://dev.hyperstruct.net, http://repo.hyperstruct.net
On 4/27/06, Gabriele L. [email protected] wrote:
giovedi 27 aprile 2006, alle 11:10, il navigatore chiaro scuro scrisse:
Qualcuno di voi ha idea su come trasformare un block in una stringa
contente il suo codice?
zenspider projects | software projects | by ryan davis
dovrebbe fare al caso tuo
adesso guardo, grazie.
cosa intendi con i binding del blocco?
voglio poter estrarre i nomi e i valori di variabili locali dichiarate
entro il blocco da fuori del blocco.
per fare questo devo interrogare il contesto del blocco, che ottengo
con il metodo ‘binding’
non voglio però (entro il blocco) dover ritornare esplicitamente i binding.