You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One common technique to define enumerations in Ruby that I like does not seem to be handled by YARD properly.
Steps to reproduce
This is the minimal reproduction for the issue. I've done my best to remove
all extraneous code and unique environment state on my machine before providing
these steps:
Create yard_nested_constants.rb:
classYardNestedConstants# Attributes for productsPRODUCT_ATTRIBUTES=[# The name of the product.PRODUCT_NAME=:product_name,# The name of the producer.PRODUCER=:producer,]end
Run the following command:
yard doc
Open browser to doc/YardNestedConstants.html
Actual Output
Expected Output
Documentation of PRODUCT_NAME and PRODUCER should be processed.
Environment details:
OS: Fedora Linux 37
Ruby version (ruby -v): ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]
By default YARD only processes top-level statements for performance as well as correctness reasons. As a workaround, it wouldn't be too difficult to write a plugin to automatically handle this case:
# place in a file like `.yard/ext/array_constant_handler.rb`classArrayConstantHandler < YARD::Handlers::Ruby::Basehandles:assignnamespace_onlyprocessdoarr=statement[1]arr.children.each{|c| parse_block(c)}ifarr.type == :arrayendend
Place -e .yard/ext/array_constant_handler.rb in your .yardopts or pass that arg to yard doc on the command line.
You can package that up in a gem that has the yard-YOURNAME prefix and can then use --plugin YOURNAME instead of the -e argument (assuming the gem is installed).
You could also build this out as a Directive to be a bit more surgical about when this logic gets invoked. It would be similarly simple.
It's currently unclear to me if this is something that is widely needed in YARD core; this is the first time it's popped up as a feature request. Experimenting with a plugin could identify how commonly used the idiom is in the wild, and if it is, it could be merged in.
One common technique to define enumerations in Ruby that I like does not seem to be handled by YARD properly.
Steps to reproduce
This is the minimal reproduction for the issue. I've done my best to remove
all extraneous code and unique environment state on my machine before providing
these steps:
yard_nested_constants.rb
:doc/YardNestedConstants.html
Actual Output
Expected Output
Documentation of
PRODUCT_NAME
andPRODUCER
should be processed.Environment details:
ruby -v
):ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]
yard -v
):yard 0.9.34
I have read the Contributing Guide.
The text was updated successfully, but these errors were encountered: