// Path: xDoc-core/src/main/java/org/treeleafj/xdoc/tag/DocTag.java
// public abstract class DocTag<T> {
// 
//     /**
//      * 标签名称
//      */
//     @Getter
//     private String tagName;
// 
//     public DocTag(String tagName) {
//         this.tagName = tagName;
//     }
// 
//     public abstract T getValues();
// }
// 
// Path: xDoc-core/src/main/java/org/treeleafj/xdoc/tag/ParamTagImpl.java
// @Data
// public class ParamTagImpl extends DocTag<String> {
// 
//     /**
//      * 参数名
//      */
//     private String paramName;
// 
//     /**
//      * 参数描述
//      */
//     private String paramDesc;
// 
//     /**
//      * 是否必填,默认false
//      */
//     private boolean require;
// 
//     /**
//      * 参数类型
//      */
//     private String paramType;
// 
//     public ParamTagImpl(String tagName, String paramName, String paramDesc, String paramType, boolean require) {
//         super(tagName);
//         this.paramName = paramName;
//         this.paramDesc = paramDesc;
//         this.paramType = paramType;
//         this.require = require;
//     }
// 
//     @Override
//     public String getValues() {
//         return paramName + " " + this.paramDesc;
//     }
// 
// }
// 
// Path: xDoc-core/src/main/java/org/treeleafj/xdoc/utils/Constant.java
// public class Constant {
// 
//     public static final String NOT_EN = "N";
//     public static final String NOT_ZH = "非必填";
//     public static final String YES_EN = "Y";
//     public static final String YES_ZH = "必填";
// 
// }


import org.treeleafj.xdoc.tag.DocTag;
import org.treeleafj.xdoc.tag.ParamTagImpl;
import org.treeleafj.xdoc.utils.Constant;
            paramName = array[0];
            if (array.length > 1) {

                int start = 1;
                if (array[1].startsWith(":") && array[1].length() > 1) {
                    //获取 :username这种类型的参数名称
                    paramName = array[1].substring(1);
                    start = 2;
                }

                StringBuilder sb = new StringBuilder();
                for (int i = start; i < array.length; i++) {
                    sb.append(array[i]).append(' ');
                }
                paramDesc = sb.toString();
            }
        }

        String[] descs = paramDesc.split("\\|");
        if (descs.length > 0) {
            paramDesc = descs[0];
            if (descs.length > 2) {
                paramType = descs[1];
                String requireString = descs[descs.length - 1].trim();
                require = Constant.YES_ZH.equals(requireString) || Constant.YES_EN.equalsIgnoreCase(requireString);
            } else if (descs.length == 2) {
                String requireString = descs[1].trim();
                require = Constant.YES_ZH.equals(requireString) || Constant.YES_EN.equalsIgnoreCase(requireString);

                //如果最后一个不是是否必填的描述,则认为是类型描述
// Path: xDoc-core/src/main/java/org/treeleafj/xdoc/tag/DocTag.java
// public abstract class DocTag<T> {
// 
//     /**
//      * 标签名称
//      */
//     @Getter
//     private String tagName;
// 
//     public DocTag(String tagName) {
//         this.tagName = tagName;
//     }
// 
//     public abstract T getValues();
// }
// 
// Path: xDoc-core/src/main/java/org/treeleafj/xdoc/tag/ParamTagImpl.java
// @Data
// public class ParamTagImpl extends DocTag<String> {
// 
//     /**
//      * 参数名
//      */
//     private String paramName;
// 
//     /**
//      * 参数描述
//      */
//     private String paramDesc;
// 
//     /**
//      * 是否必填,默认false
//      */
//     private boolean require;
// 
//     /**
//      * 参数类型
//      */
//     private String paramType;
// 
//     public ParamTagImpl(String tagName, String paramName, String paramDesc, String paramType, boolean require) {
//         super(tagName);
//         this.paramName = paramName;
//         this.paramDesc = paramDesc;
//         this.paramType = paramType;
//         this.require = require;
//     }
// 
//     @Override
//     public String getValues() {
//         return paramName + " " + this.paramDesc;
//     }
// 
// }
// 
// Path: xDoc-core/src/main/java/org/treeleafj/xdoc/utils/Constant.java
// public class Constant {
// 
//     public static final String NOT_EN = "N";
//     public static final String NOT_ZH = "非必填";
//     public static final String YES_EN = "Y";
//     public static final String YES_ZH = "必填";
// 
// }


// Path: xDoc-core/src/main/java/org/treeleafj/xdoc/resolver/javaparser/converter/ParamTagConverter.java
import org.treeleafj.xdoc.tag.DocTag;
import org.treeleafj.xdoc.tag.ParamTagImpl;
import org.treeleafj.xdoc.utils.Constant;

            paramName = array[0];
            if (array.length > 1) {

                int start = 1;
                if (array[1].startsWith(":") && array[1].length() > 1) {
                    //获取 :username这种类型的参数名称
                    paramName = array[1].substring(1);
                    start = 2;
                }

                StringBuilder sb = new StringBuilder();
                for (int i = start; i < array.length; i++) {
                    sb.append(array[i]).append(' ');
                }
                paramDesc = sb.toString();
            }
        }

        String[] descs = paramDesc.split("\\|");
        if (descs.length > 0) {
            paramDesc = descs[0];
            if (descs.length > 2) {
                paramType = descs[1];
                String requireString = descs[descs.length - 1].trim();
                require = Constant.YES_ZH.equals(requireString) || Constant.YES_EN.equalsIgnoreCase(requireString);
            } else if (descs.length == 2) {
                String requireString = descs[1].trim();
                require = Constant.YES_ZH.equals(requireString) || Constant.YES_EN.equalsIgnoreCase(requireString);

                //如果最后一个不是是否必填的描述,则认为是类型描述
                if (!require && !(Constant.NOT_EN.equalsIgnoreCase(requireString) || Constant.NOT_ZH.equals(requireString))) {