class MatterCompiler::Resource

Resource Blueprint AST node

represents 'resource section'

@attr uri_template [String] RFC 6570 URI template @attr model [Model] model payload for the resource or nil @attr parameters [Parameters] action-specific URI parameters or nil @attr actions [Array<Action>] array of resource actions or nil

Attributes

actions[RW]
model[RW]
parameters[RW]
uri_template[RW]

Public Instance Methods

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

  if ast[:uriTemplate].blank? || ast[:uriTemplate][0] != '/'
    failure_message = "Invalid input: A resource is missing URI template"
    failure_message << " ('#{ast[:name]}' resource)" unless ast[:name].blank?
    abort(failure_message);
  end

  @uri_template = ast[:uriTemplate]
  @model = Model.new(ast[:model]) unless ast[:model].blank?
  @parameters = Parameters.new(ast[:parameters]) unless ast[:parameters].blank?
  
  unless ast[:actions].blank?
    @actions = Array.new
    ast[:actions].each { |action_ast| @actions << Action.new(action_ast) }
  end
end
serialize() click to toggle source
# File lib/matter_compiler/blueprint.rb, line 493
def serialize
  buffer = ""
  if @name.blank?
    buffer << "## #{@uri_template}\n"
  else
    buffer << "## #{@name} [#{@uri_template}]\n"
  end

  buffer << "#{@description}" unless @description.blank?
  ensure_description_newlines(buffer)

  buffer << @model.serialize unless @model.nil?
  buffer << @parameters.serialize unless @parameters.nil?

  @actions.each { |action| buffer << action.serialize } unless @actions.nil?
  buffer
end