@extends('layouts.adminlte') @section('title', 'Guide Program') @section('page_title', 'Guide Program') @push('styles') @endpush @section('content') @php if (! function_exists('guide_render_step')) { /** * Render step text with: * - fenced code blocks (```lang ... ```): rendered as
...
* - inline code (`...`): rendered as ...
*
* We keep rendering strict (escape everything) to avoid accidental HTML injection.
*/
function guide_render_step($text): string
{
$text = (string) $text;
$pattern = '/```([a-zA-Z0-9_-]+)?\\s*\\R([\\s\\S]*?)\\R```/m';
$out = '';
$offset = 0;
while (preg_match($pattern, $text, $m, PREG_OFFSET_CAPTURE, $offset)) {
$full = $m[0][0];
$pos = (int) $m[0][1];
// Normal text before the fenced block.
$before = substr($text, $offset, $pos - $offset);
if ($before !== '') {
$escaped = e($before);
$escaped = preg_replace_callback('/`([^`]+)`/', fn ($mm) => ''.$mm[1].'', $escaped);
$out .= nl2br($escaped);
}
$lang = isset($m[1][0]) ? trim((string) $m[1][0]) : '';
$code = (string) ($m[2][0] ?? '');
$codeEscaped = e(rtrim($code, "\r\n"));
$langClass = $lang !== '' ? ' language-'.preg_replace('/[^a-zA-Z0-9_-]/', '', $lang) : '';
$out .= ''.$codeEscaped.'';
$offset = $pos + strlen($full);
}
// Remaining normal text after last fenced block.
$tail = substr($text, $offset);
if ($tail !== '') {
$escaped = e($tail);
$escaped = preg_replace_callback('/`([^`]+)`/', fn ($mm) => ''.$mm[1].'', $escaped);
$out .= nl2br($escaped);
}
return $out;
}
}
@endphp
{{ $screenshotBaseDir }}
dengan pola nama:
{section-id}-01.png, {section-id}-02.png, dst.