Exemple #1
0
 internal override void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     if (_preceeding != null) {
         _preceeding.AppendCodeString(res, ast, format);
     }
     res.Append(_verbatimImage ?? "<error>");
 }
Exemple #2
0
        internal override void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format)
        {
            Target.AppendCodeString(res, ast, format);
            format.Append(
                res,
                format.SpaceBeforeIndexBracket,
                " ",
                "",
                this.GetProceedingWhiteSpace(ast)
            );

            res.Append('[');
            _index.AppendCodeString(
                res,
                ast,
                format,
                format.SpaceWithinIndexBrackets != null ? format.SpaceWithinIndexBrackets.Value ? " " : "" : null
            );

            if (!this.IsMissingCloseGrouping(ast)) {
                format.Append(
                    res,
                    format.SpaceWithinIndexBrackets,
                    " ",
                    "",
                    this.GetSecondWhiteSpace(ast)
                );
                res.Append(']');
            }
        }
Exemple #3
0
 public override string GetLeadingWhiteSpace(JAst ast)
 {
     if (this.IsAltForm(ast)) {
         return Items[0].GetLeadingWhiteSpace(ast);
     }
     return base.GetLeadingWhiteSpace(ast);
 }
Exemple #4
0
 public override string GetLeadingWhiteSpace(JAst ast)
 {
     if (_sliceStart != null) {
         return _sliceStart.GetLeadingWhiteSpace(ast);
     }
     return this.GetProceedingWhiteSpace(ast);
 }
Exemple #5
0
 internal override void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format, string leadingWhiteSpace)
 {
     string kwOnlyText = this.GetExtraVerbatimText(ast);
     if (kwOnlyText != null) {
         if (leadingWhiteSpace != null) {
             res.Append(leadingWhiteSpace);
             res.Append(kwOnlyText.TrimStart());
             leadingWhiteSpace = null;
         } else {
             res.Append(kwOnlyText);
         }
     }
     bool isAltForm = this.IsAltForm(ast);
     if (isAltForm) {
         res.Append(leadingWhiteSpace ?? this.GetProceedingWhiteSpace(ast));
         res.Append('(');
         leadingWhiteSpace = null;
     }
     _error.AppendCodeString(res, ast, format, leadingWhiteSpace);
     if (this.DefaultValue != null) {
         res.Append(this.GetSecondWhiteSpace(ast));
         res.Append('=');
         this.DefaultValue.AppendCodeString(res, ast, format);
     }
     if (isAltForm && !this.IsMissingCloseGrouping(ast)) {
         res.Append(this.GetSecondWhiteSpace(ast));
         res.Append(')');
     }
 }
Exemple #6
0
        /// <summary>
        /// Returns a new SuiteStatement which is composed of a subset of the statements in this suite statement.
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public SuiteStatement CloneSubset(JAst ast, int start, int end)
        {
            Statement[] statements = new Statement[end - start + 1];
            for (int i = start; i <= end; i++) {
                statements[i - start] = Statements[i];
            }

            var res = new SuiteStatement(statements);

            // propagate white space so we stay mostly the same...
            var itemWhiteSpace = this.GetListWhiteSpace(ast);
            var colonWhiteSpace = this.GetProceedingWhiteSpaceDefaultNull(ast);
            if (colonWhiteSpace != null) {
                ast.SetAttribute(res, NodeAttributes.PreceedingWhiteSpace, "");
            } else if (itemWhiteSpace != null) {
                // semi-colon list of statements, must end in a new line, but the original new line
                // could be multiple lines.
                ast.SetAttribute(res, NodeAttributes.ListWhiteSpace, new string[0]);
                var trailingNewLine = this.GetTrailingNewLine(ast);
                if (trailingNewLine != null) {
                    ast.SetAttribute(res, NodeAttributes.TrailingNewLine, "\r\n");
                }
            }

            if (this.IsAltForm(ast)) {
                ast.SetAttribute(res, NodeAttributes.IsAltFormValue, NodeAttributes.IsAltFormValue);
            }

            return res;
        }
