/* * rdoc_highlight_rules.js * * Copyright (C) 2009-11 by RStudio, Inc. * * This program is licensed to you under the terms of version 3 of the * GNU Affero General Public License. This program is distributed WITHOUT * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. * */ define(function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var LaTeXHighlightRules = require("./latex_highlight_rules"); var RDocHighlightRules = function() { // regexp must not have capturing parentheses. Use (?:) instead. // regexps are ordered -> the first match is used this.$rules = { "start" : [ { token : "comment", regex : "%.*$" }, { token : "text", // non-command regex : "\\\\[$&%#\\{\\}]" }, { token : "keyword", // command regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b", next : "nospell" }, { token : "keyword", // command regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])" }, { // Obviously these are neither keywords nor operators, but // labelling them as such was the easiest way to get them // to be colored distinctly from regular text token : "paren.keyword.operator", regex : "[[({]" }, { // Obviously these are neither keywords nor operators, but // labelling them as such was the easiest way to get them // to be colored distinctly from regular text token : "paren.keyword.operator", regex : "[\\])}]" }, { token : "text", regex : "\\s+" } ], // This mode is necessary to prevent spell checking, but to keep the // same syntax highlighting behavior. "nospell" : [ { token : "comment", regex : "%.*$", next : "start" }, { token : "nospell.text", // non-command regex : "\\\\[$&%#\\{\\}]" }, { token : "keyword", // command regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b" }, { token : "keyword", // command regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])", next : "start" }, { token : "paren.keyword.operator", regex : "[[({]" }, { token : "paren.keyword.operator", regex : "[\\])]" }, { token : "paren.keyword.operator", regex : "}", next : "start" }, { token : "nospell.text", regex : "\\s+" }, { token : "nospell.text", regex : "\\w+" } ] }; }; oop.inherits(RDocHighlightRules, TextHighlightRules); exports.RDocHighlightRules = RDocHighlightRules; });