Class: TFDSL::DataFormatter
- Inherits:
-
Object
- Object
- TFDSL::DataFormatter
- Defined in:
- lib/tfdsl/data_formatter.rb
Overview
This will format hash maps, lists and elements in HCL format
Instance Method Summary collapse
- #format(input, level = 0, last = false, parent_is_list = false) ⇒ Object
- #handle_element(input, _level, last, parent_is_list) ⇒ Object
- #handle_hash(input, level, last, _parent_is_list) ⇒ Object
- #handle_list(input, level, _last, _parent_is_list) ⇒ Object
-
#initialize ⇒ DataFormatter
constructor
A new instance of DataFormatter.
Constructor Details
#initialize ⇒ DataFormatter
Returns a new instance of DataFormatter.
4 5 6 7 |
# File 'lib/tfdsl/data_formatter.rb', line 4 def initialize @sio = StringIO.new @indent = ' ' * 4 end |
Instance Method Details
#format(input, level = 0, last = false, parent_is_list = false) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/tfdsl/data_formatter.rb', line 9 def format(input, level = 0, last = false, parent_is_list = false) if input.class == Hash handle_hash input, level, last, parent_is_list elsif input.class == Array handle_list input, level, last, parent_is_list else handle_element input, level, last, parent_is_list end return @sio.string if level.zero? end |
#handle_element(input, _level, last, parent_is_list) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/tfdsl/data_formatter.rb', line 21 def handle_element(input, _level, last, parent_is_list) if last @sio << %("#{input}"\n) elsif parent_is_list @sio << %("#{input}",\n) else @sio << %("#{input}"\n) end end |
#handle_hash(input, level, last, _parent_is_list) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/tfdsl/data_formatter.rb', line 45 def handle_hash(input, level, last, _parent_is_list) @sio << "{\n" input.each_with_index do |e, i| k, v = e @sio << "#{@indent * (level + 1)}#{k} = " if i == input.size - 1 format v, level + 1, true else format v, level + 1 end end if last || level.zero? @sio << @indent * level + "}\n" else @sio << @indent * level + "},\n" end end |
#handle_list(input, level, _last, _parent_is_list) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/tfdsl/data_formatter.rb', line 31 def handle_list(input, level, _last, _parent_is_list) @sio << "[\n#{@indent * (level + 1)}" input.each_with_index do |e, i| if i == input.size - 1 format e, level + 1, true, true else format e, level + 1, false, true end @sio << @indent * (level + 1) unless i == input.size - 1 end @sio << "#{@indent * level}]\n" end |