module ToAkshar

require“active_support”

Constants

DIVISIONS
SMALL_NUMBERS

Public Instance Methods

check_sign(num) click to toggle source
# File lib/akshar.rb, line 93
def check_sign(num)
    return num < 0 ? ([num.abs, 'ॠणात्मक ']) : ([num, ''])
end
result_below_one_thousand(num, counter) click to toggle source
# File lib/akshar.rb, line 84
def result_below_one_thousand(num, counter)
    hundred, remaining = num.divmod(100)
    #return SMALL_NUMBERS[hundred] + " सय " + SMALL_NUMBERS[remaining]     if hundred != 0 && remaining != 0 && counter != 0
    return SMALL_NUMBERS[hundred] + "सय " + SMALL_NUMBERS[remaining] if hundred != 0 && remaining != 0
    return SMALL_NUMBERS[remaining]                                            if hundred == 0 && remaining != 0
    return SMALL_NUMBERS[hundred] + "सय "                                if hundred != 0 && remaining == 0
    return ''
end
to_akshar() click to toggle source
# File lib/akshar.rb, line 10
def to_akshar
    #return "रुपैयाँ  " + self.to_nepali + " मात्र । "
    if (self.to_nepali == false )
        result = "Impossible Number | Check your Input"
        else
        result =  "रुपैयाँ " + self.to_nepali + "मात्र।"
    end
    
    result = result.gsub("रुपैयाँ मात्र।", 'रुपैयाँ शुन्य मात्र।')
    
    #return result.gsub(", पैसा मात्र।", 'मात्र।')
    result = result.gsub(", पैसा मात्र"," मात्र")
    result = result.gsub(" , ",", ")
    result = result.gsub("   ",' ')
    #result = result.gsub(", पैसा  शुन्य", '')
    #return result.gsub("रुपैयाँ  मात्र ।", 'रुपैयाँ शुन्य मात्र ।')
    result = result.gsub("  ",' ')
    return result.gsub("रुपैयाँ मात्र।",'रुपैयाँ शुन्य मात्र।')
    
end
to_nepali() click to toggle source
# File lib/akshar.rb, line 31
def to_nepali
    
    
    string = self.to_s.gsub(/\s+/, "")
    
    decimalcheck =  string.index('.')
    if (decimalcheck != nil )
        #return "Decimal Number Detected" + decimalcheck.to_s
        paisa =  string[decimalcheck+1 .. decimalcheck+2 ]
        else
        paisa = ""
    end
    num = self.to_i
    num, sign = check_sign(num)
    return "" if num == 0 && paisa ==""
    return (sign + SMALL_NUMBERS[num])+ ", पैसा " + paisa.to_i.to_nepali if num <= 100
    counter = 0
    result = []
    while num != 0
        if (num > 10000000000000000)
            return false
            elsif ((num / 1000000000000000) >= 1)
            test , remaining  = num.divmod(1000000000000000)
            return ((sign + SMALL_NUMBERS[test]) +"पद्म "+ (remaining.to_s+ "."+ paisa).to_nepali )
            elsif ((num / 10000000000000) >= 1)
            test , remaining  = num.divmod(10000000000000)
            return ((sign + SMALL_NUMBERS[test]) +"नील "+ (remaining.to_s+"."+paisa).to_nepali )
            elsif ((num / 100000000000) >= 1)
            test , remaining  = num.divmod(100000000000)
            return ((sign + SMALL_NUMBERS[test]) +"खर्ब "+ (remaining.to_s+"."+paisa).to_nepali )
            elsif ((num / 1000000000) >= 1)
            test , remaining  = num.divmod(1000000000)
            return ((sign + SMALL_NUMBERS[test]) +"अर्ब "+ (remaining.to_s+"."+paisa).to_nepali )
            elsif ((num / 10000000) >= 1)
            test , remaining  = num.divmod(10000000)
            return ((sign + SMALL_NUMBERS[test]) +"करोड "+ (remaining.to_s+"."+paisa).to_nepali )
            elsif ((num / 100000) >= 1)
            test , remaining  = num.divmod(100000)
            return ((sign + SMALL_NUMBERS[test]) +"लाख "+ (remaining.to_s+"."+paisa).to_nepali )
            
        end
        
        num, remaining = num.divmod(1000)
        
        temp_result = result_below_one_thousand(remaining, counter)
        result << temp_result + "" + DIVISIONS[counter] + " " if temp_result != ''
        counter += 1
    end
    return sign + result.reverse.join("").rstrip + ", पैसा " + paisa.to_i.to_nepali
end