Пример #1
0
 def test_fractions(self):
     assert_equal = self.assertEqual
     assert_equal(words(Fraction(16, -10)), 'منفی هشت پنجم')
     assert_equal(words(Fraction(Decimal('1.1'))), 'یازده دهم')
     assert_equal(words('-8/4'), 'منفی هشت چهارم')
     assert_equal(words(Fraction(0, 1)), 'صفر یکم')
     assert_equal(words('0/1'), 'صفر یکم')
Пример #2
0
 def test_fractions(self):
     assert_equal = self.assertEqual
     assert_equal(words(Fraction(16, -10)), 'منفی هشت پنجم')
     assert_equal(words(Fraction(Decimal('1.1'))), 'یازده دهم')
     assert_equal(words('-8/4'), 'منفی هشت چهارم')
     assert_equal(words(Fraction(0, 1)), 'صفر یکم')
     assert_equal(words('0/1'), 'صفر یکم')
Пример #3
0
 def test_scientific_separator(self):
     assert_equal = self.assertEqual
     assert_equal(
         words(1.1e-9, scientific_separator=' ضربدر ده به قوهٔ '),
         'یک و یک دهم ضربدر ده به قوهٔ منفی نه',
     )
     assert_equal(
         words('1.1e-9', scientific_separator=' ضربدر ده به قوهٔ '),
         'یک و یک دهم ضربدر ده به قوهٔ منفی نه',
     )
Пример #4
0
 def test_decimal_input(self):
     self.assertEqual(words(Decimal('3.0')), 'سه')
     self.assertEqual(words(Decimal('-3.14')), 'منفی سه و چهارده صدم')
     # Let's go beyond floats
     beyond_float = words(Decimal(str(pi) + '238'))
     self.assertNotEqual(beyond_float, words(pi))
     self.assertTrue(beyond_float.endswith(''))
     # Decimal(float('1.1'))
     # == Decimal('1.100000000000000088817841970012523233890533447265625')
     self.assertRaises(ValueError, words, Decimal(1.1))
Пример #5
0
 def test_scientific_separator(self):
     assert_equal = self.assertEqual
     assert_equal(
         words(1.1e-9, scientific_separator=' ضربدر ده به قوهٔ '),
         'یک و یک دهم ضربدر ده به قوهٔ منفی نه',
     )
     assert_equal(
         words('1.1e-9', scientific_separator=' ضربدر ده به قوهٔ '),
         'یک و یک دهم ضربدر ده به قوهٔ منفی نه',
     )
Пример #6
0
 def test_decimal_input(self):
     self.assertEqual(words(Decimal('3.0')), 'سه')
     self.assertEqual(words(Decimal('-3.14')), 'منفی سه و چهارده صدم')
     # Let's go beyond floats
     beyond_float = words(Decimal(str(pi) + '238'))
     self.assertNotEqual(beyond_float, words(pi))
     self.assertTrue(beyond_float.endswith(''))
     # Decimal(float('1.1'))
     # == Decimal('1.100000000000000088817841970012523233890533447265625')
     self.assertRaises(ValueError, words, Decimal(1.1))
Пример #7
0
 def test_positive(self):
     assert_equal = self.assertEqual
     assert_equal(words(0, positive='مثبت '), 'صفر')
     assert_equal(words(7, positive='مثبت '), 'مثبت هفت')
     assert_equal(
         words(Fraction('1/2'), positive='مثبت '),
         'مثبت یک دوم',
     )
     assert_equal(
         words('1.1e+9', positive='مثبت '),
         'مثبت یک و یک دهم در ده به توان مثبت نه',
     )
     assert_equal(
         words(1.1e+9, positive='مثبت '),  # str(-1.1e+9) == 1100000000.0
         'مثبت یک میلیارد و یکصد میلیون',
     )
Пример #8
0
 def test_positive(self):
     assert_equal = self.assertEqual
     assert_equal(words(0, positive='مثبت '), 'صفر')
     assert_equal(words(7, positive='مثبت '), 'مثبت هفت')
     assert_equal(
         words(Fraction('1/2'), positive='مثبت '),
         'مثبت یک دوم',
     )
     assert_equal(
         words('1.1e+9', positive='مثبت '),
         'مثبت یک و یک دهم در ده به توان مثبت نه',
     )
     assert_equal(
         words(1.1e+9, positive='مثبت '),  # str(-1.1e+9) == 1100000000.0
         'مثبت یک میلیارد و یکصد میلیون',
     )
