init
This commit is contained in:
170
vendor/bin/markdown
vendored
Normal file
170
vendor/bin/markdown
vendored
Normal file
@@ -0,0 +1,170 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2014 Carsten Brandt
|
||||
* @license https://github.com/cebe/markdown/blob/master/LICENSE
|
||||
* @link https://github.com/cebe/markdown#readme
|
||||
*/
|
||||
|
||||
$composerAutoload = [
|
||||
__DIR__ . '/../vendor/autoload.php', // standalone with "composer install" run
|
||||
__DIR__ . '/../../../autoload.php', // script is installed as a composer binary
|
||||
];
|
||||
foreach ($composerAutoload as $autoload) {
|
||||
if (file_exists($autoload)) {
|
||||
require($autoload);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Send all errors to stderr
|
||||
ini_set('display_errors', 'stderr');
|
||||
|
||||
$flavor = 'cebe\\markdown\\Markdown';
|
||||
$flavors = [
|
||||
'gfm' => ['cebe\\markdown\\GithubMarkdown', __DIR__ . '/../GithubMarkdown.php'],
|
||||
'extra' => ['cebe\\markdown\\MarkdownExtra', __DIR__ . '/../MarkdownExtra.php'],
|
||||
];
|
||||
|
||||
$full = false;
|
||||
$src = [];
|
||||
foreach($argv as $k => $arg) {
|
||||
if ($k == 0) {
|
||||
continue;
|
||||
}
|
||||
if ($arg[0] == '-') {
|
||||
$arg = explode('=', $arg);
|
||||
switch($arg[0]) {
|
||||
case '--flavor':
|
||||
if (isset($arg[1])) {
|
||||
if (isset($flavors[$arg[1]])) {
|
||||
require($flavors[$arg[1]][1]);
|
||||
$flavor = $flavors[$arg[1]][0];
|
||||
} else {
|
||||
error("Unknown flavor: " . $arg[1], "usage");
|
||||
}
|
||||
} else {
|
||||
error("Incomplete argument --flavor!", "usage");
|
||||
}
|
||||
break;
|
||||
case '--full':
|
||||
$full = true;
|
||||
break;
|
||||
case '-h':
|
||||
case '--help':
|
||||
echo "PHP Markdown to HTML converter\n";
|
||||
echo "------------------------------\n\n";
|
||||
echo "by Carsten Brandt <mail@cebe.cc>\n\n";
|
||||
usage();
|
||||
break;
|
||||
default:
|
||||
error("Unknown argument " . $arg[0], "usage");
|
||||
}
|
||||
} else {
|
||||
$src[] = $arg;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($src)) {
|
||||
$markdown = file_get_contents("php://stdin");
|
||||
} elseif (count($src) == 1) {
|
||||
$file = reset($src);
|
||||
if (!file_exists($file)) {
|
||||
error("File does not exist:" . $file);
|
||||
}
|
||||
$markdown = file_get_contents($file);
|
||||
} else {
|
||||
error("Converting multiple files is not yet supported.", "usage");
|
||||
}
|
||||
|
||||
/** @var cebe\markdown\Parser $md */
|
||||
$md = new $flavor();
|
||||
$markup = $md->parse($markdown);
|
||||
|
||||
if ($full) {
|
||||
echo <<<HTML
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; }
|
||||
code { background: #eeeeff; padding: 2px; }
|
||||
li { margin-bottom: 5px; }
|
||||
img { max-width: 1200px; }
|
||||
table, td, th { border: solid 1px #ccc; border-collapse: collapse; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
$markup
|
||||
</body>
|
||||
</html>
|
||||
HTML;
|
||||
} else {
|
||||
echo $markup;
|
||||
}
|
||||
|
||||
// functions
|
||||
|
||||
/**
|
||||
* Display usage information
|
||||
*/
|
||||
function usage() {
|
||||
global $argv;
|
||||
$cmd = $argv[0];
|
||||
echo <<<EOF
|
||||
Usage:
|
||||
$cmd [--flavor=<flavor>] [--full] [file.md]
|
||||
|
||||
--flavor specifies the markdown flavor to use. If omitted the original markdown by John Gruber [1] will be used.
|
||||
Available flavors:
|
||||
|
||||
gfm - Github flavored markdown [2]
|
||||
extra - Markdown Extra [3]
|
||||
|
||||
--full ouput a full HTML page with head and body. If not given, only the parsed markdown will be output.
|
||||
|
||||
--help shows this usage information.
|
||||
|
||||
If no file is specified input will be read from STDIN.
|
||||
|
||||
Examples:
|
||||
|
||||
Render a file with original markdown:
|
||||
|
||||
$cmd README.md > README.html
|
||||
|
||||
Render a file using gihtub flavored markdown:
|
||||
|
||||
$cmd --flavor=gfm README.md > README.html
|
||||
|
||||
Convert the original markdown description to html using STDIN:
|
||||
|
||||
curl http://daringfireball.net/projects/markdown/syntax.text | $cmd > md.html
|
||||
|
||||
|
||||
[1] http://daringfireball.net/projects/markdown/syntax
|
||||
[2] https://help.github.com/articles/github-flavored-markdown
|
||||
[3] http://michelf.ca/projects/php-markdown/extra/
|
||||
|
||||
EOF;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send custom error message to stderr
|
||||
* @param $message string
|
||||
* @param $callback mixed called before script exit
|
||||
* @return void
|
||||
*/
|
||||
function error($message, $callback = null) {
|
||||
$fe = fopen("php://stderr", "w");
|
||||
fwrite($fe, "Error: " . $message . "\n");
|
||||
|
||||
if (is_callable($callback)) {
|
||||
call_user_func($callback);
|
||||
}
|
||||
|
||||
exit(1);
|
||||
}
|
||||
Reference in New Issue
Block a user