mirror of
				https://github.com/sharkdp/bat.git
				synced 2025-10-26 04:33:53 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Jsonnet
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Jsonnet
		
	
	
	
		
			Vendored
		
	
	
	
| 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)
 |