From dc7622526c7dd7d17438626ecfbd56b914d0730e Mon Sep 17 00:00:00 2001 From: Nils <> Date: Tue, 18 Mar 2025 19:52:05 +0100 Subject: [PATCH] stuff and archive --- .../202503-liedblaetter-mit-typst/.htaccess | 1 + .../01-der_hase_augustin.pdf | Bin 0 -> 31633 bytes .../01-der_hase_augustin.typst | 68 + .../02-montag_und_dienstag.pdf | Bin 0 -> 29118 bytes .../02-montag_und_dienstag.typst | 97 + .../2025-03-11-turnarounds.pdf | Bin 0 -> 19065 bytes .../2025-03-11-turnarounds.typst | 33 + .../202503-liedblaetter-mit-typst/content.md | 44 + .../202503-liedblaetter-mit-typst/index.php | 2324 +++++++++++++++++ .../metadata.ini | 8 + stuff/bingo.pdf | Bin 0 -> 17715 bytes stuff/bingo.typst | 63 + stuff/osamc.svg | 215 ++ 13 files changed, 2853 insertions(+) create mode 100644 archiv/202503-liedblaetter-mit-typst/.htaccess create mode 100644 archiv/202503-liedblaetter-mit-typst/01-der_hase_augustin.pdf create mode 100644 archiv/202503-liedblaetter-mit-typst/01-der_hase_augustin.typst create mode 100644 archiv/202503-liedblaetter-mit-typst/02-montag_und_dienstag.pdf create mode 100644 archiv/202503-liedblaetter-mit-typst/02-montag_und_dienstag.typst create mode 100644 archiv/202503-liedblaetter-mit-typst/2025-03-11-turnarounds.pdf create mode 100644 archiv/202503-liedblaetter-mit-typst/2025-03-11-turnarounds.typst create mode 100644 archiv/202503-liedblaetter-mit-typst/content.md create mode 100644 archiv/202503-liedblaetter-mit-typst/index.php create mode 100644 archiv/202503-liedblaetter-mit-typst/metadata.ini create mode 100644 stuff/bingo.pdf create mode 100644 stuff/bingo.typst create mode 100644 stuff/osamc.svg diff --git a/archiv/202503-liedblaetter-mit-typst/.htaccess b/archiv/202503-liedblaetter-mit-typst/.htaccess new file mode 100644 index 0000000..e07af09 --- /dev/null +++ b/archiv/202503-liedblaetter-mit-typst/.htaccess @@ -0,0 +1 @@ +AddCharset UTF-8 .html diff --git a/archiv/202503-liedblaetter-mit-typst/01-der_hase_augustin.pdf b/archiv/202503-liedblaetter-mit-typst/01-der_hase_augustin.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2a893a49f142b55847fc8fea3edaae9e17b9aebb GIT binary patch literal 31633 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 document.pdf + +# bei jeder Änderung neu, man kann den PDF Viewer offen lassen +typst watch document.tpyst +``` + +## Conchord + +Typst kann "Packages": Module, Extension, Plugins; wie man das auch immer nennen möchte. Es lädt die sogar automatisch herunter (und dann werden sie offline verwendet). + +Gitarrenakkorde o.ä. gehen gut mir https://typst.app/universe/package/conchord/ + +>Write up a song with chords into Typst format in quite a pretty and simple way. +>Explore all the possible chord variants with your special tuning of your special string instrument (like ukulele, bass guitar, mandolin or anything else). + + +## Beispiele + +* [Typst: Turarounds](./2025-03-11-turnarounds.typst) +* [PDF: Turarounds](./2025-03-11-turnarounds.pdf) +* [Typst: Der Hase Augustin](./01-der_hase_augustin.typst) +* [PDF: Der Hase Augustin](./01-der_hase_augustin.pdf) +* [Typst: Montag und Dienstag](./02-montag_und_dienstag.typst) +* [PDF: Montag und Dienstag](./02-montag_und_dienstag.pdf) diff --git a/archiv/202503-liedblaetter-mit-typst/index.php b/archiv/202503-liedblaetter-mit-typst/index.php new file mode 100644 index 0000000..2fdde38 --- /dev/null +++ b/archiv/202503-liedblaetter-mit-typst/index.php @@ -0,0 +1,2324 @@ +text(substr($fileContent, $firstLineBreakAt)); + +?> + + + + + + + + + <?php echo $title?> + + + + + + +

