1 <?php
declare(strict_types
=1);
3 require_once('common.php');
4 require_once(__DIR__
. '/config.php');
6 function tabs($id, $headings, $contents, $justify = false
) {
7 $slug = function($string) {
8 return str_replace(' ', '', $string);
11 $heading = function($heading, $tabid, $active = false
) {
12 return '<li class="nav-item"><a class="nav-link' . ($active ?
' active' : '') . '" data-toggle="pill" href="#tab' . $tabid . '">' . $heading . '</a></li>';
15 $content = function($content, $id, $active = false
) {
16 return '<div class="container-fluid drivers-main tab-pane' . ($active ?
' active' : '') . '" id="tab' . $id . '" role="tabpanel">' . $content . '</div>';
19 $headingAndContent = zipWith(function($heading, $content) {
20 return ['heading' => $heading, 'content' => $content];
21 }, $headings, $contents);
23 $smushenated = array_reduce($headingAndContent, function($c, $v) use ($slug, $heading, $content, $id) {
25 'headings' => $c['headings'] . $heading($v['heading'], $id . $slug($v['heading']), !$c['headings']),
26 'contents' => $c['contents'] . $content($v['content'], $id . $slug($v['heading']), !$c['contents'])
28 }, ['headings' => '', 'contents' => '']);
30 return '<ul class="nav nav-pills' . ($justify ?
' justify-content-center' : '') . '">' . $smushenated['headings'] . '</ul><div class="tab-content">' . $smushenated['contents'] . '</div>';
33 function accordion($id, $headings, $contents) {
34 $slug = function($string) {
35 return str_replace(' ', '', strtolower($string));
38 $a = zipWith(function($heading, $content) use ($slug, $id) {
40 '<div class="card">' .
41 '<div class="card-header">' .
42 '<a class="collapsed card-link" data-toggle="collapse" href="#' . $slug($heading) . $id . '">' . $heading . '</a>' .
44 '<div id="' . $slug($heading) . $id . '" class="collapse" data-parent="#accordion-' . $id . '">' .
45 '<div class="card-body">' .
50 }, $headings, $contents);
53 '<div id="accordion-' . $id .'">' .
58 function table($headings, $rows) {
60 '<table class="table table-striped">'.
61 '<thead><tr><td>' . glue('</td><td>')($headings) . '</td></tr></thead>' .
63 glue('</tr><tr>')(map(function($row) {
64 return '<td>' . glue('</td><td>')($row) . '</td>';
66 '</tr></tbody></table>';
70 $c = lines(trim(file_get_contents(glob(PATH_TO_GROOVENET
. '/songs.*.txt')[0])));
77 $scores = require 'test.php';
83 ['Song', 'Difficulty', 'Pranker', 'Score'],
87 ['Song', 'Difficulty', 'Pranker', 'Score'],