UNPKG

price-seprator

Version:

لایبرری ساده برای جدا کردن سه رقمی قیمت و تبدیل عدد به حروف فارسی و انگلیسی

282 lines (238 loc) 8.54 kB
# Price Separator (جداکننده قیمت و تبدیل به حروف فارسی و انگلیسی) این لایبرری ساده به شما کمک می‌کند: - قیمت‌ها را سه رقم سه رقم جدا کنید (مثلاً 1234567 → 1,234,567) - عدد قیمت را به حروف فارسی + واحد پولی تبدیل کنید (مثلاً 50000 → پنجاه هزار تومان) - عدد قیمت را به حروف انگلیسی + واحد پولی تبدیل کنید (مثلاً 50000 → fifty thousand USD) - حروف فارسی را به عدد تبدیل کنید (مثلاً پنجاه هزار تومان → 50000) - حروف انگلیسی را به عدد تبدیل کنید (مثلاً fifty thousand → 50000) ## نصب و استفاده کافیست فایل `src/price-separator.js` را در پروژه خود وارد کنید یا آن را به عنوان ماژول import/require نمایید. --- ## استفاده در HTML ساده ```html <script src="src/price-separator.js"></script> <script> // جدا کردن سه رقمی document.write(separatePrice(1234567)); // خروجی: 1,234,567 document.write("<br>"); // تبدیل به حروف فارسی document.write(priceToPersianWords(1234567)); // خروجی: یک میلیون و دویست و سی و چهار هزار و پانصد و شصت و هفت تومان </script> ``` ## استفاده در Node.js ```js const { separatePrice, priceToPersianWords, priceToEnglishWords, persianWordsToNumber, englishWordsToNumber } = require("./src/price-separator"); // جدا کردن سه رقمی console.log(separatePrice(50000)); // 50,000 // تبدیل به حروف فارسی console.log(priceToPersianWords(50000)); // پنجاه هزار تومان console.log(priceToPersianWords(50000, 'ریال')); // پنجاه هزار ریال // تبدیل به حروف انگلیسی console.log(priceToEnglishWords(50000)); // fifty thousand USD console.log(priceToEnglishWords(50000, 'EUR')); // fifty thousand EUR // تبدیل حروف به عدد console.log(persianWordsToNumber('پنجاه هزار تومان')); // 50000 console.log(englishWordsToNumber('fifty thousand dollars')); // 50000 ``` ## استفاده در React ```jsx import { separatePrice, priceToPersianWords, priceToEnglishWords, persianWordsToNumber, englishWordsToNumber } from "./src/price-separator"; export default function PriceComponent({ price, text }) { // تبدیل متن به عدد (اگر متن وارد شده باشد) const numberFromText = text ? (text.includes('thousand') ? englishWordsToNumber(text) : persianWordsToNumber(text)) : 0; return ( <> <div>قیمت: {separatePrice(price)}</div> <div>فارسی: {priceToPersianWords(price)}</div> <div>انگلیسی: {priceToEnglishWords(price)}</div> {text && <div>تبدیل متن به عدد: {numberFromText}</div>} </> ); } ``` ## استفاده در Vue ```vue <template> <div> <div>قیمت: {{ separated }}</div> <div>فارسی: {{ persian }}</div> <div>انگلیسی: {{ english }}</div> <div v-if="textInput"> <input v-model="textInput" placeholder="متن به حروف" /> <div>تبدیل به عدد: {{ numberFromText }}</div> </div> </div> </template> <script> import { separatePrice, priceToPersianWords, priceToEnglishWords, persianWordsToNumber, englishWordsToNumber } from "./src/price-separator"; export default { props: ["price"], data() { return { textInput: "", currency: "تومان" }; }, computed: { separated() { return separatePrice(this.price); }, persian() { return priceToPersianWords(this.price, this.currency); }, english() { return priceToEnglishWords(this.price, "USD"); }, numberFromText() { if (!this.textInput) return 0; return this.textInput.includes('thousand') ? englishWordsToNumber(this.textInput) : persianWordsToNumber(this.textInput); } }, }; </script> ``` ## استفاده در Angular ```typescript import { separatePrice, priceToPersianWords, priceToEnglishWords, persianWordsToNumber, englishWordsToNumber } from "./src/price-separator"; @Component({ selector: "app-price", template: ` <div>قیمت: {{ separated }}</div> <div>فارسی: {{ persian }}</div> <div>انگلیسی: {{ english }}</div> <div> <input [(ngModel)]="textInput" placeholder="متن به حروف" /> <div *ngIf="textInput">تبدیل به عدد: {{ numberFromText }}</div> </div> `, }) export class PriceComponent { price = 1234567; textInput = ''; currency = 'تومان'; get separated() { return separatePrice(this.price); } get persian() { return priceToPersianWords(this.price, this.currency); } get english() { return priceToEnglishWords(this.price, 'USD'); } get numberFromText() { if (!this.textInput) return 0; return this.textInput.includes('thousand') ? englishWordsToNumber(this.textInput) : persianWordsToNumber(this.textInput); } } ``` --- ## مثال برای نمایش زیر اینپوت (HTML) ```html <input id="priceInput" type="text" /> <div id="priceText"></div> <script src="src/price-separator.js"></script> <script> document.getElementById("priceInput").addEventListener("input", function (e) { document.getElementById("priceText").innerText = priceToPersianWords( e.target.value ); }); </script> ``` ## مثال برای نمایش همزمان عدد جداشده و حروف (HTML) ```html <input id="priceInput2" type="text" /> <div>عدد: <span id="priceNum"></span></div> <div>فارسی: <span id="persianWords"></span></div> <div>انگلیسی: <span id="englishWords"></span></div> <script src="src/price-separator.js"></script> <script> document .getElementById("priceInput2") .addEventListener("input", function (e) { document.getElementById("priceNum").innerText = separatePrice( e.target.value ); document.getElementById("persianWords").innerText = priceToPersianWords( e.target.value ); document.getElementById("englishWords").innerText = priceToEnglishWords( e.target.value ); }); </script> ``` ## مثال برای تبدیل متن به عدد (HTML) ```html <input id="textInput" type="text" placeholder="متن به حروف (فارسی یا انگلیسی)" /> <div>عدد: <span id="numberResult"></span></div> <script src="src/price-separator.js"></script> <script> document .getElementById("textInput") .addEventListener("input", function (e) { const text = e.target.value; let result = 0; if (text.includes('thousand') || text.includes('hundred') || text.includes('million')) { // متن انگلیسی result = englishWordsToNumber(text); } else { // متن فارسی result = persianWordsToNumber(text); } document.getElementById("numberResult").innerText = result >= 0 ? separatePrice(result) : "نامعتبر"; }); </script> ``` --- ## قابلیت‌ها - بدون وابستگی به فریمورک خاص - قابل استفاده در همه پروژه‌های فرانت‌اند و بک‌اند - سبک و سریع - پشتیبانی از ورودی رشته‌ای و عددی - قابل استفاده به صورت ماژول CommonJS و ESModule و همچنین بارگذاری مستقیم در HTML - پشتیبانی از TypeScript با تعاریف تایپ - پشتیبانی از تبدیل عدد به حروف فارسی و انگلیسی - پشتیبانی از تبدیل حروف فارسی و انگلیسی به عدد - پشتیبانی از واحدهای پولی مختلف (تومان، ریال، دلار، یورو و ...) - دارای تست‌های واحد برای اطمینان از صحت عملکرد ## نصب از طریق npm ```bash npm install price-seprator ``` یا با استفاده از yarn: ```bash yarn add price-seprator ```