summaryrefslogtreecommitdiff
path: root/bin/render.php
diff options
context:
space:
mode:
Diffstat (limited to 'bin/render.php')
-rwxr-xr-xbin/render.php92
1 files changed, 43 insertions, 49 deletions
diff --git a/bin/render.php b/bin/render.php
index d30ef2958..01fd16cdd 100755
--- a/bin/render.php
+++ b/bin/render.php
@@ -1,5 +1,10 @@
#!/usr/bin/php
<?php
+if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__) . '/../') . '/');
+define('NOSESSION', 1);
+require_once(DOKU_INC . 'inc/init.php');
+
+
/**
* A simple commandline tool to render some DokuWiki syntax with a given
* renderer.
@@ -11,57 +16,46 @@
* @license GPL2
* @author Andreas Gohr <andi@splitbrain.org>
*/
-if ('cli' != php_sapi_name()) die();
-
-ini_set('memory_limit','128M');
-if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
-define('NOSESSION',1);
-require_once(DOKU_INC.'inc/init.php');
-require_once(DOKU_INC.'inc/common.php');
-require_once(DOKU_INC.'inc/parserutils.php');
-require_once(DOKU_INC.'inc/cliopts.php');
+class RenderCLI extends DokuCLI {
-// handle options
-$short_opts = 'hr:';
-$long_opts = array('help','renderer:');
-$OPTS = Doku_Cli_Opts::getOptions(__FILE__,$short_opts,$long_opts);
-if ( $OPTS->isError() ) {
- fwrite( STDERR, $OPTS->getMessage() . "\n");
- _usage();
- exit(1);
-}
-$RENDERER = 'xhtml';
-foreach ($OPTS->options as $key => $val) {
- switch ($key) {
- case 'h':
- case 'help':
- _usage();
- exit;
- case 'r':
- case 'renderer':
- $RENDERER = $val;
+ /**
+ * Register options and arguments on the given $options object
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function setup(DokuCLI_Options $options) {
+ $options->setHelp(
+ 'A simple commandline tool to render some DokuWiki syntax with a given renderer.' .
+ "\n\n" .
+ 'This may not work for plugins that expect a certain environment to be ' .
+ 'set up before rendering, but should work for most or even all standard ' .
+ 'DokuWiki markup'
+ );
+ $options->registerOption('renderer', 'The renderer mode to use. Defaults to xhtml', 'r', 'mode');
}
-}
-
-// do the action
-$source = stream_get_contents(STDIN);
-$info = array();
-$result = p_render($RENDERER,p_get_instructions($source),$info);
-if(is_null($result)) die("No such renderer $RENDERER\n");
-echo $result;
+ /**
+ * Your main program
+ *
+ * Arguments and options have been parsed when this is run
+ *
+ * @param DokuCLI_Options $options
+ * @throws DokuCLI_Exception
+ * @return void
+ */
+ protected function main(DokuCLI_Options $options) {
+ $renderer = $options->getOpt('renderer', 'xhtml');
-/**
- * Print usage info
- */
-function _usage(){
- print "Usage: render.php <options>
-
- Reads DokuWiki syntax from STDIN and renders it with the given renderer
- to STDOUT
-
- OPTIONS
- -h, --help show this help and exit
- -r, --renderer <renderer> the render mode (default: xhtml)
-";
+ // do the action
+ $source = stream_get_contents(STDIN);
+ $info = array();
+ $result = p_render($renderer, p_get_instructions($source), $info);
+ if(is_null($result)) throw new DokuCLI_Exception("No such renderer $renderer");
+ echo $result;
+ }
}
+
+// Main
+$cli = new RenderCLI();
+$cli->run(); \ No newline at end of file