01: package org.netbeans.modules.ruby.elements;
02:
03: import java.util.Set;
04:
05: import org.jruby.ast.ClassNode;
06: import org.jruby.ast.Colon3Node;
07: import org.jruby.ast.Node;
08: import org.jruby.ast.SClassNode;
09: import org.jruby.ast.types.INameNode;
10: import org.netbeans.modules.gsf.api.CompilationInfo;
11: import org.netbeans.modules.gsf.api.ElementKind;
12:
13: public class AstClassElement extends AstElement implements ClassElement {
14: private String fqn;
15: private Set<String> includes;
16:
17: public AstClassElement(CompilationInfo info, Node node) {
18: super (info, node);
19: }
20:
21: @Override
22: public String getName() {
23: if (name == null) {
24: if (node instanceof ClassNode) {
25: Colon3Node n = ((ClassNode) node).getCPath();
26:
27: name = n.getName();
28: } else if (node instanceof SClassNode) {
29: Node n = ((SClassNode) node).getReceiverNode();
30:
31: // What if it's a selfnode?
32: if (n instanceof Colon3Node) {
33: Colon3Node c3n = (Colon3Node) n;
34: name = c3n.getName();
35: } else if (n instanceof INameNode) {
36: name = ((INameNode) n).getName();
37: } else {
38: name = n.toString();
39: }
40: }
41:
42: if (name == null) {
43: name = node.toString();
44: }
45: }
46:
47: return name;
48: }
49:
50: public String getFqn() {
51: if (fqn == null) {
52: return getName();
53: }
54:
55: return fqn;
56: }
57:
58: public void setFqn(String fqn) {
59: this .fqn = fqn;
60: }
61:
62: public void setIncludes(Set<String> includes) {
63: this .includes = includes;
64: }
65:
66: public Set<String> getIncludes() {
67: return includes;
68: }
69:
70: @Override
71: public ElementKind getKind() {
72: return ElementKind.CLASS;
73: }
74: }
|