Class: Node
Overview
A Node represents a file or directory in the git-status-tree
Class Attribute Summary collapse
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#collapsed_path, #collapsed_with_file?, #collapsible?, #deepest_collapsible_node
Constructor Details
#initialize(name, children = nil, status = nil) ⇒ Node
Returns a new instance of Node.
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/node.rb', line 19
def initialize(name, children = nil, status = nil)
self.class.indent ||= 4
self.class.collapse_dirs ||= false
validate_name!(name)
msg = '"children" must be a NodesCollection or nil.'
valid_nodes_collection = children.nil? || children.is_a?(NodesCollection)
raise NodeChildrenError, msg unless valid_nodes_collection
@name = name
@children = children
@status = status || '??'
end
|
Class Attribute Details
.collapse_dirs ⇒ Object
Returns the value of attribute collapse_dirs.
14
15
16
|
# File 'lib/node.rb', line 14
def collapse_dirs
@collapse_dirs
end
|
.indent ⇒ Object
Returns the value of attribute indent.
14
15
16
|
# File 'lib/node.rb', line 14
def indent
@indent
end
|
Instance Attribute Details
#children ⇒ Object
Returns the value of attribute children.
17
18
19
|
# File 'lib/node.rb', line 17
def children
@children
end
|
#name ⇒ Object
Returns the value of attribute name.
17
18
19
|
# File 'lib/node.rb', line 17
def name
@name
end
|
#status ⇒ Object
Returns the value of attribute status.
17
18
19
|
# File 'lib/node.rb', line 17
def status
@status
end
|
Class Method Details
.create_from_string(gs_porcelain) ⇒ Object
33
34
35
36
37
38
39
|
# File 'lib/node.rb', line 33
def self.create_from_string(gs_porcelain)
msg = '"str_node" must be String.'
raise NodeTypeError, msg unless gs_porcelain.is_a? String
raise NodeNameError, '"str_node" too short.' if gs_porcelain.length < 4
node_from_gs(gs_porcelain)
end
|
.instances? ⇒ Boolean
41
42
43
|
# File 'lib/node.rb', line 41
def self.instances?
->(node) { node.is_a?(Node) }
end
|
Instance Method Details
#+(other) ⇒ Object
140
141
142
143
144
145
146
147
|
# File 'lib/node.rb', line 140
def +(other)
raise 'not valid' unless valid? && other.valid?
raise "not a #{self.class}" unless other.is_a?(self.class)
tmp_children = [children, other.children].compact.inject(&:+)
NodesCollection.new([self.class.new(name, tmp_children)])
end
|
#<=>(other) ⇒ Object
149
150
151
152
153
|
# File 'lib/node.rb', line 149
def <=>(other)
return (name <=> other.name) if file? == other.file?
dir? && other.file? ? -1 : 1
end
|
#added? ⇒ Boolean
172
|
# File 'lib/node.rb', line 172
def added? = status.include?('A')
|
#copied? ⇒ Boolean
175
|
# File 'lib/node.rb', line 175
def copied? = status.include?('C')
|
#deleted? ⇒ Boolean
173
|
# File 'lib/node.rb', line 173
def deleted? = status.include?('D')
|
#dir? ⇒ Boolean
134
|
# File 'lib/node.rb', line 134
def dir? = !file?
|
#file? ⇒ Boolean
132
|
# File 'lib/node.rb', line 132
def file? = children.nil?
|
#modified? ⇒ Boolean
171
|
# File 'lib/node.rb', line 171
def modified? = status.include?('M')
|
#new? ⇒ Boolean
177
|
# File 'lib/node.rb', line 177
def new? = status.include?('?')
|
#renamed? ⇒ Boolean
174
|
# File 'lib/node.rb', line 174
def renamed? = status.include?('R')
|
#staged? ⇒ Boolean
178
|
# File 'lib/node.rb', line 178
def staged? = status.include?('+')
|
#to_primitive ⇒ Object
124
125
126
127
128
129
130
|
# File 'lib/node.rb', line 124
def to_primitive
if dir?
{ name => children.to_primitive }
else
name
end
end
|
#to_tree_s(depth = 0, open_parents = [0], last: true) ⇒ Object
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
# File 'lib/node.rb', line 155
def to_tree_s(depth = 0, open_parents = [0], last: true)
open_parents << depth
pre = pre_tree(depth, open_parents, last)
if self.class.collapse_dirs && collapsible?
render_collapsed_tree(pre, depth, open_parents)
else
str_tree = "#{pre}#{color_name}\n"
str_tree += children.to_tree_s(depth + 1, open_parents) if children
str_tree
end
end
|
#unmerged? ⇒ Boolean
176
|
# File 'lib/node.rb', line 176
def unmerged? = status.include?('U')
|
#valid? ⇒ Boolean
136
137
138
|
# File 'lib/node.rb', line 136
def valid?
file? ? valid_file? : valid_dir?
end
|