| ############################################################################### |
| # Copyright (c) 2005, 2007 IBM Corporation and others. |
| # |
| # This program and the accompanying materials are made available under the |
| # terms of the Eclipse Public License v. 2.0 which is available at |
| # http://www.eclipse.org/legal/epl-2.0. |
| # |
| # SPDX-License-Identifier: EPL-2.0 |
| # |
| |
| ############################################################################### |
| |
| require 'base64' |
| |
| module XoredDebugger |
| |
| class Command |
| attr_reader :name, :data, :transaction_id |
| |
| def initialize(command) |
| @command = command |
| if (@command =~ /(\w+)\s(.+)--(.*)/) |
| @name = $1 |
| @args = $2 |
| @data = Base64.decode64($3.to_s.strip) |
| elsif (@command =~ /(\w+)\s(.+)/) |
| @name = $1 |
| @args = $2 |
| @data = nil |
| end |
| |
| parse_args |
| @transaction_id = arg('-i') |
| end |
| |
| |
| def arg_with_default(name, default) |
| value = self.arg(name) |
| value.nil? ? default : value |
| end |
| |
| def arg(name) |
| @arg_map[name] |
| end |
| |
| def args |
| @arg_map |
| end |
| |
| def to_s |
| @command |
| end |
| |
| private |
| def parse_args |
| @arg_map = {} |
| name = nil |
| @args.split.each { |token| |
| if (name.nil?) |
| name = token |
| else |
| @arg_map[name] = token |
| name = nil |
| end |
| } |
| end |
| end # class Command |
| |
| end # module |