private static void AddQuoted(ILuaState lua, StringBuilder sb, int arg) { var s = lua.L_CheckString(arg); sb.Append('"'); for (var i = 0; i < s.Length; ++i) { var c = s[i]; if (c == '"' || c == '\\' || c == '\n') { sb.Append('\\').Append(c); } else if (c == '\0' || Char.IsControl(c)) { if (i + 1 >= s.Length || !Char.IsDigit(s[i + 1])) { sb.AppendFormat("\\{0:D}", (int)c); } else { sb.AppendFormat("\\{0:D3}", (int)c); } } else { sb.Append(c); } } sb.Append('"'); }
private static bool MatchClass(char c, char cl) { bool res; switch (cl) { case 'a': res = Char.IsLetter(c); break; case 'c': res = Char.IsControl(c); break; case 'd': res = Char.IsDigit(c); break; case 'g': throw new System.NotImplementedException(); case 'l': res = Char.IsLower(c); break; case 'p': res = Char.IsPunctuation(c); break; case 's': res = Char.IsWhiteSpace(c); break; case 'u': res = Char.IsUpper(c); break; case 'w': res = Char.IsLetterOrDigit(c); break; case 'x': res = IsXDigit(c); break; case 'z': res = (c == '\0'); break; /* deprecated option */ default: return(cl == c); } return(res); }