From 74dd237810d47e961f30ff8e9c3a10a4bb9ef7ac Mon Sep 17 00:00:00 2001 From: dx Date: Wed, 6 May 2020 03:09:57 +0100 Subject: +header depth algorithm This adds the functionality for arbitrary levels of header depth which will be translated to depth based header tags. \## ->

\### ->

etc This also introduces a variable 'size_of_content' which presents the size of the raw string without the header tags as added size. --- Converter/src/main.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Converter') diff --git a/Converter/src/main.c b/Converter/src/main.c index e3603bb..e41304b 100644 --- a/Converter/src/main.c +++ b/Converter/src/main.c @@ -7,10 +7,25 @@ typedef char *string; string compile_line(string line, size_t size_of_line) { string compiled_line; + size_t size_of_content; + if (line[0] == '#') { // Compile a header + // Get the level of header (h1, h2, etc) + int depth; + for (depth = 1; line[depth] == '#'; ++depth); + size_of_content = size_of_line - depth; // remove hashes + + // Generate the header tags based on depth + const int tag_size = 4; + const int untag_size = 5; + string tag = malloc(sizeof(*tag) * 5); + sprintf(tag, "", depth); + string untag = malloc(sizeof(*untag) * 6); + sprintf(untag, "", depth); + // allocate buffer with extra 9 characters for the tags compiled_line = malloc(sizeof(*compiled_line) * (size_of_line + 9)); // write h1 to start of compiled_line -- cgit v1.2.3-13-gbd6f