class MatterCompiler::KeyValueCollection

Blueprint AST node for key-value collections

@abstract @attr collection [Array<Hash>] array of key value hashes

Attributes

collection[RW]

Public Instance Methods

filter_collection(ignore_keys) click to toggle source

Filter collection keys

@returns [Array<Hash>] collection without ignored keys

# File lib/matter_compiler/blueprint.rb, line 102
def filter_collection(ignore_keys)
  return @collection if ignore_keys.blank?
  @collection.select { |kv_item| !ignore_keys.include?(kv_item.keys.first) }
end
load_ast!(ast) click to toggle source
# File lib/matter_compiler/blueprint.rb, line 75
def load_ast!(ast)
  return if ast.empty?
  @collection = Array.new
  ast.each do |item|
    @collection << Hash[item[:name].to_sym, item[:value]]
  end
end
serialize(level = 0, ignore_keys = nil) click to toggle source

Serialize key value collection node to a Markdown string buffer

@param ignore_keys [Array<String>] array of keys that should be ignored (skipped) during the serialization

# File lib/matter_compiler/blueprint.rb, line 86
def serialize(level = 0, ignore_keys = nil)
  buffer = ""
  @collection.each do |hash|
    unless ignore_keys && ignore_keys.include?(hash.keys.first)
      level.times { buffer << ONE_INDENTATION_LEVEL }
      buffer << "#{hash.keys.first}: #{hash.values.first}\n"
    end
  end

  buffer << "\n" unless buffer.empty?
  buffer
end