Exemple #7
0
        public MethodExtractor(ITextView textView)
        {
            _view = textView;
            var snapshot = _view.TextBuffer.CurrentSnapshot;

            _ast = _view.GetAnalyzer().ParseFile(snapshot);
        }
Exemple #8
0
 internal override void AppendCodeStringStmt(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     foreach(var preceeding in _preceeding) {
         preceeding.AppendCodeString(res, ast, format);
     }
     res.Append(this.GetVerbatimImage(ast) ?? "<error stmt>");
 }
Exemple #9
0
 public override string GetLeadingWhiteSpace(JAst ast)
 {
     var decorateWhiteSpace = this.GetNamesWhiteSpace(ast);
     if (decorateWhiteSpace != null && decorateWhiteSpace.Length > 0) {
         return decorateWhiteSpace[0];
     }
     return "";
 }
 internal override void AppendCodeStringStmt(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     _left.AppendCodeString(res, ast, format);
     res.Append(this.GetProceedingWhiteSpace(ast));
     res.Append(_op.ToCodeString());
     res.Append('=');
     _right.AppendCodeString(res, ast, format);
 }
Exemple #11
0
 internal override void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     if (this.IsAltForm(ast)) {
         this.AppendCodeString(res, ast, format, "", "", _item);
     } else {
         this.AppendCodeString(res, ast, format, "(", this.IsMissingCloseGrouping(ast) ? "" : ")", _item);
     }
 }
Exemple #12
0
        public ImportRemover(ITextView textView, bool allScopes)
        {
            _view = textView;
            var snapshot = _view.TextBuffer.CurrentSnapshot;

            _ast = _view.GetAnalyzer().ParseFile(snapshot);
            _allScopes = allScopes;
        }
Exemple #13
0
 public override string GetLeadingWhiteSpace(JAst ast)
 {
     var whitespace = this.GetListWhiteSpace(ast);
     if (whitespace != null && whitespace.Length > 0) {
         return whitespace[0];
     }
     return null;
 }
Exemple #14
0
        public override string GetLeadingWhiteSpace(JAst ast)
        {
            if (_left.Length > 0 && _left[0] != null) {
                return _left[0].GetLeadingWhiteSpace(ast);
            }

            return null;
        }
Exemple #15
0
 internal override void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     format.ReflowComment(res, this.GetProceedingWhiteSpace(ast));
     res.Append('`');
     _expression.AppendCodeString(res, ast, format);
     if (!this.IsMissingCloseGrouping(ast)) {
         res.Append(this.GetSecondWhiteSpace(ast));
         res.Append('`');
     }
 }
Exemple #16
0
 internal override void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     var whitespace = this.GetListWhiteSpace(ast);
     for (int i = 0; i < _dotCount; i++) {
         if (whitespace != null) {
             res.Append(whitespace[i]);
         }
         res.Append('.');
     }
     base.AppendCodeString(res, ast, format);
 }
Exemple #17
0
 internal override void AppendCodeStringStmt(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     format.ReflowComment(res, this.GetProceedingWhiteSpace(ast));
     res.Append("assert");
     _test.AppendCodeString(res, ast, format);
     if (_message != null) {
         res.Append(this.GetSecondWhiteSpace(ast));
         res.Append(',');
         _message.AppendCodeString(res, ast, format);
     }
 }
Exemple #18
0
 internal override void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     res.Append(this.GetProceedingWhiteSpace(ast));
     res.Append("for");
     _lhs.AppendCodeString(res, ast, format);
     if (!this.IsIncompleteNode(ast)) {
         res.Append(this.GetSecondWhiteSpace(ast));
         res.Append("in");
         _list.AppendCodeString(res, ast, format);
     }
 }
