private void WriteType(TypeNode classNode, StringBuilder result, bool edition, PrefixModules prefixModule, bool allowObservable) { switch (classNode.Type) { case TypeIdentifier.Boolean: result.Append("boolean"); break; case TypeIdentifier.DateTime: result.Append(allowObservable ? "Date" : "string"); break; case TypeIdentifier.Object: if (allowObservable && classNode.IsObservable) { if (prefixModule.HasFlag(PrefixModules.KoViews)) result.Append("koViews."); result.Append(classNode.Name); } else { if (prefixModule.HasFlag(PrefixModules.Views)) result.Append("views."); result.Append(classNode.CleanName); } if (edition && classNode.HasReadOnly()) { result.Append("Edit"); } break; case TypeIdentifier.Decimal: case TypeIdentifier.Double: case TypeIdentifier.Float: case TypeIdentifier.Int: case TypeIdentifier.Long: result.Append("number"); break; case TypeIdentifier.Guid: case TypeIdentifier.String: case TypeIdentifier.TimeSpan: result.Append("string"); break; case TypeIdentifier.Enum: if (prefixModule.HasFlag(PrefixModules.Views)) result.Append("views."); result.Append(classNode.CleanName); break; case TypeIdentifier.Any: result.Append("any"); break; case TypeIdentifier.Union: { bool first = true; foreach (var type in classNode.Union) { if (first) first = false; else result.Append(" | "); WriteType(type, result, edition, prefixModule, allowObservable); } break; } } }
private void WriteTypedNode(ITypedNode typedNode, StringBuilder result, bool edition, PrefixModules prefixModule, bool allowObservable) { if (typedNode.IsDictionary) { result.Append("{ [key: string]: "); } WriteType(typedNode.Type, result, edition, prefixModule, allowObservable); if (typedNode.IsCollection) { result.Append("[]"); } if (typedNode.IsDictionary) { result.Append(" }"); } }