class Ginny::Func

Used to generate a [method].

[1]: ruby-doc.org/core-2.6.5/Method.html [2]: ruby-doc.org/core-2.6.5/doc/syntax/methods_rdoc.html

Attributes

body[RW]

String to write into the body of the function. @return [String]

description[RW]

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

modules[RW]

List of modules to declare the function inside of. @return [String]

name[RW]

Name of the function. @return [String]

params[RW]

An array of {Ginny::Param}s. @return [Array<Param>]

return_type[RW]

Return [type](rubydoc.info/gems/yard/file/docs/GettingStarted.md#Declaring_Types) of the function. @return [String]

Public Class Methods

create(args = {}) click to toggle source

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

@param args [Hash<Symbol>] @return [Ginny::Func]

# File lib/ginny/models/func.rb, line 37
def self.create(args = {})
  f = Ginny::Func.new()
  f.name        = args[:name]
  f.description = args[:description]
  f.return_type = args[:return_type]
  f.body        = args[:body]
  f.modules     = args[:modules] unless args[:modules].nil?
  f.params      = Ginny::Param.from_array(args[:params]) if args[:params]&.is_a?(Array)
  return f
end
new() click to toggle source

@return [void]

# File lib/ginny/models/func.rb, line 28
def initialize()
  self.params = []
  self.modules = []
end

Public Instance Methods

render() click to toggle source

Return generated code as a string.

@return [String]

# File lib/ginny/models/func.rb, line 51
def render()
  # return self.render_compact() if self.body.nil? && self.params.length == 0
  parts = []
  parts << self.render_description()
  parts << self.params.map(&:render_doc).join("\n") unless self.params.length == 0
  parts << self.render_return_type()
  parts << "def " + self.name + self.render_params()
  parts << self.body.indent(2) unless self.body.nil?
  parts << "end"

  body = parts.compact.join("\n").gsub(/(\s+)$/, "")

  return Ginny.mod(body, self.modules) if self.modules.length > 0
  return body
end
render_description() click to toggle source

@return [String]

# File lib/ginny/models/func.rb, line 83
def render_description()
  return (self.description&.length&.positive? ? self.description.comment.strip : nil)
end
render_params() click to toggle source

@return [String]

# File lib/ginny/models/func.rb, line 68
def render_params()
  return "()" if self.params.length == 0
  # if self.params.length >= 5
  #   return "(\n" + self.params.map(&:render).join(",\n").indent(2) + "\n)"
  # end
  return "(" + self.params.map(&:render).join(", ") + ")"
end
render_return_type() click to toggle source

@return [String]

# File lib/ginny/models/func.rb, line 77
def render_return_type
  type = self.return_type.nil? ? "void" : self.return_type
  return "# @return [#{type}]"
end