On Wed, 21 Jan 2015 21:57:37 +0900
whiteleaf <2nd.leaf / gmail.com> wrote:
> やられたいこととは違うかもしれませんが。
> 
> module M
>   refine String do
>     def to_html
>       "call #to_html"
>     end
>   end
> end
> 
> def with_to_html
>   yield
> end
> 
> using M
> 
> with_to_html do
>   p "hoge".to_html
> end
> # => call #to_html
> 
> require_relative "tt"  # 他の場所でも with_to_html を使おうとすると undefined method
> `#to_html`
> 
> refine 使えば using を使ったところでのみ String の拡張を制限出来ますね。

はい。
# 少々説明不足でした。
元々、Ruby の (新しく入った) refinement などの影響を受けている
こちらの言語(処理系)
http://takuto-h.hateblo.jp/entry/2014/11/16/204842
の発表を聞いて、似たような感じのことをメタプログラミングの手法で
簡単にできないか、というのが動機の実験でした。