private Emitter WriteString(Emitter emitter)
        {
            if (Style == ScalarStyle.Plain)
            {
                if (emitter.IsFormatKeys && emitter.IsKey)
                {
                    emitter.WriteFormat(m_string);
                }
                else
                {
                    emitter.Write(m_string);
                }
            }
            else if (Style == ScalarStyle.SingleQuoted)
            {
                emitter.WriteDelayed();
                for (int i = 0; i < m_string.Length; i++)
                {
                    char c = m_string[i];
                    emitter.WriteRaw(c);
                    if (c == '\'')
                    {
                        emitter.WriteRaw(c);
                    }
                    else if (c == '\n')
                    {
                        emitter.WriteRaw("\n    ");
                    }
                }
            }
            else if (Style == ScalarStyle.DoubleQuoted)
            {
                emitter.WriteDelayed();
                for (int i = 0; i < m_string.Length; i++)
                {
                    char c = m_string[i];
                    switch (c)
                    {
                    case '\\':
                        emitter.WriteRaw('\\').WriteRaw('\\');
                        break;

                    case '\n':
                        emitter.WriteRaw('\\').WriteRaw('n');
                        break;

                    case '\r':
                        emitter.WriteRaw('\\').WriteRaw('r');
                        break;

                    case '\t':
                        emitter.WriteRaw('\\').WriteRaw('t');
                        break;

                    case '"':
                        emitter.WriteRaw('\\').WriteRaw('"');
                        break;

                    default:
                        emitter.WriteRaw(c);
                        break;
                    }
                }
            }
            else
            {
                throw new NotSupportedException(Style.ToString());
            }
            return(emitter);
        }
Ejemplo n.º 2
0
        private Emitter WriteString(Emitter emitter)
        {
            if (Style == ScalarStyle.Plain)
            {
                if (emitter.IsFormatKeys && emitter.IsKey)
                {
                    emitter.WriteFormat(m_string);
                }
                else
                {
                    emitter.Write(m_string);
                }
            }
            else if (Style == ScalarStyle.SingleQuoted)
            {
                emitter.WriteDelayed();
                for (int i = 0; i < m_string.Length; i++)
                {
                    char c = m_string[i];
                    emitter.WriteRaw(c);
                    if (c == '\'')
                    {
                        emitter.WriteRaw(c);
                    }
                    else if (c == '\n')
                    {
                        emitter.WriteRaw("\n    ");
                    }
                }
            }
            else if (Style == ScalarStyle.DoubleQuoted)
            {
                emitter.WriteDelayed();
                int lineLimit = MaxLineLength;
                for (int i = 0; i < m_string.Length; i++)
                {
                    char c = m_string[i];
                    if (i >= lineLimit)
                    {
                        // space at the beginning of the line is discarded
                        if (c != ' ')
                        {
                            emitter.WriteRaw('\\').WriteRaw('\n').WriteRaw(' ');
                            lineLimit += MaxLineLength;
                        }
                    }

                    switch (c)
                    {
                    case '\\':
                        emitter.WriteRaw('\\').WriteRaw('\\');
                        break;

                    case '\n':
                        emitter.WriteRaw('\\').WriteRaw('n');
                        break;

                    case '\r':
                        emitter.WriteRaw('\\').WriteRaw('r');
                        break;

                    case '\t':
                        emitter.WriteRaw('\\').WriteRaw('t');
                        break;

                    case '"':
                        emitter.WriteRaw('\\').WriteRaw('"');
                        break;

                    default:
                        emitter.WriteRaw(c);
                        break;
                    }
                }
            }
            else
            {
                throw new NotSupportedException(Style.ToString());
            }
            return(emitter);
        }