class Stellar::TrustLineFlags
Public Class Methods
make_mask(flags)
click to toggle source
Converts an array of Stellar::TrustLineFlags
members into an integers suitable for use in in a SetTrustLineFlagsOp
.
@param flags [Array<Stellar::TrustLineFlags>] the flags to combine
@return [Fixnum] the combined result
# File lib/stellar/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 Stellar::TrustLineFlags
instance.
@param [Array<Stellar::TrustLineFlags,Symbol,#to_s>] input @return [Array<Stellar::TrustLineFlags>] @raise [TypeError] if any element of the input cannot be converted
# File lib/stellar/trust_line_flags.rb, line 27 def self.normalize(input) input.map do |val| case val when Stellar::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 Stellar::TrustLineFlags
members
@param combined [Fixnum] @return [Array<Stellar::AccountFlags>]
# File lib/stellar/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/stellar/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