예제 #1
0
 /**
  * Determine if the program element is shown, according to the given level of visibility.
  *
  * @param ped The given program element.
  * @param visLevel The desired visibility level; "public", "protected", "package" or "private". If
  *     null, only check for an exclude tag.
  * @return boolean Set if this element is shown.
  */
 public boolean shownElement(Doc doc, String visLevel) {
   // If a doc block contains @exclude or a similar such tag,
   // then don't display it.
   if (doExclude && excludeTag != null && doc != null) {
     String rct = doc.getRawCommentText();
     if (rct != null && rct.indexOf(excludeTag) != -1) {
       return false;
     }
   }
   if (visLevel == null) {
     return true;
   }
   ProgramElementDoc ped = null;
   if (doc instanceof ProgramElementDoc) {
     ped = (ProgramElementDoc) doc;
   }
   if (visLevel.compareTo("private") == 0) return true;
   // Show all that is not private
   if (visLevel.compareTo("package") == 0) return !ped.isPrivate();
   // Show all that is not private or package
   if (visLevel.compareTo("protected") == 0) return !(ped.isPrivate() || ped.isPackagePrivate());
   // Show all that is not private or package or protected,
   // i.e. all that is public
   if (visLevel.compareTo("public") == 0) return ped.isPublic();
   return false;
 } // shownElement()
 /**
  * Return true if the given <code>ProgramElement</code> is inherited by the class that is being
  * documented.
  *
  * @param ped The <code>ProgramElement</code> being checked. return true if the <code>
  *     ProgramElement</code> is being inherited and false otherwise.
  */
 protected boolean isInherited(ProgramElementDoc ped) {
   if (ped.isPrivate()
       || (ped.isPackagePrivate()
           && !ped.containingPackage().equals(classdoc.containingPackage()))) {
     return false;
   }
   return true;
 }
예제 #3
0
 /** Print the visibility adornment of element e prefixed by any stereotypes */
 private String visibility(Options opt, ProgramElementDoc e) {
   if (!opt.showVisibility) return " ";
   if (e.isPrivate()) return "- ";
   else if (e.isPublic()) return "+ ";
   else if (e.isProtected()) return "# ";
   else if (e.isPackagePrivate()) return "~ ";
   else return " ";
 }
예제 #4
0
  /**
   * Add qualifiers for the program element as attributes.
   *
   * @param ped The given program element.
   */
  public void addCommonModifiers(ProgramElementDoc ped, int indent) {
    addSourcePosition(ped, indent);
    // Static and final and visibility on one line
    for (int i = 0; i < indent; i++) outputFile.print(" ");
    outputFile.print("static=\"" + ped.isStatic() + "\"");
    outputFile.print(" final=\"" + ped.isFinal() + "\"");
    // Visibility
    String visibility = null;
    if (ped.isPublic()) visibility = "public";
    else if (ped.isProtected()) visibility = "protected";
    else if (ped.isPackagePrivate()) visibility = "package";
    else if (ped.isPrivate()) visibility = "private";
    outputFile.println(" visibility=\"" + visibility + "\"");

    // Deprecation on its own line
    for (int i = 0; i < indent; i++) outputFile.print(" ");
    boolean isDeprecated = false;
    Tag[] ta = ((Doc) ped).tags("deprecated");
    if (ta.length != 0) {
      isDeprecated = true;
    }
    if (ta.length > 1) {
      System.out.println(
          "JDiff: warning: multiple @deprecated tags found in comments for "
              + ped.name()
              + ". Using the first one only.");
      System.out.println("Text is: " + ((Doc) ped).getRawCommentText());
    }
    if (isDeprecated) {
      String text = ta[0].text(); // Use only one @deprecated tag
      if (text != null && text.compareTo("") != 0) {
        int idx = endOfFirstSentence(text);
        if (idx == 0) {
          // No useful comment
          outputFile.print("deprecated=\"deprecated, no comment\"");
        } else {
          String fs = null;
          if (idx == -1) fs = text;
          else fs = text.substring(0, idx + 1);
          String st = API.hideHTMLTags(fs);
          outputFile.print("deprecated=\"" + st + "\"");
        }
      } else {
        outputFile.print("deprecated=\"deprecated, no comment\"");
      }
    } else {
      outputFile.print("deprecated=\"not deprecated\"");
    }
  } // addQualifiers()
예제 #5
0
파일: X10Doc.java 프로젝트: cogumbreiro/x10
 public static boolean isIncluded(String accessModFilter, ProgramElementDoc pd) {
   boolean isPublic = pd.isPublic();
   if (accessModFilter.equals("-public")) {
     return isPublic;
   }
   boolean isProtected = pd.isProtected();
   if (accessModFilter.equals("-protected")) {
     return (isPublic || isProtected);
   }
   boolean isPackage = pd.isPackagePrivate();
   if (accessModFilter.equals("-package")) {
     return (isPublic || isProtected || isPackage);
   }
   return true;
 }
예제 #6
0
  /**
   * Returns string representation of scope
   *
   * @param doc
   * @return
   */
  protected static String DetermineScope(ProgramElementDoc doc) {
    ScopeModifier scope;

    if (doc.isPrivate()) {
      scope = ScopeModifier.PRIVATE;
    } else if (doc.isProtected()) {
      scope = ScopeModifier.PROTECTED;
    } else if (doc.isPackagePrivate()) {
      scope = ScopeModifier.PACKAGEPRIVATE;
    } else if (doc.isPublic()) {
      scope = ScopeModifier.PUBLIC;
    } else {
      log.error("No scope defined for: " + doc.name());
      scope = ScopeModifier.PACKAGEPRIVATE;
    }

    return scope.toString().toLowerCase();
  }