Skip to content

Commit 48104f9

Browse files
authored
enh(php) improves attribute highlighting (#4119)
1 parent 347c462 commit 48104f9

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

src/languages/php.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,15 @@ export default function(hljs) {
2222
const PASCAL_CASE_CLASS_NAME_RE = regex.concat(
2323
/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,
2424
NOT_PERL_ETC);
25+
const UPCASE_NAME_RE = regex.concat(
26+
/[A-Z]+/,
27+
NOT_PERL_ETC);
2528
const VARIABLE = {
2629
scope: 'variable',
2730
match: '\\$+' + IDENT_RE,
2831
};
2932
const PREPROCESSOR = {
30-
scope: 'meta',
33+
scope: "meta",
3134
variants: [
3235
{ begin: /<\?php/, relevance: 10 }, // boost for obvious PHP
3336
{ begin: /<\?=/ },
@@ -441,7 +444,12 @@ export default function(hljs) {
441444
];
442445

443446
const ATTRIBUTES = {
444-
begin: regex.concat(/#\[\s*/, PASCAL_CASE_CLASS_NAME_RE),
447+
begin: regex.concat(/#\[\s*\\?/,
448+
regex.either(
449+
PASCAL_CASE_CLASS_NAME_RE,
450+
UPCASE_NAME_RE
451+
)
452+
),
445453
beginScope: "meta",
446454
end: /]/,
447455
endScope: "meta",
@@ -471,7 +479,10 @@ export default function(hljs) {
471479
...ATTRIBUTE_CONTAINS,
472480
{
473481
scope: 'meta',
474-
match: PASCAL_CASE_CLASS_NAME_RE
482+
variants: [
483+
{ match: PASCAL_CASE_CLASS_NAME_RE },
484+
{ match: UPCASE_NAME_RE }
485+
]
475486
}
476487
]
477488
};
@@ -551,6 +562,7 @@ export default function(hljs) {
551562
keywords: KEYWORDS,
552563
contains: [
553564
'self',
565+
ATTRIBUTES,
554566
VARIABLE,
555567
LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,
556568
hljs.C_BLOCK_COMMENT_MODE,

test/markup/php/attributes.expect.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<span class="hljs-meta">#[\MyExample\MyAttribute</span><span class="hljs-meta">]</span>
55
<span class="hljs-meta">#[MyAttribute</span>(<span class="hljs-number">1234</span>)<span class="hljs-meta">]</span>
66
<span class="hljs-meta">#[MyAttribute</span>(<span class="hljs-attr">value</span>: <span class="hljs-number">1234</span>)<span class="hljs-meta">]</span>
7+
<span class="hljs-meta">#[ASSERT</span>(<span class="hljs-attr">value</span>: <span class="hljs-number">1234</span>)<span class="hljs-meta">]</span>
78
<span class="hljs-meta">#[HTMLAttribute</span>(<span class="hljs-attr">tag</span>: <span class="hljs-string">&quot;h1&quot;</span>)<span class="hljs-meta">]</span>
89
<span class="hljs-meta">#[MyAttribute</span>(<span class="hljs-title class_">MyAttribute</span>::<span class="hljs-variable constant_">VALUE</span>)<span class="hljs-meta">]</span>
910
<span class="hljs-meta">#[MyAttribute</span>(<span class="hljs-keyword">array</span>(<span class="hljs-string">&quot;key&quot;</span> =&gt; <span class="hljs-string">&quot;value&quot;</span>))<span class="hljs-meta">]</span>

test/markup/php/attributes.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ namespace Entity;
44
#[\MyExample\MyAttribute]
55
#[MyAttribute(1234)]
66
#[MyAttribute(value: 1234)]
7+
#[ASSERT(value: 1234)]
78
#[HTMLAttribute(tag: "h1")]
89
#[MyAttribute(MyAttribute::VALUE)]
910
#[MyAttribute(array("key" => "value"))]

0 commit comments

Comments
 (0)