Class: RDoc::Comment
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Instance Chain:
self,
Text
|
|
Inherits: | Object |
Defined in: | lib/rdoc/comment.rb |
Constant Summary
Text
- Included
MARKUP_FORMAT, SPACE_SEPARATED_LETTER_CLASS, TO_HTML_CHARACTERS
Class Method Summary
Instance Attribute Summary
-
#document=(value)
writeonly
Overrides the content returned by #parse.
-
#empty? ⇒ Boolean
readonly
A comment is empty if its text String is empty.
-
#format
rw
The format of this comment.
-
#format=(format)
rw
Sets the format of this comment and resets any parsed document.
-
#line
rw
Line where this
Comment
was written. -
#location
(also: #file)
rw
The
TopLevel
this comment was found in. -
#text
(also: #to_s)
rw
The text for this comment.
-
#text=(text)
rw
Replaces this comment’s text with #text and resets the parsed document.
-
#to_s
readonly
Alias
for text. -
#tomdoc? ⇒ Boolean
readonly
Returns true if this comment is in
TomDoc
format. -
#file
readonly
Internal use only
For duck-typing when merging classes at load time.
-
#normalized? ⇒ Boolean
readonly
Internal use only
Was this text normalized?
Text
- Included
#language | The language for this text. |
Instance Method Summary
-
#encode!(encoding)
HACK dubious.
-
#extract_call_seq(method)
Look for a ‘call-seq’ in the comment to override the normal parameter handling.
-
#normalize
Normalizes the text.
-
#parse
Parses the comment into an
Markup::Document
. -
#remove_private
Removes private sections from this comment.
- #==(other) Internal use only
- #initialize_copy(copy) Internal use only
- #inspect Internal use only
Text
- Included
#expand_tabs | Expands tab characters in #text to eight spaces. |
#flush_left | Flush #text left based on the shortest line. |
#markup | Convert a string in markup format into HTML. |
#normalize_comment | Strips hashes, expands tabs then flushes #text to the left. |
#parse | Normalizes #text then builds a |
#snippet | The first |
#strip_hashes | Strips leading # characters from #text |
#strip_newlines | Strips leading and trailing n characters from #text |
#strip_stars | Strips /* */ style comments. |
#to_html | Converts ampersand, dashes, ellipsis, quotes, copyright and registered trademark symbols in #text to properly encoded characters. |
#wrap | Wraps |
Constructor Details
.new(text = nil, location = nil, language = nil) ⇒ Comment
[ GitHub ]
Instance Attribute Details
#document=(value) (writeonly)
[ GitHub ]# File 'lib/rdoc/comment.rb', line 50
attr_writer :document
#empty? ⇒ Boolean
(readonly)
A comment is empty if its text String is empty.
# File 'lib/rdoc/comment.rb', line 128
def empty? @text.empty? end
#file (readonly)
For duck-typing when merging classes at load time
# File 'lib/rdoc/comment.rb', line 34
alias file location # :nodoc:
#format (rw)
The format of this comment. Defaults to Markup
# File 'lib/rdoc/comment.rb', line 19
attr_reader :format
#format=(format) (rw)
Sets the format of this comment and resets any parsed document
#line (rw)
Line where this Comment
was written
# File 'lib/rdoc/comment.rb', line 29
attr_accessor :line
#location (rw) Also known as: #file
The TopLevel
this comment was found in
# File 'lib/rdoc/comment.rb', line 24
attr_accessor :location
#normalized? ⇒ Boolean
(readonly)
Was this text normalized?
# File 'lib/rdoc/comment.rb', line 171
def normalized? # :nodoc: @normalized end
#text (rw) Also known as: #to_s
The text for this comment
# File 'lib/rdoc/comment.rb', line 39
attr_reader :text
#text=(text) (rw)
Replaces this comment’s text with #text and resets the parsed document.
An error is raised if the comment contains a document but no text.
#to_s (readonly)
Alias
for text
# File 'lib/rdoc/comment.rb', line 44
alias to_s text
#tomdoc? ⇒ Boolean
(readonly)
Returns true if this comment is in TomDoc
format.
# File 'lib/rdoc/comment.rb', line 225
def tomdoc? @format == 'tomdoc' end
Instance Method Details
#==(other)
#encode!(encoding)
HACK dubious
# File 'lib/rdoc/comment.rb', line 135
def encode! encoding @text = String.new @text, encoding: encoding self end
#extract_call_seq(method)
Look for a ‘call-seq’ in the comment to override the normal parameter handling. The :call-seq: is indented from the baseline. All lines of the same indentation level and prefix are consumed.
For example, all of the following will be used as the :call-seq:
# :call-seq:
# ARGF.readlines(sep=$/) -> array
# ARGF.readlines(limit) -> array
# ARGF.readlines(sep, limit) -> array
#
# ARGF.to_a(sep=$/) -> array
# ARGF.to_a(limit) -> array
# ARGF.to_a(sep, limit) -> array
# File 'lib/rdoc/comment.rb', line 95
def extract_call_seq method # we must handle situations like the above followed by an unindented first # comment. The difficulty is to make sure not to match lines starting # with ARGF at the same indent, but that are after the first description # paragraph. if /^(?<S> ((?!\n)\s)*+ (?# whitespaces except newline)) :?call-seq: (?<B> \g<S>(?<N>\n|\z) (?# trailing spaces))? (?<seq> (\g<S>(?!\w)\S.*\g<N>)* (?> (?<H> \g<S>\w+ (?# ' # ARGF' in the example above)) .*\g<N>)? (\g<S>\S.*\g<N> (?# other non-blank line))*+ (\g<B>+(\k<H>.*\g<N> (?# ARGF.to_a lines)))* ) (?m:^\s*$|\z) /x =~ @text seq = $~[:seq] all_start, all_stop = $~.offset(0) @text.slice! all_start...all_stop seq.gsub!(/^\s*/, '') method.call_seq = seq end method end
#initialize_copy(copy)
# File 'lib/rdoc/comment.rb', line 70
def initialize_copy copy # :nodoc: @text = copy.text.dup end
#inspect
#normalize
Normalizes the text. See Text#normalize_comment for details
# File 'lib/rdoc/comment.rb', line 157
def normalize return self unless @text return self if @normalized # TODO eliminate duplicate normalization @text = normalize_comment @text @normalized = true self end
#parse
Parses the comment into an Markup::Document
. The parsed document is cached until the text is changed.
# File 'lib/rdoc/comment.rb', line 179
def parse return @document if @document @document = super @text, @format @document.file = @location @document end
#remove_private
Removes private sections from this comment. Private sections are flush to the comment marker and start with --
and end with ++
. For C-style comments, a private marker may not start at the opening of the comment.
/*
*--
* private
*++
* public
*/