Class: Rbkb::Cli::Hexify
- Inherits:
-
Executable
- Object
- Executable
- Rbkb::Cli::Hexify
- Defined in:
- lib/rbkb/cli/hexify.rb
Overview
Copyright 2009 emonti at matasano.com See README.rdoc for license information
The hexify command converts a string or raw data to hex characters. Input can be supplied via stdin, a string argument, or a file (with -f).
Instance Attribute Summary
Attributes inherited from Executable
#argv, #exit_status, #oparse, #opts, #stderr, #stdin, #stdout
Instance Method Summary collapse
Methods inherited from Executable
#bail, #bail_args, #exit, #initialize, run
Constructor Details
This class inherits a constructor from Rbkb::Cli::Executable
Instance Method Details
#go(*args) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/rbkb/cli/hexify.rb', line 47 def go(*args) super(*args) # Default to standard input @opts[:indat] ||= @stdin.read indat = @opts.delete(:indat) len = @opts.delete(:len) || indat.length bail('Length must be greater than zero') unless len > 0 until (m = indat.slice!(0..len - 1)).empty? @stdout << m.hexify(@opts) @stdout.puts((opts[:delim] and !indat.empty?) ? opts[:delim] : "\n") end self.exit(0) end |
#make_parser ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/rbkb/cli/hexify.rb', line 9 def make_parser super() add_std_file_opt(:indat) arg = @oparse # Add local options arg. += ' <data | blank for stdin>' arg.on('-l', '--length LEN', Numeric, 'Output lines of LEN bytes') do |l| @opts[:len] = l end arg.on('-d', '--delim=DELIMITER', 'DELIMITER between each byte') do |d| @opts[:delim] = d end arg.on('-p', '--prefix=PREFIX', 'PREFIX before each byte') do |p| @opts[:prefix] = p end arg.on('-s', '--suffix=SUFFIX', 'SUFFIX after each byte') do |s| @opts[:suffix] = s end end |
#parse(*args) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rbkb/cli/hexify.rb', line 34 def parse(*args) super(*args) # blackbag-style space delimiter compatability if @argv[0] == '+' and @opts[:delim].nil? @opts[:delim] = ' ' @argv.shift end parse_string_argument(:indat) parse_catchall end |