Beispiel #1
0
        private static string ToLiteral(ScriptLiteralStringQuoteType quoteType, string input)
        {
            char quote;

            switch (quoteType)
            {
            case ScriptLiteralStringQuoteType.DoubleQuote:
                quote = '"';
                break;

            case ScriptLiteralStringQuoteType.SimpleQuote:
                quote = '\'';
                break;

            case ScriptLiteralStringQuoteType.Verbatim:
                quote = '`';
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(quoteType));
            }

            var literal = new StringBuilder(input.Length + 2);

            literal.Append(quote);

            if (quoteType == ScriptLiteralStringQuoteType.Verbatim)
            {
                literal.Append(input.Replace("`", "``"));
            }
            else
            {
                foreach (var c in input)
                {
                    switch (c)
                    {
                    case '\\': literal.Append(@"\\"); break;

                    case '\0': literal.Append(@"\0"); break;

                    case '\a': literal.Append(@"\a"); break;

                    case '\b': literal.Append(@"\b"); break;

                    case '\f': literal.Append(@"\f"); break;

                    case '\n': literal.Append(@"\n"); break;

                    case '\r': literal.Append(@"\r"); break;

                    case '\t': literal.Append(@"\t"); break;

                    case '\v': literal.Append(@"\v"); break;

                    default:
                        if (c == quote)
                        {
                            literal.Append('\\').Append(c);
                        }
                        else if (char.IsControl(c))
                        {
                            literal.Append(@"\u");
                            literal.Append(((ushort)c).ToString("x4"));
                        }
                        else
                        {
                            literal.Append(c);
                        }
                        break;
                    }
                }
            }
            literal.Append(quote);
            return(literal.ToString());
        }
Beispiel #2
0
        private static string ToLiteral(ScriptLiteralStringQuoteType quoteType, string input)
        {
            char quote;

            switch (quoteType)
            {
            case ScriptLiteralStringQuoteType.DoubleQuote:
                quote = SpecialChar.DoubleQuote;
                break;

            case ScriptLiteralStringQuoteType.SimpleQuote:
                quote = SpecialChar.SingleQuote;
                break;

            case ScriptLiteralStringQuoteType.Verbatim:
                quote = '`';
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(quoteType));
            }

            StringBuilder literal = new StringBuilder(input.Length + 2);

            literal.Append(quote);

            if (quoteType == ScriptLiteralStringQuoteType.Verbatim)
            {
                literal.Append(input.Replace("`", "``"));
            }
            else
            {
                foreach (char c in input)
                {
                    switch (c)
                    {
                    case SpecialChar.EscapeChar:
                        literal.Append(SpecialChar.EscapeChar.ToString() + SpecialChar.EscapeChar.ToString());
                        break;

                    case SpecialChar.Null:
                        literal.Append(SpecialChar.EscapeChar.ToString() + "0");
                        break;

                    case '\a':
                        literal.Append(SpecialChar.EscapeChar.ToString() + "a");
                        break;

                    case SpecialChar.Backspace:
                        literal.Append(SpecialChar.EscapeChar.ToString() + "b");
                        break;

                    case SpecialChar.FormFeed:
                        literal.Append(SpecialChar.EscapeChar.ToString() + "f");
                        break;

                    case SpecialChar.NewLine:
                        literal.Append(SpecialChar.EscapeChar.ToString() + "n");
                        break;

                    case SpecialChar.CarriageReturn:
                        literal.Append(SpecialChar.EscapeChar.ToString() + "r");
                        break;

                    case SpecialChar.Tab:
                        literal.Append(SpecialChar.EscapeChar.ToString() + "t");
                        break;

                    case SpecialChar.VerticalTab:
                        literal.Append(SpecialChar.EscapeChar.ToString() + "v");
                        break;

                    default:
                        if (c == quote)
                        {
                            literal.Append(SpecialChar.EscapeChar).Append(c);
                        }
                        else if (char.IsControl(c))
                        {
                            literal.Append(SpecialChar.EscapeChar.ToString() + "u");
                            literal.Append(((ushort)c).ToString("x4"));
                        }
                        else
                        {
                            literal.Append(c);
                        }
                        break;
                    }
                }
            }
            literal.Append(quote);
            return(literal.ToString());
        }