Module: AdequateCryptoAddress

Defined in:
lib/adequate_crypto_address.rb,
lib/adequate_crypto_address/ada.rb,
lib/adequate_crypto_address/bch.rb,
lib/adequate_crypto_address/btc.rb,
lib/adequate_crypto_address/eth.rb,
lib/adequate_crypto_address/ltc.rb,
lib/adequate_crypto_address/sol.rb,
lib/adequate_crypto_address/ton.rb,
lib/adequate_crypto_address/trx.rb,
lib/adequate_crypto_address/xlm.rb,
lib/adequate_crypto_address/xmr.rb,
lib/adequate_crypto_address/xrp.rb,
lib/adequate_crypto_address/xtz.rb,
lib/adequate_crypto_address/zec.rb,
lib/adequate_crypto_address/atom.rb,
lib/adequate_crypto_address/dash.rb,
lib/adequate_crypto_address/doge.rb,
lib/adequate_crypto_address/altcoin.rb,
lib/adequate_crypto_address/version.rb,
lib/adequate_crypto_address/utils/bch.rb,
lib/adequate_crypto_address/utils/xlm.rb,
lib/adequate_crypto_address/utils/bech32.rb,
lib/adequate_crypto_address/utils/monero_base58.rb

Defined Under Namespace

Modules: Utils Classes: Ada, Altcoin, Atom, Bch, Bsc, Btc, Dash, Doge, Eth, InvalidAddress, Ltc, Sol, Ton, Trx, UnknownCurrency, Xlm, Xmr, Xrp, Xtz, Zec

Constant Summary collapse

Cardano =
Ada
Bitcoincash =
Bch
Bitcoin =
Btc
Ethereum =
Eth
Binancesmartchain =
Bsc
Litecoin =
Ltc
Solana =
Sol
Toncoin =
Ton
Tron =
Trx
Stellar =
Xlm
Monero =
Xmr
Ripple =
Xrp
Tezos =
Xtz
Zcash =
Zec
Cosmos =
Atom
Dogecoin =
Doge
VERSION =
'0.3.0'

Class Method Summary collapse

Class Method Details

.address(address, currency) ⇒ Object

Raises:



34
35
36
37
38
39
# File 'lib/adequate_crypto_address.rb', line 34

def address(address, currency)
  klass = currency_class(currency)
  raise UnknownCurrency, "Wrong currency #{currency}" unless klass

  klass.new(address)
end

.address_type(address, currency) ⇒ Object

Public contract: returns the detected address type as a Symbol when the address is valid for the currency, or nil when it is not.



43
44
45
# File 'lib/adequate_crypto_address.rb', line 43

def address_type(address, currency)
  address(address, currency).address_type
end

.currency_class(currency) ⇒ Object

Resolve a currency name (string or symbol, any case) to its validator class. Only classes defined directly on this module that implement the validator interface are eligible, so malformed input can never be mistaken for a currency and NoMethodError is never swallowed as UnknownCurrency.



51
52
53
54
55
56
57
58
59
# File 'lib/adequate_crypto_address.rb', line 51

def currency_class(currency)
  const_name = currency.to_s.capitalize
  return nil unless const_defined?(const_name, false)

  klass = const_get(const_name)
  return nil unless klass.is_a?(Class) && klass.method_defined?(:valid?)

  klass
end

.valid?(address, currency, type = nil) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/adequate_crypto_address.rb', line 30

def valid?(address, currency, type = nil)
  address(address, currency).valid?(type)
end