42 lines
787 B
Text
42 lines
787 B
Text
rune_width :: (r: rune) -> int {
|
|
if r < 0 return -1;
|
|
|
|
if r <= 0x7F return 1;
|
|
if r <= 0x7FF return 2;
|
|
|
|
if r >= 0xD800 &&
|
|
r <= 0xDFFF return -1;
|
|
|
|
if r <= 0xFFFF return 3;
|
|
if r <= 0x10FFFF return 4;
|
|
|
|
return -1;
|
|
}
|
|
|
|
use_pascal_names :: (names: []string) {
|
|
for name: names {
|
|
b: basic.String_Builder;
|
|
|
|
upper := false;
|
|
for i: 0..name.count - 1 {
|
|
c := name[i];
|
|
if c == #char "_" {
|
|
upper = true;
|
|
continue;
|
|
}
|
|
|
|
if i == 0 {
|
|
upper = true;
|
|
}
|
|
|
|
if upper {
|
|
basic.append(*b, basic.to_upper(c));
|
|
upper = false;
|
|
} else {
|
|
basic.append(*b, c);
|
|
}
|
|
}
|
|
|
|
names[it_index] = basic.builder_to_string(*b);
|
|
}
|
|
}
|