Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F8393842
yaml.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
yaml.js
View Options
/*
Language: YAML
Description: Yet Another Markdown Language
Author: Stefan Wienert <stwienert@gmail.com>
Contributors: Carl Baxter <carl@cbax.tech>
Requires: ruby.js
Website: https://yaml.org
Category: common, config
*/
function
yaml
(
hljs
)
{
const
LITERALS
=
'true false yes no null'
;
// YAML spec allows non-reserved URI characters in tags.
const
URI_CHARACTERS
=
'[\\w#;/?:@&=+$,.~*\'()[\\]]+'
;
// Define keys as starting with a word character
// ...containing word chars, spaces, colons, forward-slashes, hyphens and periods
// ...and ending with a colon followed immediately by a space, tab or newline.
// The YAML spec allows for much more than this, but this covers most use-cases.
const
KEY
=
{
className
:
'attr'
,
variants
:
[
{
begin
:
'\\w[\\w :\\/.-]*:(?=[ \t]|$)'
},
{
// double quoted keys
begin
:
'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'
},
{
// single quoted keys
begin
:
'\'\\w[\\w :\\/.-]*\':(?=[ \t]|$)'
}
]
};
const
TEMPLATE_VARIABLES
=
{
className
:
'template-variable'
,
variants
:
[
{
// jinja templates Ansible
begin
:
/\{\{/
,
end
:
/\}\}/
},
{
// Ruby i18n
begin
:
/%\{/
,
end
:
/\}/
}
]
};
const
STRING
=
{
className
:
'string'
,
relevance
:
0
,
variants
:
[
{
begin
:
/'/
,
end
:
/'/
},
{
begin
:
/"/
,
end
:
/"/
},
{
begin
:
/\S+/
}
],
contains
:
[
hljs
.
BACKSLASH_ESCAPE
,
TEMPLATE_VARIABLES
]
};
// Strings inside of value containers (objects) can't contain braces,
// brackets, or commas
const
CONTAINER_STRING
=
hljs
.
inherit
(
STRING
,
{
variants
:
[
{
begin
:
/'/
,
end
:
/'/
},
{
begin
:
/"/
,
end
:
/"/
},
{
begin
:
/[^\s,{}[\]]+/
}
]
});
const
DATE_RE
=
'[0-9]{4}(-[0-9][0-9]){0,2}'
;
const
TIME_RE
=
'([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?'
;
const
FRACTION_RE
=
'(\\.[0-9]*)?'
;
const
ZONE_RE
=
'([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?'
;
const
TIMESTAMP
=
{
className
:
'number'
,
begin
:
'\\b'
+
DATE_RE
+
TIME_RE
+
FRACTION_RE
+
ZONE_RE
+
'\\b'
};
const
VALUE_CONTAINER
=
{
end
:
','
,
endsWithParent
:
true
,
excludeEnd
:
true
,
keywords
:
LITERALS
,
relevance
:
0
};
const
OBJECT
=
{
begin
:
/\{/
,
end
:
/\}/
,
contains
:
[
VALUE_CONTAINER
],
illegal
:
'\\n'
,
relevance
:
0
};
const
ARRAY
=
{
begin
:
'\\['
,
end
:
'\\]'
,
contains
:
[
VALUE_CONTAINER
],
illegal
:
'\\n'
,
relevance
:
0
};
const
MODES
=
[
KEY
,
{
className
:
'meta'
,
begin
:
'^---\\s*$'
,
relevance
:
10
},
{
// multi line string
// Blocks start with a | or > followed by a newline
//
// Indentation of subsequent lines must be the same to
// be considered part of the block
className
:
'string'
,
begin
:
'[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*'
},
{
// Ruby/Rails erb
begin
:
'<%[%=-]?'
,
end
:
'[%-]?%>'
,
subLanguage
:
'ruby'
,
excludeBegin
:
true
,
excludeEnd
:
true
,
relevance
:
0
},
{
// named tags
className
:
'type'
,
begin
:
'!\\w+!'
+
URI_CHARACTERS
},
// https://yaml.org/spec/1.2/spec.html#id2784064
{
// verbatim tags
className
:
'type'
,
begin
:
'!<'
+
URI_CHARACTERS
+
">"
},
{
// primary tags
className
:
'type'
,
begin
:
'!'
+
URI_CHARACTERS
},
{
// secondary tags
className
:
'type'
,
begin
:
'!!'
+
URI_CHARACTERS
},
{
// fragment id &ref
className
:
'meta'
,
begin
:
'&'
+
hljs
.
UNDERSCORE_IDENT_RE
+
'$'
},
{
// fragment reference *ref
className
:
'meta'
,
begin
:
'\\*'
+
hljs
.
UNDERSCORE_IDENT_RE
+
'$'
},
{
// array listing
className
:
'bullet'
,
// TODO: remove |$ hack when we have proper look-ahead support
begin
:
'-(?=[ ]|$)'
,
relevance
:
0
},
hljs
.
HASH_COMMENT_MODE
,
{
beginKeywords
:
LITERALS
,
keywords
:
{
literal
:
LITERALS
}
},
TIMESTAMP
,
// numbers are any valid C-style number that
// sit isolated from other words
{
className
:
'number'
,
begin
:
hljs
.
C_NUMBER_RE
+
'\\b'
,
relevance
:
0
},
OBJECT
,
ARRAY
,
STRING
];
const
VALUE_MODES
=
[
...
MODES
];
VALUE_MODES
.
pop
();
VALUE_MODES
.
push
(
CONTAINER_STRING
);
VALUE_CONTAINER
.
contains
=
VALUE_MODES
;
return
{
name
:
'YAML'
,
case_insensitive
:
true
,
aliases
:
[
'yml'
],
contains
:
MODES
};
}
module
.
exports
=
yaml
;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jun 4, 7:18 PM (5 d, 3 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3320055
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment