lib/cardano_wallet/utils.rb in cardano_wallet-0.3.26 vs lib/cardano_wallet/utils.rb in cardano_wallet-0.3.27

- old
+ new

@@ -2,9 +2,54 @@ module CardanoWallet ## # General Utils not connected to API module Utils + def self.new(opt) + Init.new opt + end + + # Init + class Init < Base + # Generate mnemonic sentence + # + # @example Default 24-word English mnemonic sentence + # CardanoWallet.new.utils.mnemonic_sentence + # ["kiwi", "rent", "denial",...] + # + # @example 15-word French mnemonic sentence + # CardanoWallet.new.utils.mnemonic_sentence(15, 'french') + # ["ruser", "malaxer", "forgeron",...] + def mnemonic_sentence(word_count = 24, language = 'english') + languages = %w[english french spanish korean japanese + italian chinese_traditional chinese_simplified] + unless languages.include?(language) + raise ArgumentError, + %(Not supported language: '#{language}'. Supported languages are: #{languages}.) + end + + words = [9, 12, 15, 18, 21, 24] + case word_count + when 9 + bits = 96 + when 12 + bits = 128 + when 15 + bits = 164 + when 18 + bits = 196 + when 21 + bits = 224 + when 24 + bits = 256 + else + raise ArgumentError, + %(Not supported count of words #{word_count}. Supported counts are: #{words}.) + end + BipMnemonic.to_mnemonic(bits: bits, language: language).split + end + end + def self.verify_param_is_hash!(param) raise ArgumentError, 'argument should be Hash' unless param.is_a?(Hash) end def self.verify_param_is_array!(param)