10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

$0 ? なにそれ? $PROGRAM_NAME なら分かる。 English ライブラリで特殊変数の可読性を上げる #ruby

Posted at

概要

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|

外部資料

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?