/**
 * @license
 * Copyright 2023 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

import {StreamLanguage} from '@codemirror/language';

// Languages
import {asciiArmor} from '@codemirror/legacy-modes/mode/asciiarmor';
import {apl} from '@codemirror/legacy-modes/mode/apl';
import {asn1} from '@codemirror/legacy-modes/mode/asn1';
import {asterisk} from '@codemirror/legacy-modes/mode/asterisk';
import {brainfuck} from '@codemirror/legacy-modes/mode/brainfuck';
import {c} from '@codemirror/legacy-modes/mode/clike';
import {csharp} from '@codemirror/legacy-modes/mode/clike';
import {clojure} from '@codemirror/legacy-modes/mode/clojure';
import {cmake} from '@codemirror/legacy-modes/mode/cmake';
import {cobol} from '@codemirror/legacy-modes/mode/cobol';
import {coffeeScript} from '@codemirror/legacy-modes/mode/coffeescript';
import {commonLisp} from '@codemirror/legacy-modes/mode/commonlisp';
import {crystal} from '@codemirror/legacy-modes/mode/crystal';
import {gss} from '@codemirror/legacy-modes/mode/css';
import {cypher} from '@codemirror/legacy-modes/mode/cypher';
import {d} from '@codemirror/legacy-modes/mode/d';
import {dart} from '@codemirror/legacy-modes/mode/clike';
import {diff} from '@codemirror/legacy-modes/mode/diff';
import {dockerFile} from '@codemirror/legacy-modes/mode/dockerfile';
import {dtd} from '@codemirror/legacy-modes/mode/dtd';
import {dylan} from '@codemirror/legacy-modes/mode/dylan';
import {ebnf} from '@codemirror/legacy-modes/mode/ebnf';
import {ecl} from '@codemirror/legacy-modes/mode/ecl';
import {eiffel} from '@codemirror/legacy-modes/mode/eiffel';
import {elm} from '@codemirror/legacy-modes/mode/elm';
import {erlang} from '@codemirror/legacy-modes/mode/erlang';
import {factor} from '@codemirror/legacy-modes/mode/factor';
import {fcl} from '@codemirror/legacy-modes/mode/fcl';
import {forth} from '@codemirror/legacy-modes/mode/forth';
import {fortran} from '@codemirror/legacy-modes/mode/fortran';
import {gas} from '@codemirror/legacy-modes/mode/gas';
import {gherkin} from '@codemirror/legacy-modes/mode/gherkin';
import {groovy} from '@codemirror/legacy-modes/mode/groovy';
import {fSharp, oCaml} from '@codemirror/legacy-modes/mode/mllike';
import {haskell} from '@codemirror/legacy-modes/mode/haskell';
import {haxe, hxml} from '@codemirror/legacy-modes/mode/haxe';
import {http} from '@codemirror/legacy-modes/mode/http';
import {idl} from '@codemirror/legacy-modes/mode/idl';
import {jinja2} from '@codemirror/legacy-modes/mode/jinja2';
import {jsonld} from '@codemirror/legacy-modes/mode/javascript';
import {julia} from '@codemirror/legacy-modes/mode/julia';
import {kotlin} from '@codemirror/legacy-modes/mode/clike';
import {liveScript} from '@codemirror/legacy-modes/mode/livescript';
import {lua} from '@codemirror/legacy-modes/mode/lua';
import {mathematica} from '@codemirror/legacy-modes/mode/mathematica';
import {mbox} from '@codemirror/legacy-modes/mode/mbox';
import {mirc} from '@codemirror/legacy-modes/mode/mirc';
import {modelica} from '@codemirror/legacy-modes/mode/modelica';
import {mscgen, msgenny} from '@codemirror/legacy-modes/mode/mscgen';
import {mumps} from '@codemirror/legacy-modes/mode/mumps';
import {nginx} from '@codemirror/legacy-modes/mode/nginx';
import {nsis} from '@codemirror/legacy-modes/mode/nsis';
import {ntriples} from '@codemirror/legacy-modes/mode/ntriples';
import {objectiveC} from '@codemirror/legacy-modes/mode/clike';
import {oz} from '@codemirror/legacy-modes/mode/oz';
import {pascal} from '@codemirror/legacy-modes/mode/pascal';
import {perl} from '@codemirror/legacy-modes/mode/perl';
import {pig} from '@codemirror/legacy-modes/mode/pig';
import {powerShell} from '@codemirror/legacy-modes/mode/powershell';
import {properties} from '@codemirror/legacy-modes/mode/properties';
import {protobuf} from '@codemirror/legacy-modes/mode/protobuf';
import {puppet} from '@codemirror/legacy-modes/mode/puppet';
import {q} from '@codemirror/legacy-modes/mode/q';
import {rpmChanges, rpmSpec} from '@codemirror/legacy-modes/mode/rpm';
import {ruby} from '@codemirror/legacy-modes/mode/ruby';
import {sas} from '@codemirror/legacy-modes/mode/sas';
import {scala} from '@codemirror/legacy-modes/mode/clike';
import {scheme} from '@codemirror/legacy-modes/mode/scheme';
import {shader} from '@codemirror/legacy-modes/mode/clike';
import {shell} from '@codemirror/legacy-modes/mode/shell';
import {sieve} from '@codemirror/legacy-modes/mode/sieve';
import {sparql} from '@codemirror/legacy-modes/mode/sparql';
import {spreadsheet} from '@codemirror/legacy-modes/mode/spreadsheet';
import {solr} from '@codemirror/legacy-modes/mode/solr';
import {squirrel} from '@codemirror/legacy-modes/mode/clike';
import {stex} from '@codemirror/legacy-modes/mode/stex';
import {swift} from '@codemirror/legacy-modes/mode/swift';
import {tcl} from '@codemirror/legacy-modes/mode/tcl';
import {textile} from '@codemirror/legacy-modes/mode/textile';
import {tiddlyWiki} from '@codemirror/legacy-modes/mode/tiddlywiki';
import {tiki} from '@codemirror/legacy-modes/mode/tiki';
import {toml} from '@codemirror/legacy-modes/mode/toml';
import {troff} from '@codemirror/legacy-modes/mode/troff';
import {ttcn} from '@codemirror/legacy-modes/mode/ttcn';
import {ttcnCfg} from '@codemirror/legacy-modes/mode/ttcn-cfg';
import {turtle} from '@codemirror/legacy-modes/mode/turtle';
import {vb} from '@codemirror/legacy-modes/mode/vb';
import {vbScript} from '@codemirror/legacy-modes/mode/vbscript';
import {velocity} from '@codemirror/legacy-modes/mode/velocity';
import {verilog} from '@codemirror/legacy-modes/mode/verilog';
import {vhdl} from '@codemirror/legacy-modes/mode/vhdl';
import {webIDL} from '@codemirror/legacy-modes/mode/webidl';
import {xQuery} from '@codemirror/legacy-modes/mode/xquery';
import {yacas} from '@codemirror/legacy-modes/mode/yacas';
import {z80} from '@codemirror/legacy-modes/mode/z80';

import {cpp} from '@codemirror/lang-cpp';
import {css} from '@codemirror/lang-css';
import {go} from '@codemirror/lang-go';
import {html} from '@codemirror/lang-html';
import {java} from '@codemirror/lang-java';
import {javascript} from '@codemirror/lang-javascript';
import {json} from '@codemirror/lang-json';
import {less} from '@codemirror/lang-less';
import {markdown} from '@codemirror/lang-markdown';
import {php} from '@codemirror/lang-php';
import {python} from '@codemirror/lang-python';
import {rust} from '@codemirror/lang-rust';
import {sass} from '@codemirror/lang-sass';
import {Cassandra, PLSQL, PostgreSQL, sql} from '@codemirror/lang-sql';
import {vue} from '@codemirror/lang-vue';
import {xml} from '@codemirror/lang-xml';
import {yaml} from '@codemirror/lang-yaml';

export const language = (fileType?: string) => {
  switch (fileType) {
    case 'text/apl':
      return StreamLanguage.define(apl);
    case 'text/x-ttcn-asn':
      return StreamLanguage.define(asn1({}));
    case 'text/x-asterisk':
      return StreamLanguage.define(asterisk);
    case 'text/x-brainfuck':
      return StreamLanguage.define(brainfuck);
    case 'text/x-ebnf':
      return StreamLanguage.define(ebnf);
    case 'text/x-python':
      return python();
    case 'text/x-csrc':
      return StreamLanguage.define(c);
    case 'text/x-csharp':
      return StreamLanguage.define(csharp);
    case 'text/x-c++src':
      return cpp();
    case 'application/dart':
      return StreamLanguage.define(dart);
    case 'text/x-kotlin':
      return StreamLanguage.define(kotlin);
    case 'text/x-objectivec':
      return StreamLanguage.define(objectiveC);
    case 'x-shader/x-fragment':
    case 'x-shader/x-vertex':
      return StreamLanguage.define(shader);
    case 'text/x-ttcn-cfg':
      return StreamLanguage.define(ttcnCfg);
    case 'text/x-common-lisp':
      return StreamLanguage.define(commonLisp);
    case 'text/x-clojure':
    case 'text/x-clojurescript':
      return StreamLanguage.define(clojure);
    case 'text/x-cmake':
      return StreamLanguage.define(cmake);
    case 'application/json':
      return json();
    case 'text/x-cobol':
      return StreamLanguage.define(cobol);
    case 'text/x-coffeescript':
      return StreamLanguage.define(coffeeScript);
    case 'text/x-ini':
    case 'text/x-properties':
      return StreamLanguage.define(properties);
    case 'text/x-crystal':
      return StreamLanguage.define(crystal);
    case 'application/xml':
      return xml();
    case 'text/css':
      return css();
    case 'text/x-less':
      return less();
    case 'text/x-scss':
      return sass();
    case 'text/x-gss':
      return StreamLanguage.define(gss);
    case 'text/x-cassandra':
      return sql({dialect: Cassandra});
    case 'text/x-pgsql':
      return sql({dialect: PostgreSQL});
    case 'text/x-plsql':
      return sql({dialect: PLSQL});
    case 'application/x-cypher-query':
      return StreamLanguage.define(cypher);
    case 'text/x-d':
      return StreamLanguage.define(d);
    case 'text/x-diff':
      return StreamLanguage.define(diff);
    case 'application/xml-dtd':
      return StreamLanguage.define(dtd);
    case 'text/x-dylan':
      return StreamLanguage.define(dylan);
    case 'text/x-dockerfile':
      return StreamLanguage.define(dockerFile);
    case 'text/x-eiffel':
      return StreamLanguage.define(eiffel);
    case 'text/x-ecl':
      return StreamLanguage.define(ecl);
    case 'text/x-elm':
      return StreamLanguage.define(elm);
    case 'application/x-ejs':
    case 'text/html':
    case 'application/x-jsp':
      return html();
    case 'application/x-erb':
    case 'text/x-ruby':
      return StreamLanguage.define(ruby);
    case 'text/javascript':
    case 'text/jsx':
      return javascript({jsx: true});
    case 'text/x-erlang':
      return StreamLanguage.define(erlang);
    case 'text/x-spreadsheet':
      return StreamLanguage.define(spreadsheet);
    case 'text/x-fortran':
      return StreamLanguage.define(fortran);
    case 'text/x-factor':
      return StreamLanguage.define(factor);
    case 'text/x-feature':
    case 'text/x-gherkin':
      return StreamLanguage.define(gherkin);
    case 'text/x-fcl':
      return StreamLanguage.define(fcl);
    case 'text/x-forth':
      return StreamLanguage.define(forth);
    case 'text/x-fsharp':
      return StreamLanguage.define(fSharp);
    case 'text/x-go':
      return go();
    case 'text/x-groovy':
      return StreamLanguage.define(groovy);
    case 'text/x-haskell':
    case 'text/x-literate-haskell':
      return StreamLanguage.define(haskell);
    case 'message/http':
      return StreamLanguage.define(http);
    case 'text/x-haxe':
      return StreamLanguage.define(haxe);
    case 'text/x-hxml':
      return StreamLanguage.define(hxml);
    case 'text/x-jinja2':
      return StreamLanguage.define(jinja2);
    case 'text/x-java':
      return java();
    case 'text/x-julia':
      return StreamLanguage.define(julia);
    case 'application/ld+json':
      return StreamLanguage.define(jsonld);
    case 'text/x-livescript':
      return StreamLanguage.define(liveScript);
    case 'text/x-lua':
      return StreamLanguage.define(lua);
    case 'text/x-markdown':
      return markdown();
    case 'application/mbox':
      return StreamLanguage.define(mbox);
    case 'text/mirc':
      return StreamLanguage.define(mirc);
    case 'text/x-ocaml':
      return StreamLanguage.define(oCaml);
    case 'text/x-modelica':
      return StreamLanguage.define(modelica);
    case 'text/x-mumps':
      return StreamLanguage.define(mumps);
    case 'text/x-mscgen':
      return StreamLanguage.define(mscgen);
    case 'text/x-msgenny':
      return StreamLanguage.define(msgenny);
    case 'text/x-mathematica':
      return StreamLanguage.define(mathematica);
    case 'text/x-nginx-conf':
      return StreamLanguage.define(nginx);
    case 'text/x-nsis':
      return StreamLanguage.define(nsis);
    case 'text/n-triples':
      return StreamLanguage.define(ntriples);
    case 'text/x-squirrel':
      return StreamLanguage.define(squirrel);
    case 'text/x-oz':
      return StreamLanguage.define(oz);
    case 'text/x-pascal':
      return StreamLanguage.define(pascal);
    case 'application/pgp':
      return StreamLanguage.define(asciiArmor);
    case 'text/x-pig':
      return StreamLanguage.define(pig);
    case 'text/x-perl':
      return StreamLanguage.define(perl);
    case 'text/x-puppet':
      return StreamLanguage.define(puppet);
    case 'text/x-idl':
      return StreamLanguage.define(idl);
    case 'text/x-protobuf':
      return StreamLanguage.define(protobuf);
    case 'application/x-powershell':
      return StreamLanguage.define(powerShell);
    case 'text/x-q':
      return StreamLanguage.define(q);
    case 'text/x-rpm-spec':
      return StreamLanguage.define(rpmSpec);
    case 'text/x-rpm-changes':
      return StreamLanguage.define(rpmChanges);
    case 'application/sparql-query':
      return StreamLanguage.define(sparql);
    case 'text/x-rustsrc':
      return rust();
    case 'text/x-gas':
      return StreamLanguage.define(gas);
    case 'text/x-sas':
      return StreamLanguage.define(sas);
    case 'text/x-sass':
      return sass({indented: true});
    case 'text/x-scala':
      return StreamLanguage.define(scala);
    case 'text/x-scheme':
      return StreamLanguage.define(scheme);
    case 'application/sieve':
      return StreamLanguage.define(sieve);
    case 'text/x-solr':
      return StreamLanguage.define(solr);
    case 'text/x-stex':
    case 'text/x-latex':
      return StreamLanguage.define(stex);
    case 'text/x-systemverilog':
      return StreamLanguage.define(verilog);
    case 'text/x-swift':
      return StreamLanguage.define(swift);
    case 'text/x-tcl':
      return StreamLanguage.define(tcl);
    case 'text/x-textile':
      return StreamLanguage.define(textile);
    case 'text/x-tiddlywiki':
      return StreamLanguage.define(tiddlyWiki);
    case 'text/tiki':
      return StreamLanguage.define(tiki);
    case 'text/x-toml':
      return StreamLanguage.define(toml);
    case 'application/typescript':
      return javascript({typescript: true});
    case 'text/tsx':
      return javascript({jsx: true, typescript: true});
    case 'text/x-ttcn':
      return StreamLanguage.define(ttcn);
    case 'text/turtle':
      return StreamLanguage.define(turtle);
    case 'text/x-vb':
      return StreamLanguage.define(vb);
    case 'text/vbscript':
      return StreamLanguage.define(vbScript);
    case 'text/x-vhdl':
      return StreamLanguage.define(vhdl);
    case 'text/velocity':
      return StreamLanguage.define(velocity);
    case 'text/x-vue':
      return vue();
    case 'text/x-webidl':
      return StreamLanguage.define(webIDL);
    case 'application/xquery':
      return StreamLanguage.define(xQuery);
    case 'text/x-yaml':
      return yaml();
    case 'text/x-yacas':
      return StreamLanguage.define(yacas);
    case 'text/x-z80':
      return StreamLanguage.define(z80);
    case 'text/troff':
      return StreamLanguage.define(troff);
    case 'text/x-sh':
      return StreamLanguage.define(shell);
    case 'text/x-php':
      return php();
    case 'text/x-sql':
      return sql();
  }
  return [];
};
