Sha256: c47a499291147aee6e6f4dc7c470f6540cd8c2b235061ac8f9981f62cf5a3081

Contents?: true

Size: 1.57 KB

Versions: 15

Compression:

Stored size: 1.57 KB

Contents

# coding: utf-8

require 'fig/statement'

module Fig; end

# Specifies a default command that will be executed for a given Configuration
# if no command is specified on the command-line.
class Fig::Statement::Command < Fig::Statement
  attr_reader :command

  def self.validate_and_process_escapes_in_argument(
    command_line_argument, &block
  )
    tokenizer = Fig::StringTokenizer.new TOKENIZING_SUBEXPRESSION_MATCHER, '@'

    return tokenizer.tokenize command_line_argument, &block
  end

  def initialize(line_column, source_description, command)
    super(line_column, source_description)

    @command = command
  end

  def statement_type()
    return 'command'
  end

  def deparse_as_version(deparser)
    return deparser.command(self)
  end

  def minimum_grammar_for_emitting_input()
    return minimum_grammar()
  end

  def minimum_grammar_for_publishing()
    return minimum_grammar()
  end

  private

  def minimum_grammar()
    if command.size > 1
      return [1, 'contains multiple components']
    end

    argument = command.first.to_escaped_string

    # Can't have octothorpes anywhere in v0 due to comment stripping via
    # regex.
    if argument =~ /#/
      return [1, 'contains a comment ("#") character']
    end

    if argument =~ /"/
      return [1, %Q<contains a double quote>]
    end

    return [0]
  end

  TOKENIZING_SUBEXPRESSION_MATCHER = [
    {
      :pattern => %r< \@ [a-zA-Z0-9_.-]* >x,
      :action =>
        lambda {
          |subexpression, error_block|

          Fig::TokenizedString::Token.new :package_path, subexpression
        }
    }
  ]
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
fig-1.27.10 lib/fig/statement/command.rb
fig-1.27.8 lib/fig/statement/command.rb
fig-1.27.5 lib/fig/statement/command.rb
fig-1.27.4 lib/fig/statement/command.rb
fig-1.27.3 lib/fig/statement/command.rb
fig-1.27.0 lib/fig/statement/command.rb
fig-1.26.1.beta.1 lib/fig/statement/command.rb
fig-1.26.0 lib/fig/statement/command.rb
fig-1.25.1.beta.1 lib/fig/statement/command.rb
fig-1.25.0 lib/fig/statement/command.rb
fig-1.24.1.beta.3 lib/fig/statement/command.rb
fig-1.24.1.beta.2 lib/fig/statement/command.rb
fig-1.24.1.beta.1 lib/fig/statement/command.rb
fig-1.24.0 lib/fig/statement/command.rb
fig-1.23.1.beta.1 lib/fig/statement/command.rb