Idiomatic josa selector.
Josa is a [Rust] library to select appropriate josas for korean language.
Josa is an [extension trait] implemented for [String
] type.
Its API works just like [push_str
] method on [String
].
```rust use josa::JosaExt; use josa::Josa::{EunNeun, IGa};
let mut user = "유진".toowned(); let mut mackerel = "고등어".toowned();
user.pushjosa(EunNeun); mackerel.pushjosa(IGa);
let sentence = format!("{} {} 먹고싶다", user, mackerel);
assert_eq!(sentence, "유진은 고등어가 먹고싶다"); ```
:warning: Like [
push_str
] does,push_josa
expects [String
], not [str
], as its argument.
+
, +=
OperatorYou can use +
, +=
operator to append josa.
```rust use josa::Josa::{EunNeun, IGa};
let user = "유진".toowned(); let mackerel = "고등어".toowned();
let sentence = format!("{} {} 먹고싶다", user + EunNeun, mackerel + IGa);
assert_eq!(sentence, "유진은 고등어가 먹고싶다"); ```
Add josa
as a dependency in your Cargo.toml
.
toml
[dependencies]
josa = "0.1.0"
then import JosaExt
trait in your code:
rust
use josa::JosaExt;
Now you can use methods on [String
].
rust
use josa::JosaExt;
// 🔥 here..
See docs.rs
select
methodSometimes you don't want to mutate your String. For that case, we will provide pure function select
which returns appropriate josa for given noun.
rust
fn select(noun: &str, josa: Josa) -> &str
select
macroAs soon as hygiene 2.0 (#54727) arrives stable, we will add support for following macro:
rust
select!("{}{은} {}{가} 먹고싶다", user, mackerel);
which is more clear compared to current syntax:
As soon as non-ASCII identifiers (#55467) arrives stable, we will change the names of josas to Hangul:
rust
format!("{} {} 먹고싶다", user + 은는, mackerel + 이가);
Distributed under the MIT license.