Пример #9
0
 def test_scientific_fraction_separator(self):
     assert_equal = self.assertEqual
     assert_equal(
         words('1/2',
               fraction_separator=' تقسیم بر ',
               ordinal_denominator=False),
         'یک تقسیم بر دو',
     )
     assert_equal(
         words(
             Fraction(1, 2),
             fraction_separator=' تقسیم بر ',
             ordinal_denominator=False,
         ),
         'یک تقسیم بر دو',
     )
Пример #10
0
 def test_scientific_fraction_separator(self):
     assert_equal = self.assertEqual
     assert_equal(
         words(
             '1/2',
             fraction_separator=' تقسیم بر ',
             ordinal_denominator=False
         ),
         'یک تقسیم بر دو',
     )
     assert_equal(
         words(
             Fraction(1, 2),
             fraction_separator=' تقسیم بر ',
             ordinal_denominator=False,
         ),
         'یک تقسیم بر دو',
     )
Пример #11
0
 def test_fraction_separator(self):
     assert_equal = self.assertEqual
     assert_equal(
         words(
             '1/2',
             fraction_separator=' تقسیم بر ',
             ordinal_denominator=False,
         ),
         'یک تقسیم بر دو',
     )
     assert_equal(
         words(
             Fraction(4, -8),
             negative='منهای ',
             fraction_separator=' تقسیم بر ',
             ordinal_denominator=False,
         ),
         'منهای یک تقسیم بر دو',
     )
Пример #12
0
 def test_fraction_separator(self):
     assert_equal = self.assertEqual
     assert_equal(
         words(
             '1/2',
             fraction_separator=' تقسیم بر ',
             ordinal_denominator=False,
         ),
         'یک تقسیم بر دو',
     )
     assert_equal(
         words(
             Fraction(4, -8),
             negative='منهای ',
             fraction_separator=' تقسیم بر ',
             ordinal_denominator=False,
         ),
         'منهای یک تقسیم بر دو',
     )
Пример #13
0
 def test_str_input(self):
     assert_equal = self.assertEqual
     assert_equal(words('42'), 'چهل و دو')
     assert_equal(words('\t\n 42 \n\t'), 'چهل و دو')
     assert_equal(words('3.14'), 'سه و چهارده صدم')
     assert_equal(words('+1.1', positive='مثبت '), 'مثبت یک و یک دهم')
     assert_equal(words('1e2'), 'یک در ده به توان دو')
     assert_equal(words('1E2'), 'یک در ده به توان دو')
Пример #14
0
 def test_str_input(self):
     assert_equal = self.assertEqual
     assert_equal(words('42'), 'چهل و دو')
     assert_equal(words('\t\n 42 \n\t'), 'چهل و دو')
     assert_equal(words('3.14'), 'سه و چهارده صدم')
     assert_equal(words('+1.1', positive='مثبت '), 'مثبت یک و یک دهم')
     assert_equal(words('1e2'), 'یک در ده به توان دو')
     assert_equal(words('1E2'), 'یک در ده به توان دو')
Пример #15
0
 def test_change_defaults(self):
     assert_equal = self.assertEqual
     change_defaults('مثبت ', 'منهای ')
     assert_equal(words('-۹'), 'منهای نه')
     assert_equal(words('+۹'), 'مثبت نه')
     change_defaults(decimal_separator=' ممیز ')
     assert_equal(words(1.1), 'مثبت یک ممیز یک دهم')
     change_defaults(fraction_separator=' روی ', ordinal_denominator=False)
     assert_equal(words('-1/10'), 'منهای یک روی ده')
     change_defaults(scientific_separator=' در ده به نمای ')
     assert_equal(words('1e2'), 'مثبت یک در ده به نمای مثبت دو')
     # Back to default
     change_defaults('', 'منفی ', ' و ', ' ', True, ' در ده به توان ')
     assert_equal(words(1.1), 'یک و یک دهم')
     assert_equal(words('1/2'), 'یک دوم')
     assert_equal(words('1e2'), 'یک در ده به توان دو')
