Exemple #1
0
        private bool ShouldPrintAttribute(Symbol name)
        {
            if (!S.IsTriviaSymbol(name))
            {
                return(true);
            }

            if (name == S.TriviaRawTextBefore || name == S.TriviaRawTextAfter)
            {
                return(!ObeyRawText && (!OmitUnknownTrivia || PrintExplicitTrivia));
            }
            else if (name == S.TriviaInParens)
            {
                return(false);
            }
            else
            {
                bool known = name == S.TriviaSpaceBefore || name == S.TriviaSpaceAfter ||
                             name == S.TriviaSLCommentBefore || name == S.TriviaSLCommentAfter ||
                             name == S.TriviaMLCommentBefore || name == S.TriviaMLCommentAfter;
                if (known)
                {
                    return(PrintExplicitTrivia);
                }
                else
                {
                    return(!OmitUnknownTrivia);
                }
            }
        }
        private bool MaybePrintTrivia(ILNode attr, bool needSpace, bool testOnly = false)
        {
            var name = attr.Name;

            if (S.IsTriviaSymbol(name))
            {
                if ((name == S.TriviaRawText) && _o.ObeyRawText)
                {
                    if (!testOnly)
                    {
                        _out.Write(GetRawText(attr), true);
                    }
                    return(true);
                }
                else if (_o.PrintTriviaExplicitly)
                {
                    return(false);
                }
                else
                {
                    if (name == S.TriviaNewline)
                    {
                        if (!testOnly && !_o.OmitSpaceTrivia)
                        {
                            _out.Newline();
                        }
                        return(true);
                    }
                    else if ((name == S.TriviaSpaces))
                    {
                        if (!testOnly && !_o.OmitSpaceTrivia)
                        {
                            PrintSpaces(GetRawText(attr));
                        }
                        return(true);
                    }
                    else if (name == S.TriviaSLComment)
                    {
                        if (!testOnly && !_o.OmitComments)
                        {
                            if (needSpace && !_out.LastCharWritten.IsOneOf(' ', '\t'))
                            {
                                _out.Write('\t', true);
                            }
                            _out.Write("//", false);
                            _out.Write(GetRawText(attr), true);
                            _out.Newline(pending: true);
                        }
                        return(true);
                    }
                    else if (name == S.TriviaMLComment)
                    {
                        if (!testOnly && !_o.OmitComments)
                        {
                            if (needSpace && !_out.LastCharWritten.IsOneOf(' ', '\t', '\n'))
                            {
                                _out.Space();
                            }
                            _out.Write("/*", false);
                            _out.Write(GetRawText(attr), false);
                            _out.Write("*/", false);
                        }
                        return(true);
                    }
                    else if (name == S.TriviaAppendStatement)
                    {
                        return(true);                        // obeyed elsewhere
                    }
                    if (_o.OmitUnknownTrivia)
                    {
                        return(true);                        // block printing
                    }
                    if (!needSpace && name == S.TriviaTrailing)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }