T-Dark letter cases implemented
This commit is contained in:
parent
ab76516624
commit
1a61c66e10
|
@ -596,12 +596,36 @@ impl<'source> Parser<'source> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Perform lang -> script substitution if in T-Dark block
|
/// Perform lang -> script substitution if in T-Dark block
|
||||||
fn tdark_subst(&self, string: String) -> String {
|
fn tdark_subst(&self, mut string: String) -> String {
|
||||||
if self.tdark {
|
if self.tdark {
|
||||||
string.replace("lang", "script")
|
if let Some(pos) = string.to_lowercase().find("lang") {
|
||||||
|
let range = pos..pos + 4;
|
||||||
|
let mut count_upper = 0_u8;
|
||||||
|
string.replace_range(
|
||||||
|
range.clone(),
|
||||||
|
&(string[range]
|
||||||
|
.chars()
|
||||||
|
.zip("scri".chars())
|
||||||
|
.map(|(lc, sc)| {
|
||||||
|
if lc.is_uppercase() {
|
||||||
|
count_upper += 1;
|
||||||
|
sc.to_ascii_uppercase()
|
||||||
} else {
|
} else {
|
||||||
string
|
sc.to_ascii_lowercase()
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
.collect::<String>()
|
||||||
|
+ match count_upper {
|
||||||
|
0 | 1 => "pt",
|
||||||
|
2 if rand::random() => "Pt",
|
||||||
|
2 => "pT",
|
||||||
|
_ => "PT",
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue