IRBを読む
Ruby 3.4からデフォルトで使おうとする
$0
これを設定しておくことでpsの出力がirbになる
IRB.setup
IRB.init_config
:PROMPT_I => "%N(\e[34m%m\e[0m):%03n> ",
:PROMPT_S => "%N(\e[34m%m\e[0m):%03n%l ",
:PROMPT_C => "%N(\e[34m%m\e[0m):%03n* ",
:RETURN => "%s\n"
}
こういう感じで追加もできる
そろそろ消せるかも
IRB.run_config
IRB.prepare_irbrc_name_generators
IRB.rc_file_generators
rc系のファイルを読み込み
末尾を考慮
IRB.validate_config
IRB.load_modules
松田さん談
IRB は大元は keiju さんが作っていたプロダクト
for を使ったり独特の keiju スタイルのコーディングスタイル
その後糸柳さんが引き継いだ
糸柳さんは original のコーディングスタイルを崩さないというポリシー
IRB::Context
IRB::Context#initialize
IRB::Context#build_completor
IRB::RegexpCompletor#completion_candidates
IRB::WorkSpace#load_helper_methods_to_main
IRB::HelperMethod::Conf
できるなら消したい
IRB::RubyLex
最古の Lexer
Ruby 本体と同期を取る必要がある
最初期のruby-lex
Prism で置き換えようという Issue も出ている
- でファイル名を区切るのも keiju スタイル
Module#attr
IRB::Irb#run
RubyVM.keep_script_lines
るりまにはないのでコントリビュートチャンス
IRB::Irb#eval_input
IRB::Context#parse_command
irb の中で cd = xxx とかやると cd コマンドが使えなくなる
irb_cd というコマンドが用意されている
IRB::WorkSpace#evaluate
Object::TOPLEVEL_BINDING
IRB::TOPLEVEL_BINDING
多分最初にはいったのがこれ
send で easter_egg を呼べちゃう
が、意図しないもの
irb を起動して RubyVM で tab を入力することでも出せる