Skip to main content
findCapitalByProvince returns the capital city of an Iranian province given its Persian name.

Function

findCapitalByProvince(state: string): string
import { findCapitalByProvince } from "@persian-tools/persian-tools";

findCapitalByProvince("خراسان رضوی"); // "مشهد"
findCapitalByProvince("تهران"); // "تهران"
findCapitalByProvince("اصفهان"); // "اصفهان"

Behaviour

  1. Normalize the input via toPersianChars — Arabic-keyboard ك/ي are tolerated.
  2. Look up in IRAN_STATES (a Map<string, string>).
  3. Return the capital, or throw PersianToolsError("findCapitalByProvince", "no province found") if unknown.
Return type is string. The function throws on unknown input; it does not return undefined. Wrap calls in try/catch or pre-validate against the keys.

Pitfalls

  • Throws on unknown province.
  • Input must be Persian. Latin transliterations like "Tehran" won’t match.
  • Equality is exact after toPersianChars — extra whitespace, ZWNJ, or diacritics will miss. Normalize upstream if input is user-typed.
  • To list all provinces for autocomplete, iterate Array.from(IRAN_STATES.keys()).

Composition

import { findProvinceFromCoordinate, findCapitalByProvince } from "@persian-tools/persian-tools";

const province = findProvinceFromCoordinate({ longitude: 51.4, latitude: 35.7 });
const capital = findCapitalByProvince(province.fa);

Source

src/modules/findCapitalByProvince/index.ts, states.ts · Tests: test/findCapitalByProvince.spec.ts