A fork of ts95/lang-detector, rewritten in Typescript with more language support.
Detects a programming language from a given string.
- Built-in support for CommonJS and ESM format
- Built-in Typescript typings
- No external dependencies
- 150 test cases and growing!
| Languages | |||
|---|---|---|---|
| C | HTML | Lua | Rust |
| C++ | Java | Pascal | SQL |
| C# | Javascript | PHP | YAML |
| CSS | Julia | Python | |
| Go | Kotlin | Ruby |
$ npm install flouriteor via a CDN (unpkg or jsdelivr)
<script src="https://unpkg.com/flourite@1.1.1"></script>
<script src="https://cdn.jsdelivr.net/npm/flourite@1.1.1/dist/index.iife.js"></script>import flourite from 'flourite';
const code = flourite('console.log("Hello World");'); // => JavascriptYou could supply options to make see numbers of points for a certain language:
import flourite from 'flourite';
const code = flourite('printf("Hello World")', { statistics: true });
// code.detected = 'C'
// code.statistics = {
// C: 5,
// 'C++': 0,
// 'C#': 0,
// CSS: 0,
// Go: 0,
// HTML: 0,
// Java: 0,
// Javascript: 0,
// Julia: 0,
// Kotlin: 0,
// Lua: -20,
// Pascal: 0,
// PHP: 0,
// Python: 0,
// Ruby: 0,
// Rust: 0,
// SQL: 0,
// Unknown: 1,
// YAML: 0
// }Or if you want to integrate it with Shiki, you could pass:
const code = flourite('Console.WriteLine("Hello world!");', { shiki: true }); // => csharpIf you want to handle Unknown value, you could pass:
const code = flourite("SELECT 'Hello world!' text FROM dual;", { noUnknown: true });import flourite from 'flourite';
import type { Options, StatisticOutput } from 'flourite';
const flouriteOptions: Options = {
heuristic: true,
statistics: true,
};
const code = flourite('print!({:?}, &v);', flouriteOptions) as StatisticOutput;| Key | Type | Default | Description |
|---|---|---|---|
| heuristic | boolean |
true |
Checks for codes on the top of the given input. Only checks when the lines of code is above 500. |
| statistics | boolean |
false |
If true, will return the statistics of all the guessed language. |
| shiki | boolean |
false |
Straightforward compatibility with Shiki's language specification type |
| noUnknown | boolean |
false |
If true, will not output Unknown on detected and statistics result |
- Use the Node.js version as defined on the
.nvmrcfile. - Run
npm run test:tddto initiate a test driven development environment. - Run
npm run lintandnpm run formatbefore commit a change.