В контексте символов Ruby, что означает «тагури»? - PullRequest
2 голосов
/ 03 февраля 2011

Один из моих коллег и я пытались понять, почему символы не автоматически разбиваются на строки при выполнении сопоставления с регулярным выражением:

>> :this =~ /./
=> false
>> :this =~ :this
=> false
>> :this =~ /:this/
=> false

Одна теория состояла в том, что Symbol переопределяет метод: = ~, поэтому мы провериливыход: это. методы.Мы обнаружили, что Symbol не переопределяет: = ~ ( 1 ), но также заметил очень странный метод:

>> :this.respond_to? :taguri=
=> true

В японском языке た ぐ り (taguri) означает «наматываниеи т. д.) "( 2 ), но я не могу понять, как это связано с символом, и не могу найти источник Ruby для метода в Символекласс.

Любые подсказки?

1 Ответ

5 голосов
/ 03 февраля 2011

Это не "taguri", а "Tag URI". Глядя на исходный код, кажется, что все имеет дело с YAML, и если вы посмотрите в документацию по YAML, вы увидите:

А вот абсолютное доказательство из tag.rb:

# Associates a taguri _tag_ with a Ruby class _cls_.  The taguri is used to give types
# to classes when loading YAML.  Taguris are of the form:
#
#   tag:authorityName,date:specific
#
# The +authorityName+ is a domain name or email address.  The +date+ is the date the type
# was issued in YYYY or YYYY-MM or YYYY-MM-DD format.  The +specific+ is a name for
# the type being added.
#
# For example, built-in YAML types have 'yaml.org' as the +authorityName+ and '2002' as the
# +date+.  The +specific+ is simply the name of the type:
#
#  tag:yaml.org,2002:int
#  tag:yaml.org,2002:float
#  tag:yaml.org,2002:timestamp
#
# The domain must be owned by you on the +date+ declared.  If you don't own any domains on the
# date you declare the type, you can simply use an e-mail address.
#
#  tag:why@ruby-lang.org,2004:notes/personal
#
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...