/****************************************************************************** * Copyright (C) 2012-2013 Jonah Graham and others * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Jonah Graham <jonah@kichwacoders.com> - initial API and implementation * Fabio Zadrozny <fabiofz@gmail.com> - ongoing maintenance ******************************************************************************/ package org.python.pydev.debug.model; import org.python.pydev.shared_interactive_console.console.codegen.IScriptConsoleCodeGenerator; public class PyConsoleCodeGeneratorVariable implements IScriptConsoleCodeGenerator { private final PyVariable variable; public PyConsoleCodeGeneratorVariable(PyVariable variable) { this.variable = variable; } @Override public String getPyCode() { return variable.name; /* * For now this class is only useful as a demonstration of the * IScriptConsoleCodeGenerator and related classes. Dragging anything * other than a toplevel node out of the Variables view does not produce * anything interesting. * * TODO? Write code that can determine a full access to this variable * name e.g. if a list called name is in the variables view and the * index 0 is dragged into the console, the ideal thing to return here * is "name[0]". At the moment I don't think enough information is * returned from pydevd_vars to determine the difference between types * of objects. Doing this is possible for simple cases, but for all * cases it may be difficult or impossible. Consider, for example, dict * entries which need resolving by id(). Perhaps an access to a pydev * function, so if you drop a dict key you get a line like this: * pydevd_resolver.DictResolver().resolve(dict_name, 'a (12345678)') * Of course for a complex hierarchy of objects the line would be * quite unreadable. */ } @Override public boolean hasPyCode() { return variable != null && variable.name != null && variable.name.length() > 0; } }