blob: 84f0c4b9026a583ef15408d85aae6e60c2fb1ead [file] [log] [blame]
exports.ids = ["react-syntax-highlighter_languages_highlight_r"];
exports.modules = {
/***/ "./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/r.js":
/*!********************************************************************************************!*\
!*** ./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/r.js ***!
\********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
/*
Language: R
Description: R is a free software environment for statistical computing and graphics.
Author: Joe Cheng <joe@rstudio.org>
Contributors: Konrad Rudolph <konrad.rudolph@gmail.com>
Website: https://www.r-project.org
Category: scientific
*/
function r(hljs) {
// Identifiers in R cannot start with `_`, but they can start with `.` if it
// is not immediately followed by a digit.
// R also supports quoted identifiers, which are near-arbitrary sequences
// delimited by backticks (`…`), which may contain escape sequences. These are
// handled in a separate mode. See `test/markup/r/names.txt` for examples.
// FIXME: Support Unicode identifiers.
const IDENT_RE = /(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/;
return {
name: 'R',
keywords: {
$pattern: IDENT_RE,
keyword:
'function if in break next repeat else for while',
literal:
'NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 ' +
'NA_character_|10 NA_complex_|10',
built_in:
// Builtin constants
'LETTERS letters month.abb month.name pi T F ' +
// Primitive functions
// These are all the functions in `base` that are implemented as a
// `.Primitive`, minus those functions that are also keywords.
'abs acos acosh all any anyNA Arg as.call as.character' +
'as.complex as.double as.environment as.integer as.logical' +
'as.null.default as.numeric as.raw asin asinh atan atanh attr' +
'attributes baseenv browser c call ceiling class Conj cos cosh' +
'cospi cummax cummin cumprod cumsum digamma dim dimnames' +
'emptyenv exp expression floor forceAndCall gamma gc.time' +
'globalenv Im interactive invisible is.array is.atomic is.call' +
'is.character is.complex is.double is.environment is.expression' +
'is.finite is.function is.infinite is.integer is.language' +
'is.list is.logical is.matrix is.na is.name is.nan is.null' +
'is.numeric is.object is.pairlist is.raw is.recursive is.single' +
'is.symbol lazyLoadDBfetch length lgamma list log max min' +
'missing Mod names nargs nzchar oldClass on.exit pos.to.env' +
'proc.time prod quote range Re rep retracemem return round' +
'seq_along seq_len seq.int sign signif sin sinh sinpi sqrt' +
'standardGeneric substitute sum switch tan tanh tanpi tracemem' +
'trigamma trunc unclass untracemem UseMethod xtfrm',
},
contains: [
// Roxygen comments
hljs.COMMENT(
/#'/,
/$/,
{
contains: [
{
// Handle `@examples` separately to cause all subsequent code
// until the next `@`-tag on its own line to be kept as-is,
// preventing highlighting. This code is example R code, so nested
// doctags shouldn’t be treated as such. See
// `test/markup/r/roxygen.txt` for an example.
className: 'doctag',
begin: '@examples',
starts: {
contains: [
{ begin: /\n/ },
{
begin: /#'\s*(?=@[a-zA-Z]+)/,
endsParent: true,
},
{
begin: /#'/,
end: /$/,
excludeBegin: true,
}
]
}
},
{
// Handle `@param` to highlight the parameter name following
// after.
className: 'doctag',
begin: '@param',
end: /$/,
contains: [
{
className: 'variable',
variants: [
{ begin: IDENT_RE },
{ begin: /`(?:\\.|[^`])+`/ }
],
endsParent: true
}
]
},
{
className: 'doctag',
begin: /@[a-zA-Z]+/
},
{
className: 'meta-keyword',
begin: /\\[a-zA-Z]+/,
}
]
}
),
hljs.HASH_COMMENT_MODE,
{
className: 'string',
contains: [hljs.BACKSLASH_ESCAPE],
variants: [
hljs.END_SAME_AS_BEGIN({ begin: /[rR]"(-*)\(/, end: /\)(-*)"/ }),
hljs.END_SAME_AS_BEGIN({ begin: /[rR]"(-*)\{/, end: /\}(-*)"/ }),
hljs.END_SAME_AS_BEGIN({ begin: /[rR]"(-*)\[/, end: /\](-*)"/ }),
hljs.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\(/, end: /\)(-*)'/ }),
hljs.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\{/, end: /\}(-*)'/ }),
hljs.END_SAME_AS_BEGIN({ begin: /[rR]'(-*)\[/, end: /\](-*)'/ }),
{begin: '"', end: '"', relevance: 0},
{begin: "'", end: "'", relevance: 0}
],
},
{
className: 'number',
variants: [
// TODO: replace with negative look-behind when available
// { begin: /(?<![a-zA-Z0-9._])0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/ },
// { begin: /(?<![a-zA-Z0-9._])0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/ },
// { begin: /(?<![a-zA-Z0-9._])(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/ }
// The below rules all eat an extra character in front (for the
// look-behind check) and then exclude it from the match, but I think
// in many cases this will work out just fine.
{
// Special case: only hexadecimal binary powers can contain fractions.
begin: /([^a-zA-Z0-9._])(?=0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?)/,
end: /0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,
excludeBegin: true
},
{
begin: /([^a-zA-Z0-9._])(?=0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?)/,
end: /0[xX][0-9a-fA-F]+([pP][+-]?\d+)?[Li]?/ ,
excludeBegin: true
},
{
begin: /([^a-zA-Z0-9._])(?=(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?)/,
end: /(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[Li]?/,
excludeBegin: true
}
],
// "on:begin": (match, response) => {
// if (match.index > 0) {
// let priorChar = match.input[match.index - 1];
// if (priorChar.match(/[a-zA-Z0-9._]/)) response.ignoreMatch();
// }
// },
relevance: 0
},
{
// infix operator
begin: '%',
end: '%'
},
{
// escaped identifier
begin: '`',
end: '`',
contains: [
{ begin: /\\./ }
]
}
]
};
}
module.exports = r;
/***/ })
};;
//# sourceMappingURL=react-syntax-highlighter_languages_highlight_r.render-page.js.map