Class: ConfigToolkit::PrettyPrintWriter::Visitor
- Inherits:
- 
      HashArrayVisitor
      
        - Object
- HashArrayVisitor
- ConfigToolkit::PrettyPrintWriter::Visitor
 
- Defined in:
- lib/configtoolkit/prettyprintwriter.rb
Overview
This class is used for printing the elements of the structure passed to write. See the comments for HashArrayVisitor for details on how this visitor works.
Defined Under Namespace
Classes: StackFrame
Constant Summary collapse
- NESTING_INDENT =
          The amount by which to indent for each nesting level when pretty printing. 
- " " * 4 
Instance Method Summary collapse
- 
  
    
      #construct_new_stack_frame(longest_param_name_length)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Description: This method returns a new stack frame with longest parameter name length longest_param_name_length.
- #enter_array(array) ⇒ Object
- #enter_hash(hash) ⇒ Object
- 
  
    
      #initialize(stream)  ⇒ Visitor 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    Description: This constructs a Visitor to pretty pretty structures to stream stream.
- #leave_array(popped_stack_frame) ⇒ Object
- #leave_hash(popped_stack_frame) ⇒ Object
- #visit_array_element(value, index, is_container) ⇒ Object
- #visit_hash_element(key, value, index, is_container) ⇒ Object
Methods inherited from HashArrayVisitor
#stack_empty?, #stack_top, #visit
Constructor Details
#initialize(stream) ⇒ Visitor
Description:
This constructs a Visitor to pretty pretty structures to stream stream.
Parameters:
- stream
- 
The stream to which to write 
| 57 58 59 60 61 | # File 'lib/configtoolkit/prettyprintwriter.rb', line 57 def initialize(stream) @stream = stream super(StackFrame.new("", 0)) end | 
Instance Method Details
#construct_new_stack_frame(longest_param_name_length) ⇒ Object
Description:
This method returns a new stack frame with longest parameter name length longest_param_name_length. The indentation for the new frame automatically is constructed from the current indentation.
Parameters:
- longest_param_name_length
- 
The length of the longest parameter name in the container associated with the frame 
Returns:
A new stack frame
| 78 79 80 81 82 | # File 'lib/configtoolkit/prettyprintwriter.rb', line 78 def construct_new_stack_frame(longest_param_name_length) indent = stack_top().indent + NESTING_INDENT return StackFrame.new(indent, longest_param_name_length) end | 
#enter_array(array) ⇒ Object
| 112 113 114 115 116 | # File 'lib/configtoolkit/prettyprintwriter.rb', line 112 def enter_array(array) @stream << "[" return construct_new_stack_frame(stack_top().longest_param_name_length) end | 
#enter_hash(hash) ⇒ Object
| 84 85 86 87 88 89 90 91 92 93 94 95 96 | # File 'lib/configtoolkit/prettyprintwriter.rb', line 84 def enter_hash(hash) @stream << "{" longest_param_name_length = 0 hash.each_key do |key| key_size = key.to_s().size() if(key_size > longest_param_name_length) longest_param_name_length = key_size end end return construct_new_stack_frame(longest_param_name_length) end | 
#leave_array(popped_stack_frame) ⇒ Object
| 130 131 132 | # File 'lib/configtoolkit/prettyprintwriter.rb', line 130 def leave_array(popped_stack_frame) @stream << "\n#{stack_top.indent}" << "]" end | 
#leave_hash(popped_stack_frame) ⇒ Object
| 98 99 100 | # File 'lib/configtoolkit/prettyprintwriter.rb', line 98 def leave_hash(popped_stack_frame) @stream << "\n#{stack_top.indent}" << "}" end | 
#visit_array_element(value, index, is_container) ⇒ Object
| 118 119 120 121 122 123 124 125 126 127 128 | # File 'lib/configtoolkit/prettyprintwriter.rb', line 118 def visit_array_element(value, index, is_container) if(index != 0) @stream << "," end @stream << "\n#{stack_top.indent}" if(!is_container) @stream << "#{value}" end end | 
#visit_hash_element(key, value, index, is_container) ⇒ Object
| 102 103 104 105 106 107 108 109 110 | # File 'lib/configtoolkit/prettyprintwriter.rb', line 102 def visit_hash_element(key, value, index, is_container) @stream << "\n#{stack_top.indent}" @stream << key.to_s.ljust(stack_top.longest_param_name_length) @stream << ": " if(!is_container) @stream << "#{value}" end end |