Thanks to visit codestin.com
Credit goes to lib.rs

#parser #open-j-talk #library

jlabel

HTS-style full-context label structure and parser/serializer from/to string

7 releases

Uses new Rust 2024

0.1.7 Dec 27, 2025
0.1.6 Nov 29, 2025
0.1.4 Mar 25, 2024
0.1.2 Feb 6, 2024
0.1.0 Jan 25, 2024

#1536 in Encoding

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

7,208 downloads per month
Used in 9 crates (4 directly)

BSD-3-Clause

31KB
629 lines

jlabel

Structure for HTS-style full-context label and parser/serializer from/to String.

Usage

Put the following in Cargo.toml

[dependencies]
jlabel = "0.1.7"

License

BSD-3-Clause

API Reference


lib.rs:

HTS-style full-context label structure and parser/serializer from/to string.

use jlabel::{Label, Mora, Phoneme, Word};

use std::str::FromStr;

let label_str = concat!(
    "sil^n-i+h=o",
    "/A:-3+1+7",
    "/B:xx-xx_xx",
    "/C:02_xx+xx",
    "/D:02+xx_xx",
    "/E:xx_xx!xx_xx-xx",
    "/F:7_4#0_xx@1_3|1_12",
    "/G:4_4%0_xx_1",
    "/H:xx_xx",
    "/I:3-12@1+2&1-8|1+41",
    "/J:5_29",
    "/K:2+8-41"
);
let label: Label = label_str.parse()?;

assert_eq!(
    label.phoneme,
    Phoneme {
        p2: Some("sil".to_string()),
        p1: Some("n".to_string()),
        c: Some("i".to_string()),
        n1: Some("h".to_string()),
        n2: Some("o".to_string()),
    }
);
assert_eq!(
    label.mora,
    Some(Mora {
        relative_accent_position: -3,
        position_forward: 1,
        position_backward: 7,
    })
);
assert_eq!(
    label.word_next,
    Some(Word {
        pos: Some(2),
        ctype: None,
        cform: None,
    })
);
assert_eq!(label.breath_group_prev, None);
#

Dependencies

~125–570KB
~13K SLoC