Пример #16
0
 def test_change_defaults(self):
     assert_equal = self.assertEqual
     change_defaults('مثبت ', 'منهای ')
     assert_equal(words('-۹'), 'منهای نه')
     assert_equal(words('+۹'), 'مثبت نه')
     change_defaults(decimal_separator=' ممیز ')
     assert_equal(words(1.1), 'مثبت یک ممیز یک دهم')
     change_defaults(fraction_separator=' روی ', ordinal_denominator=False)
     assert_equal(words('-1/10'), 'منهای یک روی ده')
     change_defaults(scientific_separator=' در ده به نمای ')
     assert_equal(words('1e2'), 'مثبت یک در ده به نمای مثبت دو')
     # Back to default
     change_defaults('', 'منفی ', ' و ', ' ', True, ' در ده به توان ')
     assert_equal(words(1.1), 'یک و یک دهم')
     assert_equal(words('1/2'), 'یک دوم')
     assert_equal(words('1e2'), 'یک در ده به توان دو')
Пример #17
0
def convert_year(year):
    year_int = int(year)
    if year_int > 1399:
        years = num2fawords.words(year_int).split(" و ")
        year = ""
        for i in range(len(years) - 1):
            year = year + years[i] + "ُ" + " "
        year = year + years[-1] + " "
    else:
        year = year[2:]
    return_list = [year, " سالِ " + year]
    if year == "99":
        return_list.extend(["امسال"])
    if year == "98":
        return_list.extend([f"سال {previous_word()} "])
    if year == "1400":
        return_list.extend([f"سال {next_word()} "])
    return random.choice(return_list)
Пример #18
0
 def test_negative(self):
     assert_equal = self.assertEqual
     assert_equal(words(-2, negative='منهای '), 'منهای دو')
     assert_equal(words('-2', negative='منهای '), 'منهای دو')
     assert_equal(words(-1.1, negative='منهای '), 'منهای یک و یک دهم')
     assert_equal(words('-1.1', negative='منهای '), 'منهای یک و یک دهم')
     assert_equal(
         words(-1.1e-06, negative='منهای '),
         'منهای یک و یک دهم در ده به توان منهای شش',
     )
     assert_equal(
         words('-1/2', negative='منهای '),
         'منهای یک دوم',
     )
     assert_equal(
         words(Fraction(1, -2), negative='منهای '),
         'منهای یک دوم',
     )
Пример #19
0
 def test_negative(self):
     assert_equal = self.assertEqual
     assert_equal(words(-2, negative='منهای '), 'منهای دو')
     assert_equal(words('-2', negative='منهای '), 'منهای دو')
     assert_equal(words(-1.1, negative='منهای '), 'منهای یک و یک دهم')
     assert_equal(words('-1.1', negative='منهای '), 'منهای یک و یک دهم')
     assert_equal(
         words(-1.1e-06, negative='منهای '),
         'منهای یک و یک دهم در ده به توان منهای شش',
     )
     assert_equal(
         words('-1/2', negative='منهای '),
         'منهای یک دوم',
     )
     assert_equal(
         words(Fraction(1, -2), negative='منهای '),
         'منهای یک دوم',
     )
Пример #20
0
 def test_negative_numbers(self):
     assert_equal = self.assertEqual
     assert_equal(ordinal_words(-5), 'منفی پنجم')
     assert_equal(words(-5), 'منفی پنج')
     assert_equal(words('-5.5'), 'منفی پنج و پنج دهم')
Пример #21
0
    def test_float(self):
        assert_equal = self.assertEqual
        assert_equal(words(0.0), 'صفر')
        assert_equal(words('0.0'), 'صفر')
        assert_equal(words(1.0), 'یک')
        assert_equal(words(1.1), 'یک و یک دهم')
        assert_equal(words(1.100), 'یک و یک دهم')
        assert_equal(words(0.001), 'یک هزارم')
        assert_equal(words(0.1001), 'یک هزار و یک ده هزارم')
        assert_equal(words(5.45), 'پنج و چهل و پنج صدم')
        assert_equal(words(1e-3), 'یک هزارم')
        assert_equal(words(1E-3), 'یک هزارم')
        assert_equal(words('1e-3'), 'یک در ده به توان منفی سه')
        assert_equal(words('1E-3'), 'یک در ده به توان منفی سه')
        assert_equal(words(1e-6), 'یک در ده به توان منفی شش')
        assert_equal(words(1E-6), 'یک در ده به توان منفی شش')

        assert_equal(words(0.000001), 'یک در ده به توان منفی شش')
        assert_equal(words('0.000001'), 'یک میلیونم')

        assert_equal(
            words(0.0000011),
            'یک و یک دهم در ده به توان منفی شش'
        )
        assert_equal(words('0.0000011'), 'یازده ده میلیونم',)

        assert_equal(
            words(0.00000111),
            'یک و یازده صدم در ده به توان منفی شش',
        )
        assert_equal(words('0.00000111'), 'یکصد و یازده صد میلیونم')

        assert_equal(
            words(0.000001111),
            'یک و یکصد و یازده هزارم در ده به توان منفی شش',
        )
        assert_equal(
            words('0.000001111'), 'یک هزار و یکصد و یازده میلیاردم'
        )
