]> granicus.if.org Git - multimarkdown/commitdiff
ADDED: Support mmd export format
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Fri, 17 Feb 2017 02:12:02 +0000 (21:12 -0500)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Fri, 17 Feb 2017 02:12:02 +0000 (21:12 -0500)
src/main.c
src/transclude.c

index c342c19f5e9e640ce02a78ecdb2b5914ffec0dcb..dd7f1f87273789568a82a055028f7af66bfc0004 100644 (file)
@@ -189,7 +189,7 @@ int main(int argc, char** argv) {
 
                a_rem1                  = arg_rem("", ""),
 
-               a_format                = arg_str0("t", "to", "FORMAT", "convert to FORMAT"),
+               a_format                = arg_str0("t", "to", "FORMAT", "convert to FORMAT, FORMAT = html|latex|beamer|memoir|mmd"),
                a_o                             = arg_file0("o", "output", "FILE", "send output to FILE"),
 
                a_batch                 = arg_lit0("b", "batch", "process each file separately"),
@@ -296,6 +296,8 @@ int main(int argc, char** argv) {
                        format = FORMAT_BEAMER;
                else if (strcmp(a_format->sval[0], "memoir") == 0)
                        format = FORMAT_MEMOIR;
+               else if (strcmp(a_format->sval[0], "mmd") == 0)
+                       format = FORMAT_MMD;
                else {
                        // No valid format found
                        fprintf(stderr, "%s: Unknown output format '%s'\n", binname, a_format->sval[0]);
@@ -351,6 +353,9 @@ int main(int argc, char** argv) {
                                case FORMAT_MEMOIR:
                                        output_filename = filename_with_extension(a_file->filename[i], ".tex");
                                        break;
+                               case FORMAT_MMD:
+                                       output_filename = filename_with_extension(a_file->filename[i], ".mmdtext");
+                                       break;
                        }
 
                        // Perform transclusion(s)
@@ -362,7 +367,11 @@ int main(int argc, char** argv) {
                                // Don't free folder -- owned by dirname
                        }
        
-                       result = mmd_process(buffer, extensions, format, language);
+                       if (FORMAT_MMD == format) {
+                               result = buffer->str;
+                       } else {
+                               result = mmd_process(buffer, extensions, format, language);
+                       }
 
                        if (!(output_stream = fopen(output_filename, "w"))) {
                                // Failed to open file
@@ -374,8 +383,10 @@ int main(int argc, char** argv) {
                        }
 
                        d_string_free(buffer, true);
-                       free(result);
                        free(output_filename);
+                       if (FORMAT_MMD != format) {
+                               free(result);
+                       }
                }
        } else {
                if (a_file->count) {
@@ -411,7 +422,11 @@ int main(int argc, char** argv) {
                        // Don't free folder -- owned by dirname
                }
 
-               result = mmd_process(buffer, extensions, format, language);
+               if (FORMAT_MMD == format) {
+                       result = buffer->str;
+               } else {
+                       result = mmd_process(buffer, extensions, format, language);
+               }
 
                // Where does output go?
                if (strcmp(a_o->filename[0], "-") == 0) {
@@ -433,8 +448,9 @@ int main(int argc, char** argv) {
                        fclose(output_stream);
                
                d_string_free(buffer, true);
-
-               free(result);
+               if (FORMAT_MMD != format) {
+                       free(result);
+               }
        }
 
 
index 5ecaf0c156799f1a74bd957717917e7be4f41469..8f5c4abde20a6681d6b5353fc6f6f7305c9f8079 100644 (file)
@@ -341,6 +341,8 @@ void transclude_source(DString * source, const char * dir, short format, stack *
                                                d_string_append(file_path, ".html");
                                                break;
                                        case FORMAT_LATEX:
+                                       case FORMAT_BEAMER:
+                                       case FORMAT_MEMOIR:
                                                d_string_append(file_path, ".tex");
                                                break;
                                        default: