func parseRxVar()

in Sources/MockoloFramework/Utils/TypeParser.swift [379:412]


    func parseRxVar(overrides: [String: String]?, overrideKey: String, isInitParam: Bool) -> (String?, String?, String?) {
        if typeName.hasPrefix(String.observableLeftAngleBracket) || typeName.hasPrefix(String.rxObservableLeftAngleBracket),
            let range = typeName.range(of: String.observableLeftAngleBracket), let lastIdx = typeName.lastIndex(of: ">") {
            let typeParamStr = typeName[range.upperBound..<lastIdx]

            var subjectKind = ""
            var underlyingSubjectType = ""
            if let rxTypes = overrides {
                if let val = rxTypes[overrideKey], val.hasSuffix(String.subjectSuffix) {
                    subjectKind = val
                } else if let val = rxTypes["all"], val.hasSuffix(String.subjectSuffix) {
                    subjectKind = val
                }
            }

            if subjectKind.isEmpty {
                subjectKind = String.publishSubject
            }
            underlyingSubjectType = "\(subjectKind)<\(typeParamStr)>"

            var underlyingSubjectTypeDefaultVal: String? = nil
            if subjectKind == String.publishSubject {
                underlyingSubjectTypeDefaultVal = "\(underlyingSubjectType)()"
            } else if subjectKind == String.replaySubject {
                underlyingSubjectTypeDefaultVal = "\(underlyingSubjectType)\(String.replaySubjectCreate)"
            } else if subjectKind == String.behaviorSubject {
                if let val = SwiftType(String(typeParamStr)).defaultSingularVal(isInitParam: isInitParam, overrides: overrides, overrideKey: overrideKey) {
                    underlyingSubjectTypeDefaultVal = "\(underlyingSubjectType)(value: \(val))"
                }
            }
            return (underlyingSubjectType, String(typeParamStr), underlyingSubjectTypeDefaultVal)
        }
        return (nil, nil, nil)
    }