概要
Ruby の特殊変数( $0, $& など )を English ライブラリで可読性の高い変数名で扱う
English ライブラリ とは?
Ruby の特殊変数 $0, $& などに対して、 $PROGRAM_NAME , $MATCH などの変数名を
追加し、可読性を高めるためのライブラリです。
English で定義される変数の一覧
| Name | Origin |
|---|---|
| $ARGV | $* |
| $CHILD_STATUS | $? |
| $DEFAULT_INPUT | $< |
| $DEFAULT_OUTPUT | $> |
| $ERROR_INFO | $! |
| $ERROR_POSITION | $@ |
| $FIELD_SEPARATOR | $; |
| $IGNORECASE | $= |
| $INPUT_LINE_NUMBER | $. |
| $INPUT_RECORD_SEPARATOR | $/ |
| $LAST_MATCH_INFO | $~ |
| $LAST_PAREN_MATCH | $+ |
| $LAST_READ_LINE | $_ |
| $MATCH | $& |
| $OFS | $, |
| $ORS | $| |
| $PID | $$ |
| $POSTMATCH | $' |
| $PREMATCH | $` |
| $PROGRAM_NAME | $0 |
おまけのスクレイピングスクリプト
変数名の表を手動で作成するのが嫌だったので、るりまのページをスクレイピングして
Markdown のテーブルを生成しました。
プログラム
require 'open-uri'
require 'nokogiri'
uri = 'http://docs.ruby-lang.org/ja/2.2.0/library/English.html'
page = URI.parse(uri).read
document = Nokogiri::HTML(page, uri)
english_variables = document.xpath('//a').map(&:text).select { |e|e.match /\$[A-Z_]+/ }
english_variables.each do |english_variable|
without_dollar = english_variable.delete('$')
origin_uri = "http://docs.ruby-lang.org/ja/2.2.0/method/Kernel/v/#{without_dollar}.html"
origin_page = URI.parse(origin_uri).read
origin_document = Nokogiri::HTML(origin_page, origin_uri)
origin_variables = origin_document.xpath('//a').map(&:text).select { |e|e.match /\$.+/ }.first
puts "|#{english_variable}|#{origin_variables}|"
end
出力
|$ARGV|$*|
|$CHILD_STATUS|$?|
|$DEFAULT_INPUT|$<|
|$DEFAULT_OUTPUT|$>|
|$ERROR_INFO|$!|
|$ERROR_POSITION|$@|
|$FIELD_SEPARATOR|$;|
|$IGNORECASE|$=|
|$INPUT_LINE_NUMBER|$.|
|$INPUT_RECORD_SEPARATOR|$/|
|$LAST_MATCH_INFO|$~|
|$LAST_PAREN_MATCH|$+|
|$LAST_READ_LINE|$_|
|$MATCH|$&|
|$OFS|$,|
|$ORS|$\|
|$PID|$$|
|$POSTMATCH|$'|
|$PREMATCH|$`|
|$PROGRAM_NAME|$0|