gurmukhi-utils
General utilities for working with Gurmukhi text data.
Want to speak with us?
Contents
Usage
The library can be imported into Node as below:
const {
toUnicode,
toAscii,
firstLetters,
toEnglish,
toHindi,
toShahmukhi,
stripAccents,
stripVishraams,
stripEndings
isGurmukhi,
} = require( 'gurmukhi-utils' )
toUnicode('Koj') // => ਖੋਜ
toAscii('ਖੋਜ') // => Koj
firstLetters('ਹਰਿ ਹਰਿ ਹਰਿ ਗੁਨੀ') // => ਹਹਹਗ
toEnglish('hukmI hukmu clwey rwhu ]') // => hukamee hukam chalaae raahu ||
toHindi('ਕੁਲ ਜਨ ਮਧੇ ਮਿਲੵੋਿ ਸਾਰਗ ਪਾਨ ਰੇ ॥') // => कुल जन मधे मिल्यो सारग पान रे ॥
toShahmukhi('ਹਰਿ ਹਰਿ ਹਰਿ ਗੁਨੀ') // => هر هر هر گُنی
stripAccents('ਜ਼ਫ਼ੈਸ਼ਸ') // => ਜਫੈਸਸ
stripVishraams('sbid mrY. so mir rhY; iPir.') // => sbid mrY so mir rhY iPir
stripEndings('ਸੋ ਘਰੁ ਰਾਖੁ; ਵਡਾਈ ਤੋਇ ॥੧॥ ਰਹਾਉ ॥') // => ਸੋ ਘਰੁ ਰਾਖੁ; ਵਡਾਈ ਤੋਇ
isGurmukhi('ਗੁਰਮੁਖੀ') // => true
Additionally, the package is available for web use via unpkg CDN.
<script src="https://unpkg.com/gurmukhi-utils"></script>
API
String
firstLetters(line) ⇒ Generates the first letters for a unicode Gurmukhi, Hindi transliteration, or English transliteration string. Includes any end-word vishraams, and line-end characters.
Returns: String
- The first letters of each word in the provided Gurmukhi line.
Param | Type | Description |
---|---|---|
line | String |
The line to generate the first letters for. |
Example (Gurmukhi first letters)
firstLetters('ਸਬਦਿ ਮਰੈ. ਸੋ ਮਰਿ ਰਹੈ; ਫਿਰਿ. ਮਰੈ ਨ, ਦੂਜੀ ਵਾਰ ॥') // => ਸਮ.ਸਮਰ;ਫ.ਮਨ,ਦਵ॥
Example (Hindi first letters)
firstLetters('गुरमुखि लाधा मनमुखि गवाइआ ॥') // => गलमग॥
Example (English first letters)
firstLetters('sabad marai. so mar rahai; fir. marai na, doojee vaar |') // => sm.smr;f.mn,dv|
boolean
isGurmukhi(text, [exhaustive]) ⇒ Checks if first char in string is part of the Gurmukhi Unicode block.
Returns: boolean
- True if Unicode Gurmukhi, false if other.
Param | Type | Description |
---|---|---|
text | String |
The text to check. |
[exhaustive] | boolean |
If true , checks if the whole string is Unicode Gurmukhi. |
Example
isGurmukhi('ਗੁਰਮੁਖੀ') // => true
isGurmukhi('gurmuKI') // => false
String
stripAccents(text) ⇒ Removes accents from ASCII/Unicode Gumrukhi letters with their base letter. Useful for generalising search queries.
Returns: String
- A simplified version of the provided Gurmukhi string.
Param | Type | Description |
---|---|---|
text | String |
The text to convert. |
Example
stripAccents('ਜ਼ਫ਼ੈਸ਼ਸਓ') // => ਜਫੈਸਸੳ
stripAccents('Z^Svb') // => gKsvb
String
stripEndings(text) ⇒ Strips line endings from any Gurmukhi or translation string. Accepts both Unicode and ASCII input. Useful for generating accurate first letters or modifying non-Gurbani for better display. Not designed for headings or Sirlekhs.
Returns: String
- A ending-less version of the text.
Param | Type | Description |
---|---|---|
text | String |
The text to stip endings from. |
Example (Line ending phrases)
stripEndings('ਸੋ ਘਰੁ ਰਾਖੁ; ਵਡਾਈ ਤੋਇ ॥੧॥ ਰਹਾਉ ॥') // => ਸੋ ਘਰੁ ਰਾਖੁ; ਵਡਾਈ ਤੋਇ
stripEndings('ਹੁਕਮੁ ਪਛਾਣਿ; ਤਾ ਖਸਮੈ ਮਿਲਣਾ ॥੧॥ ਰਹਾਉ ਦੂਜਾ ॥') // => ਹੁਕਮੁ ਪਛਾਣਿ; ਤਾ ਖਸਮੈ ਮਿਲਣਾ
stripEndings('ਜਨ ਨਾਨਕ. ਗੁਰਮੁਖਿ ਜਾਤਾ ਰਾਮ ॥੪॥੬॥ ਛਕਾ ੧ ॥') // => ਜਨ ਨਾਨਕ. ਗੁਰਮੁਖਿ ਜਾਤਾ ਰਾਮ
Example (English Translations)
stripEndings('O Nanak, Forever And Ever True. ||1||') // => O Nanak, Forever And Ever True.
stripEndings('lush greenery. ||1||Pause||') // => lush greenery.
stripEndings('always I live within the Khalsa. 519') // => always I live within the Khalsa.
stripEndings('without your reminiscence.(1) (3)') // => without your reminiscence.
Example (Spanish Translations)
stripEndings('ofrece su ser en sacrificio a Ti. (4-2-9)') // => ofrece su ser en sacrificio a Ti.
String
stripVishraams(text, options) ⇒ Removes the specified vishraams from a string.
Returns: String
- A vishraam-less Gurmukhi string.
Param | Type | Description |
---|---|---|
text | String |
The text to remove vishraams from. |
options | Object |
The vishraams to remove. Defaults to all. |
Example (Text only, default options)
stripVishraams('ਸਬਦਿ ਮਰੈ. ਸੋ ਮਰਿ ਰਹੈ;') // => 'ਸਬਦਿ ਮਰੈ ਸੋ ਮਰਿ ਰਹੈ
stripVishraams('sbid mrY. so mir rhY; iPir.') // => sbid mrY so mir rhY iPir
Example (Heavy vishraams only)
stripVishraams('sbid mrY. so mir rhY; iPir.', { heavy: true }) // => sbid mrY. so mir rhY iPir.
Example (Medium vishrams only)
stripVishraams('Anhd sbd vjwey,', { medium: true }) // => Anhd sbd vjwey
Example (Light vishrams only)
stripVishraams('sbid mrY. so mir rhY; iPir.', { light: true }) // => sbid mrY so mir rhY; iPir
String
toAscii(text) ⇒ Converts Gurmukhi unicode text to ASCII, used GurmukhiAkhar font.
Returns: String
- An ASCII representation of the provided unicode Gurmukhi string.
Param | Type | Description |
---|---|---|
text | String |
The unicode text to convert. |
Example
toAscii('ਹਮਾ ਸਾਇਲਿ ਲੁਤਫ਼ਿ ਹਕ ਪਰਵਰਸ਼ ॥') // => hmw swieil luqi& hk prvrS ]
toAscii('ਸੁ ਬੈਠਿ ਇਕੰਤ੍ਰ ॥੫੭੮॥') // => su bYiT iekMqR ]578]
String
toEnglish(line) ⇒ Transliterates a line from Unicode Gurmukhi to english.
Currently supports the ,
, ;
, .
vishraam characters.
Returns: String
- The English transliteration of the provided Gurmukhi line.
Param | Type | Description |
---|---|---|
line | String |
The Gurmukhi Unicode line to transliterate. |
Example
toEnglish('ਹੁਕਮੀ ਹੁਕਮੁ ਚਲਾਏ ਰਾਹੁ ॥') // => hukamee hukam chalaae raahu ||
Example
toEnglish('ਭਾਂਡਾ ਭਾਉ ਅੰਮ੍ਰਿਤੁ ਤਿਤੁ ਢਾਲਿ ॥') // => bhaa(n)ddaa bhaou anmrit tit dtaal ||
String
toHindi(text) ⇒ Transliterates Unicode Gurmukhi text to Hindi (Devanagari script).
Returns: String
- A Hindi transliteration of the provided Unicode Gurmukhi string.
Param | Type | Description |
---|---|---|
text | String |
The Unicode Gurmukhi text to convert. |
Example
toHindi('ਕੁਲ ਜਨ ਮਧੇ ਮਿਲੵੋਿ ਸਾਰਗ ਪਾਨ ਰੇ ॥') // => कुल जन मधे मिल्यो सारग पान रे ॥
toHindi('ਸੁ ਬੈਠਿ ਇਕੰਤ੍ਰ ॥੫੭੮॥') // => सु बैठ इकंत्र ॥५७८॥
String
toShahmukhi(text) ⇒ Transliterates Unicode Gurmukhi text to the Shahmukhi script.
Returns: String
- A Shahmukhi transliteration of the provided Unicode Gurmukhi string.
Param | Type | Description |
---|---|---|
text | String |
The Unicode Gurmukhi text to convert. |
Example
toShahmukhi('ਹਮਾ ਸਾਇਲਿ ਲੁਤਫ਼ਿ ਹਕ ਪਰਵਰਸ਼ ॥') // => هما ساِال لُتف هک پرورش ۔۔
toShahmukhi('ਸੁ ਬੈਠਿ ਇਕੰਤ੍ਰ ॥੫੭੮॥') // => سُ بَےٹھ ِاکںتر ۔۔۵۷۸۔۔
String
toUnicode(text) ⇒ Converts ASCII text used in the GurmukhiAkhar font to Unicode.
Returns: String
- A unicode representation of the provided ASCII Gurmukhi string.
Param | Type | Description |
---|---|---|
text | String |
The ASCII text to convert. |
Example
toUnicode('kul jn mDy imil´o swrg pwn ry ]') // => ਕੁਲ ਜਨ ਮਧੇ ਮਿਲੵੋਿ ਸਾਰਗ ਪਾਨ ਰੇ ॥
toUnicode('su bYiT iekMqR ]578]') // => ਸੁ ਬੈਠਿ ਇਕੰਤ੍ਰ ॥੫੭੮॥
Contributing
We're happy to accept suggestions and pull requests!
To get started, clone this repo and run npm install
inside this directory.
This repository follows the Airbnb's Javascript Style Guide, with a few minor modifications. Notably, spaces should be included inside parentheses and brackets (weird, right!). An ESLint file is provided,
and your code will automatically be checked on-commit for style.
It is recommended to install an ESLint plugin for your editor (VS Code's ESLint
plugin works out of the box), so you can receive
linter suggestions as you type.
When writing commit messages, please follow the seven rules.
Markdown and HTML JSDoc documentation is generated automatically, on commit,
however if you'd like to preview any changes to documentation, npm run build-docs
will
update README.md
and the files in docs/
. README.md
should not be edited, instead
apply modifications to README.hbs
.
The general workflow for contributing:
- Fork/create a new branch.
- Write or update existing tests with expected results
- Implement functions/changes
- Add JSDoc function documentation and examples.
- Run tests with
npm test
and ensure they all pass. Testing is done with themocha
testing framework. - Create a pull request with the changes.
Note to contributors with push access to master: Any commits or merge commits containing the strings
#Major
, #Minor
, #Patch
(case-sensitive) will trigger an automatic npm release with the
respective semver bump.