概要
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|