class MatterCompiler::Payload

HTTP message payload Blueprint AST node

base class for 'payload sections'

@abstract @attr parameters [Array] ignored @attr headers [Array<Headers>] array of HTTP header fields of the message or nil @attr body [String] HTTP-message body or nil @attr schema [String] HTTP-message body validation schema or nil

Attributes

body[RW]
headers[RW]
parameters[RW]
schema[RW]

Public Instance Methods

load_ast!(ast) click to toggle source
# File lib/matter_compiler/blueprint.rb, line 279
def load_ast!(ast)
  super(ast)

  @headers = Headers.new(ast[:headers]) unless ast[:headers].blank?
  @body = ast[:body] unless ast[:body].blank?
  @schema = ast[:schema] unless ast[:schema].blank?
end
serialize() click to toggle source
# File lib/matter_compiler/blueprint.rb, line 287
def serialize
  # Name is serialized in Payload successors
  buffer = ""

  unless @description.blank?
    buffer << "\n"
    @description.each_line { |line| buffer << "#{ONE_INDENTATION_LEVEL}#{line}" }
    buffer << "\n"
  end

  unless @headers.blank?
    buffer << @headers.serialize(1, [Headers::CONTENT_TYPE_HEADER_KEY])
  end

  unless @body.blank?
    abbreviated_synax = (headers.blank? || headers.filter_collection([Headers::CONTENT_TYPE_HEADER_KEY]).blank?) \
                          & description.blank? \
                          & schema.blank?
    asset_indent_level = 2
    unless abbreviated_synax
      asset_indent_level = 3
      buffer << "#{ONE_INDENTATION_LEVEL}+ Body\n"
    end
    buffer << "\n"

    got_new_line = false
    @body.each_line do |line| 
      asset_indent_level.times { buffer << ONE_INDENTATION_LEVEL }
      buffer << "#{line}"
      got_new_line = line[-1, 1] == "\n"
    end
  
    buffer << "\n" unless got_new_line
    buffer << "\n"
  end

  unless @schema.blank?
    buffer << "#{ONE_INDENTATION_LEVEL}+ Schema\n\n"

    got_new_line = false
    @schema.each_line do |line| 
      3.times { buffer << ONE_INDENTATION_LEVEL }
      buffer << "#{line}"
      got_new_line = line[-1, 1] == "\n"
    end 

    buffer << "\n" unless got_new_line
    buffer << "\n"
  end

  buffer << "\n" if buffer.empty? # Separate empty payloads by a newline

  buffer
end
serialize_definition(section, ignore_name = false) click to toggle source

Serialize payaload's definition (lead-in)

@param section [String] section type keyword @param ignore_name [Boolean] object to ignore section name in serialization, false otherwise @return [String] buffer with serialized section definition

# File lib/matter_compiler/blueprint.rb, line 347
def serialize_definition(section, ignore_name = false)
  buffer = ""
  buffer << "+ #{section}"
  buffer << " #{@name}" unless ignore_name || @name.blank? 

  unless @headers.blank? || @headers.content_type.blank?
    buffer << " (#{@headers.content_type})"
  end

  buffer << "\n"
end