class Kuroko2::Workflow::Task::Env

Public Instance Methods

execute() click to toggle source
# File lib/autoload/kuroko2/workflow/task/env.rb, line 6
def execute
  if option
    env = token.context['ENV'] || {}
    env.merge!(parse_option(option))

    token.context['ENV'] = env
  end

  :next
end
validate() click to toggle source
# File lib/autoload/kuroko2/workflow/task/env.rb, line 17
def validate
  parse_option(option)
end

Private Instance Methods

parse_option(option) click to toggle source
# File lib/autoload/kuroko2/workflow/task/env.rb, line 22
def parse_option(option)
  env = {}

  scanner = StringScanner.new(option)
  until scanner.eos?
    case
    when scanner.scan(/(\w+)="((?:\\"|.)*?)"/)
      env[scanner[1]] = scanner[2].gsub(/\\"/, '"')
    when scanner.scan(/(\w+)='((?:\\'|.)*?)'/)
      env[scanner[1]] = scanner[2].gsub(/\\'/, "'")
    when scanner.scan(/(\w+)=(\S+)/)
      env[scanner[1]] = scanner[2]
    when scanner.scan(/\s+/)
    else
      raise Workflow::AssertionError, "Syntax error option value of env: #{option}"
    end
  end

  env
end