JSPM

price-seprator

1.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q20555F
  • License MIT

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

Package Exports

  • price-seprator
  • price-seprator/src/price-separator.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (price-seprator) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Price Separator (جداکننده قیمت و تبدیل به حروف فارسی و انگلیسی)

این لایبرری ساده به شما کمک می‌کند:

  • قیمت‌ها را سه رقم سه رقم جدا کنید (مثلاً 1234567 → 1,234,567)
  • عدد قیمت را به حروف فارسی + واحد پولی تبدیل کنید (مثلاً 50000 → پنجاه هزار تومان)
  • عدد قیمت را به حروف انگلیسی + واحد پولی تبدیل کنید (مثلاً 50000 → fifty thousand USD)
  • حروف فارسی را به عدد تبدیل کنید (مثلاً پنجاه هزار تومان → 50000)
  • حروف انگلیسی را به عدد تبدیل کنید (مثلاً fifty thousand → 50000)

نصب و استفاده

کافیست فایل src/price-separator.js را در پروژه خود وارد کنید یا آن را به عنوان ماژول import/require نمایید.


استفاده در 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

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

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

<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

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)

<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)

<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)

<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

npm install price-seprator

یا با استفاده از yarn:

yarn add price-seprator