text_document_registration_options.pony

use json = "../../../../json"

use ".."

interface val TextDocumentRegistrationOptions is SendData
  fun val documentSelector(): (DocumentSelector | None)

  fun val get_json(): json.Item =>
    let props = Array[(String, json.Item)]
    match documentSelector()
    | let ds: DocumentSelector =>
      let seq =
        recover val
          json.Sequence.from_iter[DocumentFilter](
            ds.values(), {(filter) => filter.get_json() })
        end
      props.push(("documentSelector", seq))
    end
    json.Object(consume props)