Skip to content

Commit

Permalink
Update to support Persian numbers
Browse files Browse the repository at this point in the history
  • Loading branch information
hctilg committed Sep 10, 2023
1 parent 510a2eb commit 8363218
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 5 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ if (!file_exists("number-to-text.php")) {
}

// require Library.
$number_to_text = require_once('number_to_text.php');
$number_to_text = require_once('number-to-text.php');

$input = '<Your Number>';

Expand Down
17 changes: 17 additions & 0 deletions number-to-text.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,32 @@ function number_clean($number, $decimal = false) {
return $number;
}

/**
* raplace chras
* @param string $string
* @param array $old
* @param array $new
* @return string
*/
function replace_chars(string $string, array $old, array $new) {
if (count($old) !== count($new)) throw new LengthException("Number of elements in lists don't match.", 1);
foreach ($old as $index => $char) $string = str_replace($char, $new[$index], $string);
return $string;
}

/**
* converts numbers to persian text.
* @param string|int|float $number
* @return string
*/
function number_to_text($number) {

// strip whitespace
$number = trim("$number");

//
$number = replace_chars($number, str_split('۰۱۲۳۴۵۶۷۸۹', 2), str_split('0123456789', 1));

if (!number_validator($number)) {
throw new Exception('parameter type `number` is not a number.', 400);
}
Expand Down
8 changes: 4 additions & 4 deletions test.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

$number_to_text = require_once('number_to_text.php');
$number_to_text = require_once('number-to-text.php');

if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
$test_cases = [];
Expand All @@ -18,7 +18,7 @@
'10000'=> 'ده هزار',
'01000'=> 'یک هزار',
'100.003'=> 'صد و سه هزارم',
'00100.00100'=> 'صد و یک هزارم'
'-۷.۱۱'=> 'منفی هفت و یازده صدم'
] as $input => $output) $test_cases[] = [
'input'=> $input,
'output'=> $output
Expand Down Expand Up @@ -138,13 +138,13 @@
document.getElementById('number').onkeyup = ev => {
var number = (ev.srcElement || ev.target).value ?? '';
var number_text = document.getElementById('number_text');
if (number.trim() === '' || !(new RegExp(/^[\-0\.123456789]+$/).test(number))) {
if (number.trim() === '' || !(new RegExp(/^[\-0\.123456789۰۱۲۳۴۵۶۷۸۹]+$/).test(number))) {
number_text.innerText = 'عدد مورد نظر خود را وارد کنید.';
return;
}
const formData = new FormData();
formData.append('number', number);
fetch('number_to_text.php', { method: 'POST', body: formData })
fetch('number-to-text.php', { method: 'POST', body: formData })
.then(response => response.json())
.then(data => {
if (!!data.ok) {
Expand Down

0 comments on commit 8363218

Please sign in to comment.