| Crates.io | lipilekhika |
| lib.rs | lipilekhika |
| version | 1.0.3 |
| created_at | 2025-12-14 06:29:06.206826+00 |
| updated_at | 2026-01-17 15:07:35.922653+00 |
| description | A transliteration library for Indian Brahmic scripts |
| homepage | https://lipilekhika.in |
| repository | https://github.com/shubhattin/lipilekhika |
| max_upload_size | |
| id | 1983907 |
| size | 365,197 |
A high-performance transliteration library for Indian Brahmic scripts
๐ Website โข ๐ Documentation โข ๐ฆ Crates.io โข ๐ Changelog
cargo add lipilekhika
use lipilekhika::transliterate;
fn main() {
let result = transliterate(
"namaskAraH",
"Normal",
"Devanagari",
None
).unwrap();
println!("{}", result); // เคจเคฎเคธเฅเคเคพเคฐเค
}
use lipilekhika::transliterate;
use std::collections::HashMap;
fn main() {
let mut options = HashMap::new();
options.insert(
"brahmic_to_brahmic:replace_pancham_varga_varna_with_anusvAra".to_string(),
true
);
let result = transliterate(
"เฐเฐเฐเฐพ",
"Telugu",
"Gujarati",
Some(&options)
).unwrap();
println!("{}", result); // เชเชเชเชพ (instead of เชเชเซเชเชพ)
}
transliteratepub fn transliterate(
text: &str,
from: &str,
to: &str,
trans_options: Option<&HashMap<String, bool>>,
) -> Result<String, String>
Transliterates text from one script to another.
Parameters:
text โ Text to transliteratefrom โ Source script/language name (e.g., "Normal", "Devanagari", "Telugu")to โ Target script/language nametrans_options โ Optional custom transliteration optionsReturns: Result<String, String> โ Transliterated text or error message
get_all_optionpub fn get_all_option(
from_script_name: &str,
to_script_name: &str,
) -> Result<Vec<String>, String>
Gets all available custom options for a script pair.
Parameters:
from_script_name โ Source script/language nameto_script_name โ Target script/language nameReturns: Result<Vec<String>, String> โ List of option keys or error message
get_script_typing_data_mappub fn get_script_typing_data_map(
script: &str,
) -> Result<ScriptTypingDataMap, String>
Gets typing data mappings for a script (for building custom input methods).
Parameters:
script โ Script/language nameReturns: Result<ScriptTypingDataMap, String> โ Typing data or error message
For character-by-character real-time input:
use lipilekhika::typing::{TypingContext, TypingContextOptions};
fn main() {
let mut ctx = TypingContext::new("Devanagari", None).unwrap();
// Process character-by-character input
let diff = ctx.take_key_input("n").unwrap();
println!("Delete: {}, Add: '{}'", diff.to_delete_chars_count, diff.diff_add_text);
let diff = ctx.take_key_input("a").unwrap();
println!("Delete: {}, Add: '{}'", diff.to_delete_chars_count, diff.diff_add_text);
// Clear context when needed
ctx.clear_context();
}
TypingContext โ Stateful context for typing mode
new(typing_lang: &str, options: Option<TypingContextOptions>) โ Create new contexttake_key_input(&mut self, key: &str) โ Process single character inputclear_context(&mut self) โ Clear internal stateTypingContextOptions โ Configuration for typing behavior
auto_context_clear_time_ms: u64 โ Auto-clear timeout (default: 4500ms)use_native_numerals: bool โ Use script-native numerals (default: true)include_inherent_vowel: bool โ Include inherent vowel/schwa (default: false)TypingDiff โ Result of processing a key input
to_delete_chars_count: usize โ Characters to delete from current statediff_add_text: String โ Text to insertScriptTypingDataMap โ Typing data for a script (from get_script_typing_data_map)
common_krama_map: Vec<TypingDataMapItem> โ Common character mappingsscript_specific_krama_map: Vec<TypingDataMapItem> โ Script-specific mappingsListType โ Character type enum: Anya, Vyanjana, Matra, Svara
TypingDataMapItem โ Type alias for (String, ListType, Vec<String>)
Devanagari, Bengali, Tamil, Telugu, Kannada, Malayalam, Gujarati, Odia, Gurmukhi, Sinhala, Tamil-Extended, Myanmar, Tibetan, Limbu, and more.
๐ Full list: lipilekhika.in/reference/supported_scripts
See the full list of custom transliteration options:
๐ lipilekhika.in/reference/custom_trans_options
MIT License โ See LICENSE for details