class Bake::Documentation

Structured access to a set of comment lines.

Constants

ATTRIBUTE
DESCRIPTION
PARAMETER

Public Class Methods

new(comments) click to toggle source

Initialize the documentation with an array of comments.

@parameter comments [Array(String)] An array of comment lines.

# File lib/bake/documentation.rb, line 31
def initialize(comments)
        @comments = comments
end

Public Instance Methods

attributes() { |match| ... } click to toggle source

The attribute lines of the comment block. e.g. `@returns [String]`.

@yields {|match| …}

@parameter match [MatchData] The regular expression match with `name` and `value` keys.

@returns [Enumerable] If no block given.

# File lib/bake/documentation.rb, line 74
def attributes
        return to_enum(:attributes) unless block_given?
        
        @comments.each do |comment|
                if match = comment.match(ATTRIBUTE)
                        yield match
                end
        end
end
description() { |""| ... } click to toggle source

The text-only lines of the comment block.

@yields {|match| …}

@parameter match [MatchData] The regular expression match for each line of documentation.

@returns [Enumerable] If no block given.

# File lib/bake/documentation.rb, line 42
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
parameters() { |match| ... } click to toggle source

The parameter lines of the comment block. e.g. `@parameter value [String] The value.`

@yields {|match| …}

@parameter match [MatchData] The regular expression match with `name`, `type` and `details` keys.

@returns [Enumerable] If no block given.

# File lib/bake/documentation.rb, line 92
def parameters
        return to_enum(:parameters) unless block_given?
        
        @comments.each do |comment|
                if match = comment.match(PARAMETER)
                        yield match
                end
        end
end