class NodeDiagram

NodeDiagram. @class_description

A NodeDiagram library implementation.

@attr node_string [String]

A Node's 'to_s()' String.

@attr data_text [String]

The lower row's data text.

@attr dl_padding [String]

The lower row's left padding.

@attr dr_padding [String]

The lower row's right padding.

@attr kind [String]

The Node kind. Either 'lone', 'base', 'common', or 'pioneer'.

NodeDiagram. @class_description

A NodeDiagram library implementation.

@attr node_string [String]

A Node's 'to_s()' String.

@attr data_text [String]

The lower row's data text.

@attr dl_padding [String]

The lower row's left padding.

@attr dr_padding [String]

The lower row's right padding.

@attr kind [String]

The Node kind. Either 'lone', 'base', 'common', or 'pioneer'.

Constants

BASE_LABEL

Private constants.

BL_LENGTH
CP_LENGTH
DATA_LABEL
NEWLINE
VERSION

Public Class Methods

base_label() click to toggle source

self.base_label(). @description

Gets BASE_LABEL.

@return [String]

BASE_LABEL's reference.
# File lib/node_diagram_impl.rb, line 26
def self.base_label()
  return BASE_LABEL
end
bl_length() click to toggle source

self.bl_length(). @description

Gets BL_LENGTH.

@return [String]

BL_LENGTH's reference.
# File lib/node_diagram_impl.rb, line 44
def self.bl_length()
  return BL_LENGTH
end
cp_length() click to toggle source

self.cp_length(). @description

Gets CP_LENGTH.

@return [String]

CP_LENGTH's reference.
# File lib/node_diagram_impl.rb, line 53
def self.cp_length()
  return CP_LENGTH
end
data_label() click to toggle source

self.data_label(). @description

Gets DATA_LABEL.

@return [String]

DATA_LABEL's reference.
# File lib/node_diagram_impl.rb, line 35
def self.data_label()
  return DATA_LABEL
end
new(n = nil) click to toggle source

initialize(n = nil). @description

Initializes a NodeDiagram.

@param n [Node]

Any instance.

@return [NodeDiagram]

The initialization.
# File lib/node_diagram_impl.rb, line 73
def initialize(n = nil)

  self.node_string = n.to_s()
  self.data_text   = n.data()
  self.kind        = kind_strategy(n)
  self.dl_padding  = Diagram.space() * dlp_quantity()
  self.dr_padding  = Diagram.space() * drp_quantity()

end
newline() click to toggle source

self.newline(). @description

Gets NEWLINE.

@return [String]

NEWLINE's reference.
# File lib/node_diagram_impl.rb, line 62
def self.newline()
  return NEWLINE
end

Public Instance Methods

data_text() click to toggle source

data_text(). @description

Gets data_text.

@return [String]

data_text's reference.
# File lib/node_diagram_impl.rb, line 97
def data_text()
  return @data_text
end
dl_padding() click to toggle source

dl_padding(). @description

Gets dl_padding.

@return [String]

dl_padding's reference.
# File lib/node_diagram_impl.rb, line 106
def dl_padding()
  return @dl_padding
end
dlp_quantity() click to toggle source

dlp_quantity(). @description

Computes the lower row's left padding quantity.

@return [Integer]

The quantity.
# File lib/node_diagram_impl.rb, line 160
def dlp_quantity()

  quantity  = 0
  dt_length = data_text().length()
  if (kind().eql?('base') || kind().eql?('lone'))
    quantity = (NodeDiagram.bl_length() - dt_length) / 2
  else
    quantity = (NodeDiagram.cp_length() - dt_length) / 2
  end
  return quantity

end
dr_padding() click to toggle source

dr_padding(). @description

Gets dr_padding.

@return [String]

dr_padding's reference.
# File lib/node_diagram_impl.rb, line 115
def dr_padding()
  return @dr_padding
end
drp_quantity() click to toggle source

drp_quantity(). @description

Computes the lower row's padding quantity.

@return [Integer]

The quantity.
# File lib/node_diagram_impl.rb, line 178
def drp_quantity()

  quantity        = 0
  remaining_space = 0
  dt_length       = data_text().length()
  if (kind().eql?('base') || kind().eql?('lone'))

    remaining_space = NodeDiagram.bl_length() - dt_length
    quantity        = remaining_space / 2
    if (remaining_space.odd?()) then
      quantity += 1
    end

  else

    remaining_space = NodeDiagram.cp_length() - dt_length
    quantity        = remaining_space / 2
    if (remaining_space.odd?()) then
      quantity += 1
    end

  end
  return quantity

end
form() click to toggle source

form(). @description

Forms a diagram string.

@return [String]

The formation.
# File lib/node_diagram_impl.rb, line 270
def form()
  return (form_upper() + NEWLINE + form_lower())
