Sha256: c362044e1b837e123b1f3a065d1356fb1f5a659961d630ebbd190c548fc4645e

Contents?: true

Size: 775 Bytes

Versions: 60

Compression:

Stored size: 775 Bytes

Contents

# frozen_string_literal: true

module Krane
  class LabelSelector
    def self.parse(string)
      selector = {}

      string.split(',').each do |kvp|
        key, value = kvp.split('=', 2)

        if key.blank?
          raise ArgumentError, "key is blank"
        end

        if key.end_with?("!")
          raise ArgumentError, "!= selectors are not supported"
        end

        if value&.start_with?("=")
          raise ArgumentError, "== selectors are not supported"
        end

        selector[key] = value
      end

      new(selector)
    end

    def initialize(hash)
      @selector = hash
    end

    def to_h
      @selector
    end

    def to_s
      return "" if @selector.nil?
      @selector.map { |k, v| "#{k}=#{v}" }.join(",")
    end
  end
end

Version data entries

60 entries across 60 versions & 3 rubygems

Version Path
krane-2.4.5 lib/krane/label_selector.rb
krane-2.4.4 lib/krane/label_selector.rb
krane-2.4.3 lib/krane/label_selector.rb
krane-2.4.2 lib/krane/label_selector.rb
krane-2.4.1 lib/krane/label_selector.rb
krane-2.4.0 lib/krane/label_selector.rb
krane-2.3.7 lib/krane/label_selector.rb
krane-2.3.6 lib/krane/label_selector.rb
krane-2.3.5 lib/krane/label_selector.rb
krane-2.3.4 lib/krane/label_selector.rb
krane-2.3.3 lib/krane/label_selector.rb
krane-2.3.2 lib/krane/label_selector.rb
krane-2.3.1 lib/krane/label_selector.rb
krane-2.3.0 lib/krane/label_selector.rb
krane-2.2.0 lib/krane/label_selector.rb
krane-2.1.10 lib/krane/label_selector.rb
krane-2.1.9 lib/krane/label_selector.rb
krane-2.1.8 lib/krane/label_selector.rb
krane-2.1.7 lib/krane/label_selector.rb
krane-2.1.6 lib/krane/label_selector.rb