猫の魔法

主にruby系の技術メモを記載

Ruby

gsubの謎

Codewarsでよく分からない回答があったので、自分なりに調べてみた。 問題はカード番号のマスキングのように下4桁以外の文字なり数字を#でマスキングするという物で、 自分は以下のような回答で提出した(色々褒められた物ではないが。。。) def maskify(cc)…

再考:classとそれが読み込んでいるmoduleの一覧を表示する方法

※この記事の最後のプログラムはバグがあります。正しい物は下記の物を参照して下さい。 再々考:classとそれが読み込んでいるmoduleの一覧を表示する方法(bugfix) - 猫の魔法 今日、Module#ancestorsという インスタンスメソッドを目にしたのだが、このメソ…

is_a?についてのメモ

Highlineのソースを読んでいたら以下の部分でちょっと考えてしまった。 if template_or_question.is_a? Question template_or_question else Question.new(template_or_question, answer_type, &details) end 悩んだのはtemplate_or_question.is_a? Question…

JSON.parseのquirks_modeと2.4.0での変更

どんだけJSONネタで引っ張るのかという話もあるが、色々と調べて見て分かった事があったのでブログに記録しておく。 JSON.parseでは:quirks_modeというオプションがある。 通常JSONを解析する場合、そのトップレベルはオブジェクト若しくは配列になっている…

JSON.loadはオプションが取れる

先日の記事の中でJSON.loadのgithubの実装を紹介した。 Rubyの公式ドキュメント(以下るりま)JSON.loadの説明とgithubのコードを眺めていてあれ?るりまの説明と実装が違う。。。と言う事に気がついた。 るりま側のloadの定義は以下の通り load(source, proc …

JSON.parseとJSON.loadの違い

JSON.parseとJSON.loadの差が何なのか分からなかったので調べてみた。 ※下記の参考のStackOverflowの内容がその答えだが、裏を取りたかった。 require 'json' File.open("hoge.json") do |f| JSON.parse(f.read) == File.open("hoge.json"){ |f| JSON.load(f…

classとそれが読み込んでいるmoduleの一覧を表示する方法

クラスの継承関係と各クラスで読み込んでいるモジュールの一覧を表示したかったので作ってみた。 def display_class_modules(class_name) print "class:#{class_name},modules:#{class_name.included_modules}","\n" if class_name.respond_to?(:included_mo…