+ + + +
+ +
+ + + + +
+ + + + + + + + + + + +DefinitionData = array(); + + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + # remove surrounding line breaks + $text = trim($text, "\n"); + + # split text into lines + $lines = explode("\n", $text); + + # iterate through lines to identify blocks + $markup = $this->lines($lines); + + # trim line breaks + $markup = trim($markup, "\n"); + + return $markup; + } + + # + # Setters + # + + function setBreaksEnabled($breaksEnabled) + { + $this->breaksEnabled = $breaksEnabled; + + return $this; + } + + protected $breaksEnabled; + + function setMarkupEscaped($markupEscaped) + { + $this->markupEscaped = $markupEscaped; + + return $this; + } + + protected $markupEscaped; + + function setUrlsLinked($urlsLinked) + { + $this->urlsLinked = $urlsLinked; + + return $this; + } + + protected $urlsLinked = true; + + function setSafeMode($safeMode) + { + $this->safeMode = (bool) $safeMode; + + return $this; + } + + protected $safeMode; + + protected $safeLinksWhitelist = array( + 'http://', + 'https://', + 'ftp://', + 'ftps://', + 'mailto:', + 'data:image/png;base64,', + 'data:image/gif;base64,', + 'data:image/jpeg;base64,', + 'irc:', + 'ircs:', + 'git:', + 'ssh:', + 'news:', + 'steam:', + ); + + # + # Lines + # + + protected $BlockTypes = array( + '#' => array('Header'), + '*' => array('Rule', 'List'), + '+' => array('List'), + '-' => array('SetextHeader', 'Table', 'Rule', 'List'), + '0' => array('List'), + '1' => array('List'), + '2' => array('List'), + '3' => array('List'), + '4' => array('List'), + '5' => array('List'), + '6' => array('List'), + '7' => array('List'), + '8' => array('List'), + '9' => array('List'), + ':' => array('Table'), + '<' => array('Comment', 'Markup'), + '=' => array('SetextHeader'), + '>' => array('Quote'), + '[' => array('Reference'), + '_' => array('Rule'), + '`' => array('FencedCode'), + '|' => array('Table'), + '~' => array('FencedCode'), + ); + + # ~ + + protected $unmarkedBlockTypes = array( + 'Code', + ); + + # + # Blocks + # + + protected function lines(array $lines) + { + $CurrentBlock = null; + + foreach ($lines as $line) + { + if (chop($line) === '') + { + if (isset($CurrentBlock)) + { + $CurrentBlock['interrupted'] = true; + } + + continue; + } + + if (strpos($line, "\t") !== false) + { + $parts = explode("\t", $line); + + $line = $parts[0]; + + unset($parts[0]); + + foreach ($parts as $part) + { + $shortage = 4 - mb_strlen($line, 'utf-8') % 4; + + $line .= str_repeat(' ', $shortage); + $line .= $part; + } + } + + $indent = 0; + + while (isset($line[$indent]) and $line[$indent] === ' ') + { + $indent ++; + } + + $text = $indent > 0 ? substr($line, $indent) : $line; + + # ~ + + $Line = array('body' => $line, 'indent' => $indent, 'text' => $text); + + # ~ + + if (isset($CurrentBlock['continuable'])) + { + $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock); + + if (isset($Block)) + { + $CurrentBlock = $Block; + + continue; + } + else + { + if ($this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + } + } + + # ~ + + $marker = $text[0]; + + # ~ + + $blockTypes = $this->unmarkedBlockTypes; + + if (isset($this->BlockTypes[$marker])) + { + foreach ($this->BlockTypes[$marker] as $blockType) + { + $blockTypes []= $blockType; + } + } + + # + # ~ + + foreach ($blockTypes as $blockType) + { + $Block = $this->{'block'.$blockType}($Line, $CurrentBlock); + + if (isset($Block)) + { + $Block['type'] = $blockType; + + if ( ! isset($Block['identified'])) + { + $Blocks []= $CurrentBlock; + + $Block['identified'] = true; + } + + if ($this->isBlockContinuable($blockType)) + { + $Block['continuable'] = true; + } + + $CurrentBlock = $Block; + + continue 2; + } + } + + # ~ + + if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted'])) + { + $CurrentBlock['element']['text'] .= "\n".$text; + } + else + { + $Blocks []= $CurrentBlock; + + $CurrentBlock = $this->paragraph($Line); + + $CurrentBlock['identified'] = true; + } + } + + # ~ + + if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + + # ~ + + $Blocks []= $CurrentBlock; + + unset($Blocks[0]); + + # ~ + + $markup = ''; + + foreach ($Blocks as $Block) + { + if (isset($Block['hidden'])) + { + continue; + } + + $markup .= "\n"; + $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']); + } + + $markup .= "\n"; + + # ~ + + return $markup; + } + + protected function isBlockContinuable($Type) + { + return method_exists($this, 'block'.$Type.'Continue'); + } + + protected function isBlockCompletable($Type) + { + return method_exists($this, 'block'.$Type.'Complete'); + } + + # + # Code + + protected function blockCode($Line, $Block = null) + { + if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] >= 4) + { + $text = substr($Line['body'], 4); + + $Block = array( + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => array( + 'name' => 'code', + 'text' => $text, + ), + ), + ); + + return $Block; + } + } + + protected function blockCodeContinue($Line, $Block) + { + if ($Line['indent'] >= 4) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['element']['text']['text'] .= "\n"; + + $text = substr($Line['body'], 4); + + $Block['element']['text']['text'] .= $text; + + return $Block; + } + } + + protected function blockCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Comment + + protected function blockComment($Line) + { + if ($this->markupEscaped or $this->safeMode) + { + return; + } + + if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!') + { + $Block = array( + 'markup' => $Line['body'], + ); + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + } + + protected function blockCommentContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + $Block['markup'] .= "\n" . $Line['body']; + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + + # + # Fenced Code + + protected function blockFencedCode($Line) + { + if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([^`]+)?[ ]*$/', $Line['text'], $matches)) + { + $Element = array( + 'name' => 'code', + 'text' => '', + ); + + if (isset($matches[1])) + { + /** + * https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#classes + * Every HTML element may have a class attribute specified. + * The attribute, if specified, must have a value that is a set + * of space-separated tokens representing the various classes + * that the element belongs to. + * [...] + * The space characters, for the purposes of this specification, + * are U+0020 SPACE, U+0009 CHARACTER TABULATION (tab), + * U+000A LINE FEED (LF), U+000C FORM FEED (FF), and + * U+000D CARRIAGE RETURN (CR). + */ + $language = substr($matches[1], 0, strcspn($matches[1], " \t\n\f\r")); + + $class = 'language-'.$language; + + $Element['attributes'] = array( + 'class' => $class, + ); + } + + $Block = array( + 'char' => $Line['text'][0], + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => $Element, + ), + ); + + return $Block; + } + } + + protected function blockFencedCodeContinue($Line, $Block) + { + if (isset($Block['complete'])) + { + return; + } + + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text'])) + { + $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1); + + $Block['complete'] = true; + + return $Block; + } + + $Block['element']['text']['text'] .= "\n".$Line['body']; + + return $Block; + } + + protected function blockFencedCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Header + + protected function blockHeader($Line) + { + if (isset($Line['text'][1])) + { + $level = 1; + + while (isset($Line['text'][$level]) and $Line['text'][$level] === '#') + { + $level ++; + } + + if ($level > 6) + { + return; + } + + $text = trim($Line['text'], '# '); + + $Block = array( + 'element' => array( + 'name' => 'h' . min(6, $level), + 'text' => $text, + 'handler' => 'line', + ), + ); + + return $Block; + } + } + + # + # List + + protected function blockList($Line) + { + list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]'); + + if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'indent' => $Line['indent'], + 'pattern' => $pattern, + 'element' => array( + 'name' => $name, + 'handler' => 'elements', + ), + ); + + if($name === 'ol') + { + $listStart = stristr($matches[0], '.', true); + + if($listStart !== '1') + { + $Block['element']['attributes'] = array('start' => $listStart); + } + } + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $matches[2], + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + } + + protected function blockListContinue($Line, array $Block) + { + if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['li']['text'] []= ''; + + $Block['loose'] = true; + + unset($Block['interrupted']); + } + + unset($Block['li']); + + $text = isset($matches[1]) ? $matches[1] : ''; + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $text, + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + + if ($Line['text'][0] === '[' and $this->blockReference($Line)) + { + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + return $Block; + } + + if ($Line['indent'] > 0) + { + $Block['li']['text'] []= ''; + + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + unset($Block['interrupted']); + + return $Block; + } + } + + protected function blockListComplete(array $Block) + { + if (isset($Block['loose'])) + { + foreach ($Block['element']['text'] as &$li) + { + if (end($li['text']) !== '') + { + $li['text'] []= ''; + } + } + } + + return $Block; + } + + # + # Quote + + protected function blockQuote($Line) + { + if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'element' => array( + 'name' => 'blockquote', + 'handler' => 'lines', + 'text' => (array) $matches[1], + ), + ); + + return $Block; + } + } + + protected function blockQuoteContinue($Line, array $Block) + { + if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text'] []= ''; + + unset($Block['interrupted']); + } + + $Block['element']['text'] []= $matches[1]; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $Block['element']['text'] []= $Line['text']; + + return $Block; + } + } + + # + # Rule + + protected function blockRule($Line) + { + if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text'])) + { + $Block = array( + 'element' => array( + 'name' => 'hr' + ), + ); + + return $Block; + } + } + + # + # Setext + + protected function blockSetextHeader($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (chop($Line['text'], $Line['text'][0]) === '') + { + $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; + + return $Block; + } + } + + # + # Markup + + protected function blockMarkup($Line) + { + if ($this->markupEscaped or $this->safeMode) + { + return; + } + + if (preg_match('/^<(\w[\w-]*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches)) + { + $element = strtolower($matches[1]); + + if (in_array($element, $this->textLevelElements)) + { + return; + } + + $Block = array( + 'name' => $matches[1], + 'depth' => 0, + 'markup' => $Line['text'], + ); + + $length = strlen($matches[0]); + + $remainder = substr($Line['text'], $length); + + if (trim($remainder) === '') + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + $Block['closed'] = true; + + $Block['void'] = true; + } + } + else + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + return; + } + + if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder)) + { + $Block['closed'] = true; + } + } + + return $Block; + } + } + + protected function blockMarkupContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open + { + $Block['depth'] ++; + } + + if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close + { + if ($Block['depth'] > 0) + { + $Block['depth'] --; + } + else + { + $Block['closed'] = true; + } + } + + if (isset($Block['interrupted'])) + { + $Block['markup'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['markup'] .= "\n".$Line['body']; + + return $Block; + } + + # + # Reference + + protected function blockReference($Line) + { + if (preg_match('/^\[(.+?)\]:[ ]*?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches)) + { + $id = strtolower($matches[1]); + + $Data = array( + 'url' => $matches[2], + 'title' => null, + ); + + if (isset($matches[3])) + { + $Data['title'] = $matches[3]; + } + + $this->DefinitionData['Reference'][$id] = $Data; + + $Block = array( + 'hidden' => true, + ); + + return $Block; + } + } + + # + # Table + + protected function blockTable($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '') + { + $alignments = array(); + + $divider = $Line['text']; + + $divider = trim($divider); + $divider = trim($divider, '|'); + + $dividerCells = explode('|', $divider); + + foreach ($dividerCells as $dividerCell) + { + $dividerCell = trim($dividerCell); + + if ($dividerCell === '') + { + continue; + } + + $alignment = null; + + if ($dividerCell[0] === ':') + { + $alignment = 'left'; + } + + if (substr($dividerCell, - 1) === ':') + { + $alignment = $alignment === 'left' ? 'center' : 'right'; + } + + $alignments []= $alignment; + } + + # ~ + + $HeaderElements = array(); + + $header = $Block['element']['text']; + + $header = trim($header); + $header = trim($header, '|'); + + $headerCells = explode('|', $header); + + foreach ($headerCells as $index => $headerCell) + { + $headerCell = trim($headerCell); + + $HeaderElement = array( + 'name' => 'th', + 'text' => $headerCell, + 'handler' => 'line', + ); + + if (isset($alignments[$index])) + { + $alignment = $alignments[$index]; + + $HeaderElement['attributes'] = array( + 'style' => 'text-align: '.$alignment.';', + ); + } + + $HeaderElements []= $HeaderElement; + } + + # ~ + + $Block = array( + 'alignments' => $alignments, + 'identified' => true, + 'element' => array( + 'name' => 'table', + 'handler' => 'elements', + ), + ); + + $Block['element']['text'] []= array( + 'name' => 'thead', + 'handler' => 'elements', + ); + + $Block['element']['text'] []= array( + 'name' => 'tbody', + 'handler' => 'elements', + 'text' => array(), + ); + + $Block['element']['text'][0]['text'] []= array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $HeaderElements, + ); + + return $Block; + } + } + + protected function blockTableContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if ($Line['text'][0] === '|' or strpos($Line['text'], '|')) + { + $Elements = array(); + + $row = $Line['text']; + + $row = trim($row); + $row = trim($row, '|'); + + preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches); + + foreach ($matches[0] as $index => $cell) + { + $cell = trim($cell); + + $Element = array( + 'name' => 'td', + 'handler' => 'line', + 'text' => $cell, + ); + + if (isset($Block['alignments'][$index])) + { + $Element['attributes'] = array( + 'style' => 'text-align: '.$Block['alignments'][$index].';', + ); + } + + $Elements []= $Element; + } + + $Element = array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $Elements, + ); + + $Block['element']['text'][1]['text'] []= $Element; + + return $Block; + } + } + + # + # ~ + # + + protected function paragraph($Line) + { + $Block = array( + 'element' => array( + 'name' => 'p', + 'text' => $Line['text'], + 'handler' => 'line', + ), + ); + + return $Block; + } + + # + # Inline Elements + # + + protected $InlineTypes = array( + '"' => array('SpecialCharacter'), + '!' => array('Image'), + '&' => array('SpecialCharacter'), + '*' => array('Emphasis'), + ':' => array('Url'), + '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'), + '>' => array('SpecialCharacter'), + '[' => array('Link'), + '_' => array('Emphasis'), + '`' => array('Code'), + '~' => array('Strikethrough'), + '\\' => array('EscapeSequence'), + ); + + # ~ + + protected $inlineMarkerList = '!"*_&[:<>`~\\'; + + # + # ~ + # + + public function line($text, $nonNestables=array()) + { + $markup = ''; + + # $excerpt is based on the first occurrence of a marker + + while ($excerpt = strpbrk($text, $this->inlineMarkerList)) + { + $marker = $excerpt[0]; + + $markerPosition = strpos($text, $marker); + + $Excerpt = array('text' => $excerpt, 'context' => $text); + + foreach ($this->InlineTypes[$marker] as $inlineType) + { + # check to see if the current inline type is nestable in the current context + + if ( ! empty($nonNestables) and in_array($inlineType, $nonNestables)) + { + continue; + } + + $Inline = $this->{'inline'.$inlineType}($Excerpt); + + if ( ! isset($Inline)) + { + continue; + } + + # makes sure that the inline belongs to "our" marker + + if (isset($Inline['position']) and $Inline['position'] > $markerPosition) + { + continue; + } + + # sets a default inline position + + if ( ! isset($Inline['position'])) + { + $Inline['position'] = $markerPosition; + } + + # cause the new element to 'inherit' our non nestables + + foreach ($nonNestables as $non_nestable) + { + $Inline['element']['nonNestables'][] = $non_nestable; + } + + # the text that comes before the inline + $unmarkedText = substr($text, 0, $Inline['position']); + + # compile the unmarked text + $markup .= $this->unmarkedText($unmarkedText); + + # compile the inline + $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']); + + # remove the examined text + $text = substr($text, $Inline['position'] + $Inline['extent']); + + continue 2; + } + + # the marker does not belong to an inline + + $unmarkedText = substr($text, 0, $markerPosition + 1); + + $markup .= $this->unmarkedText($unmarkedText); + + $text = substr($text, $markerPosition + 1); + } + + $markup .= $this->unmarkedText($text); + + return $markup; + } + + # + # ~ + # + + protected function inlineCode($Excerpt) + { + $marker = $Excerpt['text'][0]; + + if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(? strlen($matches[0]), + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ); + } + } + + protected function inlineEmailTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + if ( ! isset($matches[2])) + { + $url = 'mailto:' . $url; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $matches[1], + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + protected function inlineEmphasis($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + $marker = $Excerpt['text'][0]; + + if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'strong'; + } + elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'em'; + } + else + { + return; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => $emphasis, + 'handler' => 'line', + 'text' => $matches[1], + ), + ); + } + + protected function inlineEscapeSequence($Excerpt) + { + if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) + { + return array( + 'markup' => $Excerpt['text'][1], + 'extent' => 2, + ); + } + } + + protected function inlineImage($Excerpt) + { + if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') + { + return; + } + + $Excerpt['text']= substr($Excerpt['text'], 1); + + $Link = $this->inlineLink($Excerpt); + + if ($Link === null) + { + return; + } + + $Inline = array( + 'extent' => $Link['extent'] + 1, + 'element' => array( + 'name' => 'img', + 'attributes' => array( + 'src' => $Link['element']['attributes']['href'], + 'alt' => $Link['element']['text'], + ), + ), + ); + + $Inline['element']['attributes'] += $Link['element']['attributes']; + + unset($Inline['element']['attributes']['href']); + + return $Inline; + } + + protected function inlineLink($Excerpt) + { + $Element = array( + 'name' => 'a', + 'handler' => 'line', + 'nonNestables' => array('Url', 'Link'), + 'text' => null, + 'attributes' => array( + 'href' => null, + 'title' => null, + ), + ); + + $extent = 0; + + $remainder = $Excerpt['text']; + + if (preg_match('/\[((?:[^][]++|(?R))*+)\]/', $remainder, $matches)) + { + $Element['text'] = $matches[1]; + + $extent += strlen($matches[0]); + + $remainder = substr($remainder, $extent); + } + else + { + return; + } + + if (preg_match('/^[(]\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+("[^"]*"|\'[^\']*\'))?\s*[)]/', $remainder, $matches)) + { + $Element['attributes']['href'] = $matches[1]; + + if (isset($matches[2])) + { + $Element['attributes']['title'] = substr($matches[2], 1, - 1); + } + + $extent += strlen($matches[0]); + } + else + { + if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) + { + $definition = strlen($matches[1]) ? $matches[1] : $Element['text']; + $definition = strtolower($definition); + + $extent += strlen($matches[0]); + } + else + { + $definition = strtolower($Element['text']); + } + + if ( ! isset($this->DefinitionData['Reference'][$definition])) + { + return; + } + + $Definition = $this->DefinitionData['Reference'][$definition]; + + $Element['attributes']['href'] = $Definition['url']; + $Element['attributes']['title'] = $Definition['title']; + } + + return array( + 'extent' => $extent, + 'element' => $Element, + ); + } + + protected function inlineMarkup($Excerpt) + { + if ($this->markupEscaped or $this->safeMode or strpos($Excerpt['text'], '>') === false) + { + return; + } + + if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w[\w-]*[ ]*>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w[\w-]*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + } + + protected function inlineSpecialCharacter($Excerpt) + { + if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text'])) + { + return array( + 'markup' => '&', + 'extent' => 1, + ); + } + + $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot'); + + if (isset($SpecialCharacter[$Excerpt['text'][0]])) + { + return array( + 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';', + 'extent' => 1, + ); + } + } + + protected function inlineStrikethrough($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches)) + { + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'del', + 'text' => $matches[1], + 'handler' => 'line', + ), + ); + } + } + + protected function inlineUrl($Excerpt) + { + if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/') + { + return; + } + + if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)) + { + $url = $matches[0][0]; + + $Inline = array( + 'extent' => strlen($matches[0][0]), + 'position' => $matches[0][1], + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + + return $Inline; + } + } + + protected function inlineUrlTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + # ~ + + protected function unmarkedText($text) + { + if ($this->breaksEnabled) + { + $text = preg_replace('/[ ]*\n/', "
\n", $text); + } + else + { + $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "
\n", $text); + $text = str_replace(" \n", "\n", $text); + } + + return $text; + } + + # + # Handlers + # + + protected function element(array $Element) + { + if ($this->safeMode) + { + $Element = $this->sanitiseElement($Element); + } + + $markup = '<'.$Element['name']; + + if (isset($Element['attributes'])) + { + foreach ($Element['attributes'] as $name => $value) + { + if ($value === null) + { + continue; + } + + $markup .= ' '.$name.'="'.self::escape($value).'"'; + } + } + + $permitRawHtml = false; + + if (isset($Element['text'])) + { + $text = $Element['text']; + } + // very strongly consider an alternative if you're writing an + // extension + elseif (isset($Element['rawHtml'])) + { + $text = $Element['rawHtml']; + $allowRawHtmlInSafeMode = isset($Element['allowRawHtmlInSafeMode']) && $Element['allowRawHtmlInSafeMode']; + $permitRawHtml = !$this->safeMode || $allowRawHtmlInSafeMode; + } + + if (isset($text)) + { + $markup .= '>'; + + if (!isset($Element['nonNestables'])) + { + $Element['nonNestables'] = array(); + } + + if (isset($Element['handler'])) + { + $markup .= $this->{$Element['handler']}($text, $Element['nonNestables']); + } + elseif (!$permitRawHtml) + { + $markup .= self::escape($text, true); + } + else + { + $markup .= $text; + } + + $markup .= ''; + } + else + { + $markup .= ' />'; + } + + return $markup; + } + + protected function elements(array $Elements) + { + $markup = ''; + + foreach ($Elements as $Element) + { + $markup .= "\n" . $this->element($Element); + } + + $markup .= "\n"; + + return $markup; + } + + # ~ + + protected function li($lines) + { + $markup = $this->lines($lines); + + $trimmedMarkup = trim($markup); + + if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '

