Class: Psychgus::StyledTreeBuilder

Inherits:
Psych::TreeBuilder
  • Object
show all
Defined in:
lib/psychgus/styled_tree_builder.rb

Overview

Use this wherever Psych::TreeBuilder would have been used, to enable styling.

See Also:

Author:

  • Jonathan Bradley Whited

Since:

  • 1.0.0

Direct Known Subclasses

StyledDocumentStream

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*stylers, deref_aliases: false, **options) ⇒ StyledTreeBuilder

Initialize this class with Psychgus::Styler(s).

Parameters:

  • stylers (Styler)

    Psychgus::Styler(s) to use for styling this TreeBuilder

  • deref_aliases (true, false) (defaults to: false)

    whether to dereference aliases; output the actual value instead of the alias

Since:

  • 1.0.0



44
45
46
47
48
49
50
51
52
# File 'lib/psychgus/styled_tree_builder.rb', line 44

def initialize(*stylers,deref_aliases: false,**options)
  super()

  @deref_aliases = deref_aliases
  @sniffer = SuperSniffer.new
  @stylers = []

  add_styler(*stylers)
end

Instance Attribute Details

#deref_aliasestrue, false Also known as: deref_aliases?

Returns whether to dereference aliases; output the actual value instead of the alias.

Returns:

  • (true, false)

    whether to dereference aliases; output the actual value instead of the alias

Since:

  • 1.0.0



30
31
32
# File 'lib/psychgus/styled_tree_builder.rb', line 30

def deref_aliases
  @deref_aliases
end

#snifferSuperSniffer (readonly)

Returns the Psychgus::SuperSniffer being used to sniff the YAML nodes, level, etc.

Returns:

Since:

  • 1.0.0



34
35
36
# File 'lib/psychgus/styled_tree_builder.rb', line 34

def sniffer
  @sniffer
end

#stylersArray<Stylers> (readonly)

Returns the Psychgus::Styler(s) being used to style the YAML nodes.

Returns:

Since:

  • 1.0.0



37
38
39
# File 'lib/psychgus/styled_tree_builder.rb', line 37

def stylers
  @stylers
end

Instance Method Details

#add_styler(*stylers) ⇒ self

Add Psychgus::Styler(s) onto the end of the data structure.

Parameters:

Returns:

  • (self)

    this class

Since:

  • 1.0.0



59
60
61
62
63
# File 'lib/psychgus/styled_tree_builder.rb', line 59

def add_styler(*stylers)
  @stylers.push(*stylers)

  return self
end

#aliasPsych::Nodes::Alias

Calls super, styler(s), and sniffer.

Returns:

  • (Psych::Nodes::Alias)

    the alias node created

See Also:

Since:

  • 1.0.0



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/psychgus/styled_tree_builder.rb', line 73

def alias(*)
  node = super

  @stylers.each do |styler|
    styler.style(sniffer,node)
    styler.style_alias(sniffer,node)
  end

  @sniffer.add_alias(node)

  return node
end

#end_documentObject

Calls super and sniffer.

See Also:

Since:

  • 1.0.0



90
91
92
93
94
95
96
# File 'lib/psychgus/styled_tree_builder.rb', line 90

def end_document(*)
  result = super

  @sniffer.end_document

  return result
end

#end_mappingObject

Calls super and sniffer.

See Also:

Since:

  • 1.0.0



102
103
104
105
106
107
108
# File 'lib/psychgus/styled_tree_builder.rb', line 102

def end_mapping(*)
  result = super

  @sniffer.end_mapping

  return result
end

#end_sequenceObject

Calls super and sniffer.

See Also:

Since:

  • 1.0.0



114
115
116
117
118
119
120
# File 'lib/psychgus/styled_tree_builder.rb', line 114

def end_sequence(*)
  result = super

  @sniffer.end_sequence

  return result
end

#end_streamObject

Calls super and sniffer.

See Also:

Since:

  • 1.0.0



126
127
128
129
130
131
132
# File 'lib/psychgus/styled_tree_builder.rb', line 126

def end_stream(*)
  result = super

  @sniffer.end_stream

  return result
end

#insert_styler(index, *stylers) ⇒ self

Insert Psychgus::Styler(s) at index into the data structure.

Parameters:

