{"id":23446107,"url":"https://github.com/mohammadtaghipour/pars_validator","last_synced_at":"2025-10-30T17:31:24.321Z","repository":{"id":268661629,"uuid":"904589170","full_name":"MohammadTaghipour/pars_validator","owner":"MohammadTaghipour","description":"ParsValidator is a robust and lightweight validation library designed specifically for Persian-speaking developers building Flutter applications. It provides a suite of utilities and tools to validate Persian-specific data formats, including national codes, phone numbers, Shamsi dates, bank card numbers, and more.","archived":false,"fork":false,"pushed_at":"2025-01-22T05:49:31.000Z","size":761,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-22T06:32:01.266Z","etag":null,"topics":["android","dart","flutter","form-validator","ios","iran","linux","macos","persian","persian-validation","shamsi","shamsi-date","validation","validator","windows"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/pars_validator","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MohammadTaghipour.png","metadata":{"files":{"readme":"README-fa.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-17T07:23:25.000Z","updated_at":"2025-01-22T05:48:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"5dfc6175-d8e1-422b-a03e-fa5ee2458ce0","html_url":"https://github.com/MohammadTaghipour/pars_validator","commit_stats":null,"previous_names":["mohammadtaghipour/pars_validator"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammadTaghipour%2Fpars_validator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammadTaghipour%2Fpars_validator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammadTaghipour%2Fpars_validator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MohammadTaghipour%2Fpars_validator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MohammadTaghipour","download_url":"https://codeload.github.com/MohammadTaghipour/pars_validator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239016773,"owners_count":19568302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","dart","flutter","form-validator","ios","iran","linux","macos","persian","persian-validation","shamsi","shamsi-date","validation","validator","windows"],"created_at":"2024-12-23T20:29:40.953Z","updated_at":"2025-10-30T17:31:24.314Z","avatar_url":"https://github.com/MohammadTaghipour.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![](https://github.com/MohammadTaghipour/pars_validator/blob/master/img/logo.png)\n\n[![English](https://img.shields.io/badge/Language-English-blueviolet?style=for-the-badge)](README.md)\n[![Persian](https://img.shields.io/badge/Language-Persian-blueviolet?style=for-the-badge)](README-fa.md)  \n\n[![pub package](https://img.shields.io/pub/v/pars_validator.svg?label=pars_validator\u0026color=blue)](https://pub.dev/packages/pars_validator)\n[![popularity](https://img.shields.io/pub/popularity/pars_validator?logo=dart)](https://pub.dev/packages/pars_validator/score)\n[![likes](https://img.shields.io/pub/likes/pars_validator?logo=dart)](https://pub.dev/packages/pars_validator/score)\n[![pub points](https://img.shields.io/pub/points/pars_validator?logo=dart)](https://pub.dev/packages/get/score)\n[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)\n[![Telegram](https://img.shields.io/badge/text-on%20Telegram-blue.svg)](https://t.me/theTaghipour)\n\u003c/div\u003e\n\n# ParsValidator\nیک کتابخانه اعتبارسنجی قدرتمند و سبک است که به‌طور ویژه برای توسعه‌دهندگان فارسی‌زبان در ساخت اپلیکیشن‌های فلاتر طراحی شده است. این کتابخانه مجموعه‌ای از ابزارها و امکانات را برای اعتبارسنجی فرمت‌های خاص داده‌ای فارسی ارائه می‌دهد، از جمله کد ملی، شماره تلفن، تاریخ‌های شمسی، شماره کارت‌های بانکی و موارد دیگر.\n\n## ✨ ویژگی ها\n\n#### 🌌 توابع عمومی متنی\n\n- بررسی اینکه یک متن فقط حاوی حروف فارسی باشد\n- اعتبارسنجی تعداد کلمات یک متن داده‌شده\n- شمردن تعداد کلمات در یک متن داده‌شده\n- تبدیل متن به فرمت فارسی، با جایگزینی حروف عربی و اعداد انگلیسی\n- تبدیل اعداد فارسی و عربی در یک متن به اعداد انگلیسی\n- تبدیل عدد به حروف فارسی\n- تبدیل عدد به قیمت فارسی به تومان\n- جدا کردن اعداد و رشته‌ها با تعداد و جداکننده دلخواه\n- اعتبارسنجی کدهای OTP\n- اعتبارسنجی پسوردها با پارامترهای قابل تنظیم\n- مدیریت نیم‌فاصله ها\n\n#### 📅 توابع تاریخ و تقویم:\n\n- تبدیل تاریخ میلادی به شمسی\n- تبدیل تاریخ شمسی به میلادی\n  \n#### 🌏 توابع ملی\n- اعتبارسنجی کد ملی ایرانی\n- تولید یک کد ملی ایرانی معتبر به‌صورت تصادفی\n- دریافت محل صدور کد ملی\n- اعتبارسنجی کد پستی ایرانی\n- اعتبارسنجی کد ملی شرکت‌های ایرانی\n\n#### 🏦 توابع بانکی\n\n- اعتبارسنجی شماره کارت\n- فرمت شماره کارت و جداسازی رقم به رقم شماره کارت\n- اعتبارسنجی شماره شبا\n- دریافت نام و آیکون بانک براساس شماره کارت\n\n#### ☎ 📱 توابع شماره تلفن و موبایل و ایمیل\n\n- اعتبارسنجی تلفن خط ثابت و شماره موبایل\n- دریافت نام استان شماره تلفن ثابت\n- دریافت نام و آیکون اپراتور تلفن همراه\n- اعتبارسنجی ایمیل با فرمت استاندارد\n\n## ⚙ پلتفرم های پشتیبانی شده\n\n| 📱 Android | 🍎 iOS | 🍏 MacOS | 🌐 Web | 🐧 Linux | 💻 Windows |\n|:----------:|:------:|:--------:|:------:|:--------:|:----------:|\n|     ✅      |   ✅    |    ✅     |   ✅    |    ✅     |     ✅      |\n\n## 📦 نصب و راه اندازی\n\nبرای استفاده از این بسته، آن را به فایل `pubspec.yaml` خود اضافه کنید:\n\n```yaml\ndependencies:\n  pars_validator: ^0.7.1\n```\n\nسپس، دستور زیر را برای دریافت بسته اجرا کنید:\n\n```bash\nflutter pub get\n```\n\nبرای وارد کردن بسته به پروژه خود، از دستور زیر استفاده کنید:\n\n```dart\nimport 'package:pars_validator/pars_validator.dart';\n```\n\n\n## 📚 نحوه استفاده\n\n### 🌌 توابع متنی عمومی\n\n```dart\n// Check that a text contains only Persian letters\nbool isValid = General.onlyPersianLetters('سلام دنیا'); // true\n\n// Validate the word count of a given text\nbool isValid = General.validateWordCount('سلام دنیا', 1, 3); // true\n\n// Count the number of words in a given text\nint wordCount = General.getWordCount('Hello World!'); // 2\n\n// Convert a text to Persian format, replacing Arabic characters and English digits\nString converted = General.arabicToPersian('اراك'); // اراک\nString converted = General.englishToPersianNumbers('123'); // '۱۲۳'\nString converted = General.toPersian('123 كلمه'); // '۱۲۳ کلمه'\n\n// Convert Persian and Arabic digits in a text to English digits\nString converted = General.toEnglishNumbers('۱۲۳۴'); // '1234'\n\n// Convert number to Persian letters\n// result:  'یک صد و بیست و سه میلیون چهار صد و پنجاه و شش هزار هفت صد و هشتاد و نه'\nString result = General.numberToLetters(123456789);\n\n// Convert number to price\nString price = General.numberToPrice(\n    1234567890); // خروجی: ۱۲ میلیون و ۳۴۵ هزار و ۶۷۸ تومان و ۹ ریال\n\n// Separate numbers and strings with a custom count and separator\nString result = General.separate(\"123456789\", splitter: ',', groupSize: 3); // \"123,456,789\"\n\n// Validate OTP\nbool isValid = General.isOTPValid(\"123456\", 6); // true\n\n// Check is numeric\nbool result1 = '123'.isNumeric(); // true\nbool result4 = '۱۲۳٫۴۵'.isNumeric(decimal: true); // true (decimal)\nbool result5 = '12a3'.isNumeric(); // false\n\n// Check password validation\nbool isValid = General.isPasswordValid(\n  \"Example@123\",\n  minimumLength: 10,\n  uppercaseRequired: true,\n  specialCharRequired: true,\n); // true\n\n// Half-space handling\nString cleaned = General.removeHalfSpaces(\"سلام‌علیکم\"); // \"سلامعلیکم\"\nString formatted = General.replaceSpacesWithHalfSpaces(\"سلام علیکم\"); // \"سلام‌علیکم\"\nString normalized = General.replaceHalfSpacesWithSpaces(\"سلام‌علیکم\"); // \"سلام علیکم\"\n```\n\n### 📅 توابع تاریخ و تقویم\n```dart\n// Convert Gregorian dates to Jalali (Persian)\nString jalali = PersianDate.toJalali(2025, 10, 20, twoDigits: true); // \"1404/07/28\"\n\n// Convert Jalali (Persian) dates to Gregorian\nString gregorian = PersianDate.toGregorian(1404, 7, 28); // \"2025/10/20\"\n```\n\n### 🌏 توابع ملی\n```dart\n// check national id validation\nbool isValid = National.isNationalIDValid(\"1234567890\"); // false\n\n// generate a random valid national id\nString natId = National.generateRandomID(); // 0714265411\n\n// get the issuance location of a National ID\nString? issuance = National.getIssuance(\"1642459372\"); // سراب\n\n// validate Iranian postal code\nbool isValid = National.isValidPostalCode(\"1918934354\"); // true\n\n// Validate Iranian company national ID\nbool isValid = National.isLegalNationalID('10380284790'); // true\n```\n\n### 🏦 توابع بانکی\n\n```dart\n// check card number validation\nbool isValid = Banker.isCardNumberValid('1234567812345670'); // false\n\n// format a card number\nString formatted = Banker.formatCardNumber('1234567812345670'); // '1234 5678 1234 5670'\n\n// check IBAN (Shaba) validation\nbool isValid = Banker.isIBANValid('IR820540102680020817909007'); // true\n\n// get the bank name of a card number\nString? bankName = Banker.getBankNameByCardNumber('6274129005473742'); // اقتصاد نوین\n\n// get the bank icon of a card number\nWidget? bankIcon = Banker.getIcon('6274129005473742'); // svg icon of Eghtesad Novin bank\n```\n\n### ☎ 📱 توابع تلفن ثابت و تلفن همراه و ایمیل\n\n```dart\n// check mobile number validation\nbool isValid = Phone.isMobileNumberValid('+98 912 345 6789'); // true\n\n// check landline number validation\nbool isValid = Phone.isLandlineNumberValid('021 1234 5678'); // true\n\n// get the province name of a landline number\nString? landlineProvince = Phone.getLandlineNumberProvince('021 1234 5678'); // 'تهران'\n\n// get the operator of a mobile number\nString? operatorName = Phone.getMobileOperator('+98 912 345 6789'); // 'همراه اول'\n\n// get the operator icon of a mobile number\nWidget? operatorIcon = Phone.getMobileOperatorIcon('+98 912 345 6789'); // Hamrah-Avval icon widget\n\n// Validate an email address with standard email format\nbool isValid = Phone.isEmailValid('example@domain.com'); // true\n```\n\n### 🛠 همچنین میتوانید از اکستنشن ها نیز استفاده کنید...\n\n```dart\n// check national id validation\nbool isValid = '1234567890'.isNationalIDValid(); // false\n\n// get the issuance location of a National ID\nString? issuance = '1642459372'.getIssuanceOfNationalID(); // سراب\n\n// check IBAN (Shaba) validation\nbool isValid = 'IR820540102680020817909007'.isIBANValid(); // true\n\n// and all other functions...\n```\n\n## 🤝 مشارکت\n\nاگر تمایل داشتید در توسعه و بهبود این کتابخانه مشارکت کنید بسیار خوشحال میشویم که یک pull request ایجاد کنید و یا اگر مشکلی در پکیج وجود داشت یک issue ثبت کنید تا حتما در اسرع وفت بررسی کنیم. قلب فراوان\n\n## 🛡️ مجوز\n\nاین پروژه تحت مجوز [MIT License](https://mit-license.org/) توسعه داده شده است.\n\n## 📧 تماس\n\nبرای سوالات، بازخورد یا پشتیبانی، لطفاً با ما تماس بگیرید:\n\n\n- **توسعه دهنده**: محمد تقی پور\n- **ایمیل**: taghipourmohammad7@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohammadtaghipour%2Fpars_validator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmohammadtaghipour%2Fpars_validator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohammadtaghipour%2Fpars_validator/lists"}