bat/tests/syntax-tests/highlighted/jsonnet/stdlib.jsonnet
2021-06-01 22:36:56 +02:00

88 lines
7.6 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local html = import 'html.libsonnet';
local jekyll = import 'jekyll.libsonnet';
local content = import 'stdlib-content.jsonnet';
local
 h1 = html.h1,
 p = html.p;
local manifestJsonSingleLine(val) = std.strReplace(std.manifestJsonEx(val, ''), '\n', ' ');
local exampleDoc(ex) =
 local exRep =
 if std.isString(ex) then
 ex
 else
 html.spaceless([html.code({}, ex.input), ' yields ', html.code({}, manifestJsonSingleLine(ex.output))])
 ;
 html.p({}, html.spaceless(['Example: ', exRep, '.']))
;
local hgroup(body) = html.div({ class: 'hgroup' }, body);
local hgroup_inline(body) = html.div({ class: 'hgroup-inline' }, [body, '<div style="clear: both"></div>']);
local panel(body) = html.div({ class: 'panel' }, body);
local in_panel(body) = hgroup(hgroup_inline(panel(body)));
local fieldParams(f) =
 if std.objectHas(f, 'params') then
 '(' + std.join(', ', f.params) + ')'
 else
 ''
;
local fieldDescription(f) =
 if std.isString(f.description) then
 html.p({}, f.description)
 else
 f.description
;
local fieldDoc(f, prefix) =
 [
 in_panel(html.h4({ id: f.name }, prefix + '.' + f.name + fieldParams(f))),
 in_panel([
 if std.objectHas(f, 'availableSince') then (
 html.p(
 {},
 html.em(
 {},
 if f.availableSince == 'upcoming' then
 'Available in upcoming release.'
 else
 'Available since version ' + f.availableSince + '.'
 )
 )
 ),
 fieldDescription(f),
 if std.objectHas(f, 'examples') then [
 exampleDoc(ex)
 for ex in f.examples
 ] else [],
 ]),
 '',
 ];
local group(group_spec, prefix) =
 [
 in_panel(html.h3({ id: group_spec.id }, group_spec.name)),
 if std.objectHas(group_spec, 'intro') then in_panel(group_spec.intro),
 '',
 [fieldDoc(f, prefix) for f in group_spec.fields],
 '',
 ];
local stdlibPage = [
 in_panel(html.h1({id: 'standard_library'}, 'Standard Library')),
 '',
 in_panel(content.intro),
 '',
 [group(g, content.prefix) for g in content.groups],
];
local stdlibFrontMatter = {
 layout: 'default',
 title: 'Standard Library',
};
jekyll.renderWithFrontMatter(stdlibFrontMatter, stdlibPage)