use json = "../../../../json"
interface val MarkdownClientCapabilities
fun val parser(): String
fun val version(): (String | None)
fun val allowedTags(): (Array[String] val | None)
primitive ParseMarkdownClientCapabilities
fun apply(obj: json.Object val): (MarkdownClientCapabilities | String) =>
let parser': String =
try
match obj("parser")?
| let s: String =>
s.clone()
else
return "markdown.parser must be of type string"
end
else
return "markdown must contain a property 'parser'"
end
let version': (String | None) =
try
match obj("version")?
| let s: String =>
s.clone()
else
return "markdown.version must be of type string"
end
end
let allowedTags': (Array[String] val | None) =
try
match obj("allowedTags")?
| let at_seq: json.Sequence val =>
let ats: Array[String] trn = Array[String]
for at_item in at_seq.values() do
match at_item
| let s: String =>
ats.push(s.clone())
else
return "markdown.allowedTags must be strings"
end
end
consume ats
else
return "markdown.allowedTags must be an array"
end
end
object val is MarkdownClientCapabilities
fun val parser(): String => parser'
fun val version(): (String | None) => version'
fun val allowedTags(): (Array[String] val | None) => allowedTags'
end