|
From: <tc...@us...> - 2007-04-26 11:07:52
|
Revision: 2370
http://svn.sourceforge.net/rubyeclipse/?rev=2370&view=rev
Author: tcorbat
Date: 2007-04-26 04:07:41 -0700 (Thu, 26 Apr 2007)
Log Message:
-----------
Extract Method and Move Method are dealing with comments now (when they are placed in the AST)
Modified Paths:
--------------
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeFactory.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractMethodRefactoring.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractedMethodCall.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/formatsource/PreviewGeneratorImpl.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/DelegateMethodEditProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/InsertMethodEditProvider.java
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/ui/pages/ExtractMethodPage.java
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeFactory.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeFactory.java 2007-04-26 10:47:41 UTC (rev 2369)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeFactory.java 2007-04-26 11:07:41 UTC (rev 2370)
@@ -296,7 +296,27 @@
}
public static ISourcePosition unionPositions(ISourcePosition first, ISourcePosition second) {
- return parserSupport.union(first, second);
+ String fileName = first.getFile();
+ int startOffset = first.getStartOffset();
+ int endOffset = first.getEndOffset();
+ int startLine = first.getStartLine();
+ int endLine = first.getEndLine();
+
+
+ if(startOffset > second.getStartOffset()){
+ startOffset = second.getStartOffset();
+ startLine = second.getStartLine();
+ }
+
+ if(endOffset < second.getEndOffset()){
+ endOffset = second.getEndOffset();
+ endLine = second.getEndLine();
+ }
+
+
+ ISourcePosition commentIncludingPos = new SourcePosition(fileName, startLine, endLine, startOffset, endOffset);
+
+ return commentIncludingPos;
}
public static Node createGetterSetter(String attrName, boolean isWriterMethod, VisibilityNodeWrapper.METHOD_VISIBILITY visibility) {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java 2007-04-26 10:47:41 UTC (rev 2369)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/NodeProvider.java 2007-04-26 11:07:41 UTC (rev 2370)
@@ -67,6 +67,7 @@
import org.jruby.parser.RubyParserConfiguration;
import org.jruby.parser.RubyParserPool;
import org.jruby.parser.RubyParserResult;
+import org.jruby.parser.postprocessor.DefaultCommentPlacer;
import org.rubypeople.rdt.refactoring.nodewrapper.AttrAccessorNodeWrapper;
import org.rubypeople.rdt.refactoring.nodewrapper.FieldNodeWrapper;
import org.rubypeople.rdt.refactoring.nodewrapper.MethodCallNodeWrapper;
@@ -104,7 +105,9 @@
parser = RubyParserPool.getInstance().borrowParser();
parser.setWarnings(new NullWarnings());
LexerSource lexerSource = new LexerSource(fileName, reader);
- RubyParserResult result = parser.parse(new RubyParserConfiguration(), lexerSource);
+ RubyParserConfiguration parserConfig = new RubyParserConfiguration();
+ parserConfig.addPostProcessor(new DefaultCommentPlacer());
+ RubyParserResult result = parser.parse(parserConfig, lexerSource);
return (RootNode) result.getAST();
}
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java 2007-04-26 10:47:41 UTC (rev 2369)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java 2007-04-26 11:07:41 UTC (rev 2370)
@@ -228,7 +228,7 @@
}
public static boolean nodeContainsPosition(Node n, int position) {
- return (position + CURSOR_TOLERANCE >= n.getPosition().getStartOffset() && position - CURSOR_TOLERANCE < n.getPosition().getEndOffset());
+ return (position + CURSOR_TOLERANCE >= NodeUtil.subPositionUnion(n).getStartOffset() && position - CURSOR_TOLERANCE < NodeUtil.subPositionUnion(n).getEndOffset());
}
public static String[] localNamesFromLocalAsgnNodes(Collection<LocalAsgnNode> nodes) {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractMethodRefactoring.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractMethodRefactoring.java 2007-04-26 10:47:41 UTC (rev 2369)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractMethodRefactoring.java 2007-04-26 11:07:41 UTC (rev 2370)
@@ -39,12 +39,9 @@
public static final String NAME = Messages.ExtractMethodRefactoring_Name;
-// private SelectionInformation selectionInformation;
-
public ExtractMethodRefactoring(TextSelectionProvider selectionProvider) {
super(NAME);
-// initPositions((ITextSelection) getEditor().getSelectionProvider().getSelection());
ExtractMethodConfig config = new ExtractMethodConfig(getDocumentProvider(), selectionProvider.getSelectionInformation());
ExtractMethodConditionChecker checker = new ExtractMethodConditionChecker(config);
@@ -56,13 +53,4 @@
pages.add(page);
}
}
-
-// private void initPositions(ITextSelection selection) {
-// int startOffset = selection.getOffset();
-// int endOffset = startOffset + selection.getLength();
-// if (endOffset > startOffset) {
-// endOffset--;
-// }
-// selectionInformation = new SelectionInformation(startOffset, endOffset, getEditor().getViewer().getDocument().get());
-// }
}
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractedMethodCall.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractedMethodCall.java 2007-04-26 10:47:41 UTC (rev 2369)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/extractmethod/ExtractedMethodCall.java 2007-04-26 11:07:41 UTC (rev 2370)
@@ -63,11 +63,11 @@
}
private int getStartOffset() {
- return extractedMethodHelper.getSelectedNodes().getPosition().getStartOffset();
+ return getExtendedPosition(extractedMethodHelper.getSelectedNodes()).getStartOffset();
}
private int getEndOffset() {
- return extractedMethodHelper.getSelectedNodes().getPosition().getEndOffset();
+ return getExtendedPosition(extractedMethodHelper.getSelectedNodes()).getEndOffset();
}
@Override
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/formatsource/PreviewGeneratorImpl.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/formatsource/PreviewGeneratorImpl.java 2007-04-26 10:47:41 UTC (rev 2369)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/formatsource/PreviewGeneratorImpl.java 2007-04-26 11:07:41 UTC (rev 2370)
@@ -41,6 +41,7 @@
import org.jruby.parser.DefaultRubyParser;
import org.jruby.parser.RubyParserConfiguration;
import org.jruby.parser.RubyParserPool;
+import org.jruby.parser.postprocessor.DefaultCommentPlacer;
public class PreviewGeneratorImpl implements PreviewGenerator {
@@ -59,7 +60,9 @@
LexerSource lexerSource = new LexerSource("", new StringReader(source)); //$NON-NLS-1$
ReWriteVisitor visitor = factory.createReWriteVisitor();
- parser.parse(new RubyParserConfiguration(), lexerSource).getAST().accept(visitor);
+ RubyParserConfiguration parserConfig = new RubyParserConfiguration();
+ parserConfig.addPostProcessor(new DefaultCommentPlacer());
+ parser.parse(parserConfig, lexerSource).getAST().accept(visitor);
visitor.flushStream();
RubyParserPool.getInstance().returnParser(parser);
return writer.getBuffer().toString();
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/DelegateMethodEditProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/DelegateMethodEditProvider.java 2007-04-26 10:47:41 UTC (rev 2369)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/DelegateMethodEditProvider.java 2007-04-26 11:07:41 UTC (rev 2370)
@@ -32,7 +32,6 @@
import org.jruby.ast.ArrayNode;
import org.jruby.ast.Node;
-import org.jruby.lexer.yacc.ISourcePosition;
import org.rubypeople.rdt.refactoring.core.NodeFactory;
import org.rubypeople.rdt.refactoring.core.NodeProvider;
import org.rubypeople.rdt.refactoring.editprovider.ReplaceEditProvider;
@@ -42,19 +41,19 @@
public class DelegateMethodEditProvider extends ReplaceEditProvider {
private MoveMethodConfig config;
- private ISourcePosition scopePos;
+ private Node scopePos;
private MethodNodeWrapper oldMethod;
public DelegateMethodEditProvider(MoveMethodConfig config) {
super(false);
this.config = config;
oldMethod = config.getMethodNode();
- scopePos = NodeProvider.unwrap(oldMethod.getBodyNode()).getPosition();
+ scopePos = NodeProvider.unwrap(oldMethod.getBodyNode());
}
@Override
protected int getOffsetLength() {
- return scopePos.getEndOffset() - scopePos.getStartOffset();
+ return getExtendedPosition(scopePos).getEndOffset() - getExtendedPosition(scopePos).getStartOffset();
}
@Override
@@ -83,7 +82,7 @@
@Override
protected int getOffset(String document) {
- return scopePos.getStartOffset();
+ return getExtendedPosition(scopePos).getStartOffset();
}
}
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/InsertMethodEditProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/InsertMethodEditProvider.java 2007-04-26 10:47:41 UTC (rev 2369)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/movemethod/InsertMethodEditProvider.java 2007-04-26 11:07:41 UTC (rev 2370)
@@ -102,12 +102,19 @@
}
private MethodDefNode createMethodNodeWithAdditionalArg(MethodDefNode methodNode) {
+ MethodDefNode resultMethod;
ArgsNodeWrapper args = config.getMovedMethodArgs();
if (config.getMethodNode().isClassMethod()) {
String destClassName = config.getDestinationClassNode().getName();
- return NodeFactory.createStaticMethodNode(destClassName, config.getMovedMethodName(), args.getWrappedNode(), new LocalStaticScope(null), methodNode.getBodyNode());
+ resultMethod = NodeFactory.createStaticMethodNode(destClassName, config.getMovedMethodName(), args.getWrappedNode(), new LocalStaticScope(null), methodNode.getBodyNode());
}
- return NodeFactory.createMethodNodeWithoutNewline(config.getMovedMethodName(), args.getWrappedNode(), methodNode.getBodyNode());
+ else{
+ resultMethod = NodeFactory.createMethodNodeWithoutNewline(config.getMovedMethodName(), args.getWrappedNode(), methodNode.getBodyNode());
+ }
+
+ resultMethod.addComments(methodNode.getComments());
+ resultMethod.setPosition(methodNode.getPosition());
+ return resultMethod;
}
private TextEdit getFieldInsertionEdit(String docStr) {
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/ui/pages/ExtractMethodPage.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/ui/pages/ExtractMethodPage.java 2007-04-26 10:47:41 UTC (rev 2369)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/ui/pages/ExtractMethodPage.java 2007-04-26 11:07:41 UTC (rev 2370)
@@ -53,6 +53,7 @@
import org.rubypeople.rdt.refactoring.ui.pages.extractmethod.ParametersButtonDownListener;
import org.rubypeople.rdt.refactoring.ui.pages.extractmethod.ParametersButtonUpListener;
import org.rubypeople.rdt.refactoring.ui.pages.extractmethod.SignatureObserver;
+import org.rubypeople.rdt.refactoring.util.NodeUtil;
public class ExtractMethodPage extends RefactoringWizardPage implements IValidationController {
@@ -117,8 +118,8 @@
private void setupSelectionPreview() {
extractComposite.getCodeViewer().setPreviewText(selectionInformation.getSource());
- int nodeStart = extractedMethod.getSelectedNodes().getPosition().getStartOffset();
- int nodeLength = extractedMethod.getSelectedNodes().getPosition().getEndOffset() - nodeStart;
+ int nodeStart = NodeUtil.subPositionUnion(extractedMethod.getSelectedNodes()).getStartOffset();
+ int nodeLength = NodeUtil.subPositionUnion(extractedMethod.getSelectedNodes()).getEndOffset() - nodeStart;
extractComposite.getCodeViewer().setBackgroundColor(nodeStart, nodeLength, SWT.COLOR_GRAY);
int selectionStart = selectionInformation.getStartOfSelection();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|