MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / parseBackslash

Method parseBackslash

source/core/StarShellParser.cpp:117–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

115}
116
117auto ShellParser::parseBackslash() -> Char {
118 auto letter = next();
119
120 if (!letter) {
121 return '\\';
122 }
123
124 switch (*letter) {
125 case ' ':
126 return ' ';
127 case 'n':
128 return '\n';
129 case 't':
130 return '\t';
131 case 'r':
132 return '\r';
133 case 'b':
134 return '\b';
135 case 'v':
136 return '\v';
137 case 'f':
138 return '\f';
139 case 'a':
140 return '\a';
141 case '\'':
142 return '\'';
143 case '"':
144 return '"';
145 case '\\':
146 return '\\';
147 case '0':
148 return '\0';
149 case 'u': {
150 auto letter = parseUnicodeEscapeSequence();
151 if (isUtf16LeadSurrogate(letter)) {
152 auto shouldBeSlash = next();
153 if (shouldBeSlash && shouldBeSlash == '\\') {
154 auto shouldBeU = next();
155 if (shouldBeU && shouldBeU == 'u') {
156 return parseUnicodeEscapeSequence(letter);
157 } else {
158 previous();
159 }
160 }
161 previous();
162 return STAR_UTF32_REPLACEMENT_CHAR;
163 } else {
164 return letter;
165 }
166 }
167 default:
168 return *letter;
169 }
170}
171
172auto ShellParser::parseUnicodeEscapeSequence(Maybe<Char> previousCodepoint) -> Char {
173 String codepoint;

Callers

nothing calls this directly

Calls 1

isUtf16LeadSurrogateFunction · 0.85

Tested by

no test coverage detected