Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

Ruby 2.0.0p195のソースコード内でタブインデントを使っているソースを抽出してみた

概要

Ruby 2.0.0p195のソースコード内でタブインデントを使っているソースを抽出してみた

詳細

Ruby 2.0.0p195のソースコード内でタブインデントを使っているソースを抽出してみた。
Windows環境で試行

抽出は、Ruby2.0のインストールフォルダ配下を以下のコマンドで調査。

find . -name *.rb | xargs grep $'^\t' | cut -d':' -f1 | sort | uniq

抽出結果

./lib/ruby/2.0.0/cmath.rb
./lib/ruby/2.0.0/date.rb
./lib/ruby/2.0.0/dl/callback.rb
./lib/ruby/2.0.0/dl/import.rb
./lib/ruby/2.0.0/drb/ssl.rb
./lib/ruby/2.0.0/i386-mingw32/rbconfig.rb
./lib/ruby/2.0.0/irb/cmd/chws.rb
./lib/ruby/2.0.0/irb/cmd/fork.rb
./lib/ruby/2.0.0/irb/cmd/load.rb
./lib/ruby/2.0.0/irb/cmd/nop.rb
./lib/ruby/2.0.0/irb/cmd/pushws.rb
./lib/ruby/2.0.0/irb/cmd/subirb.rb
./lib/ruby/2.0.0/irb/completion.rb
./lib/ruby/2.0.0/irb/context.rb
./lib/ruby/2.0.0/irb/ext/change-ws.rb
./lib/ruby/2.0.0/irb/ext/history.rb
./lib/ruby/2.0.0/irb/ext/loader.rb
./lib/ruby/2.0.0/irb/ext/math-mode.rb
./lib/ruby/2.0.0/irb/ext/multi-irb.rb
./lib/ruby/2.0.0/irb/ext/save-history.rb
./lib/ruby/2.0.0/irb/ext/tracer.rb
./lib/ruby/2.0.0/irb/ext/use-loader.rb
./lib/ruby/2.0.0/irb/ext/workspaces.rb
./lib/ruby/2.0.0/irb/extend-command.rb
./lib/ruby/2.0.0/irb/frame.rb
./lib/ruby/2.0.0/irb/help.rb
./lib/ruby/2.0.0/irb/init.rb
./lib/ruby/2.0.0/irb/input-method.rb
./lib/ruby/2.0.0/irb/locale.rb
./lib/ruby/2.0.0/irb/notifier.rb
./lib/ruby/2.0.0/irb/output-method.rb
./lib/ruby/2.0.0/irb/ruby-lex.rb
./lib/ruby/2.0.0/irb/ruby-token.rb
./lib/ruby/2.0.0/irb/slex.rb
./lib/ruby/2.0.0/irb/workspace.rb
./lib/ruby/2.0.0/irb/xmp.rb
./lib/ruby/2.0.0/multi-tk.rb
./lib/ruby/2.0.0/win32/sspi.rb

割りといっぱいある。
irbのコミッターの方はタブ好きなのだろうか?

Ruby2.0.0p195のdate.rb

参考に1ファイル覗いてみましょう。
結構大胆にスペース2インデント中にタブが紛れ込んでますね。
ぱっと見では分かりにくいのでタブを白抜きの□(トーフ)に置換しておきました。
※「 # <= ここタブあり」というコメントは私が追記したもの

    # :
    # 略
    # :

class Date

  class Infinity < Numeric # :nodoc:

    # :
    # 中略
    # :

      else
□begin # <= ここタブあり
□  l, r = other.coerce(self) # <= ここタブありreturn l <=> r # <= ここタブありrescue NoMethodError # <= ここタブありend # <= ここタブあり
      end
      nil
    end

    def coerce(other)
      case other
      when Numeric; return -d, d
      elsesuper # <= ここタブあり
      end
    end

    def to_f
      return 0 if @d == 0
      if @d > 0Float::INFINITY # <= ここタブあり
      else
□-Float::INFINITY # <= ここタブあり
      end
    end

  end

end