class MatterCompiler::Parameter

URI parameter Blueprint AST node

represents one 'parameters section' parameter

@attr type [String] an arbitrary type of the parameter or nil @attr use [Symbol] parameter necessity flag, `:required` or `:optional` @attr default_value [String] default value of the parameter or nil

This is a value used when the parameter is ommited in the request.

@attr example_value [String] example value of the parameter or nil @attr values [Array<String>] an enumeration of possible parameter values

Attributes

default_value[RW]
example_value[RW]
type[RW]
use[RW]
values[RW]

Public Instance Methods

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

  @type = ast[:type] if ast[:type]
  @use = (ast[:required] && ast[:required] == true) ? :required : :optional
  @default_value = ast[:default] if ast[:default]
  @example_value = ast[:example] if ast[:example]
  
  unless ast[:values].blank?
    @values = Array.new
    ast[:values].each do |item| 
      @values << item[:value]
    end
  end
end
serialize() click to toggle source
# File lib/matter_compiler/blueprint.rb, line 169
def serialize
  # Parameter name
  buffer = "#{ONE_INDENTATION_LEVEL}+ #{@name}"

  # Default value
  buffer << " = `#{@default_value}`" if @default_value    

  # Attributes
  unless @type.blank? && @example_value.blank? && @use == :required
    attribute_buffer = ""
    
    buffer << " ("
    
    # Type
    attribute_buffer << @type unless @type.blank?

    # Use
    if (@use == :optional)
      attribute_buffer << ", " unless attribute_buffer.empty?
      attribute_buffer << "optional"
    end

    # Example value
    unless (@example_value.blank?)
      attribute_buffer << ", " unless attribute_buffer.empty?
      attribute_buffer << "`#{@example_value}`"
    end

    buffer << attribute_buffer
    buffer << ")"
  end

  # Description
  if @description.blank?
    buffer << "\n"        
  else
    if @description.lines.count == 1
      # One line description
      buffer << " ... #{@description}"
      buffer << "\n" if @description[-1, 1] != "\n" # Additional newline needed if no provided
    else 
      # Multi-line description
      buffer << "\n\n"
      @description.each_line do |line|
        2.times { buffer << ONE_INDENTATION_LEVEL }
        buffer << "#{line}"
      end
    end
  end

  # Value
  unless @values.blank?
    buffer << "\n"
    2.times { buffer << ONE_INDENTATION_LEVEL }
    buffer << "+ Values\n"
    @values.each do |value|
      3.times { buffer << ONE_INDENTATION_LEVEL }
      buffer << "+ `#{value}`\n" 
    end
  end

  buffer
end