123456789_123456789_123456789_123456789_123456789_

Class: RDoc::Constant

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, CodeObject
Instance Chain:
Inherits: RDoc::CodeObject
Defined in: lib/rdoc/code_object/constant.rb

Overview

A constant

Constant Summary

Text - Included

MARKUP_FORMAT, SPACE_SEPARATED_LETTER_CLASS, TO_HTML_CHARACTERS

Class Method Summary

CodeObject - Inherited

.new

Creates a new CodeObject that will document itself and its children.

Instance Attribute Summary

CodeObject - Inherited

#comment

Our comment.

#comment=

Replaces our comment with comment, unless it is empty.

#display?

Should this CodeObject be displayed in output?

#document_children

Do we document our children?

#document_children=

Enables or disables documentation of this CodeObject’s children unless it has been turned off by :enddoc:

#document_self

Do we document ourselves?

#document_self=

Enables or disables documentation of this CodeObject unless it has been turned off by :enddoc:.

#documented?

Does this object have a comment with content or is #received_nodoc true?

#done_documenting

Are we done documenting (ie, did we come across a :enddoc:)?

#done_documenting=

Turns documentation on/off, and turns on/off #document_self and #document_children.

#file

Which file this code object was defined in.

#force_documentation

Force documentation of this CodeObject.

#force_documentation=

Force the documentation of this object unless documentation has been turned off by :enddoc:

#full_name=

Sets the full_name overriding any computed full name.

#ignored?

Has this class been ignored?

#line

Line in #file where this CodeObject was defined.

#metadata

Hash of arbitrary metadata for this CodeObject.

#mixin_from

When mixed-in to a class, this points to the Context in which it was originally defined.

#parent

Our parent CodeObject.

#parent=

Sets the parent CodeObject.

#received_nodoc

Did we ever receive a :nodoc: directive?

#section

The section this CodeObject is in.

#section=

Set the section this CodeObject is in.

#store

The Store for this object.

#store=

Sets the store that contains this CodeObject.

#suppressed?

Has this class been suppressed?

#viewer

We are the model of the code, but we know that at some point we will be worked on by viewers.

Text - Included

#language

The language for this text.

Instance Method Summary

CodeObject - Inherited

#each_parent

Yields each parent of this CodeObject.

#file_name

File name where this CodeObject was found.

#ignore

Use this to ignore a CodeObject and all its children until found again (#record_location is called).

#options

The options instance from the store this CodeObject is attached to, or a default options instance if the CodeObject is not attached.

#parent_file_name

File name of our parent.

#parent_name

Name of our parent.

#record_location

Records the TopLevel (file) where this code object was defined.

#start_doc

Enable capture of documentation unless documentation has been turned off by :enddoc:

#stop_doc

Disable capture of documentation.

#suppress

Use this to suppress a CodeObject and all its children until the next file it is seen in or documentation is discovered.

#initialize_visibility

Initializes state for visibility of this CodeObject and its children.

Generator::Markup - Included

#aref_to

Generates a relative URL from this object’s path to target_path

#as_href

Generates a relative URL from from_path to this object’s path.

#cvs_url

Build a webcvs URL starting for the given url with full_path appended as the destination path.

#description

Handy wrapper for marking up this object’s comment.

#formatter

Creates an Markup::ToHtmlCrossref formatter.

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 Markup::Document from it.

#snippet

The first limit characters of text as HTML.

#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 txt to line_len

Constructor Details

.new(name, value, comment) ⇒ Constant

Creates a new constant with #name, #value and comment

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 32

def initialize(name, value, comment)
  super()

  @name  = name
  @value = value

  @is_alias_for = nil
  @visibility   = :public

  self.comment = comment
end

Instance Attribute Details

#documented?Boolean (readonly)

A constant is documented if it has a comment, or is an alias for a documented class or module.

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 66

def documented?
  return true if super
  return false unless @is_alias_for
  case @is_alias_for
  when String then
    found = @store.find_class_or_module @is_alias_for
    return false unless found
    @is_alias_for = found
  end
  @is_alias_for.documented?
end

#is_alias_for (rw)

The module or class this constant is an alias for

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 88

def is_alias_for
  case @is_alias_for
  when String then
    found = @store.find_class_or_module @is_alias_for
    @is_alias_for = found if found
    @is_alias_for
  else
    @is_alias_for
  end
end

#is_alias_for=(value) (rw)

Sets the module or class this is constant is an alias for.

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 12

attr_writer :is_alias_for

#name (rw)

The constant’s name

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 17

attr_accessor :name

#store=(store) (writeonly)

Sets the store for this class or module and its contained code objects.

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 171

def store= store
  super

  @file = @store.add_file @file.full_name if @file
end

#value (rw)

The constant’s value

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 22

attr_accessor :value

#visibility (rw)

The constant’s visibility

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 27

attr_accessor :visibility

Instance Method Details

#<=>(other)

Constants are ordered by name

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 47

def <=> other
  return unless self.class === other

  [parent_name, name] <=> [other.parent_name, other.name]
end

#==(other)

Constants are equal when their #parent and #name is the same

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 56

def == other
  self.class == other.class and
    @parent == other.parent and
    @name == other.name
end

#full_name

Full constant name including namespace

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 81

def full_name
  @full_name ||= "#{parent_name}::#{@name}"
end

#inspect

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 99

def inspect # :nodoc:
  "#<%s:0x%x %s::%s>" % [
    self.class, object_id,
    parent_name, @name,
  ]
end

#marshal_dump

Dumps this Constant for use by ri. See also #marshal_load

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 109

def marshal_dump
  alias_name = case found = is_alias_for
               when RDoc::CodeObject then found.full_name
               else                       found
               end

  [ MARSHAL_VERSION,
    @name,
    full_name,
    @visibility,
    alias_name,
    parse(@comment),
    @file.relative_name,
    parent.name,
    parent.class,
    section.title,
  ]
end

#marshal_load(array)

Loads this Constant from array. For a loaded Constant the following methods will return cached values:

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 135

def marshal_load array
  initialize array[1], nil, array[5]

  @full_name     = array[2]
  @visibility    = array[3] || :public
  @is_alias_for  = array[4]
  #                      5 handled above
  #                      6 handled below
  @parent_name   = array[7]
  @parent_class  = array[8]
  @section_title = array[9]

  @file = RDoc::TopLevel.new array[6]
end

#path

Path to this constant for use with HTML generator output.

[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 153

def path
  "#{@parent.path}##{@name}"
end

#pretty_print(q)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 157

def pretty_print q # :nodoc:
  q.group 2, "[#{self.class.name} #{full_name}", "]" do
    unless comment.empty? then
      q.breakable
      q.text "comment:"
      q.breakable
      q.pp @comment
    end
  end
end

#to_s

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rdoc/code_object/constant.rb', line 177

def to_s # :nodoc:
  parent_name = parent ? parent.full_name : '(unknown)'
  if is_alias_for
    "constant #{parent_name}::#@name -> #{is_alias_for}"
  else
    "constant #{parent_name}::#@name"
  end
end