module BuildMatrixParser

Includes functions to parse build matrix strings into hashes and to compress them back into strings.'

Public Class Methods

format_matrix(env_matrix) click to toggle source
# File lib/spec_tiller/build_matrix_parser.rb, line 16
def format_matrix(env_matrix)
  content_env_matrix = []

  env_matrix.each do |var_hash|
    next if nil_or_empty?(var_hash)
    line = var_hash.map { |key, value| %(#{key}="#{value}") }.join(' ')

    content_env_matrix << line
  end

  content_env_matrix
end
nil_or_empty?(var_hash) click to toggle source
# File lib/spec_tiller/build_matrix_parser.rb, line 30
def self.nil_or_empty?(var_hash)
  return true if var_hash.empty? || var_hash['TEST_SUITE'].nil?
  var_hash['TEST_SUITE'].empty?
end
parse_env_matrix(content) click to toggle source
# File lib/spec_tiller/build_matrix_parser.rb, line 3
def parse_env_matrix(content)
  content['env']['matrix'].map do |matrix_line|
    if matrix_line.nil?
      {}
    else
      # Input: TEST_SUITE="spec/a.rb spec/b.rb" RUN_JS="true"
      # Output: { 'TEST_SUITE' => 'spec/a.rb spec/b.rb', 'RUN_JS' => 'true' }
      Hash[matrix_line.scan(/\s*([^=]+)="\s*([^"]+)"/)]
    end
  end
end

Private Instance Methods

format_matrix(env_matrix) click to toggle source
# File lib/spec_tiller/build_matrix_parser.rb, line 16
def format_matrix(env_matrix)
  content_env_matrix = []

  env_matrix.each do |var_hash|
    next if nil_or_empty?(var_hash)
    line = var_hash.map { |key, value| %(#{key}="#{value}") }.join(' ')

    content_env_matrix << line
  end

  content_env_matrix
end
parse_env_matrix(content) click to toggle source
# File lib/spec_tiller/build_matrix_parser.rb, line 3
def parse_env_matrix(content)
  content['env']['matrix'].map do |matrix_line|
    if matrix_line.nil?
      {}
    else
      # Input: TEST_SUITE="spec/a.rb spec/b.rb" RUN_JS="true"
      # Output: { 'TEST_SUITE' => 'spec/a.rb spec/b.rb', 'RUN_JS' => 'true' }
      Hash[matrix_line.scan(/\s*([^=]+)="\s*([^"]+)"/)]
    end
  end
end