Пример #22
0
 def test_non_negative(self):
     """Test the words function."""
     assert_equal = self.assertEqual
     assert_equal(words(0), 'صفر')
     assert_equal(words('0'), 'صفر')
     assert_equal(words(1), 'یک')
     assert_equal(words(2), 'دو')
     assert_equal(words(3), 'سه')
     assert_equal(words(4), 'چهار')
     assert_equal(words(5), 'پنج')
     assert_equal(words(6), 'شش')
     assert_equal(words(7), 'هفت')
     assert_equal(words(8), 'هشت')
     assert_equal(words(9), 'نه')
     assert_equal(words(10), 'ده')
     assert_equal(words(11), 'یازده')
     assert_equal(words(12), 'دوازده')
     assert_equal(words(13), 'سیزده')
     assert_equal(words(14), 'چهارده')
     assert_equal(words(15), 'پانزده')
     assert_equal(words(16), 'شانزده')
     assert_equal(words(17), 'هفده')
     assert_equal(words(18), 'هجده')
     assert_equal(words(19), 'نوزده')
     assert_equal(words(20), 'بیست')
     assert_equal(words(21), 'بیست و یک')
     assert_equal(words(22), 'بیست و دو')
     assert_equal(words(23), 'بیست و سه')
     assert_equal(words(24), 'بیست و چهار')
     assert_equal(words(29), 'بیست و نه')
     assert_equal(words(30), 'سی')
     assert_equal(words(35), 'سی و پنج')
     assert_equal(words(44), 'چهل و چهار')
     assert_equal(words(57), 'پنجاه و هفت')
     assert_equal(words(61), 'شصت و یک')
     assert_equal(words(78), 'هفتاد و هشت')
     assert_equal(words(80), 'هشتاد')
     assert_equal(words(93), 'نود و سه')
     assert_equal(words(100), 'یکصد')
     assert_equal(words(101), 'یکصد و یک')
     assert_equal(words(1235), 'یک هزار و دویست و سی و پنج')
     assert_equal(
         words(99999999),
         'نود و نه میلیون و نهصد و نود و نه هزار و نهصد و نود و نه',
     )
     assert_equal(
         words(999999999999999999),
         'نهصد و نود و نه بیلیارد'
         ' و نهصد و نود و نه بیلیون'
         ' و نهصد و نود و نه میلیارد'
         ' و نهصد و نود و نه میلیون'
         ' و نهصد و نود و نه هزار'
         ' و نهصد و نود و نه',
     )
Пример #23
0
 def test_persian_numbers(self):
     assert_equal = self.assertEqual
     assert_equal(words('۱'), 'یک')
     assert_equal(words('۱٫۱'), 'یک و یک دهم')
     assert_equal(words('۱٬۰۰۰'), 'یک هزار')
Пример #24
0
 def test_negative_float(self):
     assert_equal = self.assertEqual
     assert_equal(words(-1.1), 'منفی یک و یک دهم')
Пример #25
0
 def test_persian_numbers(self):
     assert_equal = self.assertEqual
     assert_equal(words('۱'), 'یک')
     assert_equal(words('۱٫۱'), 'یک و یک دهم')
     assert_equal(words('۱٬۰۰۰'), 'یک هزار')
Пример #26
0
 def test_negative_float(self):
     assert_equal = self.assertEqual
     assert_equal(words(-1.1), 'منفی یک و یک دهم')
Пример #27
0
 def test_negative_numbers(self):
     assert_equal = self.assertEqual
     assert_equal(ordinal_words(-5), 'منفی پنجم')
     assert_equal(words(-5), 'منفی پنج')
     assert_equal(words('-5.5'), 'منفی پنج و پنج دهم')
