Ajout documents pour cours NoSQL
This commit is contained in:
99
cesi/nosql/Slides/make.php
Normal file
99
cesi/nosql/Slides/make.php
Normal file
@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
if (empty($argv[1])) {
|
||||
die("Usage: make.php SOURCE_MARKDOWN > DESTINATION_HTML\n");
|
||||
}
|
||||
|
||||
$lines = file($argv[1]);
|
||||
$out = '';
|
||||
$in_list = $in_section = false;
|
||||
$section_class = null;
|
||||
|
||||
function escape($str) {
|
||||
$str = htmlspecialchars($str);
|
||||
$str = str_replace('<!--', '<sup>', $str);
|
||||
$str = str_replace('-->', '</sup>', $str);
|
||||
|
||||
$str = preg_replace_callback('/`(.*?)`/', function ($match) {
|
||||
return '<code>' . $match[1] . '</code>';
|
||||
}, $str);
|
||||
|
||||
$str = preg_replace_callback('/\[(.*?)\]\((.*?)\)/', function ($match) {
|
||||
return sprintf('<a href="%s">%s</a>', $match[2], $match[1]);
|
||||
}, $str);
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
foreach ($lines as $line)
|
||||
{
|
||||
if (preg_match('/^---+(?:\s*=(\w+))?$/', $line, $match)) {
|
||||
if ($in_section) {
|
||||
if ($in_list) {
|
||||
$out .= ' </ul>' . PHP_EOL;
|
||||
$in_list = false;
|
||||
}
|
||||
|
||||
$out .= '</section>' . PHP_EOL . PHP_EOL;
|
||||
$in_section = false;
|
||||
}
|
||||
|
||||
$section_class = !empty($match[1]) ? $match[1] : null;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if ('' === trim($line)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!$in_section) {
|
||||
$out .= sprintf('<section class="%s">', $section_class) . PHP_EOL;
|
||||
$in_section = true;
|
||||
}
|
||||
|
||||
if (preg_match('/^(#+)\s+/', $line, $match)) {
|
||||
$size = strlen($match[1]);
|
||||
$title = trim(substr($line, strlen($match[0])));
|
||||
$out .= sprintf(' <h%d>%s</h%d>', $size, escape($title), $size) . PHP_EOL;
|
||||
}
|
||||
elseif (preg_match('/^\*\s+/', $line)) {
|
||||
if (!$in_list) {
|
||||
$out .= ' <ul>' . PHP_EOL;
|
||||
$in_list = true;
|
||||
}
|
||||
|
||||
$out .= sprintf(' <li>%s</li>', escape(trim(substr($line, 2)))) . PHP_EOL;
|
||||
}
|
||||
else {
|
||||
$out .= ' ' . trim($line) . PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
if ($in_section) {
|
||||
if ($in_list) {
|
||||
$out .= ' </ul>' . PHP_EOL;
|
||||
$in_list = false;
|
||||
}
|
||||
|
||||
$out .= '</section>' . PHP_EOL . PHP_EOL;
|
||||
$in_section = false;
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Slides</title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css" media="screen,presentation" />
|
||||
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
|
||||
<script type="text/javascript" src="slides.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<?=$out?>
|
||||
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user