From 52beaf2e1eb63c4bf8408b6d8fec32050811b288 Mon Sep 17 00:00:00 2001 From: Josh Goebel Date: Mon, 2 Mar 2020 19:45:01 -0500 Subject: [PATCH] apply to ruby --- src/languages/c-like.js | 6 +----- src/languages/ruby.js | 6 +++--- src/lib/modes.js | 5 +++++ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/languages/c-like.js b/src/languages/c-like.js index 90062b9404..b77a349842 100644 --- a/src/languages/c-like.js +++ b/src/languages/c-like.js @@ -32,10 +32,6 @@ export default function(hljs) { // https://en.cppreference.com/w/cpp/language/escape // \\ \x \xFF \u2837 \u00323747 \374 var CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)' - var END_GROUP_SAME_AS_BEGIN = { - 'after:begin': (m, resp) => { resp.data.heredoc = m[1]; }, - 'before:end': (m, resp) => { if (resp.data.heredoc !== m[1]) resp.ignoreMatch(); } - }; var STRINGS = { className: 'string', variants: [ @@ -51,7 +47,7 @@ export default function(hljs) { Object.assign({ begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/, end: /\)([^()\\ ]{0,16})"/, - }, END_GROUP_SAME_AS_BEGIN) + }, hljs.END_FIRST_MATCH_SAME_AS_BEGIN) ] }; diff --git a/src/languages/ruby.js b/src/languages/ruby.js index 59f2b048f8..d702f617cd 100644 --- a/src/languages/ruby.js +++ b/src/languages/ruby.js @@ -72,10 +72,10 @@ export default function(hljs) { returnBegin: true, contains: [ { begin: /<<[-~]?'?/ }, - { begin: /\w+/, - endSameAsBegin: true, + Object.assign({ + begin: /(\w+)/, end: /(\w+)/, contains: [hljs.BACKSLASH_ESCAPE, SUBST], - } + }, hljs.END_FIRST_MATCH_SAME_AS_BEGIN) ] } ] diff --git a/src/lib/modes.js b/src/lib/modes.js index 4e153791d1..3d8c138946 100644 --- a/src/lib/modes.js +++ b/src/lib/modes.js @@ -112,3 +112,8 @@ export const METHOD_GUARD = { begin: '\\.\\s*' + UNDERSCORE_IDENT_RE, relevance: 0 }; + +export const END_FIRST_MATCH_SAME_AS_BEGIN = { + 'after:begin': (m, resp) => { resp.data.heredoc = m[1]; }, + 'before:end': (m, resp) => { if (resp.data.heredoc !== m[1]) resp.ignoreMatch(); } +};