workspace_client_capabilities.pony

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

interface val WorkspaceClientCapabilities
  fun val applyEdit(): (Bool | None)
  fun val workspaceEdit(): (WorkspaceEditClientCapabilities | None)
  // fun val didChangeConfiguration()
  //   : (DidChangeConfigurationClientCapabilities | None)
  // fun val didChangeWatchedFiles()
  //   : (DidChangeWatchedFilesClientCapabilities | None)
  // fun val symbol(): (WorkspaceSymbolClientCapabilities | None)
  // fun val executeCommand(): (ExecuteCommandClientCapabilities | None)
  // fun val workspaceFolders(): (Bool | None)
  // fun val configuration(): (Bool | None)
  // fun val semanticTokens(): (SemanticTokensWorkspaceClientCapabilities | None)
  // fun val codeLens(): (CodeLensWorkspaceClientCapabilities | None)
  // fun val fileOperations(): (FileOperationsWorkspaceClientCapabilities | None)
  // fun val inlineValue(): (InlineValueWorkspaceClientCapabilities | None)
  // fun val inlayHint(): (InlayHintWorkspaceClientCapabilities | None)
  // fun val diagnostics(): (DiagnosticWorkspaceClientCapabilities | None)

primitive ParseWorkspaceClientCapabilities
  fun apply(obj: json.Object val): (WorkspaceClientCapabilities | String) =>
    let applyEdit' =
      try
        match obj("applyEdit")?
        | let ae: Bool =>
          ae
        else
          return "workspace.applyEdit must be of type boolean"
        end
      end
    let workspaceEdit' =
      try
        match obj("workspaceEdit")?
        | let we_obj: json.Object val =>
          match ParseWorkspaceEditClientCapabilities(we_obj)
          | let we: WorkspaceEditClientCapabilities =>
            we
          | let err: String =>
            return err
          end
        else
          return "workspace.workspaceEdit must be a JSON object"
        end
      end
    // let didChangeConfiguration' =
    //   try
    //     match obj("didChangeConfiguration")?
    //     | let dcc_obj: json.Object =>
    //       match ParseDidChangeConfigurationClientCapabilities(dcc_obj)
    //       | let dcc: DidChangeConfigurationClientCapabilities =>
    //         dcc
    //       | let err: String =>
    //         return err
    //       end
    //     else
    //       return "workspace.didChangeConfiguration must be a JSON object"
    //     end
    //   end
    // let didChangeWatchedFiles' =
    //   try
    //     match obj("didChangeWatchedFiles")?
    //     | let dcwf_obj: json.Object =>
    //       match ParseDidChangeWatchedFilesClientCapabilities(dcwf_obj)
    //       | let dcwf: DidChangeWatchedFilesClientCapabilities =>
    //         dcwf
    //       | let err: String =>
    //         return err
    //       end
    //     else
    //       return "workspace.didChangeWatchedFiles must be a JSON object"
    //     end
    //   end
    // let symbol' =
    //   try
    //     match obj("symbol")?
    //     | let s_obj: json.Object =>
    //       match ParseWorkspaceSymbolClientCapabilities(s_obj)
    //       | let s: WorkspaceSymbolClientCapabilities =>
    //         s
    //       | let err: String =>
    //         return err
    //       end
    //     else
    //       return "workspace.symbol must be a JSON object"
    //     end
    //   end
    // let executeCommand' =
    //   try
    //     match obj("executeCommand")?
    //     | let ec_obj: json.Object =>
    //       match ParseExecuteCommandClientCapabilities(ec_obj)
    //       | let ec: ExecuteCommandClientCapabilities =>
    //         ec
    //       | let err: String =>
    //         return err
    //       end
    //     else
    //       return "workspace.executeCommand must be a JSON object"
    //     end
    //   end
    // let workspaceFolders' =
    //   try
    //     match obj("workspaceFolders")?
    //     | let wf: Bool
    //       wf
    //     else
    //       return "worksapce.workspaceFolders must be of type boolean"
    //     end
    //   end
    // let configuration' =
    //   try
    //     match obj("configuration")?
    //     | let c: Bool =>
    //       c
    //     else
    //       return "worksapce.configuration must be of type boolean"
    //     end
    //   end
    // let semanticTokens' =
    //   try
    //     match obj("semanticTokens")?
    //     | let st_obj: json.Object =>
    //       match ParseSemanticTokensWorkspaceClientCapabilities(st_obj)
    //       | let st: SemanticTokensWorkspaceClientCapabilities =>
    //         st
    //       | let err: String =>
    //         return err
    //       end
    //     else
    //       return "workspace.semanticTokens must be a JSON object"
    //     end
    //   end
    // let codeLens' =
    //   try
    //     match obj("codeLens")?
    //     | let cl_obj: json.Object =>
    //       match ParseCodeLensWorkspaceClientCapabilities(cl_obj)
    //       | let cl: CodeLensWorkspaceClientCapabilities =>
    //         cl
    //       | let err: String =>
    //         return err
    //       end
    //     else
    //       return "workspace.codeLens must be a JSON object"
    //     end
    //   end
    // let fileOperations' =
    //   try
    //     match obj("fileOperations")?
    //     | let fo_obj: json.Object =>
    //       match ParseFileOperationsWorkspaceClientCapabilities =>
    //       | let fo: FileOperationsWorkspaceClientCapabilities =>
    //         fo
    //       | let err: String =>
    //         return err
    //       end
    //     else
    //       return "workspace.fileOperations must be a JSON object"
    //     end
    //   end
    // let inlineValue' =
    //   try
    //     match obj("inlineValue")?
    //     | let iv_obj: json.Object =>
    //       match ParseInlineValueWorkspaceClientCapabilities(iv_obj)
    //       | let iv: InlineValueWorkspaceClientCapabilities =>
    //         iv
    //       | let err: String =>
    //         return err
    //       end
    //     else
    //       return "workspace.inlineValue must be a JSON object"
    //     end
    //   end
    // let inlayHint' =
    //   try
    //     match obj("inlayHint")?
    //     | let ih_obj: json.Object =>
    //       match ParseInlayHintWorkspaceClientCapabilities(ih_obj)
    //       | let ih: InlayHintWorksapceClientCapabilities =>
    //         ih
    //       | let err: String =>
    //         return err
    //       end
    //     else
    //       return "workspace.inlayHint must be a JSON object"
    //     end
    //   end
    // let diagnostics' =
    //   try
    //     match obj("diagnostics")?
    //     | let d_obj: json.Object =>
    //       match ParseDiagnosticWorkspaceClientCapabilities =>
    //       | d: DiagnosticsWorksapceClientCapabilities =>
    //         d
    //       | let err: String =>
    //         return err
    //       end
    //     else
    //       return "workspace.diagnostics must be a JSON object"
    //     end
    //   end
    object val is WorkspaceClientCapabilities
      fun val applyEdit(): (Bool | None) => applyEdit'
      fun val workspaceEdit(): (WorkspaceEditClientCapabilities | None) =>
        workspaceEdit'
      // fun val didChangeConfiguration()
      //   : (DidChangeConfigurationClientCapabilities | None) =>
      //     didChangeConfiguration'
      // fun val didChangeWatchedFiles()
      //   : (DidChangeWatchedFilesClientCapabilities | None) =>
      //     didChangeWatchedFiles'
      // fun val symbol(): (WorkspaceSymbolClientCapabilities | None) => symbol'
      // fun val executeCommand(): (ExecuteCommandClientCapabilities | None) =>
      //   executeCommand'
      // fun val workspaceFolders(): (Bool | None) => workspaceFolders'
      // fun val configuration(): (Bool | None) => configuration'
      // fun val semanticTokens()
      //   : (SemanticTokensWorkspaceClientCapabilities | None) => semanticTokens'
      // fun val codeLens(): (CodeLensWorkspaceClientCapabilities | None) =>
      //   codeLens'
      // fun val fileOperations()
      //   : (FileOperationsWorkspaceClientCapabilities | None) => fileOperations'
      // fun val inlineValue(): (InlineValueWorkspaceClientCapabilities | None) =>
      //   inlineValue'
      // fun val inlayHint(): (InlayHintWorkspaceClientCapabilities | None) =>
      //   inlayHint'
      // fun val diagnostics(): (DiagnosticWorkspaceClientCapabilities | None) =>
      //   diagnostics'
    end