mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 05:49:53 +08:00
92 lines
2.4 KiB
C
92 lines
2.4 KiB
C
/* PEG Markdown Highlight
|
|
* Copyright 2011-2016 Ali Rantakari -- http://hasseg.org
|
|
* Licensed under the GPL2+ and MIT licenses (see LICENSE for more info).
|
|
*
|
|
* pmh_parser.h
|
|
*/
|
|
|
|
#ifdef Q_CC_GNU
|
|
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
|
#endif
|
|
|
|
/** \file
|
|
* \brief Parser public interface.
|
|
*/
|
|
|
|
#ifndef __cplusplus
|
|
#include <stdbool.h>
|
|
#endif
|
|
|
|
#include <stdlib.h>
|
|
#include <assert.h>
|
|
#include "pmh_definitions.h"
|
|
|
|
|
|
/**
|
|
* \brief Parse Markdown text, return elements
|
|
*
|
|
* Parses the given Markdown text and returns the results as an
|
|
* array of linked lists of elements, indexed by type.
|
|
*
|
|
* \param[in] text The Markdown text to parse for highlighting.
|
|
* \param[in] extensions The extensions to use in parsing (a bitfield
|
|
* of pmh_extensions values).
|
|
* \param[out] out_result A pmh_element array, indexed by type, containing
|
|
* the results of the parsing (linked lists of elements).
|
|
* You must pass this to pmh_free_elements() when it's
|
|
* not needed anymore.
|
|
*
|
|
* \sa pmh_element_type
|
|
*/
|
|
void pmh_markdown_to_elements(char *text, int extensions,
|
|
pmh_element **out_result[]);
|
|
|
|
/**
|
|
* \brief Sort elements in list by start offset.
|
|
*
|
|
* Sorts the linked lists of elements in the list returned by
|
|
* pmh_markdown_to_elements() by their start offsets (pos).
|
|
*
|
|
* \param[in] element_lists Array of linked lists of elements (output
|
|
* from pmh_markdown_to_elements()).
|
|
*
|
|
* \sa pmh_markdown_to_elements
|
|
* \sa pmh_element::pos
|
|
*/
|
|
void pmh_sort_elements_by_pos(pmh_element *element_lists[]);
|
|
|
|
/**
|
|
* \brief Free pmh_element array
|
|
*
|
|
* Frees an pmh_element array returned by pmh_markdown_to_elements().
|
|
*
|
|
* \param[in] elems The pmh_element array resulting from calling
|
|
* pmh_markdown_to_elements().
|
|
*
|
|
* \sa pmh_markdown_to_elements
|
|
*/
|
|
void pmh_free_elements(pmh_element **elems);
|
|
|
|
/**
|
|
* \brief Get element type name
|
|
*
|
|
* \param[in] type The type value to get the name for.
|
|
*
|
|
* \return The name of the given type as a null-terminated string.
|
|
*
|
|
* \sa pmh_element_type
|
|
*/
|
|
char *pmh_element_name_from_type(pmh_element_type type);
|
|
|
|
/**
|
|
* \brief Get element type from a name
|
|
*
|
|
* \param[in] name The name of the type.
|
|
*
|
|
* \return The element type corresponding to the given name.
|
|
*
|
|
* \sa pmh_element_type
|
|
*/
|
|
pmh_element_type pmh_element_type_from_name(char *name);
|
|
|