123456789_123456789_123456789_123456789_123456789_

Class: Mongoid::Config::Introspection::Option Private

Relationships & Source Files
Inherits: Object
Defined in: lib/mongoid/config/introspection.rb

Overview

A helper class to represent an individual option, its name, its default value, and the comment that documents it.

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(name, default, comment) ⇒ Option

Create a new Option instance with the given name, default value, and comment.

Parameters:

  • name (String)

    The option’s name.

  • default (String)

    The option’s default value, as a ::String representing the actual Ruby value.

  • comment (String)

    The multi-line comment describing the option.

[ GitHub ]

  
# File 'lib/mongoid/config/introspection.rb', line 58

def initialize(name, default, comment)
  @name, @default, @comment = name, default, unindent(comment)
end

Class Method Details

.from_captures(captures) ⇒ Option

Instantiate an option from an array of Regex captures.

Parameters:

  • captures (Array<String>)

    The array with the Regex captures to use to instantiate the option. The element at index 1 must be the comment, at index 2 must be the name, and at index 3 must be the default value.

Returns:

  • (Option)

    The newly instantiated Option object.

[ GitHub ]

  
# File 'lib/mongoid/config/introspection.rb', line 46

def self.from_captures(captures)
  new(captures[2], captures[3], captures[1])
end

Instance Attribute Details

#commentString (readonly)

The comment that describes this option, as scraped from mongoid/config.rb.

Returns:

  • (String)

    The (possibly multi-line) comment. Each line is prefixed with the Ruby comment character (“#”).

[ GitHub ]

  
# File 'lib/mongoid/config/introspection.rb', line 36

attr_reader :comment

#defaultObject (readonly)

The default value of this option.

Returns:

  • (Object)

    The default value of the option, typically a ::String, ::Symbol, nil, true, or false.

[ GitHub ]

  
# File 'lib/mongoid/config/introspection.rb', line 29

attr_reader :default

#deprecated?true | false (readonly)

Reports whether or not the text “(Deprecated)” is present in the option’s comment.

Returns:

  • (true | false)

    whether the option is deprecated or not.

[ GitHub ]

  
# File 'lib/mongoid/config/introspection.rb', line 81

def deprecated?
  comment.include?("(Deprecated)")
end

#nameString (readonly)

The name of this option.

Returns:

  • (String)

    The name of the option

[ GitHub ]

  
# File 'lib/mongoid/config/introspection.rb', line 23

attr_reader :name

Instance Method Details

#==(option) ⇒ true | false

Compare self with the given option.

Returns:

  • (true | false)

    If name, default, and comment are all the same, return true. Otherwise, false.

[ GitHub ]

  
# File 'lib/mongoid/config/introspection.rb', line 89

def ==(option)
  name == option.name &&
    default == option.default &&
    comment == option.comment
end

#indented_comment(indent: 2, indent_first_line: false) ⇒ String

Indent the comment by the requested amount, optionally indenting the first line, as well.

param [ ::Integer ] indent The number of spaces to indent each line

(Default: 2)

param [ true | false ] indent_first_line Whether or not to indent

the first line of the comment (Default: false)

Returns:

  • (String)

    the reformatted comment

[ GitHub ]

  
# File 'lib/mongoid/config/introspection.rb', line 71

def indented_comment(indent: 2, indent_first_line: false)
  comment.gsub(/^/, " " * indent).tap do |result|
    result.strip! unless indent_first_line
  end
end

#unindent(text) ⇒ String (private)

Removes any existing whitespace from the beginning of each line in the text.

Parameters:

  • text (String)

    The text to unindent.

Returns:

  • (String)

    the unindented text.

[ GitHub ]

  
# File 'lib/mongoid/config/introspection.rb', line 103

def unindent(text)
  text.strip.gsub(/^\s+/, "")
end