Пример #28
0
    def test_float(self):
        assert_equal = self.assertEqual
        assert_equal(words(0.0), 'صفر')
        assert_equal(words('0.0'), 'صفر')
        assert_equal(words(1.0), 'یک')
        assert_equal(words(1.1), 'یک و یک دهم')
        assert_equal(words(1.100), 'یک و یک دهم')
        assert_equal(words(0.001), 'یک هزارم')
        assert_equal(words(0.1001), 'یک هزار و یک ده هزارم')
        assert_equal(words(5.45), 'پنج و چهل و پنج صدم')
        assert_equal(words(1e-3), 'یک هزارم')
        assert_equal(words(1E-3), 'یک هزارم')
        assert_equal(words('1e-3'), 'یک در ده به توان منفی سه')
        assert_equal(words('1E-3'), 'یک در ده به توان منفی سه')
        assert_equal(words(1e-6), 'یک در ده به توان منفی شش')
        assert_equal(words(1E-6), 'یک در ده به توان منفی شش')

        assert_equal(words(0.000001), 'یک در ده به توان منفی شش')
        assert_equal(words('0.000001'), 'یک میلیونم')

        assert_equal(words(0.0000011), 'یک و یک دهم در ده به توان منفی شش')
        assert_equal(
            words('0.0000011'),
            'یازده ده میلیونم',
        )

        assert_equal(
            words(0.00000111),
            'یک و یازده صدم در ده به توان منفی شش',
        )
        assert_equal(words('0.00000111'), 'یکصد و یازده صد میلیونم')

        assert_equal(
            words(0.000001111),
            'یک و یکصد و یازده هزارم در ده به توان منفی شش',
        )
        assert_equal(words('0.000001111'), 'یک هزار و یکصد و یازده میلیاردم')
Пример #29
0
 def test_non_negative(self):
     """Test the words function."""
     assert_equal = self.assertEqual
     assert_equal(words(0), 'صفر')
     assert_equal(words('0'), 'صفر')
     assert_equal(words(1), 'یک')
     assert_equal(words(2), 'دو')
     assert_equal(words(3), 'سه')
     assert_equal(words(4), 'چهار')
     assert_equal(words(5), 'پنج')
     assert_equal(words(6), 'شش')
     assert_equal(words(7), 'هفت')
     assert_equal(words(8), 'هشت')
     assert_equal(words(9), 'نه')
     assert_equal(words(10), 'ده')
     assert_equal(words(11), 'یازده')
     assert_equal(words(12), 'دوازده')
     assert_equal(words(13), 'سیزده')
     assert_equal(words(14), 'چهارده')
     assert_equal(words(15), 'پانزده')
     assert_equal(words(16), 'شانزده')
     assert_equal(words(17), 'هفده')
     assert_equal(words(18), 'هجده')
     assert_equal(words(19), 'نوزده')
     assert_equal(words(20), 'بیست')
     assert_equal(words(21), 'بیست و یک')
     assert_equal(words(22), 'بیست و دو')
     assert_equal(words(23), 'بیست و سه')
     assert_equal(words(24), 'بیست و چهار')
     assert_equal(words(29), 'بیست و نه')
     assert_equal(words(30), 'سی')
     assert_equal(words(35), 'سی و پنج')
     assert_equal(words(44), 'چهل و چهار')
     assert_equal(words(57), 'پنجاه و هفت')
     assert_equal(words(61), 'شصت و یک')
     assert_equal(words(78), 'هفتاد و هشت')
     assert_equal(words(80), 'هشتاد')
     assert_equal(words(93), 'نود و سه')
     assert_equal(words(100), 'یکصد')
     assert_equal(words(101), 'یکصد و یک')
     assert_equal(words(1235), 'یک هزار و دویست و سی و پنج')
     assert_equal(
         words(99999999),
         'نود و نه میلیون و نهصد و نود و نه هزار و نهصد و نود و نه',
     )
     assert_equal(
         words(999999999999999999),
         'نهصد و نود و نه بیلیارد'
         ' و نهصد و نود و نه بیلیون'
         ' و نهصد و نود و نه میلیارد'
         ' و نهصد و نود و نه میلیون'
         ' و نهصد و نود و نه هزار'
         ' و نهصد و نود و نه',
     )
Пример #30
0
def _expand_number(m):
    num = int(m.group(0))
    return words(num)
Пример #31
0
"""Provide a command-line interface to use cardinal_words and ordinal_words."""

from argparse import ArgumentParser

from num2fawords import words, ordinal_words


parser = ArgumentParser()
parser.add_argument(
    'number', help='the number that is going to be converted to words'
)
parser.add_argument(
    '--ordinal', '-o',
    help='convert to ordinal from', action='store_true',
)
args = parser.parse_args()
if args.ordinal:
    print(ordinal_words(args.number))
else:
    print(words(args.number))
Пример #32
0
def _expand_decimal_point(m):
    return words(Decimal(m.group(1)), decimal_separator=' ممیز ')