Exemple #19
0
        public override Statement GetBody(JAst root)
        {
            Statement body = _node as Statement;
            if (body == null) {
                var retStmt = new ReturnStatement((Expression)_node);
                retStmt.RoundTripRemoveValueWhiteSpace(root);
                body = retStmt;
            }

            return new SuiteStatement(new[] { body });
        }
Exemple #20
0
 public ExtractedMethodCreator(JAst ast, ScopeStatement[] scopes, HashSet<JVariable> inputVariables, HashSet<JVariable> outputVariables, SelectionTarget target, int indentSize, bool insertTabs)
 {
     _ast = ast;
     _scopes = scopes;
     _inputVars = new List<JVariable>(inputVariables);
     _outputVars = new List<JVariable>(outputVariables);
     _inputVars.Sort(CompareVariables);
     _outputVars.Sort(CompareVariables);
     _target = target;
     _indentSize = indentSize;
     _insertTabs = insertTabs;
 }
Exemple #21
0
 internal override void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     format.ReflowComment(res, this.GetProceedingWhiteSpace(ast));
     res.Append("yield");
     if (!this.IsAltForm(ast)) {
         _expression.AppendCodeString(res, ast, format);
         var itemWhiteSpace = this.GetListWhiteSpace(ast);
         if (itemWhiteSpace != null) {
             res.Append(",");
             res.Append(itemWhiteSpace[0]);
         }
     }
 }
Exemple #22
0
        internal override void AppendCodeStringStmt(StringBuilder res, JAst ast, CodeFormattingOptions format)
        {
            var namesWhiteSpace = this.GetNamesWhiteSpace(ast);

            if (namesWhiteSpace != null) {
                ListExpression.AppendItems(res, ast, format, "global", "", this, Names.Count, (i, sb) => {
                    sb.Append(namesWhiteSpace[i]);
                    Names[i].AppendCodeString(res, ast, format);
                });
            } else {
                ListExpression.AppendItems(res, ast, format, "global", "", this, Names.Count, (i, sb) => Names[i].AppendCodeString(sb, ast, format));
            }
        }
Exemple #23
0
 internal override void AppendCodeStringStmt(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     format.ReflowComment(res, this.GetProceedingWhiteSpace(ast));
     res.Append("print");
     if (_dest != null) {
         res.Append(this.GetSecondWhiteSpace(ast));
         res.Append(">>");
         _dest.AppendCodeString(res, ast, format);
         if (_expressions.Length > 0) {
             res.Append(this.GetThirdWhiteSpace(ast));
             res.Append(',');
         }
     }
     ListExpression.AppendItems(res, ast, format, "", "", this, Expressions);
 }
Exemple #24
0
 internal override void AppendCodeStringStmt(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     format.ReflowComment(res, this.GetProceedingWhiteSpace(ast));
     res.Append("exec");
     _code.AppendCodeString(res, ast, format);
     if (_globals != null) {
         res.Append(this.GetSecondWhiteSpace(ast));
         res.Append("in");
         _globals.AppendCodeString(res, ast, format);
         if (_locals != null) {
             res.Append(this.GetThirdWhiteSpace(ast));
             res.Append(',');
             _locals.AppendCodeString(res, ast, format);
         }
     }
 }
Exemple #25
0
        internal override void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format)
        {
            var whitespace = this.GetNamesWhiteSpace(ast);

            for (int i = 0, whitespaceIndex = 0; i < _names.Length; i++) {
                if (whitespace != null) {
                    res.Append(whitespace[whitespaceIndex++]);
                }
                if (i != 0) {
                    res.Append('.');
                    if (whitespace != null) {
                        res.Append(whitespace[whitespaceIndex++]);
                    }
                }
                _names[i].AppendCodeString(res, ast, format);
            }
        }
