The C code highlighting engine for the web.
If you are using React, use aurora-react 🚀.
npm install aurora-code
import aurora from 'aurora-code';
const aurora = require('aurora-code');
import aurora from 'https://cdn.jsdelivr.net/npm/aurora-code@latest/dist/index.js';
<script src="https://cdn.jsdelivr.net/npm/aurora-code@latest/dist/index.umd.cjs" type="application/json"></script>
The aurora function takes two arguments, the first one is the code to be highlighted and the second one is the options object.
aurora(code);
aurora(code, config);
Code is a string which is C code to be highlighted. Options is an object which is optional.
aurora(code, {
mode: 'class'; // It uses classnames to highlight the code
}) // It is the default (Recommended)
aurora(code, {
mode: 'inline'; // It uses inline styles to highlight the code
}) // It uses one dark pro theme if no styles are provided
aurora(code, {
mode: 'inline', // It uses inline styles to highlight the code
styles: {
comment: '#808080',
keyword: '#00FF00',
name: '#0000FF',
function: '#32CD32',
string: '#FFC0CB',
},
}); // Not recommended
/* Custom theme */
.aurora-string {
color: pink;
}
.aurora-keyword {
color: lime;
}
You can define your own styles for each token type. See the detailed Configuration.
If you are using React you can use
import aurora from 'aurora-code';
import 'aurora-code/themes/oneDarkPro.css'; // (css file)
// or you may use your own css
...
...
<pre>
<code dangerouslySetInnerHTML={{ __html: aurora(h) }}></code>
</pre>
...
...
Use state variables and useEffect to update the code and prevent rerendering. Or you can use aurora-react 🚀. It takes care of all these things.
<script type="module" src="index.js"></script>
<code id="code-block"></div>
import aurora from 'https://cdn.jsdelivr.net/npm/aurora-code@latest/dist/index.js';
const codeBlock = document.getElementById('code-block');
const code = `
int main() {
printf("Hello, World!");
return 0;
}`;
codeBlock.innerHTML = aurora(code);
Download the https://cdn.jsdelivr.net/npm/aurora-code@latest/dist/index.umd.cjs and https://cdn.jsdelivr.net/npm/aurora-code@latest/dist/themes/oneDarkPro.css files and use them locally.
<script src="../../dist/index.umd.cjs" defer></script>
<link rel="stylesheet" href="../../dist/themes/oneDarkPro.css" />
<body style="background-color: #070e22">
<pre><code id="code-block"></code></pre>
<script>
document.body.onload = () => {
const codeBlock = document.getElementById('code-block');
const code = 'int main() {\n printf("Hello World!");\n return 0;\n}';
codeBlock.innerHTML = aurora.default(code);
};
</script>
</body>
Here is an example of theme object for configuring the theme.
// One Dark Pro Theme
one_dark_pro = {
comment: '#5c6370',
comment_start: '#5c6370',
comment_end: '#5c6370',
preprocessor: '#c678dd',
defined: '#d19a66',
header_file: '#98c379',
keyword: '#c678dd',
name: '#ef596f',
string: '#98c379',
'quote single': '#98c379',
'quote double': '#98c379',
'quote angle': '#98c379',
format_specifier: '#d19a66',
number: '#d19a66',
bin_prefix: '#ef596f',
hex_prefix: '#ef596f',
oct_prefix: '#ef596f',
function: '#61afef',
operator: '#c678dd',
escape: '#56b6c2',
'open_paren bracket0': '#d19a66',
'open_curly bracket0': '#d19a66',
'close_paren bracket0': '#d19a66',
'close_curly bracket0': '#d19a66',
'open_paren bracket1': '#c678dd',
'open_curly bracket1': '#c678dd',
'close_paren bracket1': '#c678dd',
'close_curly bracket1': '#c678dd',
'open_paren bracket2': '#56b6c2',
'close_curly bracket2': '#56b6c2',
'close_paren bracket2': '#56b6c2',
'open_curly bracket2': '#56b6c2',
'open_square bracket0': '#c678dd',
'close_square bracket0': '#c678dd',
'open_square bracket1': '#d19a66',
'close_square bracket1': '#d19a66',
'open_square bracket2': '#56b6c2',
'close_square bracket2': '#56b6c2',
};
Here is an example of theme css.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.