AoC single + prism + better additional css/js handling
This commit is contained in:
@@ -77,14 +77,13 @@ class AdventOfCode
|
||||
$a['file_challenge'] = (__DIR__ . '/../statics/aoc/'.$year.'/'.$n2p.'_challenge.txt');
|
||||
$a['file_input'] = (__DIR__ . '/../statics/aoc/'.$year.'/'.$n2p.'_input.txt');
|
||||
|
||||
$a['date'] = $year . '-' . 12 . '-' . $n2p;
|
||||
|
||||
$solutionfiles = [];
|
||||
|
||||
foreach ($a['languages'] as $language)
|
||||
for ($i=1; $i <= $a['parts']; $i++)
|
||||
{
|
||||
for ($i=1; $i <= $a['parts']; $i++)
|
||||
{
|
||||
$solutionfiles []= (__DIR__ . '/../statics/aoc/' . $year . '/' . $n2p . '-' . $i . '.' . self::LANGUAGES[$language]['ext']);
|
||||
}
|
||||
$solutionfiles []= (__DIR__ . '/../statics/aoc/' . $year . '/' . $n2p . '-' . $i . '.' . self::LANGUAGES[$a['language']]['ext']);
|
||||
}
|
||||
|
||||
$a['file_solutions'] = $solutionfiles;
|
||||
@@ -143,6 +142,27 @@ class AdventOfCode
|
||||
return null;
|
||||
}
|
||||
|
||||
public static function getLanguageCSS($data)
|
||||
{
|
||||
return self::LANGUAGES[$data['language']]['css'];
|
||||
}
|
||||
|
||||
public static function getSolutionCode($data, $i)
|
||||
{
|
||||
$raw = file_get_contents($data['file_solutions'][$i]);
|
||||
|
||||
if ($data['language'] === 'cs')
|
||||
{
|
||||
$raw = trim($raw);
|
||||
if (startsWith($raw, '<Query Kind="Program" />')) $raw = substr($raw, strlen('<Query Kind="Program" />'));
|
||||
if (startsWith($raw, '<Query Kind="Expression" />')) $raw = substr($raw, strlen('<Query Kind="Expression" />'));
|
||||
if (startsWith($raw, '<Query Kind="Statements" />')) $raw = substr($raw, strlen('<Query Kind="Statements" />'));
|
||||
$raw = trim($raw);
|
||||
}
|
||||
|
||||
return $raw;
|
||||
}
|
||||
|
||||
public static function checkConsistency()
|
||||
{
|
||||
$warn = null;
|
||||
@@ -175,10 +195,7 @@ class AdventOfCode
|
||||
if (!file_exists($sfile)) return ['result'=>'err', 'message' => 'file_solution[?] not found ' . $sfile];
|
||||
}
|
||||
|
||||
foreach ($aocdata['languages'] as $lang)
|
||||
{
|
||||
if (!array_key_exists($lang, self::LANGUAGES)) return ['result'=>'err', 'message' => 'Unknown language ' . $lang];
|
||||
}
|
||||
if (!array_key_exists($aocdata['language'], self::LANGUAGES)) return ['result'=>'err', 'message' => 'Unknown language ' . $aocdata['language']];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,8 +6,10 @@ $CONFIG = require 'config.php';
|
||||
global $CSS_BASE;
|
||||
$CSS_BASE = ($CONFIG['prod']) ? ('/data/css/styles.min.css') : ('/data/css/styles.css');
|
||||
|
||||
global $REGISTERED_SCRIPTS;
|
||||
$REGISTERED_SCRIPTS = [];
|
||||
global $ADDITIONAL_SCRIPTS;
|
||||
global $ADDITIONAL_STYLESHEETS;
|
||||
$ADDITIONAL_SCRIPTS = [];
|
||||
$ADDITIONAL_STYLESHEETS = [];
|
||||
|
||||
function InitPHP() {
|
||||
|
||||
@@ -89,28 +91,59 @@ function formatMilliseconds($millis)
|
||||
}
|
||||
}
|
||||
|
||||
function includeScriptOnce($script, $echo = true, $attr=false)
|
||||
{
|
||||
global $REGISTERED_SCRIPTS;
|
||||
function includeAdditionalScript($script, $attr='', $printImmediately = false) {
|
||||
global $ADDITIONAL_SCRIPTS;
|
||||
|
||||
if ($echo)
|
||||
{
|
||||
if (in_array($script, $REGISTERED_SCRIPTS)) return false;
|
||||
$REGISTERED_SCRIPTS []= $script;
|
||||
echo "<script src=\"$script\" type=\"text/javascript\" $attr></script>";
|
||||
if (in_array($script, $ADDITIONAL_SCRIPTS)) return false;
|
||||
|
||||
if ($printImmediately) {
|
||||
$ADDITIONAL_SCRIPTS[$script] = ['src' => $script, 'attr' => $attr, 'consumed' => true];
|
||||
echo '<script src="'.$script.'" type="text/javascript" '.$attr.'></script>';
|
||||
return true;
|
||||
} else {
|
||||
$ADDITIONAL_SCRIPTS[$script] = ['src' => $script, 'attr' => $attr, 'consumed' => false];
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (in_array($script, $REGISTERED_SCRIPTS)) return '';
|
||||
$REGISTERED_SCRIPTS []= $script;
|
||||
return "<script src=\"$script\" type=\"text/javascript\" $attr></script>";
|
||||
}
|
||||
}
|
||||
|
||||
function printCSS() {
|
||||
function includeAdditionalStylesheet($sheet, $attr='', $printImmediately = false) {
|
||||
global $ADDITIONAL_STYLESHEETS;
|
||||
|
||||
if (in_array($sheet, $ADDITIONAL_STYLESHEETS)) return false;
|
||||
|
||||
if ($printImmediately) {
|
||||
$ADDITIONAL_STYLESHEETS[$sheet] = ['src' => $sheet, 'attr' => $attr, 'consumed' => true];
|
||||
echo '<link rel="stylesheet" href="' . $sheet . '" '.$attr.'/>';
|
||||
return true;
|
||||
} else {
|
||||
$ADDITIONAL_STYLESHEETS[$sheet] = ['src' => $sheet, 'attr' => $attr, 'consumed' => false];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function printHeaderCSS() {
|
||||
global $CSS_BASE;
|
||||
echo '<link rel="stylesheet" href="' . $CSS_BASE . '"/>';
|
||||
includeAdditionalStylesheet($CSS_BASE, '', true);
|
||||
}
|
||||
|
||||
function printAdditionalScripts() {
|
||||
global $ADDITIONAL_SCRIPTS;
|
||||
|
||||
foreach ($ADDITIONAL_SCRIPTS as $d) {
|
||||
if ($d['consumed']) continue;
|
||||
echo '<script src="' . $d['src'] . '" type="text/javascript" ' . $d['attr'] . '></script>';
|
||||
$d['consumed'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
function printAdditionalStylesheets() {
|
||||
global $ADDITIONAL_STYLESHEETS;
|
||||
|
||||
foreach ($ADDITIONAL_STYLESHEETS as $d) {
|
||||
if ($d['consumed']) continue;
|
||||
echo '<link rel="stylesheet" href="' . $d['src'] . '" ' . $d['attr'] . '/>';
|
||||
$d['consumed'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
function isProd() {
|
||||
|
||||
Reference in New Issue
Block a user