Sha256: d0346f34982e4c7bddca687d1dbbd0051b1abec0a42322db6acd6aadb58b9d45

Contents?: true

Size: 1.21 KB

Versions: 3

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

require 'extensobr'

# Extende a classe Integer adicionando o metodo por_extenso, por_extenso_moeda e por_extenso_numero
String.class_eval do
  # Um wapper para o metodo Extenso.numero ou Extenso.moeda
  # PARÂMETROS:
  # type (Symbol) O tipo especifico que deseja gerar
  #
  # Caso o tipo não seja informado é inferido primeiro tentando encontrar um padrão de Float
  # caso encontre ele supõe que o tipo é moeda. Caso contrario o tipo será numero.
  def por_extenso(*args)
    return por_extenso_numero(*args) if args.include? :numero

    return por_extenso_moeda(*args) if args.include? :moeda

    return por_extenso_ordinal(*args) if args.include? :ordinal

    number = scan(/\d+[,.]\d+/).first
    return por_extenso_moeda(*args) unless number.nil? || number.empty?

    por_extenso_numero(*args)
  end

  def por_extenso_moeda(*args)
    number = gsub('_', '').scan(/\d+[,.]\d+/).first
    params = args - [:moeda]
    Extenso.moeda(number.to_f, *params)
  end

  def por_extenso_numero(*args)
    number = scan(/\d/)&.join('')
    Extenso.numero(number&.to_i, *args)
  end

  def por_extenso_ordinal(*args)
    number = scan(/\d/)&.join('')
    Extenso.ordinal(number&.to_i, *args)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
extensobr-1.2.2 lib/core_exts/string.rb
extensobr-1.2.1 lib/core_exts/string.rb
extensobr-1.2.0 lib/core_exts/string.rb