From: Kouhei Sutou Date: 2008-04-23T23:55:01+09:00 Subject: [ruby-dev:34500] Re: ERB::Util#url_encode bug fix 須藤です。 In <20080423.233606.129692199.rubikitch@ruby-lang.org> "[ruby-dev:34499] Re: ERB::Util#url_encode bug fix" on Wed, 23 Apr 2008 23:36:10 +0900, rubikitch@ruby-lang.org wrote: > 不思議な(?)インデントなのはEmacsで > (setq ruby-deep-indent-paren-style nil) > と設定しているためです。 > (setq ruby-deep-indent-paren-style t) > で上のようなインデントになります。nilに設定しているのは > > Foo::Bar::Baz::Hoge::hoge( :x => 1, > :y => 2) > > みたいにインデントが深くなってしまうからです。 > > 参考:http://d.hatena.ne.jp/gan2/20070621/1182441886 リンク先にあるようにこれ Foo::Bar::Baz::Hoge::hoge( :x => 1, :y => 2) をこう Foo::Bar::Baz::Hoge::hoge( :x => 1, :y => 2 ) したいならまだわかるのですが(私は嫌ですが)、こう Foo::Bar::Baz::Hoge::hoge(:x => 1, :y => 2) するのはまるで理解できないのですが。。。 # なので、これも気持ち悪い。 # - s.to_s.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) } # + s.to_s.dup.force_encoding("ASCII-8BIT").gsub(/[^a-zA-Z0-9_\-.]/n){ # + sprintf("%%%02X", $&.unpack("C")[0]) } 私の持論では、インデントが深くなるのはそこでやろうとしている ことが多すぎる警告なので、インデントを減らしてごまかさないで そこを直した方がよいと思っています。例えば、この例では私はこ んな風にすると思います。 def do_hoge(options) Foo::Bar::Baz::Hoge::hoge(options) end do_hoge(:x => 1, :y => 2) # 本当はdo_hoge(:x => 1, :y => 2)にしますが。