예제 #1
0
        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('"');
        }
예제 #2
0
        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);
        }