Skip to content

AranaDeDoros/Monika

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monika (モニカ)

monika

Monika is a Japanese strings microlibrary for Nim. It provides a clean, "implicit-style" API for handling characters, strings, and conversions. Ported from JpnUtils.

Static Badge Static Badge

Features

  • Implicit Conversions: Treat standard strings as Japanese objects via Nim converters.
  • Script Detection: Easily check for Hiragana, Katakana, and Kanji.
  • Diacritics: Detect Dakuten (voiced) and Handakuten (semi-voiced) marks.
  • Half-Width Conversion: Efficiently convert between full-width and half-width forms.
  • Punctuation Wrappers: Scala-style string wrapping for Japanese quotes.

Installation

Add Monika to your .nimble file:

requires "monika >= 0.1.0"

Or install via command line:

nimble install https://github.com/AranaDeDoros/Monika

Usage

Monika uses a converter to extend standard strings. Simply import Monika and start using the utility methods.

import monika/japaneseutils
import monika/punctuation
import monika/halfwidthconverter

if "こんにちは".hasHiragana:
  echo "Contains Hiragana!"

if "モニカ".hasKatakana:
  echo "Contains Katakana!"

if "学校".hasKanji:
  echo "Contains Kanji!"

# full-width to half-width
echo "ハロー、ワールド!".toHalfWidth
# Output: ハロー、ワールド!

# Check for voiced marks
if "".hasDakuten:
  echo "This character is voiced."

let msg = "Hello"
echo msg.wrapInSingleQuotes # Output: 「Hello」
echo msg.wrapInDoubleQuotes # Output: 『Hello』

let s = "ガキ"
let h = "".asRune()
let k = "".asRune()

if h.isSome:
  echo h.get.hiraToKata() # Output: カ
else:
  echo "empty string"

if k.isSome:
  echo k.get.kataToHira() # Output: え
else:
  echo "empty string"

let str = "日本語abcカナ"
echo str.containsOnly({Kanji, Katakana})  # false
let summary = str.scriptSummary()

echo summary.hiragana  # 0
echo summary.katakana  # 2
echo summary.kanji     # 3
echo summary.other     # 3

Test

nimble test

Current modules

  1. monika/japaneseutils: Core logic and string converters.
  2. monika/kanadiacritics: Logic for voiced and semi-voiced marks.
  3. monika/punctuation: Japanese-specific punctuation utilities.
  4. monika/halfwidthconverter: Japanese-specific halfwidthconverter utilities.

About

Nim port of JpnUtils. A microlibrary to work with japanese strings.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages