package st.gravel.support.jvm; import st.gravel.core.Symbol; import st.gravel.support.compiler.ast.MethodNode; import st.gravel.support.compiler.ast.SourcePosition; public class MethodMirror { private final MethodNode method; private final ClassDescriptionMirror mclass; public MethodMirror(MethodNode method, ClassDescriptionMirror mclass) { this.method = method; this.mclass = mclass; } public String source() { SourcePosition sourcePosition = method.sourcePosition(); if(sourcePosition == null) return method.prettySourceString(); String contentsOfEntireFile = FilenameExtensions.contentsOfEntireFile(sourcePosition.sourceFile().asFile()); return contentsOfEntireFile.substring(sourcePosition.start(), sourcePosition.stop()); } public Symbol selector() { return Symbol.value(method.selector()); } public String protocol() { return method.protocol(); } public Symbol packageName() { return method.packageName(); } public ClassDescriptionMirror mclass() { return mclass; } }