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
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
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
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
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
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
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
(). @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
(). @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
(). @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
(). @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
(). @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(). @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
(). @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
(). @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(). @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). @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
(). @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). @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
(). @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). @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
(). @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). @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 = ''). @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 = ''). @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). @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). @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