/* {{{ proto bool MarkdownDocument::writeXhtmlPage(mixed $out_stream) */ PHP_METHOD(markdowndoc, writeXhtmlPage) { discount_object *dobj; zval *zstream; php_stream *stream; int close; FILE *f; int status; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &zstream) == FAILURE) { RETURN_FALSE; } if ((dobj = markdowndoc_get_object(getThis(), 1 TSRMLS_CC)) == NULL) { RETURN_FALSE; } if (markdowndoc_get_file(zstream, 1, &stream, &close, &f TSRMLS_CC) == FAILURE) { RETURN_FALSE; } status = mkd_xhtmlpage(dobj->markdoc, f); markdown_sync_stream_and_file(stream, close, f TSRMLS_CC); if (markdown_handle_io_error(status, "mkd_xhtmlpage" TSRMLS_CC) == FAILURE) { RETURN_FALSE; } RETURN_TRUE; }
/* {{{ proto bool MarkdownDocument::dumpTree(mixed $out_stream [, string $title = "" ]) */ PHP_METHOD(markdowndoc, dumpTree) { discount_object *dobj; zval *zstream; php_stream *stream; int close; FILE *f; char *title = ""; int title_len = 0; int status; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|s", &zstream, &title, &title_len) == FAILURE) { RETURN_FALSE; } if ((dobj = markdowndoc_get_object(getThis(), 1 TSRMLS_CC)) == NULL) { RETURN_FALSE; } if (markdowndoc_get_file(zstream, 1, &stream, &close, &f TSRMLS_CC) == FAILURE) { RETURN_FALSE; } status = mkd_dump(dobj->markdoc, f, title); markdown_sync_stream_and_file(stream, close, f TSRMLS_CC); if (status == -1) { /* should never happen */ zend_throw_exception(spl_ce_RuntimeException, "Error dumping tree: call to the library failed", 0 TSRMLS_CC); RETURN_FALSE; } RETURN_TRUE; }
/* {{{ proto bool MarkdownDocument::writeToc(mixed $out_stream) */ PHP_METHOD(markdowndoc, writeToc) { discount_object *dobj; zval *zstream; php_stream *stream; int close; FILE *f; int status; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &zstream) == FAILURE) { RETURN_FALSE; } /* no compilation required */ if ((dobj = markdowndoc_get_object(getThis(), 1 TSRMLS_CC)) == NULL) { RETURN_FALSE; } if (markdowndoc_get_file(zstream, 1, &stream, &close, &f TSRMLS_CC) == FAILURE) { RETURN_FALSE; } status = mkd_generatetoc(dobj->markdoc, f); markdown_sync_stream_and_file(stream, close, f TSRMLS_CC); if (markdown_handle_io_error(status, "mkd_generatetoc" TSRMLS_CC) == FAILURE) { RETURN_FALSE; } RETURN_BOOL(status == 1); /* 1 for no data; 0 for no MKD_TOC */ }
/* {{{ proto bool MarkdownDoc::writeFragment(string $markdown_fragment, mixed $out_stream [, int $flags = 0 ]) */ PHP_METHOD(markdowndoc, writeFragment) { char *markdown; int markdown_len; long flags = 0; zval *zstream; php_stream *stream; int close; FILE *f; int status; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|l", &markdown, &markdown_len, &zstream, &flags) == FAILURE) { RETURN_FALSE; } if (markdowndoc_get_file(zstream, 1, &stream, &close, &f TSRMLS_CC) == FAILURE) { RETURN_FALSE; } status = mkd_generateline(markdown, markdown_len, f, (mkd_flag_t) flags); markdown_sync_stream_and_file(stream, close, f TSRMLS_CC); if (markdown_handle_io_error(status, "mkd_generateline" TSRMLS_CC) == FAILURE) { RETURN_FALSE; } RETURN_TRUE; }
/* {{{ markdown_init_from_stream */ static int markdown_init_from_stream(zval* obj, zval *zstream, long flags TSRMLS_DC) { discount_object *dobj = zend_object_store_get_object(obj TSRMLS_CC); MMIOT *mmiot; php_stream *stream; int close; FILE *f; int ret; if (dobj->markdoc != NULL) { zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "This object has already been initialized."); return FAILURE; } if (markdown_check_input_flags((mkd_flag_t) flags TSRMLS_CC) == FAILURE) { return FAILURE; } if (markdowndoc_get_file(zstream, 0, &stream, &close, &f TSRMLS_CC) == FAILURE) { return FAILURE; } mmiot = mkd_in(f, (mkd_flag_t) flags); if (mmiot == NULL) { zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Error initializing markdown document: call to the library routine " "mkd_in() failed"); ret = FAILURE; } else { dobj->markdoc = mmiot; ret = SUCCESS; } if (close) { php_stream_close(stream); } return ret; }