in Sources/MockoloFramework/Utils/SwiftType.swift [464:498]
func parseRxVar(overrides: [String: String]?, overrideKey: String, isInitParam: Bool) -> (String, String, String?)? {
guard (self.isNominal(named: .observable) || self.isNominal(named: .rxObservable)),
case .nominal(let nominal) = kind,
!nominal.genericParameterTypes.isEmpty else {
return nil
}
let typeParams = nominal.genericParameterTypes.map(\.description).joined(separator: ", ")
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)<\(typeParams)>"
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 = nominal.genericParameterTypes[0].defaultSingularVal(isInitParam: isInitParam, overrides: overrides, overrideKey: overrideKey) {
underlyingSubjectTypeDefaultVal = "\(underlyingSubjectType)(value: \(val))"
}
}
return (underlyingSubjectType, typeParams, underlyingSubjectTypeDefaultVal)
}