diff_highlight_rules.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /* ***** BEGIN LICENSE BLOCK *****
  2. * Distributed under the BSD license:
  3. *
  4. * Copyright (c) 2010, Ajax.org B.V.
  5. * All rights reserved.
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions are met:
  9. * * Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. * * Redistributions in binary form must reproduce the above copyright
  12. * notice, this list of conditions and the following disclaimer in the
  13. * documentation and/or other materials provided with the distribution.
  14. * * Neither the name of Ajax.org B.V. nor the
  15. * names of its contributors may be used to endorse or promote products
  16. * derived from this software without specific prior written permission.
  17. *
  18. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  19. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  20. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  21. * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
  22. * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  23. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  24. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  25. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  26. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  27. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28. *
  29. * ***** END LICENSE BLOCK ***** */
  30. define(function(require, exports, module) {
  31. "use strict";
  32. var oop = require("../lib/oop");
  33. var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
  34. var DiffHighlightRules = function() {
  35. // regexp must not have capturing parentheses. Use (?:) instead.
  36. // regexps are ordered -> the first match is used
  37. this.$rules = {
  38. "start" : [{
  39. regex: "^(?:\\*{15}|={67}|-{3}|\\+{3})$",
  40. token: "punctuation.definition.separator.diff",
  41. "name": "keyword"
  42. }, { //diff.range.unified
  43. regex: "^(@@)(\\s*.+?\\s*)(@@)(.*)$",
  44. token: [
  45. "constant",
  46. "constant.numeric",
  47. "constant",
  48. "comment.doc.tag"
  49. ]
  50. }, { //diff.range.normal
  51. regex: "^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$",
  52. token: [
  53. "constant.numeric",
  54. "punctuation.definition.range.diff",
  55. "constant.function",
  56. "constant.numeric",
  57. "punctuation.definition.range.diff",
  58. "invalid"
  59. ],
  60. "name": "meta."
  61. }, {
  62. regex: "^(\\-{3}|\\+{3}|\\*{3})( .+)$",
  63. token: [
  64. "constant.numeric",
  65. "meta.tag"
  66. ]
  67. }, { // added
  68. regex: "^([!+>])(.*?)(\\s*)$",
  69. token: [
  70. "support.constant",
  71. "text",
  72. "invalid"
  73. ]
  74. }, { // removed
  75. regex: "^([<\\-])(.*?)(\\s*)$",
  76. token: [
  77. "support.function",
  78. "string",
  79. "invalid"
  80. ]
  81. }, {
  82. regex: "^(diff)(\\s+--\\w+)?(.+?)( .+)?$",
  83. token: ["variable", "variable", "keyword", "variable"]
  84. }, {
  85. regex: "^Index.+$",
  86. token: "variable"
  87. }, {
  88. regex: "^\\s+$",
  89. token: "text"
  90. }, {
  91. regex: "\\s*$",
  92. token: "invalid"
  93. }, {
  94. defaultToken: "invisible",
  95. caseInsensitive: true
  96. }
  97. ]
  98. };
  99. };
  100. oop.inherits(DiffHighlightRules, TextHighlightRules);
  101. exports.DiffHighlightRules = DiffHighlightRules;
  102. });