end
form_lower() click to toggle source

form_lower(). @description

Forms the lower row.

@return [String]

The formation.
# File lib/node_diagram_impl.rb, line 252
def form_lower()
  return row(lower_body())
end
form_upper() click to toggle source

form_upper(). @description

Forms the upper row.

@return [String]

The formation.
# File lib/node_diagram_impl.rb, line 261
def form_upper()
  return row(upper_text())
end
kind() click to toggle source

kind(). @description

Gets kind.

@return [String]

kind's reference.
# File lib/node_diagram_impl.rb, line 124
def kind()
  return @kind
end
kind_strategy(n = nil) click to toggle source

kind_strategy(n = nil). @description

Discerns the Node's kind.

@param n [Node]

The initializing instance.

@return [String]

Either 'lone', 'base', 'common', or 'pioneer'.
# File lib/node_diagram_impl.rb, line 232
def kind_strategy(n = nil)

  case
  when n.base()
    return 'base'.freeze()
  when n.no_attachments()
    return 'lone'.freeze()
  when n.back_attached() && n.front_attached()
    return 'common'.freeze()
  when n.pioneer()
    return 'pioneer'.freeze()
  end

end
lower_body() click to toggle source

lower_body(). @description

Concatenates the lower row body parts.

@return [String]

The lower row's body.
# File lib/node_diagram_impl.rb, line 209
def lower_body()
  return (dl_padding() + data_text() + dr_padding())
end
lower_text(data = nil) click to toggle source

lower_text(data = nil). @description

Concatenates the lower row text.

@param data [DataType]

An instance's data.

@return [String]

The lower row text.
# File lib/node_diagram_impl.rb, line 135
def lower_text(data = nil)
  text = NodeDiagram.data_label() + NodeDiagram.space() + "#{data}"
  return text
end
node_string() click to toggle source

node_string(). @description

Gets node_string.

@return [String]

The initializing Node's 'to_s()' String.
# File lib/node_diagram_impl.rb, line 88
def node_string()
  return @node_string
end
row(body = nil) click to toggle source

row(body = nil). @description

Forms arrow.

@param body [String]

A row body.

@return [String]

The row.
# File lib/node_diagram_impl.rb, line 220
def row(body = nil)
  return (NodeDiagram.pipe() + NodeDiagram.space() + body +
      NodeDiagram.space() + NodeDiagram.pipe())
end
upper_text() click to toggle source

upper_text(). @description

Concatenates the upper row's text.

@return [String]

The upper row's text.
# File lib/node_diagram_impl.rb, line 145
def upper_text()

  if (kind().eql?('base') || kind().eql?('lone'))
    return (NodeDiagram.base_label() + NodeDiagram.space() + node_string())
  else
    return node_string()
  end

end

Private Instance Methods

data_text=(data = nil) click to toggle source

data_text=(data = nil). @description

Sets data_text.

@param data [DataType]

A Node's data.

@return [String]

The argument.
# File lib/node_diagram_impl.rb, line 294
def data_text=(data = nil)

  data_string = "#{data}"
  dt_length   = data_string.length()
  case
  when (kind().eql?('base') || kind().eql?('lone')) &&
      dt_length > 25
    @data_text = lower_text(data_string.slice(0, 25))
  when (kind().eql?('common') || kind().eql?('pioneer')) &&
      dt_length > 20
    @data_text = lower_text(data_string.slice(0, 20))
  else
    @data_text = lower_text(data)
  end

end
dl_padding=(padding = '') click to toggle source

dl_padding=(padding = ''). @description

Sets dl_padding.

@param padding [String]

Padding space.

@return [String]

The argument.
# File lib/node_diagram_impl.rb, line 318
def dl_padding=(padding = '')
  @dl_padding = padding
end
dr_padding=(padding = '') click to toggle source

dr_padding=(padding = ''). @description

Sets dr_padding.

@param padding [String]

Padding space.

@return [String]

The argument.
# File lib/node_diagram_impl.rb, line 329
def dr_padding=(padding = '')
  @dr_padding = padding
end
kind=(n_k = nil) click to toggle source

kind=(n_k = nil). @description

Sets kind.

@param n_k [String]

Either 'lone', 'base', 'common', or 'pioneer'.

@return [String]

The argument.
# File lib/node_diagram_impl.rb, line 340
def kind=(n_k = nil)
  @kind = n_k
end
node_string=(n_str = nil) click to toggle source

node_string=(n_str = nil). @description

Sets node_string.

@param n_str [String]

A Node's 'to_s()' String.

@return [String]

The argument.
# File lib/node_diagram_impl.rb, line 283
def node_string=(n_str = nil)
  @node_string = n_str
end