class Ginny::Param

Used to generate a function [parameter].

[1]: ruby-for-beginners.rubymonstas.org/bonus/arguments_parameters.html [2]: ruby-doc.org/core-2.6.5/doc/syntax/methods_rdoc.html#label-Arguments

Attributes

default[RW]

Default value for the param. Set `optional` as `true` for a default `nil` value. @return [String]

description[RW]

Description of the param. [Markdown](github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) is supported. @return [String]

keyword[RW]

If `true`, the param will be generated as a [keyword argument](bugs.ruby-lang.org/issues/14183). @return [Boolean] (false)

name[RW]

Name of the param. @return [String]

optional[RW]

If `true`, the default value will be `nil`. FIXME: This is a workaround for the fact that that passing `nil` to `default` messes with conditionals. Not sure of a simpler way to do this. @return [Boolean] (false)

type[RW]

Public Class Methods

create(args = {}) click to toggle source

Constructor for a Param. Use `create`, not `new`.

@param [Hash<Symbol>] args @option args [String] :name @option args [String] :description @option args [String] :type @option args [Object] :default @option args [Boolean] :keyword (false) @option args [Boolean] :optional (false) @return [Ginny::Param]

# File lib/ginny/models/param.rb, line 39
def self.create(args = {})
  p = Ginny::Param.new()
  p.name        = args[:name]
  p.description = args[:description]
  p.type        = args[:type]
  p.default     = args[:default]
  p.keyword     = args[:keyword] || false
  p.optional    = args[:optional] || false
  return p
end
from_array(array) click to toggle source

@param array [Array<Hash>] @return [Array<Ginny::Param>]

# File lib/ginny/models/param.rb, line 52
def self.from_array(array)
  return array.map { |p| self.create(p) }
end

Public Instance Methods

render() click to toggle source

Return generated code as a string.

@return [String]

# File lib/ginny/models/param.rb, line 59
def render
  parts = []
  parts << @name
  default = self.render_default_value()
  if @keyword
    parts << ":"
    parts << (" " + default) if default
  elsif default
    parts << (" = " + default)
  end
  return parts.compact.join("").gsub(/\s+$/, "")
end
render_default_value() click to toggle source

@return [String,nil]

# File lib/ginny/models/param.rb, line 73
def render_default_value
  # `nil` default value
  return "nil" if self.optional
  # No default value
  return nil if self.default.nil?
  # Add quotes to a String.
  return (Ginny::QUOTE + self.default + Ginny::QUOTE) if self.type == "String" || self.default.is_a?(String)
  # Add colon to a Symbol.
  return ":#{self.default}" if self.type == "Symbol" || self.default.is_a?(Symbol)
  # `to_s` should handle everything else.
  return self.default.to_s
end
render_doc() click to toggle source

@return [String]

# File lib/ginny/models/param.rb, line 87
def render_doc
  return "# @param #{self.name} [#{self.type}] #{self.description}".strip
end