Class: CommandMapper::Types::Hex
- Defined in:
- lib/command_mapper/types/hex.rb
Overview
Represents a hexadecimal value.
Instance Attribute Summary
Attributes inherited from Num
Instance Method Summary collapse
-
#format(value) ⇒ String
Formats the value.
-
#initialize(leading_zero: false, **kwargs) ⇒ Hex
constructor
Initializes the hex value.
-
#leading_zero? ⇒ Boolean
Indicates whether the hex value will start with
0x
or not. -
#validate(value) ⇒ true, (false, String)
Validates a value.
Constructor Details
#initialize(leading_zero: false, **kwargs) ⇒ Hex
Initializes the hex value.
19 20 21 22 23 |
# File 'lib/command_mapper/types/hex.rb', line 19 def initialize(leading_zero: false, **kwargs) super(**kwargs) @leading_zero = leading_zero end |
Instance Method Details
#format(value) ⇒ String
Formats the value.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/command_mapper/types/hex.rb', line 78 def format(value) case value when String if leading_zero? && !value.start_with?('0x') value = "0x#{value}" elsif (!leading_zero? && value.start_with?('0x')) value = value[2..] end value else value = value.to_i if leading_zero? "0x%x" % value else "%x" % value end end end |
#leading_zero? ⇒ Boolean
Indicates whether the hex value will start with 0x
or not.
32 33 34 |
# File 'lib/command_mapper/types/hex.rb', line 32 def leading_zero? @leading_zero end |
#validate(value) ⇒ true, (false, String)
Validates a value.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/command_mapper/types/hex.rb', line 48 def validate(value) case value when String unless value =~ /\A(?:0x)?[A-Fa-f0-9]+\z/ return [false, "not in hex format (#{value.inspect})"] end if @range unless @range.include?(value.to_i(16)) return [false, "unacceptable value (#{value.inspect})"] end end return true else super(value) end end |