') + { + $markup = $trimmedMarkup; + $markup = substr($markup, 3); + + $position = strpos($markup, "

"); + + $markup = substr_replace($markup, '', $position, 4); + } + + return $markup; + } + + # + # Deprecated Methods + # + + function parse($text) + { + $markup = $this->text($text); + + return $markup; + } + + protected function sanitiseElement(array $Element) + { + static $goodAttribute = '/^[a-zA-Z0-9][a-zA-Z0-9-_]*+$/'; + static $safeUrlNameToAtt = array( + 'a' => 'href', + 'img' => 'src', + ); + + if (isset($safeUrlNameToAtt[$Element['name']])) + { + $Element = $this->filterUnsafeUrlInAttribute($Element, $safeUrlNameToAtt[$Element['name']]); + } + + if ( ! empty($Element['attributes'])) + { + foreach ($Element['attributes'] as $att => $val) + { + # filter out badly parsed attribute + if ( ! preg_match($goodAttribute, $att)) + { + unset($Element['attributes'][$att]); + } + # dump onevent attribute + elseif (self::striAtStart($att, 'on')) + { + unset($Element['attributes'][$att]); + } + } + } + + return $Element; + } + + protected function filterUnsafeUrlInAttribute(array $Element, $attribute) + { + foreach ($this->safeLinksWhitelist as $scheme) + { + if (self::striAtStart($Element['attributes'][$attribute], $scheme)) + { + return $Element; + } + } + + $Element['attributes'][$attribute] = str_replace(':', '%3A', $Element['attributes'][$attribute]); + + return $Element; + } + + # + # Static Methods + # + + protected static function escape($text, $allowQuotes = false) + { + return htmlspecialchars($text, $allowQuotes ? ENT_NOQUOTES : ENT_QUOTES, 'UTF-8'); + } + + protected static function striAtStart($string, $needle) + { + $len = strlen($needle); + + if ($len > strlen($string)) + { + return false; + } + else + { + return strtolower(substr($string, 0, $len)) === strtolower($needle); + } + } + + static function instance($name = 'default') + { + if (isset(self::$instances[$name])) + { + return self::$instances[$name]; + } + + $instance = new static(); + + self::$instances[$name] = $instance; + + return $instance; + } + + private static $instances = array(); + + # + # Fields + # + + protected $DefinitionData; + + # + # Read-Only + + protected $specialCharacters = array( + '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', + ); + + protected $StrongRegex = array( + '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', + ); + + protected $EmRegex = array( + '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', + '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', + ); + + protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?'; + + protected $voidElements = array( + 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', + ); + + protected $textLevelElements = array( + 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', + 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', + 'i', 'rp', 'del', 'code', 'strike', 'marquee', + 'q', 'rt', 'ins', 'font', 'strong', + 's', 'tt', 'kbd', 'mark', + 'u', 'xm', 'sub', 'nobr', + 'sup', 'ruby', + 'var', 'span', + 'wbr', 'time', + ); +} diff --git a/archiv/202503-liedblaetter-mit-typst/metadata.ini b/archiv/202503-liedblaetter-mit-typst/metadata.ini new file mode 100644 index 0000000..cb8d615 --- /dev/null +++ b/archiv/202503-liedblaetter-mit-typst/metadata.ini @@ -0,0 +1,8 @@ +[Meta] +#YYYY-MM +Date = 2025-03 + +#e.g. CC-by-sa, CC-by, All Rights Reserved +License = CC-by-sa +PrettyName = Gitarren-Liedblätter mit Typst erstellen +Author = nils diff --git a/stuff/bingo.pdf b/stuff/bingo.pdf new file mode 100644 index 0000000000000000000000000000000000000000..52fbc86c3db0e6c1ca8dc7f7e76e336493a96482 GIT binary patch literal 17715 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

