luaur_analysis/methods/
ast_json_encoder_write_string.rs1use crate::records::ast_json_encoder::AstJsonEncoder;
2use luaur_common::functions::format::format;
3
4impl AstJsonEncoder {
5 pub fn write_string(&mut self, sv: &str) {
6 self.write_raw_string_view("\"");
7
8 for c in sv.chars() {
9 let c_char = c as core::ffi::c_char;
10 if c == '"' {
11 self.write_raw_string_view("\\\"");
12 } else if c == '\\' {
13 self.write_raw_string_view("\\\\");
14 } else if c < ' ' {
15 let formatted = format(format_args!("\\u{:04x}", c as u32));
16 self.write_raw_string_view(&formatted);
17 } else if c == '\n' {
18 self.write_raw_string_view("\\n");
19 } else {
20 self.write_raw_c_char(c_char);
21 }
22 }
23
24 self.write_raw_string_view("\"");
25 }
26}