Class: Origami::Filter::ASCIIHex
- Inherits:
-
Object
- Object
- Origami::Filter::ASCIIHex
- Includes:
- Origami::Filter
- Defined in:
- lib/origami/filters/ascii.rb
Overview
Class representing a filter used to encode and decode data written into hexadecimal.
Constant Summary collapse
- EOD =
:nodoc:
">"
Constants included from Origami::Filter
Instance Method Summary collapse
-
#decode(string) ⇒ Object
Decodes given data writen into upcase hexadecimal representation.
-
#encode(stream) ⇒ Object
Encodes given data into upcase hexadecimal representation.
Methods included from Origami::Filter
Instance Method Details
#decode(string) ⇒ Object
Decodes given data writen into upcase hexadecimal representation.
- string
-
The data to decode.
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/origami/filters/ascii.rb', line 48 def decode(string) input = string.include?(EOD) ? string[0...string.index(EOD)] : string digits = input.delete(" \f\t\r\n\0") # Ensure every digit is in the hexadecimal charset. unless digits =~ /^\h*$/ digits = digits.match(/^\h*/).to_s raise InvalidASCIIHexStringError.new("Invalid characters", input_data: string, decoded_data: [ digits ].pack('H*')) end [ digits ].pack "H*" end |
#encode(stream) ⇒ Object
Encodes given data into upcase hexadecimal representation.
- stream
-
The data to encode.
40 41 42 |
# File 'lib/origami/filters/ascii.rb', line 40 def encode(stream) stream.unpack("H*").join.upcase end |