Returns:

  • (self)

    this class

Since:

  • 1.0.0



139
140
141
142
143
# File 'lib/psychgus/styled_tree_builder.rb', line 139

def insert_styler(index,*stylers)
  @stylers.insert(index,*stylers)

  return self
end

#pop_styler(count = 1) ⇒ Styler, ...

Remove the last Psychgus::Styler(s) from the data structure.

Parameters:

  • count (Integer) (defaults to: 1)

    the optional amount of tail elements to pop

Returns:

Since:

  • 1.0.0



150
151
152
153
154
155
# File 'lib/psychgus/styled_tree_builder.rb', line 150

def pop_styler(count=1)
  return nil if count == 0
  return @stylers.pop if count == 1

  return @stylers.pop(count)
end

#remove_styler(styler, &block) ⇒ Styler?

Remove the Psychgus::Styler that matches styler from the data structure.

An optional block can return a default value if not found.

Parameters:

  • styler (Styler)

    the Psychgus::Styler to find and remove

  • block (Proc)

    an optional block to call when styler is not found

Returns:

Since:

  • 1.0.0



165
166
167
# File 'lib/psychgus/styled_tree_builder.rb', line 165

def remove_styler(styler,&block)
  return @stylers.delete(styler,&block)
end

#remove_styler_at(index) ⇒ Styler?

Remove the Psychgus::Styler at index from the data structure.

Parameters:

Returns:

Since:

  • 1.0.0



174
175
176
# File 'lib/psychgus/styled_tree_builder.rb', line 174

def remove_styler_at(index)
  return @stylers.delete_at(index)
end

#scalarPsych::Nodes::Scalar

Calls super, styler(s), and sniffer.

Returns:

  • (Psych::Nodes::Scalar)

    the scalar node created

See Also:

Since:

  • 1.0.0



186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/psychgus/styled_tree_builder.rb', line 186

def scalar(*)
  node = super

  @stylers.each do |styler|
    styler.style(sniffer,node)
    styler.style_scalar(sniffer,node)
  end

  @sniffer.add_scalar(node)

  return node
end

#start_documentPsych::Nodes::Document

Calls super, styler(s), and sniffer.

Returns:

  • (Psych::Nodes::Document)

    the document node created

See Also:

Since:

  • 1.0.0



207
208
209
210
211
212
213
214
215
216
217
218
# File 'lib/psychgus/styled_tree_builder.rb', line 207

def start_document(*)
  node = super

  @stylers.each do |styler|
    styler.style(sniffer,node)
    styler.style_document(sniffer,node)
  end

  @sniffer.start_document(node)

  return node
end

#start_mappingPsych::Nodes::Mapping

Calls super, styler(s), and sniffer.

Returns:

  • (Psych::Nodes::Mapping)

    the mapping node created

See Also:

Since:

  • 1.0.0



228
229
230
231
232
233
234
235
236
237
238
239
# File 'lib/psychgus/styled_tree_builder.rb', line 228

def start_mapping(*)
  node = super

  @stylers.each do |styler|
    styler.style(sniffer,node)
    styler.style_mapping(sniffer,node)
  end

  @sniffer.start_mapping(node)

  return node
end

#start_sequencePsych::Nodes::Sequence

Calls super, styler(s), and sniffer.

Returns:

  • (Psych::Nodes::Sequence)

    the sequence node created

See Also:

Since:

  • 1.0.0



249
250
251
252
253
254
255
256
257
258
259
260
# File 'lib/psychgus/styled_tree_builder.rb', line 249

def start_sequence(*)
  node = super

  @stylers.each do |styler|
    styler.style(sniffer,node)
    styler.style_sequence(sniffer,node)
  end

  @sniffer.start_sequence(node)

  return node
end

#start_streamPsych::Nodes::Stream

Calls super, styler(s), and sniffer.

Returns:

  • (Psych::Nodes::Stream)

    the stream node created

See Also:

Since:

  • 1.0.0



270
271
272
273
274
275
276
277
278
279
280
281
# File 'lib/psychgus/styled_tree_builder.rb', line 270

def start_stream(*)
  node = super

  @stylers.each do |styler|
    styler.style(sniffer,node)
    styler.style_stream(sniffer,node)
  end

  @sniffer.start_stream(node)

  return node
end