Ejemplo n.º 1
0
            public bool ApplyAlignment(
                AlignTokensOperation operation, Dictionary <SyntaxToken, int> previousChangesMap, CancellationToken cancellationToken)
            {
                Contract.ThrowIfNull(previousChangesMap);

                IList <TokenData> tokenData;

                switch (operation.Option)
                {
                case AlignTokensOption.AlignIndentationOfTokensToBaseToken:
                {
                    if (!ApplyAlignment(operation.BaseToken, operation.Tokens, previousChangesMap, out tokenData, cancellationToken))
                    {
                        return(false);
                    }

                    break;
                }

                case AlignTokensOption.AlignPositionOfTokensToIndentation:
                {
                    // token will be align to current indentation. for this operation, we don't care
                    // about base token
                    if (operation.Tokens.IsEmpty())
                    {
                        return(false);
                    }

                    tokenData = GetTokenWithIndices(operation.Tokens);

                    // no valid tokens. do nothing and return
                    if (tokenData.Count == 0)
                    {
                        return(false);
                    }

                    ApplySpacesToAlignWithCurrentIndentation(tokenData, previousChangesMap, cancellationToken);
                    break;
                }

                case AlignTokensOption.AlignToFirstTokenOnBaseTokenLine:
                {
                    if (!ApplyAlignment(tokenStream.FirstTokenOfBaseTokenLine(operation.BaseToken), operation.Tokens, previousChangesMap, out tokenData, cancellationToken))
                    {
                        return(false);
                    }

                    break;
                }

                default:
                {
                    return(Contract.FailWithReturn <bool>("Unknown option"));
                }
                }

                ApplyIndentationChangesToDependentTokens(tokenData, previousChangesMap, cancellationToken);

                return(true);
            }
            public bool ApplyAlignment(
                AlignTokensOperation operation, Dictionary <SyntaxToken, int> previousChangesMap, CancellationToken cancellationToken)
            {
                Contract.ThrowIfNull(previousChangesMap);

                IList <TokenData>?tokenData;

                switch (operation.Option)
                {
                case AlignTokensOption.AlignIndentationOfTokensToBaseToken:
                    if (!ApplyAlignment(operation.BaseToken, operation.Tokens, previousChangesMap, out tokenData, cancellationToken))
                    {
                        return(false);
                    }

                    break;

                case AlignTokensOption.AlignIndentationOfTokensToFirstTokenOfBaseTokenLine:
                    if (!ApplyAlignment(_context.TokenStream.FirstTokenOfBaseTokenLine(operation.BaseToken), operation.Tokens, previousChangesMap, out tokenData, cancellationToken))
                    {
                        return(false);
                    }

                    break;

                default:
                    throw ExceptionUtilities.UnexpectedValue(operation.Option);
                }

                ApplyIndentationChangesToDependentTokens(tokenData, previousChangesMap, cancellationToken);

                return(true);
            }
            public bool ApplyAlignment(
                AlignTokensOperation operation, Dictionary <SyntaxToken, int> previousChangesMap, CancellationToken cancellationToken)
            {
                Contract.ThrowIfNull(previousChangesMap);

                IList <TokenData> tokenData;

                switch (operation.Option)
                {
                case AlignTokensOption.AlignIndentationOfTokensToBaseToken:
                {
                    if (!ApplyAlignment(operation.BaseToken, operation.Tokens, previousChangesMap, out tokenData, cancellationToken))
                    {
                        return(false);
                    }

                    break;
                }

                default:
                {
                    return(Contract.FailWithReturn <bool>("Unknown option"));
                }
                }

                ApplyIndentationChangesToDependentTokens(tokenData, previousChangesMap, cancellationToken);

                return(true);
            }