Как сделать ссылку rdoc на метод со знаком равенства

В одном файле у меня

module Adapter
  ##
  # :method: avatar

  ##
  # :method: avatar=(value)
end

В другом файле я хочу иметь ссылки на эти методы:

# Adapter#avatar         # this generates a valid link to another page
# Adapter#avatar=        # this is shown as raw text

Как сообщить rdoc, что он должен генерировать вторую ссылку?

Обновление: подтверждено, что если писатель определен статически с помощью def avatar=(value); end, ссылка генерируется нормально. Однако динамический писатель, по-видимому, прослушивается.

Update2: Ладно, дело не в ссылке. Речь идет о создании правильного имени метода записи:

module Adapter
  ##
  # :method: avatar=(value)
end

сгенерированный документ с именем avatar=(value)() и

module Adapter
  def avatar=(value); end
end

генерирует правильный avatar=(value) документ, на который ссылаются.


person ujifgc    schedule 11.04.2013    source источник


Ответы (1)


Вы должны объявить свои параметры с помощью :call-seq: и не включать список параметров в строку :method:. У меня работает следующее, и все ссылки работают:

module Adapter
  ##
  # :method: avatar

  ##
  # :method: avatar=
  #
  # :call-seq: avatar=(value)
end

# See Adapter#avatar  
# See Adapter#avatar=
#
class Linked
end

:method: объявляет имя метода, а :call-seq: объявляет сигнатуру параметра, которую он принимает.

(Кстати, я нашел очень полезную документацию по синтаксису RDoc здесь).

person Stuart M    schedule 11.04.2013
comment
Я не могу определить метод, он динамический. И тот, у кого нет '=', нормально линкуется. - person ujifgc; 11.04.2013
comment
@ujifgc вы можете, но убедитесь, что вы объявили до того, как произойдет динамическая генерация. Динамическая генерация (например, define_method) может переопределить эти пустые методы... - person Gabor Garami; 11.04.2013
comment
Итак, я определяю один метод для rdoc, а затем динамически создаю другой с другим именем, и я получаю два метода, где у меня должен быть только динамический. Правильно? - person ujifgc; 12.04.2013
comment
Ага, кажется, я понял. Вам нужно использовать :call-seq:, и тогда все ссылки будут работать, а методы будут отображаться без лишних символов (). Я переписал свой ответ, пожалуйста, проверьте еще раз - person Stuart M; 12.04.2013
comment
Я также хотел бы упомянуть, что если вы только начинаете писать документацию и заинтересованы в альтернативах, я действительно предпочитаю YARD RDoc. . - person Stuart M; 12.04.2013
comment
Отлично, :call-seq: все исправил. - person ujifgc; 05.05.2013