class Documentation
Structured access to a set of comment lines.
Definitions
def initialize(comments)
Initialize the documentation with an array of comments.
Signature
-
parameter
comments
Array(String)
An array of comment lines.
Implementation
def initialize(comments)
@comments = comments
end
def description
The text-only lines of the comment block.
Signature
-
yields
{|match| ...}
-
parameter
match
MatchData
The regular expression match for each line of documentation.
-
parameter
-
returns
Enumerable
If no block given.
Implementation
def description
return to_enum(:description) unless block_given?
# We track empty lines and only yield a single empty line when there is another line of text:
gap = false
@comments.each do |comment|
if match = comment.match(DESCRIPTION)
if match[1]
if gap
yield ""
gap = false
end
yield match[1]
else
gap = true
end
else
break
end
end
end
def attributes
The attribute lines of the comment block.
e.g. @returns [String]
.
Signature
-
yields
{|match| ...}
-
parameter
match
MatchData
The regular expression match with
name
andvalue
keys.
-
parameter
-
returns
Enumerable
If no block given.
Implementation
def attributes
return to_enum(:attributes) unless block_given?
@comments.each do |comment|
if match = comment.match(ATTRIBUTE)
yield match
end
end
end
def parameters
The parameter lines of the comment block.
e.g. @parameter value [String] The value.
Signature
-
yields
{|match| ...}
-
parameter
match
MatchData
The regular expression match with
name
,type
anddetails
keys.
-
parameter
-
returns
Enumerable
If no block given.
Implementation
def parameters
return to_enum(:parameters) unless block_given?
@comments.each do |comment|
if match = comment.match(PARAMETER)
yield match
end
end
end