Exemplo n.º 1
0
 private SourcePattern getSourcePattern(final SourceRange partRange) {
   String originalSource = utils.getText(partRange.getOffset(), partRange.getLength());
   final SourcePattern pattern = new SourcePattern();
   final List<ReplaceEdit> replaceEdits = Lists.newArrayList();
   unitNode.accept(
       new ASTVisitor<Void>() {
         @Override
         public Void visitIdentifier(DartIdentifier node) {
           SourceRange nodeRange = SourceRangeFactory.create(node);
           if (SourceRangeUtils.covers(partRange, nodeRange)) {
             VariableElement variableElement = ASTNodes.getVariableOrParameterElement(node);
             if (variableElement != null) {
               String originalName = variableElement.getName();
               String patternName = pattern.originalToPatternNames.get(originalName);
               if (patternName == null) {
                 patternName = "__dartEditorVariable" + pattern.originalToPatternNames.size();
                 pattern.originalToPatternNames.put(originalName, patternName);
               }
               replaceEdits.add(
                   new ReplaceEdit(
                       nodeRange.getOffset() - partRange.getOffset(),
                       nodeRange.getLength(),
                       patternName));
             }
           }
           return null;
         }
       });
   pattern.patternSource = ExtractUtils.applyReplaceEdits(originalSource, replaceEdits);
   return pattern;
 }
Exemplo n.º 2
0
 /** @return the selected {@link DartExpression} source, with applying new parameter names. */
 private String getMethodBodySource() {
   String source = utils.getText(selectionStart, selectionLength);
   // prepare ReplaceEdit operators to replace variables with parameters
   List<ReplaceEdit> replaceEdits = Lists.newArrayList();
   for (Entry<String, List<SourceRange>> entry : selectionParametersToRanges.entrySet()) {
     String name = entry.getKey();
     for (ParameterInfo parameter : parameters) {
       if (StringUtils.equals(name, parameter.getOldName())) {
         for (SourceRange range : entry.getValue()) {
           replaceEdits.add(
               new ReplaceEdit(
                   range.getOffset() - selectionStart, range.getLength(), parameter.getNewName()));
         }
       }
     }
   }
   // apply replacements
   source = ExtractUtils.applyReplaceEdits(source, replaceEdits);
   // change indentation
   if (selectionStatements != null) {
     String eol = utils.getEndOfLine();
     String selectionIndent = utils.getNodePrefix(selectionStatements.get(0));
     String targetIndent = utils.getNodePrefix(parentMember) + "  ";
     String[] lines = StringUtils.splitPreserveAllTokens(source, eol);
     StringBuilder sb = new StringBuilder();
     for (int i = 0; i < lines.length; i++) {
       String line = lines[i];
       line = targetIndent + StringUtils.removeStart(line, selectionIndent);
       sb.append(line);
       sb.append(eol);
     }
     source = sb.toString();
     source = StringUtils.stripEnd(source, null);
     source += eol;
   }
   // done
   return source;
 }