class Digitalbits::TrustLineFlags

Public Class Methods

make_mask(flags) click to toggle source

Converts an array of Digitalbits::TrustLineFlags members into an integers suitable for use in in a SetTrustLineFlagsOp.

@param flags [Array<Digitalbits::TrustLineFlags>] the flags to combine

@return [Fixnum] the combined result

# File lib/digitalbits/trust_line_flags.rb, line 9
def self.make_mask(flags)
  normalize(flags).map(&:value).inject(&:|) || 0
end
normalize(input) click to toggle source

Converts each element of the input array to Digitalbits::TrustLineFlags instance.

@param [Array<Digitalbits::TrustLineFlags,Symbol,#to_s>] input @return [Array<Digitalbits::TrustLineFlags>] @raise [TypeError] if any element of the input cannot be converted

# File lib/digitalbits/trust_line_flags.rb, line 27
def self.normalize(input)
  input.map do |val|
    case val
    when Digitalbits::TrustLineFlags
      val
    when ->(_) { members.key?(val.to_s) }
      from_name(val.to_s)
    when ->(_) { members.key?("#{val}_flag") }
      from_name("#{val}_flag")
    else
      raise TypeError, "unknown trustline flag: #{val}"
    end
  end
end
parse_mask(combined) click to toggle source

Converts an integer used in SetTrustLineFlagsOp on the set/clear flag options into an array of Digitalbits::TrustLineFlags members

@param combined [Fixnum]
@return [Array<Digitalbits::AccountFlags>]
# File lib/digitalbits/trust_line_flags.rb, line 18
def self.parse_mask(combined)
  members.values.select { |m| (m.value & combined) != 0 }
end
set_clear_masks(flags) click to toggle source
# File lib/digitalbits/trust_line_flags.rb, line 42
def self.set_clear_masks(flags)
  set_flags = []
  clear_flags = []

  Hash(flags).each do |flag, value|
    value.present? ? set_flags.push(flag) : clear_flags.push(flag)
  end

  {set_flags: make_mask(set_flags), clear_flags: make_mask(clear_flags)}
end