package com.ifpdos.udi.sdk.service.doc.simple;

import com.github.mustachejava.DefaultMustacheFactory;
import com.ifpdos.udi.sdk.kotlin.comment.parser.CommentDetails;
import com.ifpdos.udi.sdk.service.doc.base.ApiInfo;
import com.ifpdos.udi.sdk.service.doc.base.ClassParser;
import com.ifpdos.udi.sdk.service.doc.base.IClassWrapper;
import com.ifpdos.udi.sdk.service.doc.base.IDocGenerator;
import com.ifpdos.udi.sdk.service.doc.base.IFieldWrapper;
import com.ifpdos.udi.sdk.service.doc.base.Notify;
import com.ifpdos.udi.sdk.service.doc.base.Permission;
import com.ifpdos.udi.sdk.service.doc.base.Request;
import com.ifpdos.udi.sdk.service.doc.base.Utils;
import com.ifpdos.udi.sdk.service.doc.base.democode.ShellCodeGenerator;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.collections.CollectionsKt;
import kotlin.io.CloseableKt;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.internal.Intrinsics;
import kotlin.text.StringsKt;

/* JADX INFO: compiled from: SimpleDocGenerator.kt */
/* JADX INFO: loaded from: classes.dex */
@Metadata(d1 = {"\u0000|\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010#\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0010\b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J4\u0010\t\u001a\u00020\n2\u0006\u0010\u000b\u001a\u00020\f2\u0006\u0010\r\u001a\u00020\u000e2\f\u0010\u000f\u001a\b\u0012\u0004\u0012\u00020\u00110\u00102\f\u0010\u0012\u001a\b\u0012\u0004\u0012\u00020\u00130\u0010H\u0002J&\u0010\u0014\u001a\u00020\n2\u0006\u0010\u000b\u001a\u00020\f2\u0006\u0010\r\u001a\u00020\u000e2\f\u0010\u0012\u001a\b\u0012\u0004\u0012\u00020\u00130\u0010H\u0002J.\u0010\u0015\u001a\u00020\n2\f\u0010\u0016\u001a\b\u0012\u0004\u0012\u00020\u00180\u00172\u0006\u0010\u0007\u001a\u00020\b2\u0006\u0010\u0003\u001a\u00020\u00042\u0006\u0010\u0019\u001a\u00020\u001aH\u0016J\u0018\u0010\u001b\u001a\n\u0012\u0004\u0012\u00020\u001c\u0018\u00010\u00172\u0006\u0010\u000b\u001a\u00020\u000eH\u0002J\u0010\u0010\u001d\u001a\u00020\f2\u0006\u0010\u000b\u001a\u00020\fH\u0002J\u0010\u0010\u001e\u001a\u00020\f2\u0006\u0010\u001f\u001a\u00020\fH\u0002J\u0018\u0010 \u001a\u00020\f2\u0006\u0010!\u001a\u00020\f2\u0006\u0010\"\u001a\u00020#H\u0002J\u0012\u0010$\u001a\u0004\u0018\u00010%2\u0006\u0010&\u001a\u00020\u0018H\u0002J\"\u0010'\u001a\u0004\u0018\u00010(2\b\u0010)\u001a\u0004\u0018\u00010*2\f\u0010+\u001a\b\u0012\u0004\u0012\u00020\f0,H\u0002J,\u0010-\u001a\u00020\n2\u0006\u0010\u000b\u001a\u00020\f2\f\u0010\u000f\u001a\b\u0012\u0004\u0012\u00020\u00110\u00102\f\u0010\u0012\u001a\b\u0012\u0004\u0012\u00020\u00130\u0010H\u0002R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082.¢\u0006\u0002\n\u0000R\u000e\u0010\u0005\u001a\u00020\u0006X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0007\u001a\u00020\bX\u0082.¢\u0006\u0002\n\u0000¨\u0006."}, d2 = {"Lcom/ifpdos/udi/sdk/service/doc/simple/SimpleDocGenerator;", "Lcom/ifpdos/udi/sdk/service/doc/base/IDocGenerator;", "()V", "classParser", "Lcom/ifpdos/udi/sdk/service/doc/base/ClassParser;", "demoCodeGenerator", "Lcom/ifpdos/udi/sdk/service/doc/base/democode/ShellCodeGenerator;", "serviceComment", "Lcom/ifpdos/udi/sdk/kotlin/comment/parser/CommentDetails;", "addClassDefine", "", "clazz", "", "wrapper", "Lcom/ifpdos/udi/sdk/service/doc/base/IClassWrapper;", "classes", "", "Lcom/ifpdos/udi/sdk/service/doc/simple/ClassDefine;", "enums", "Lcom/ifpdos/udi/sdk/service/doc/simple/EnumDefine;", "addEnumDefine", "genDoc", "apis", "", "Lcom/ifpdos/udi/sdk/service/doc/base/ApiInfo;", "docDir", "Ljava/io/File;", "getFieldInfoList", "Lcom/ifpdos/udi/sdk/service/doc/simple/FieldInfo;", "getLink", "getSimpleName", "className", "getTitleLink", "summary", "index", "", "parserNotifyDefine", "Lcom/ifpdos/udi/sdk/service/doc/simple/NotifyDefine;", "info", "parserRequestDefine", "Lcom/ifpdos/udi/sdk/service/doc/simple/RequestDefine;", "request", "Lcom/ifpdos/udi/sdk/service/doc/base/Request;", "demoCodeGetter", "Lkotlin/Function0;", "scanFiled", "doc-simple"}, k = 1, mv = {1, 6, 0}, xi = 48)
public final class SimpleDocGenerator implements IDocGenerator {
    private ClassParser classParser;
    private final ShellCodeGenerator demoCodeGenerator = new ShellCodeGenerator("▶");
    private CommentDetails serviceComment;

