/**
 * @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 {pgSQL, plSQL, cassandra} from '@codemirror/legacy-modes/mode/sql';
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 {sql} from '@codemirror/lang-sql';
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 StreamLanguage.define(cassandra);
    case 'text/x-pgsql':
      return StreamLanguage.define(pgSQL);
    case 'text/x-plsql':
      return StreamLanguage.define(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':
      return javascript();
    case 'text/x-erlang':
      return StreamLanguage.define(erlang);
    case 'text/jsx':
      return javascript({jsx: true});
    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/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-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 [];
};
