Sha256: cf5b8a2640e1be02f30ffb1d40c7297c1318c2d0cba0128d4a2c2c2829d2343f

Contents?: true

Size: 800 Bytes

Versions: 1

Compression:

Stored size: 800 Bytes

Contents

require 'gpg_status_parser/status_codes'
require 'gpg_status_parser/arguments'

module GPGStatusParser

  class NotGPGStatus < StandardError
  end

  class InvalidStatus < StandardError
  end

  class StatusMessage
    COMMAND_REGEXP = /^\[GNUPG:\] ([^ ]+)(?: (.*))?$/

    attr_reader :status, :args
    
    def initialize status_string
      match = COMMAND_REGEXP.match(status_string)
      raise NotGPGStatus if match.nil?

      @status = match[1].intern
      raise InvalidStatus if !STATUS_CODES.keys.include?(@status)

      expected_arg_string = GPGStatusParser::STATUS_CODES[@status]
      expected_args = GPGStatusParser::Arguments.extract_expected_arguments(expected_arg_string)
      @args = GPGStatusParser::Arguments.extract_argument_values(expected_args, match[2])
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gpg_status_parser-0.2.0 lib/gpg_status_parser/status_message.rb