    private final NotifyDefine parserNotifyDefine(ApiInfo info) {
        Notify notify = info.getNotify();
        if (notify == null) {
            return null;
        }
        ClassParser classParser = this.classParser;
        if (classParser == null) {
            Intrinsics.throwUninitializedPropertyAccessException("classParser");
            classParser = null;
        }
        IClassWrapper rVar = classParser.parser(notify.getNotifyClass());
        Intrinsics.checkNotNull(rVar);
        String notifyClass = notify.getNotifyClass();
        List<FieldInfo> fieldInfoList = getFieldInfoList(rVar);
        ShellCodeGenerator shellCodeGenerator = this.demoCodeGenerator;
        ClassParser classParser2 = this.classParser;
        if (classParser2 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("classParser");
            classParser2 = null;
        }
        return new NotifyDefine(notifyClass, fieldInfoList, shellCodeGenerator.genNotifyRegisterDemo(info, classParser2), notify.getPermission().getPermission() > 0 ? String.valueOf(notify.getPermission().getPermission()) : null);
    }

    private final RequestDefine parserRequestDefine(Request request, Function0<String> demoCodeGetter) {
        if (request == null) {
            return null;
        }
        ClassParser classParser = this.classParser;
        if (classParser == null) {
            Intrinsics.throwUninitializedPropertyAccessException("classParser");
            classParser = null;
        }
        IClassWrapper rVar = classParser.parser(request.getRequestClass());
        Intrinsics.checkNotNull(rVar);
        ClassParser classParser2 = this.classParser;
        if (classParser2 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("classParser");
            classParser2 = null;
        }
        IClassWrapper rVar2 = classParser2.parser(request.getResponseClass());
        Intrinsics.checkNotNull(rVar2);
        return new RequestDefine(request.getRequestClass(), getFieldInfoList(rVar), request.getResponseClass(), getFieldInfoList(rVar2), demoCodeGetter.invoke(), request.getPermission().getPermission() > 0 ? String.valueOf(request.getPermission().getPermission()) : null);
    }

    private final String getTitleLink(String summary, int index) {
        return "[" + summary + "](#" + index + '-' + StringsKt.replace$default(summary, " ", "-", false, 4, (Object) null) + ')';
    }

