]> granicus.if.org Git - multimarkdown/commitdiff
UPDATED: Add OPML routines to libMultiMarkdown.h
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Mon, 3 Sep 2018 02:48:08 +0000 (22:48 -0400)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Mon, 3 Sep 2018 02:48:08 +0000 (22:48 -0400)
Sources/libMultiMarkdown/include/libMultiMarkdown.h
Sources/libMultiMarkdown/mmd.c

index cbeefeee38dad5ab5c95201f4cec2d3ad20a96ba..0b5fa3c20dadf7f0784b39972de9f23d01a81b0b 100644 (file)
@@ -101,6 +101,10 @@ typedef struct stack stack;
        C string variants
 */
 
+/// Convert OPML string to MMD
+DString * mmd_string_convert_opml_to_text(const char * source);
+
+
 /// Convert MMD text to specified format, with specified extensions, and language
 /// Returned char * must be freed
 char * mmd_string_convert(const char * source, unsigned long extensions, short format, short language);
@@ -147,6 +151,10 @@ struct stack * mmd_string_transclusion_manifest(const char * source, const char
        DString variants - DString ("dynamic string") is a mutable string implementation used in this project
 */
 
+/// Convert OPML DString to MMD
+DString * mmd_d_string_convert_opml_to_text(DString * source);
+
+
 /// Convert MMD text to specified format, with specified extensions, and language
 /// Returned char * must be freed
 char * mmd_d_string_convert(DString * source, unsigned long extensions, short format, short language);
@@ -245,6 +253,10 @@ char * mmd_engine_convert(mmd_engine * e, short format);
 void mmd_engine_convert_to_file(mmd_engine * e, short format, const char * directory, const char * filepath);
 
 
+/// Convert OPML to text without modifying original engine source
+DString *  mmd_engine_convert_opml_to_text(mmd_engine * e);
+
+
 /// Convert MMD text to specified format using DString as a container for block of data
 /// and length of that block.  Must be used for "complex" output formats such as EPUB.
 /// Returned DString * must be freed
index b4b38d6e0ff704c2fb79c7d9ae2cc86180fecb24..63bbc99663c1d3e4fa2f3ce1e84f22e627becbd9 100644 (file)
@@ -2816,6 +2816,55 @@ DString * mmd_engine_convert_to_data(mmd_engine * e, short format, const char *
 }
 
 
+/// Convert OPML string to MMD
+DString * mmd_string_convert_opml_to_text(const char * source) {
+       mmd_engine * e = mmd_engine_create_with_string(source, 0);
+
+       DString * result =  mmd_engine_convert_opml_to_text(e);
+
+       e->root = NULL;
+       mmd_engine_free(e, true);
+
+       return result;
+}
+
+
+/// Convert OPML DString to MMD
+DString * mmd_d_string_convert_opml_to_text(DString * source) {
+       mmd_engine * e = mmd_engine_create_with_dstring(source, 0);
+
+       DString * result =  mmd_engine_convert_opml_to_text(e);
+
+       e->root = NULL;
+       mmd_engine_free(e, false);
+
+       return result;
+}
+
+
+/// Convert OPML to text without modifying original engine source
+DString *  mmd_engine_convert_opml_to_text(mmd_engine * e) {
+       DString * original = d_string_new("");
+       d_string_append_c_array(original, e->dstr->str, e->dstr->currentStringLength);
+
+       mmd_convert_opml_string(e, 0, e->dstr->currentStringLength);
+
+       // Swap original and engine
+       char * temp = e->dstr->str;
+       size_t size = e->dstr->currentStringLength;
+
+       // Replace engine copy with original OPML text
+       e->dstr->str = original->str;
+       e->dstr->currentStringLength = original->currentStringLength;
+
+       // Original now contains the processed text
+       original->str = temp;
+       original->currentStringLength = size;
+
+       return original;
+}
+
+
 /// Return string containing engine version.
 char * mmd_version(void) {
        char * result;