class Fig::PackageDefinitionTextAssembler

Used for building packages for publishing.

Attributes

input_statements[R]
output_statements[R]

Public Class Methods

new(emit_as_input_or_to_be_published_values) click to toggle source
# File lib/fig/package_definition_text_assembler.rb, line 16
def initialize(emit_as_input_or_to_be_published_values)
  @emit_as_input_or_to_be_published_values =
    emit_as_input_or_to_be_published_values

  @input_statements   = []
  @output_statements  = []
  @header_text        = []
  @footer_text        = []

  return
end

Public Instance Methods

add_header(text) click to toggle source

Argument can be a single string or an array of strings

# File lib/fig/package_definition_text_assembler.rb, line 52
def add_header(text)
  @header_text << text

  return
end
add_input(statements) click to toggle source

Argument can either be a single Statement or an array of them.

# File lib/fig/package_definition_text_assembler.rb, line 29
def add_input(statements)
  @input_statements << statements
  @input_statements.flatten!

  return
end
add_output(*statements) click to toggle source

Argument can either be a single Statement or an array of them.

# File lib/fig/package_definition_text_assembler.rb, line 37
def add_output(*statements)
  # Version gets determined by other statements, not by existing grammar.
  @output_statements <<
    statements.flatten.reject { |s| s.is_a? Fig::Statement::GrammarVersion }

  @output_statements.flatten!

  return
end
assemble_package_definition() click to toggle source
# File lib/fig/package_definition_text_assembler.rb, line 65
def assemble_package_definition()
  unparsed_statements, explanations = deparse_statements()
  definition =
    [@header_text, unparsed_statements, @footer_text].flatten.join("\n")
  definition.gsub!(/\n{3,}/, "\n\n")
  definition.strip!
  definition << "\n"

  return definition, explanations
end
asset_input_statements() click to toggle source
# File lib/fig/package_definition_text_assembler.rb, line 47
def asset_input_statements()
  return @input_statements.select { |statement| statement.is_asset? }
end

Private Instance Methods

deparse_statements() click to toggle source
# File lib/fig/package_definition_text_assembler.rb, line 78
def deparse_statements()
  deparser_class, explanations = Fig::Deparser.class_for_statements(
    @output_statements, @emit_as_input_or_to_be_published_values
  )

  grammar_statement =
    Fig::Statement::GrammarVersion.new(
      nil,
      %Q<[synthetic statement created in #{__FILE__} line #{__LINE__}]>,
      %q<Fake grammar version that shouldn't be used because the Deparser should determine what gets emitted.>
    )

  deparser = deparser_class.new @emit_as_input_or_to_be_published_values
  text = deparser.deparse( [grammar_statement] + @output_statements )

  explanations.unshift(
    "Publishing using the #{deparser.grammar_description} grammar."
  )

  return text, explanations
end