    private final String getSimpleName(String className) {
        String str = className;
        if (!StringsKt.contains$default((CharSequence) str, (CharSequence) "<", false, 2, (Object) null)) {
            return (String) CollectionsKt.last(StringsKt.split$default((CharSequence) str, new String[]{"."}, false, 0, 6, (Object) null));
        }
        String strSubstring = className.substring(StringsKt.indexOf$default((CharSequence) str, "<", 0, false, 6, (Object) null) + 1, StringsKt.indexOf$default((CharSequence) str, ">", 0, false, 6, (Object) null) + 1);
        Intrinsics.checkNotNullExpressionValue(strSubstring, "this as java.lang.String…ing(startIndex, endIndex)");
        String strSubstring2 = className.substring(0, StringsKt.indexOf$default((CharSequence) str, "<", 0, false, 6, (Object) null) + 1);
        Intrinsics.checkNotNullExpressionValue(strSubstring2, "this as java.lang.String…ing(startIndex, endIndex)");
        String str2 = ((String) CollectionsKt.last(StringsKt.split$default((CharSequence) strSubstring2, new String[]{"."}, false, 0, 6, (Object) null))) + ((String) CollectionsKt.last(StringsKt.split$default((CharSequence) strSubstring, new String[]{"."}, false, 0, 6, (Object) null)));
        Intrinsics.checkNotNullExpressionValue(str2, "simpleName.toString()");
        return StringsKt.replace$default(StringsKt.replace$default(str2, "<", "\\<", false, 4, (Object) null), ">", "\\>", false, 4, (Object) null);
    }

    private final void addClassDefine(String clazz, IClassWrapper wrapper, Set<ClassDefine> classes, Set<EnumDefine> enums) {
        if (wrapper.isEnum()) {
            addEnumDefine(clazz, wrapper, enums);
            return;
        }
        ArrayList arrayList = new ArrayList();
        for (IFieldWrapper iFieldWrapper : IClassWrapper.DefaultImpls.getFields$default(wrapper, false, 1, null)) {
            String name = iFieldWrapper.getName();
            String link = getLink(iFieldWrapper.getType());
            CommentDetails comment = iFieldWrapper.getComment();
            arrayList.add(new FieldInfo(name, link, comment != null ? comment.getSummary() : null));
            ClassParser classParser = this.classParser;
            if (classParser == null) {
                Intrinsics.throwUninitializedPropertyAccessException("classParser");
                classParser = null;
            }
            IClassWrapper rVar = classParser.parser(iFieldWrapper.getType());
            if (rVar != null) {
                if (rVar.isEnum()) {
                    addEnumDefine(iFieldWrapper.getType(), rVar, enums);
                } else if (!Utils.INSTANCE.isBuildType(iFieldWrapper.getType())) {
                    addClassDefine(iFieldWrapper.getType(), rVar, classes, enums);
                }
            }
        }
        String simpleName = getSimpleName(clazz);
        CommentDetails comment2 = wrapper.getComment();
        classes.add(new ClassDefine(simpleName, comment2 != null ? comment2.getTotal() : null, arrayList));
    }

    private final void addEnumDefine(String clazz, IClassWrapper wrapper, Set<EnumDefine> enums) {
        String simpleName = getSimpleName(clazz);
        CommentDetails comment = wrapper.getComment();
        String total = comment != null ? comment.getTotal() : null;
        List<IFieldWrapper> fields$default = IClassWrapper.DefaultImpls.getFields$default(wrapper, false, 1, null);
        ArrayList arrayList = new ArrayList(CollectionsKt.collectionSizeOrDefault(fields$default, 10));
        for (IFieldWrapper iFieldWrapper : fields$default) {
            String name = iFieldWrapper.getName();
            CommentDetails comment2 = iFieldWrapper.getComment();
            arrayList.add(new EnumValueDefine(name, comment2 != null ? comment2.getSummary() : null));
        }
        enums.add(new EnumDefine(simpleName, total, arrayList));
    }

