react-code-blocks
Version:
Modified Atlaskit's Code Block to support more languages (i.e graphql, reasonml, etc) and theme (i.e railscast, dracula, monokai, etc) code snippets!
386 lines (384 loc) • 6.39 kB
text/typescript
export const SUPPORTED_LANGUAGE_ALIASES = Object.freeze([
{
name: 'PHP',
alias: ['php', 'php3', 'php4', 'php5'],
value: 'php',
},
{
name: 'Java',
alias: ['java'],
value: 'java',
},
{
name: 'CSharp',
alias: ['csharp', 'c#', 'cs'],
value: 'csharp',
},
{
name: 'Python',
alias: ['python', 'py'],
value: 'python',
},
{
name: 'JavaScript',
alias: ['javascript', 'js'],
value: 'javascript',
},
{
name: 'XML',
alias: ['xml'],
value: 'xml',
},
{
name: 'HTML',
alias: ['html', 'htm'],
value: 'markup',
},
{
name: 'C++',
alias: ['c++', 'cpp', 'clike'],
value: 'cpp',
},
{
name: 'Ruby',
alias: ['ruby', 'rb', 'duby'],
value: 'ruby',
},
{
name: 'Objective-C',
alias: ['objective-c', 'objectivec', 'obj-c', 'objc'],
value: 'objectivec',
},
{
name: 'C',
alias: ['c'],
value: 'cpp',
},
{
name: 'Swift',
alias: ['swift'],
value: 'swift',
},
{
name: 'TeX',
alias: ['tex', 'latex'],
value: 'tex',
},
{
name: 'Shell',
alias: ['shell', 'sh', 'ksh', 'zsh'],
value: 'bash',
},
{
name: 'Scala',
alias: ['scala'],
value: 'scala',
},
{
name: 'Go',
alias: ['go'],
value: 'go',
},
{
name: 'ActionScript',
alias: ['actionscript', 'actionscript3', 'as'],
value: 'actionscript',
},
{
name: 'ColdFusion',
alias: ['coldfusion'],
value: 'xml',
},
{
name: 'JavaFX',
alias: ['javafx', 'jfx'],
value: 'java',
},
{
name: 'VbNet',
alias: ['vbnet', 'vb.net'],
value: 'vbnet',
},
{
name: 'JSON',
alias: ['json'],
value: 'json',
},
{
name: 'MATLAB',
alias: ['matlab'],
value: 'matlab',
},
{
name: 'Groovy',
alias: ['groovy'],
value: 'groovy',
},
{
name: 'SQL',
alias: [
'sql',
'postgresql',
'postgres',
'plpgsql',
'psql',
'postgresql-console',
'postgres-console',
'tsql',
't-sql',
'mysql',
'sqlite',
],
value: 'sql',
},
{
name: 'R',
alias: ['r'],
value: 'r',
},
{
name: 'Perl',
alias: ['perl', 'pl'],
value: 'perl',
},
{
name: 'Lua',
alias: ['lua'],
value: 'lua',
},
{
name: 'Delphi',
alias: ['delphi', 'pas', 'pascal', 'objectpascal'],
value: 'delphi',
},
{
name: 'XML',
alias: ['xml'],
value: 'xml',
},
{
name: 'TypeScript',
alias: ['typescript', 'ts', 'tsx'],
value: 'typescript',
},
{
name: 'CoffeeScript',
alias: ['coffeescript', 'coffee-script', 'coffee'],
value: 'coffeescript',
},
{
name: 'Haskell',
alias: ['haskell', 'hs'],
value: 'haskell',
},
{
name: 'Puppet',
alias: ['puppet'],
value: 'puppet',
},
{
name: 'Arduino',
alias: ['arduino'],
value: 'arduino',
},
{
name: 'Fortran',
alias: ['fortran'],
value: 'fortran',
},
{
name: 'Erlang',
alias: ['erlang', 'erl'],
value: 'erlang',
},
{
name: 'PowerShell',
alias: ['powershell', 'posh', 'ps1', 'psm1'],
value: 'powershell',
},
{
name: 'Haxe',
alias: ['haxe', 'hx', 'hxsl'],
value: 'haxe',
},
{
name: 'Elixir',
alias: ['elixir', 'ex', 'exs'],
value: 'elixir',
},
{
name: 'Verilog',
alias: ['verilog', 'v'],
value: 'verilog',
},
{
name: 'Rust',
alias: ['rust'],
value: 'rust',
},
{
name: 'VHDL',
alias: ['vhdl'],
value: 'vhdl',
},
{
name: 'Sass',
alias: ['sass'],
value: 'less',
},
{
name: 'OCaml',
alias: ['ocaml'],
value: 'ocaml',
},
{
name: 'Dart',
alias: ['dart'],
value: 'dart',
},
{
name: 'CSS',
alias: ['css'],
value: 'css',
},
{
name: 'reStructuredText',
alias: ['restructuredtext', 'rst', 'rest'],
value: 'rest',
},
{
name: 'ObjectPascal',
alias: ['objectpascal'],
value: 'delphi',
},
{
name: 'Kotlin',
alias: ['kotlin'],
value: 'kotlin',
},
{
name: 'D',
alias: ['d'],
value: 'd',
},
{
name: 'Octave',
alias: ['octave'],
value: 'matlab',
},
{
name: 'QML',
alias: ['qbs', 'qml'],
value: 'qml',
},
{
name: 'Prolog',
alias: ['prolog'],
value: 'prolog',
},
{
name: 'FoxPro',
alias: ['foxpro', 'vfp', 'clipper', 'xbase'],
value: 'vbnet',
},
{
name: 'Scheme',
alias: ['scheme', 'scm'],
value: 'scheme',
},
{
name: 'CUDA',
alias: ['cuda', 'cu'],
value: 'cpp',
},
{
name: 'Julia',
alias: ['julia', 'jl'],
value: 'julia',
},
{
name: 'Racket',
alias: ['racket', 'rkt'],
value: 'lisp',
},
{
name: 'Ada',
alias: ['ada', 'ada95', 'ada2005'],
value: 'ada',
},
{
name: 'Tcl',
alias: ['tcl'],
value: 'tcl',
},
{
name: 'Mathematica',
alias: ['mathematica', 'mma', 'nb'],
value: 'mathematica',
},
{
name: 'Autoit',
alias: ['autoit'],
value: 'autoit',
},
{
name: 'StandardML',
alias: ['standardmL', 'sml', 'standardml'],
value: 'sml',
},
{
name: 'Objective-J',
alias: ['objective-j', 'objectivej', 'obj-j', 'objj'],
value: 'objectivec',
},
{
name: 'Smalltalk',
alias: ['smalltalk', 'squeak', 'st'],
value: 'smalltalk',
},
{
name: 'Vala',
alias: ['vala', 'vapi'],
value: 'vala',
},
{
name: 'ABAP',
alias: ['abap'],
value: 'sql',
},
{
name: 'LiveScript',
alias: ['livescript', 'live-script'],
value: 'livescript',
},
{
name: 'XQuery',
alias: ['xquery', 'xqy', 'xq', 'xql', 'xqm'],
value: 'xquery',
},
{
name: 'PlainText',
alias: ['text', 'plaintext'],
value: 'text',
},
{
name: 'Yaml',
alias: ['yaml', 'yml'],
value: 'yaml',
},
{
name: 'GraphQL',
alias: ['graphql', 'gql'],
value: 'graphql',
},
]);
export const normalizeLanguage = (language?: string): string => {
if (!language) {
return '';
}
const match = SUPPORTED_LANGUAGE_ALIASES.find(val => {
return val.name === language || val.alias.includes(language);
});
// Fallback to plain monospaced text if language passed but not supported
return match ? match.value : language || 'text';
};