docs/AddingAFormatter.md
Add a etc/config/compiler-explorer.local.properties file (for details on the configuration system, see Configuration.md)
Add a new formatter under the formatters key
The new formatter can have the following keys: name, exe, styles, type, explicitVersion (to override version parsing), version (argument to get version info), versionRe (regex to filter out the right version info)
Add a lib/formatters/<formatter>.ts file using the template below, replacing Type and type as appropriate
import {UnprocessedExecResult} from '../../types/execution/execution.interfaces';
import {BaseFormatter} from './base';
import {FormatOptions} from './base.interfaces';
export class TypeFormatter extends BaseFormatter {
static get key() {
return 'type';
}
}
The value returned by key above corresponds to the type property you set in the compiler-explorer properties
configuration file.
Tweak format(source: string, options: FormatOptions): Promise<UnprocessedExecResult> and
isValidStyle(style: string): boolean as necessary. See the JSDoc for format and the implementations for other
formatters to get a further understanding of how to implement format(source, options).
Add your TypeFormatter to lib/formatters/_all.ts in alphabetical order
You can check the output of http://localhost:10240/api/formats to be sure your formatter is there.
Make an installer in the infra repository. An example patch for adding an installer can be found here