    private final void scanFiled(String clazz, Set<ClassDefine> classes, Set<EnumDefine> enums) {
        ClassParser classParser = this.classParser;
        if (classParser == null) {
            Intrinsics.throwUninitializedPropertyAccessException("classParser");
            classParser = null;
        }
        IClassWrapper rVar = classParser.parser(clazz);
        Intrinsics.checkNotNull(rVar);
        List fields$default = IClassWrapper.DefaultImpls.getFields$default(rVar, false, 1, null);
        ArrayList<IFieldWrapper> arrayList = new ArrayList();
        for (Object obj : fields$default) {
            if (!Utils.INSTANCE.isBuildType(((IFieldWrapper) obj).getType())) {
                arrayList.add(obj);
            }
        }
        for (IFieldWrapper iFieldWrapper : arrayList) {
            ClassParser classParser2 = this.classParser;
            if (classParser2 == null) {
                Intrinsics.throwUninitializedPropertyAccessException("classParser");
                classParser2 = null;
            }
            IClassWrapper rVar2 = classParser2.parser(iFieldWrapper.getType());
            if (rVar2 != null) {
                addClassDefine(rVar2.getFullName(), rVar2, classes, enums);
            }
        }
    }

    @Override // com.ifpdos.udi.sdk.service.doc.base.IDocGenerator
    public void genDoc(List<ApiInfo> apis, CommentDetails serviceComment, final ClassParser classParser, File docDir) {
        Permission permission;
        Permission permission2;
        Permission permission3;
        Intrinsics.checkNotNullParameter(apis, "apis");
        Intrinsics.checkNotNullParameter(serviceComment, "serviceComment");
        Intrinsics.checkNotNullParameter(classParser, "classParser");
        Intrinsics.checkNotNullParameter(docDir, "docDir");
        this.serviceComment = serviceComment;
        this.classParser = classParser;
        File file = new File(docDir, "doc-simple");
        if (!file.exists()) {
            file.mkdirs();
        }
        String serviceName = Utils.INSTANCE.getServiceName(serviceComment);
        LinkedHashSet linkedHashSet = new LinkedHashSet();
        LinkedHashSet linkedHashSet2 = new LinkedHashSet();
        List<ApiInfo> list = apis;
        ArrayList arrayList = new ArrayList(CollectionsKt.collectionSizeOrDefault(list, 10));
        boolean z = false;
        int i = 0;
        for (Iterator it = list.iterator(); it.hasNext(); it = it) {
            Object next = it.next();
            int i2 = i + 1;
            if (i < 0) {
                CollectionsKt.throwIndexOverflow();
            }
            final ApiInfo apiInfo = (ApiInfo) next;
            Request getterRequest = apiInfo.getGetterRequest();
            int permission4 = (getterRequest == null || (permission3 = getterRequest.getPermission()) == null) ? 0 : permission3.getPermission();
            Request setterRequest = apiInfo.getSetterRequest();
            int permission5 = (setterRequest == null || (permission2 = setterRequest.getPermission()) == null) ? 0 : permission2.getPermission();
            Notify notify = apiInfo.getNotify();
            if ((permission4 | permission5 | ((notify == null || (permission = notify.getPermission()) == null) ? 0 : permission.getPermission())) != 0) {
                z = true;
            }
            Request getterRequest2 = apiInfo.getGetterRequest();
            if (getterRequest2 != null) {
                scanFiled(getterRequest2.getRequestClass(), linkedHashSet, linkedHashSet2);
                scanFiled(getterRequest2.getResponseClass(), linkedHashSet, linkedHashSet2);
            }
            Request setterRequest2 = apiInfo.getSetterRequest();
            if (setterRequest2 != null) {
                scanFiled(setterRequest2.getRequestClass(), linkedHashSet, linkedHashSet2);
                scanFiled(setterRequest2.getResponseClass(), linkedHashSet, linkedHashSet2);
            }
            Notify notify2 = apiInfo.getNotify();
            if (notify2 != null) {
                scanFiled(notify2.getNotifyClass(), linkedHashSet, linkedHashSet2);
            }
            arrayList.add(new ApiDefine(i2, apiInfo.getUri(), apiInfo.getAlias(), parserRequestDefine(apiInfo.getGetterRequest(), new Function0<String>() { // from class: com.ifpdos.udi.sdk.service.doc.simple.SimpleDocGenerator$genDoc$apiDefines$1$4
                /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
                {
                    super(0);
                }

                @Override // kotlin.jvm.functions.Function0
                public final String invoke() {
                    return this.this$0.demoCodeGenerator.genGetRequestDemo(apiInfo, classParser);
                }
            }), parserRequestDefine(apiInfo.getSetterRequest(), new Function0<String>() { // from class: com.ifpdos.udi.sdk.service.doc.simple.SimpleDocGenerator$genDoc$apiDefines$1$5
                /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
                {
                    super(0);
                }

                @Override // kotlin.jvm.functions.Function0
                public final String invoke() {
                    return this.this$0.demoCodeGenerator.genPostRequestDemo(apiInfo, classParser);
                }
            }), parserNotifyDefine(apiInfo), apiInfo.getComment(), getTitleLink(apiInfo.getComment().getSummary(), i2)));
            i = i2;
        }
        HashMap map = new HashMap();
        HashMap map2 = map;
        map2.put("serviceComment", serviceComment.getDescription());
        map2.put("apis", arrayList);
        map2.put("hasPermission", Boolean.valueOf(z));
        if (!linkedHashSet.isEmpty()) {
            map2.put("classes", linkedHashSet);
        }
        if (!linkedHashSet2.isEmpty()) {
            map2.put("enums", linkedHashSet2);
        }
        FileOutputStream fileOutputStream = new FileOutputStream(new File(file, serviceName + ".md"));
        try {
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "utf-8");
            new DefaultMustacheFactory().compile(new StringReader(CodeTemplateKt.DOC_TEMPLATE), "doc").execute(outputStreamWriter, map);
            outputStreamWriter.flush();
            Unit unit = Unit.INSTANCE;
            CloseableKt.closeFinally(fileOutputStream, null);
        } finally {
        }
    }

    private final String getLink(String clazz) {
        if (Utils.INSTANCE.isListType(clazz)) {
            return "List&lt;" + getLink(Utils.INSTANCE.getTypeByList(clazz)) + "&gt;";
        }
        String wrapperTypeIfIsRawBuildInType = Utils.INSTANCE.toWrapperTypeIfIsRawBuildInType(getSimpleName(clazz));
        if (Utils.INSTANCE.isBuildType(clazz)) {
            return wrapperTypeIfIsRawBuildInType;
        }
        StringBuilder sbAppend = new StringBuilder("[").append(wrapperTypeIfIsRawBuildInType).append("](#");
        String lowerCase = wrapperTypeIfIsRawBuildInType.toLowerCase(Locale.ROOT);
        Intrinsics.checkNotNullExpressionValue(lowerCase, "this as java.lang.String).toLowerCase(Locale.ROOT)");
        return sbAppend.append(lowerCase).append(')').toString();
    }

    private final List<FieldInfo> getFieldInfoList(IClassWrapper clazz) {
        List fields$default = IClassWrapper.DefaultImpls.getFields$default(clazz, false, 1, null);
        if (fields$default.isEmpty()) {
            return null;
        }
        List<IFieldWrapper> list = fields$default;
        ArrayList arrayList = new ArrayList(CollectionsKt.collectionSizeOrDefault(list, 10));
        for (IFieldWrapper iFieldWrapper : list) {
            String link = getLink(Utils.INSTANCE.toWrapperTypeIfIsRawBuildInType(iFieldWrapper.getType()));
            CommentDetails comment = iFieldWrapper.getComment();
            arrayList.add(new FieldInfo(iFieldWrapper.getName(), link, comment != null ? comment.getSummary() : null));
        }
        return arrayList;
    }
}