Exemple #26
0
 internal override void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     var verbatimPieces = this.GetVerbatimNames(ast);
     var verbatimComments = this.GetListWhiteSpace(ast);
     if (verbatimPieces != null) {
         // string+ / bytes+, such as "abc" "abc", which can spawn multiple lines, and
         // have comments in between the peices.
         for (int i = 0; i < verbatimPieces.Length; i++) {
             if (verbatimComments != null && i < verbatimComments.Length) {
                 format.ReflowComment(res, verbatimComments[i]);
             }
             res.Append(verbatimPieces[i]);
         }
     } else {
         format.ReflowComment(res, this.GetProceedingWhiteSpaceDefaultNull(ast));
         res.Append(this.GetExtraVerbatimText(ast) ?? (_value == null ? "None" : _value.ToString()));
     }
 }
Exemple #27
0
        internal void AppendCodeString(StringBuilder res, JAst ast, CodeFormattingOptions format, string start, string end, Expression item)
        {
            if (!String.IsNullOrEmpty(start)) {
                format.ReflowComment(res, this.GetProceedingWhiteSpace(ast));
                res.Append(start);
            }

            item.AppendCodeString(res, ast, format);

            for (int i = 0; i < Iterators.Count; i++) {
                Iterators[i].AppendCodeString(res, ast, format);
            }

            if (!String.IsNullOrEmpty(end)) {
                res.Append(this.GetSecondWhiteSpace(ast));
                res.Append(end);
            }
        }
Exemple #28
0
        internal override void AppendCodeStringStmt(StringBuilder res, JAst ast, CodeFormattingOptions format)
        {
            var lhs = this.GetListWhiteSpace(ast);
            for (int i = 0; i < Left.Count; i++) {
                if (lhs != null && i != 0) {
                    format.Append(
                        res,
                        format.SpacesAroundAssignmentOperator,
                        " ",
                        "",
                        lhs[i - 1]
                    );
                    res.Append("=");
                }
                Left[i].AppendCodeString(
                    res,
                    ast,
                    format,
                    i != 0 && format.SpacesAroundAssignmentOperator != null ?
                        format.SpacesAroundAssignmentOperator.Value ? " " : "" :
                        null
                );
            }
            if (lhs != null) {
                format.Append(
                    res,
                    format.SpacesAroundAssignmentOperator,
                    " ",
                    "",
                    lhs[lhs.Length - 1]
                );
            }
            res.Append("=");

            Right.AppendCodeString(
                res,
                ast,
                format,
                format.SpacesAroundAssignmentOperator != null ?
                    format.SpacesAroundAssignmentOperator.Value ? " " : "" :
                    null
            );
        }
Exemple #29
0
        internal override void AppendCodeStringStmt(StringBuilder res, JAst ast, CodeFormattingOptions format)
        {
            format.ReflowComment(res, this.GetProceedingWhiteSpace(ast));
            res.Append("return");
            if (_expression != null) {
                int len = res.Length;
                _expression.AppendCodeString(res, ast, format);
                if (this.IsAltForm(ast)) {
                    for (int i = len; i < res.Length; i++) {
                        if (!Char.IsWhiteSpace(res[i])) {
                            res.Remove(len, i - len);
                            break;
                        }
                    }

                    // ensure a space between the return and the expression
                    res.Insert(len, ' ');
                }
            }
        }
Exemple #30
0
 internal override void AppendCodeStringStmt(StringBuilder res, JAst ast, CodeFormattingOptions format)
 {
     var decorateWhiteSpace = this.GetNamesWhiteSpace(ast);
     if (Decorators != null) {
         for (int i = 0, curWhiteSpace = 0; i < Decorators.Count; i++) {
             if (decorateWhiteSpace != null) {
                 format.ReflowComment(res, decorateWhiteSpace[curWhiteSpace++]);
             }
             res.Append('@');
             if (Decorators[i] != null) {
                 Decorators[i].AppendCodeString(res, ast, format);
                 if (decorateWhiteSpace != null) {
                     format.ReflowComment(res, decorateWhiteSpace[curWhiteSpace++]);
                 } else {
                     res.Append(Environment.NewLine);
                 }
             }
         }
     }
 }