|
From: <mir...@us...> - 2006-11-01 10:35:46
|
Revision: 1639
http://svn.sourceforge.net/rubyeclipse/?rev=1639&view=rev
Author: mirkostocker
Date: 2006-11-01 02:35:31 -0800 (Wed, 01 Nov 2006)
Log Message:
-----------
new feature: dump AST as jruby test code, used in testPositions.rb
Modified Paths:
--------------
trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/AstUtility.java
trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/AstView.java
trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/ViewContentProvider.java
Added Paths:
-----------
trunk/org.rubypeople.rdt.astviewer/icons/dump_jruby.gif
Added: trunk/org.rubypeople.rdt.astviewer/icons/dump_jruby.gif
===================================================================
(Binary files differ)
Property changes on: trunk/org.rubypeople.rdt.astviewer/icons/dump_jruby.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/AstUtility.java
===================================================================
--- trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/AstUtility.java 2006-10-31 22:01:11 UTC (rev 1638)
+++ trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/AstUtility.java 2006-11-01 10:35:31 UTC (rev 1639)
@@ -31,6 +31,7 @@
import java.util.ArrayList;
import java.util.Iterator;
+import org.jruby.ast.NewlineNode;
import org.jruby.ast.Node;
public class AstUtility {
@@ -74,5 +75,39 @@
posString.append("]");
return posString.toString();
}
-
+
+ public static String nodeListJRubyFormat(ArrayList<Node> nodes) {
+ StringBuilder builder = new StringBuilder();
+ builder.append("list = [\n");
+ Iterator nodeIter = nodes.iterator();
+
+ while(nodeIter.hasNext()) {
+
+ Node node = (Node) nodeIter.next();
+
+ if(node instanceof NewlineNode) {
+ builder.append("nil, #");
+ }
+
+ builder.append("['");
+ builder.append(node.getClass().getSimpleName());
+ builder.append("', ");
+ builder.append(node.getPosition().getStartLine());
+ builder.append(", ");
+ builder.append(node.getPosition().getEndLine());
+ builder.append(", ");
+ builder.append(node.getPosition().getStartOffset());
+ builder.append(", ");
+ builder.append(node.getPosition().getEndOffset());
+ builder.append("]");
+
+ if(nodeIter.hasNext()) {
+ builder.append(",\n");
+ }
+ }
+
+ builder.append("\n]");
+ return builder.toString();
+ }
+
}
Modified: trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/AstView.java
===================================================================
--- trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/AstView.java 2006-10-31 22:01:11 UTC (rev 1638)
+++ trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/AstView.java 2006-11-01 10:35:31 UTC (rev 1639)
@@ -28,6 +28,12 @@
package org.rubypeople.rdt.astviewer.views;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
@@ -49,6 +55,8 @@
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.DrillDownAdapter;
@@ -62,6 +70,7 @@
private DrillDownAdapter drillDownAdapter;
private Action refreshAction;
private Action dumpToConsoleAction;
+ private Action dumpJRubyTestFormatAction;
private Action doubleClickAction;
private Action clickAction;
private ViewContentProvider viewContentProvider;
@@ -154,11 +163,13 @@
private void fillLocalPullDown(IMenuManager manager) {
manager.add(refreshAction);
manager.add(dumpToConsoleAction);
+ manager.add(dumpJRubyTestFormatAction);
}
private void fillContextMenu(IMenuManager manager) {
manager.add(refreshAction);
manager.add(dumpToConsoleAction);
+ //manager.add(dumpJRubyTestFormatAction);
drillDownAdapter.addNavigationActions(manager);
// Other plug-ins can contribute there actions here
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
@@ -167,6 +178,7 @@
private void fillLocalToolBar(IToolBarManager manager) {
manager.add(refreshAction);
manager.add(dumpToConsoleAction);
+ manager.add(dumpJRubyTestFormatAction);
drillDownAdapter.addNavigationActions(manager);
}
@@ -175,8 +187,51 @@
private void makeActions() {
makeRefreshAction();
makeDumpAction();
+ makeDumpJRubyFormatAction();
}
+ private void makeDumpJRubyFormatAction() {
+ dumpJRubyTestFormatAction = new Action() {
+ public void run() {
+
+ AstViewConsole.print(AstUtility.nodeListJRubyFormat(AstUtility.findAllNodes(getRootNode())));
+ AstViewConsole.print("test_tree(list, <<END)");
+ AstViewConsole.print(textEditorContentToString().toString().trim());
+ AstViewConsole.print("END");
+ }
+
+ private StringBuilder textEditorContentToString() {
+ IEditorInput editorInput = getEditor().getEditorInput();
+ IFile aFile = null;
+ if(editorInput instanceof IFileEditorInput){
+ aFile = ((IFileEditorInput)editorInput).getFile();
+ }
+
+ BufferedReader br = null;
+ StringBuilder sb = new StringBuilder();
+ try {
+ br = new BufferedReader(new InputStreamReader(aFile.getContents()));
+ String line = null;
+
+ while ((line = br.readLine()) != null) {
+ sb.append(line + "\n");
+ }
+ br.close();
+
+ } catch (CoreException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return sb;
+ }
+ };
+
+ dumpJRubyTestFormatAction.setText("Dump in JRuby-Test");
+ dumpJRubyTestFormatAction.setToolTipText("Dumps node and all child-nodes to the console, formatted like as in JRuby's testPositions.rb");
+ dumpJRubyTestFormatAction.setImageDescriptor(Activator.getImageDescriptor("icons/dump_jruby.gif"));
+ }
+
private void makeDumpAction() {
dumpToConsoleAction = new Action() {
public void run() {
@@ -229,6 +284,11 @@
if(selection.length <= 0)
return null;
return ((TreeObject) selection[0].getData()).getNode();
+ }
+
+ private Node getRootNode() {
+ TreeItem root = viewer.getTree().getItem(0);
+ return ((TreeObject) root.getData()).getNode();
}
private RubyEditor getEditor() {
Modified: trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/ViewContentProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/ViewContentProvider.java 2006-10-31 22:01:11 UTC (rev 1638)
+++ trunk/org.rubypeople.rdt.astviewer/src/org/rubypeople/rdt/astviewer/views/ViewContentProvider.java 2006-11-01 10:35:31 UTC (rev 1639)
@@ -153,8 +153,9 @@
}
private boolean editorChanged() {
- if(getActiveWorkbenchPage() == null)
+ if(getActiveWorkbenchPage() == null || !(getActiveWorkbenchPage().getActiveEditor() instanceof RubyEditor))
return false;
+
return getEditor() != (RubyEditor) getActiveWorkbenchPage().getActiveEditor();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|