npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

carakanjs

v1.2.1

Published

Carakan.js is a small library for converting/transliterating Latin script into Javanese script, also known as Aksara Jawa or Carakan.

Downloads

95

Readme

Carakan.js

npm size madein

Carakan.js is a small library for converting/transliterating Latin script into Javanese script, also known as Aksara Jawa or Carakan, and vice versa.

:eyes: Why this library?

Yes, I know there are already many Javanese script transliterating library out there, but they are not accurate. At least for some words with complicated syllable structure due to the nature of Javanese language. Like "ngglembyar", "nggrambyang".

The complexity of Javanese script writing rules made things difficult. Therefore, I want to create a library to create a more accurate transliteration from Latin into Javanese script and vice versa with the linguistic complexity and ease of use in mind, so we can just input the regular Javanese text we usually read and write in Latin text in our everyday conversations.

Carakan.js is also fast. The library is also extensively tested using various sentences and use cases. You can see the tests here.

:open_book: Table of Contents

:rocket: Features

Currently, Carakan.js can handle:

  • Basic Hanacaraka (20 basic characters) and its Pasangan
  • Sandhangan Swara (wulu, taling, pepet, suku, taling tarung)
  • Sandhangan Wyanjana (cakra, wignyan, etc) and Panjingan
  • Angka
  • Aksara Swara
  • Aksara Rekan
  • Aksara Murda
  • Aksara Ganten
  • Pada (Punctuations)
  • Supports accents (like Wikipedia Basa Jawa)
  • ...and many more (see the code yourself!)

:package: Installation

NPM:

$ npm install carakanjs

Yarn:

$ yarn add carakanjs

:keyboard: Usage

Example with default options

import { toJavanese } from "carakanjs";

let x = toJavanese("blumbang gxmblundhung kxmambang");

// with default configs (optional)
let x = toJavanese("blumbang gxmblundhung kxmambang", {useAccents: false, useSwara: true, useMurda: true})

console.log(x)

// => ꦧ꧀ꦭꦸꦩ꧀ꦧꦁꦒꦼꦩ꧀ꦧ꧀ꦭꦸꦤ꧀ꦝꦸꦁꦏꦼꦩꦩ꧀ꦧꦁ

Writing Pepet and Taling sounds (with default config)

// pepet is "x"
// taling is "e"

toJavanese("es dawxt");
// => ꦲꦺꦱ꧀ꦢꦮꦼꦠ꧀

Writing Pepet and Taling sounds (with useAccents = true)

// pepet is "e"
// taling is "é", "è", or "e`" (e + backtick)


toJavanese("e`s dawet", {useAccents: true});
// or
toJavanese("és dawet", {useAccents: true});
// => ꦲꦺꦱ꧀ꦢꦮꦼꦠ꧀

// example text from Wikipedia basa Jawa
toJavanese(
  "référèndhum menika mutusaken Timor Wétan pisah",
  {useAccents: true}
);
// => ꦫꦺꦥ꦳ꦺꦫꦺꦤ꧀ꦝꦸꦩ꧀ꦩꦼꦤꦶꦏꦩꦸꦠꦸꦱꦏꦼꦤ꧀ꦡꦶꦩꦺꦴꦂꦮꦺꦠꦤ꧀ꦥꦶꦱꦃ

Writing Aksara Swara, Murda, and Rekan

toJavanese("GUSTI ALLAH YA KHALIK");

// => ꦓꦸꦯ꧀ꦡꦶꦄꦭ꧀ꦭꦃꦪꦏ꦳ꦭꦶꦑ꧀

Writing Angka (Numbers)

// pada pangkat (꧇) will be automatically added around numbers
toJavanese("tanggal 17 bulan 8 taun 1945");

// => ꦠꦁꦒꦭ꧀꧇꧑꧗꧇ꦧꦸꦭꦤ꧀꧇꧘꧇ꦠꦲꦸꦤ꧀꧇꧑꧙꧔꧕꧇

Writing Pada (Punctuations)

toJavanese("{<||,:.'\":()>}");

// => ꧁꧌꧋꧋꧈꧇꧉꧊꧊꧇꧊꧊꧍꧂

Writing Aksara Ganten & Panjingan

toJavanese("kreta krxtxg, lxmah rxgxd");

// => ꦏꦿꦺꦠꦏꦽꦠꦼꦒ꧀‌ꦊꦩꦃꦉꦒꦼꦢ꧀

🆕 Converting Aksara Jawa/Carakan into Latin

import { toLatin } from "carakanjs";

let x = toLatin("ꦗꦼꦂ ꦧꦱꦸꦏꦶ ꦩꦮ ꦧꦺꦪ");

console.log(x)

// => jer basuki mawa béya

:asterisk: Table of Punctuations

|Name |Input |Output | |------------------|-------------------|-----------| |Pada lingsa * |, |꧈ | |Pada lungsi * |. |꧉ | |Pada pangkat |: |꧇ | |Pada adeg |" or ' or ( or ) |꧊ | |Pada adeg-adeg || |꧋ | |Pada piseleh |< |꧌ ...... | |Pada piseleh walik|> |...... ꧍ | |Rerenggan kiwa |{ |꧁ ... | |Rerenggan tengen |} |... ꧂ |

*) Pada Lingsa (comma) will not be rendered if a Pangkon is next to it. Pada Lungsi (period) will be reduced into Pada Lingsa if a Pangkon is next to it. This behavior is adheres to the rules of Javanese writing.

:fire: API

toJavanese(input, config?)

Returns a string of Javanese script converted from input, using the set configs.

input

Type: string

A string of Latin character which will be transliterated into Javanese script.

config.useAccents

Type: boolean, default: false

A boolean indicating whether Carakan.js should convert the input string with accents. There are two modes of input:

  • Non-accented mode (default) In this mode, Carakan.js will treat the letter "x" as Pepet (schwa sound) and "e" as Taling (see examples above).
  • Accented mode The "formally and academically correct" way to write Javanese in Latin. Typically used in Wikipedia basa Jawa texts. In this mode, Carakan.js will treat the letter "e" as Pepet, "é"/"è"/"e`" as Taling. "x" will still be treated as Pepet (see examples above).

Basically, the transliterator engine can only read string in non-accented mode. When useAccents is set to true, Carakan.js will convert the accented input into non-accented mode first, so then it can convert them into Javanese script.

config.useSwara

Type: boolean, default: true

A boolean indicating whether Carakan.js should convert uppercase vowels (A, I, U, E, O) into Aksara Swara. If set to false, Carakan.js will render them as regular vowels sound written with the letter "ha".

config.useMurda

Type: boolean, default: true

A boolean indicating whether Carakan.js should convert some uppercase consonants (N, K, T, S, P, NY, G, B) into Aksara Murda. If set to false, Carakan.js will render them with their regular Javanese script character.

toLatin(input)

Returns a string of Latin script converted from an input of Javanese script.

CarakanHelper

A namespace which contains various helper for the engine to convert Latin letters from and into Javanese Script.

:toolbox: TODO

  • [x] support transliteration of Javanese script back to Latin
  • [ ] support more Sandhangan: Swara Dirga (for long vowels, typically used to write Sanskrit)
  • [ ] support more punctuations: Pangrangkep, Pada Luhur, Pada Windu, Purwa Pada, Madya Pada, Wasana Pada

:books: References