# Da blocco a codice

**URL:** <https://www.ruby-forum.com/t/da-blocco-a-codice/94268>\
**Category:** IT\
**Created:** [April 27, 2006, 11:12am UTC](https://www.ruby-forum.com/t/da-blocco-a-codice/94268 "2006-04-27T11:12:01Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [April 27, 2006, 11:12am UTC](https://www.ruby-forum.com/t/da-blocco-a-codice/94268/1 "2006-04-27T11:12:01Z")

</div>

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/](http://liquiddevelopment.blogspot.com/)

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [April 27, 2006, 12:48pm UTC](https://www.ruby-forum.com/t/da-blocco-a-codice/94268/2 "2006-04-27T12:48:49Z")

</div>

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](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 [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Liquid Development: [http://liquiddevelopment.blogspot.com/](http://liquiddevelopment.blogspot.com/)
> 
> * * *
> 
> Ml mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Paolo Donà  
email me: paolo[dot]dona[at]gmail[dot]com  
skype me: paolo[dot]dona

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [April 27, 2006, 1:07pm UTC](https://www.ruby-forum.com/t/da-blocco-a-codice/94268/3 "2006-04-27T13:07:19Z")

</div>

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/](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?

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [April 27, 2006, 1:28pm UTC](https://www.ruby-forum.com/t/da-blocco-a-codice/94268/4 "2006-04-27T13:28:41Z")

</div>

> 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](http://blog.hyperstruct.net)  
code: [http://dev.hyperstruct.net](http://dev.hyperstruct.net), [http://repo.hyperstruct.net](http://repo.hyperstruct.net)

---

<div class="post-metadata">

**Author:** ![chiaroscuro](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@chiaroscuro](https://www.ruby-forum.com/u/chiaroscuro)\
**Post date:** [April 27, 2006, 2:03pm UTC](https://www.ruby-forum.com/t/da-blocco-a-codice/94268/5 "2006-04-27T14:03:09Z")

</div>

On 4/27/06, Gabriele L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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](http://www.zenspider.com/ZSS/Products/ParseTree/)  
> 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.