1a{W@4~ZfkuX8 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 literal 0 HcmV?d00001 diff --git a/stuff/bingo.typst b/stuff/bingo.typst new file mode 100644 index 0000000..b9dd4ec --- /dev/null +++ b/stuff/bingo.typst @@ -0,0 +1,63 @@ +#set page(flipped: true) // A4 paper format + +// Bingo Title += OSAMC BINGO 2025-03 + +Spielregeln: Schreibe je einen Begriff in ein Feld. Höre während des Treffens zu – sobald jemand den Begriff nennt, markiere das Feld. +Übersetzte Begriffe (Ton = Sound o. Beamer = Projektor) zählen auch. + +Gewonnen hat, wer eine durchgehende Reihe horizontal, vertikal oder diagonal markiert. + +#let words = ( + "Ardour", "JACK", "Pipewire", "Plugin", + "MIDI", "Gitarre", "Ton", "Chat", + "Latenz", "Terminal", "Lizenz", "Akkord", + "Platte", "Uhr", "Projektor", "Stecker" +) + + +#place(right, dy: 2em, dx: -32em, { + set align(left) + show text: strong + [ + = Begriffe + #for word in words.sorted() [ + - #word + ] + + ] +}) + +#h(1cm) // Spacer + +#grid( + columns: 4, + rows: 4, + row-gutter: 1em, + column-gutter: 1em, + + [#rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) ], + [#rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) ], + [#rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) ], + [#rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) ], + +) + +#place(top, dy: 8em, dx: 35em, { + set align(left) + show text: strong + + [ + #grid( + columns: 4, + rows: 4, + row-gutter: 1em, + column-gutter: 1em, + + [#rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) ], + [#rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) ], + [#rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) ], + [#rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) #rect(width: 2cm, height: 2cm) ], + ) + ] +}) diff --git a/stuff/osamc.svg b/stuff/osamc.svg new file mode 100644 index 0000000..05df2be --- /dev/null +++ b/stuff/osamc.svg @@ -0,0 +1,215 @@ + + + + + + + + + + image/svg+xml + + + + + + + + Sturkopf Grotesk Font CAPS Schriftgröße 1001px Abstand zwischen den Buchstaben50% Height (nicht breite skalieren)Unterschrift:normale schrift, kein extra Space, keine height.Auf gleiche Breite wie das Logo gemacht, zentral unten drunterPosition der Unterschrift nach AugenmaßExport als transparent SVGDann Farben und Schatten in Gimp, je nach Einsatzzweck + OSAMC + Open Source Audio Meeting Cologne + OSAMC + Open Source Audio Meeting Cologne + Im ErdgeschossGerade aus durch zum Chaos Computer Club + +