Expand C recipes.
This commit is contained in:
parent
7dd718691b
commit
91ca89f158
@ -18,25 +18,96 @@ Section light
|
|||||||
|
|
||||||
Markdown
|
Markdown
|
||||||
Documentation is available for the following languages:
|
Documentation is available for the following languages:
|
||||||
- [C](/docs/c/) - 1% Complete
|
- [C](/docs/c/) - 10% Complete
|
||||||
- [JavaScript](/docs/javascript/) - 0% Complete
|
- [JavaScript](/docs/javascript/) - 0% Complete
|
||||||
- [Python](/docs/python/) - 0% Complete
|
- [Python](/docs/python/) - 0% Complete
|
||||||
|
|
||||||
Heading 2 Getting Started
|
Heading 2 Getting Started
|
||||||
class mt-12 mb-6
|
class mt-12 mb-6
|
||||||
|
|
||||||
Markdown
|
Markdown
|
||||||
The core terrace parser is distributed as a single-header C library.<br/>
|
The core terrace parser is distributed as a single-header C library.<br/>
|
||||||
To use it, download [parser.h](https://git.thederf.com/thederf/Terrace/src/branch/main/packages/c/parser.h) and include in your project tree.
|
To use it, download [parser.h](https://git.thederf.com/thederf/Terrace/src/branch/main/packages/c/parser.h) and include in your project tree.
|
||||||
|
|
||||||
CodeBlock c
|
CodeBlock c
|
||||||
#include "parser.h"
|
#include "parser.h"
|
||||||
Markdown
|
|
||||||
|
|
||||||
|
|
||||||
Heading 2 Recipes
|
Heading 2 Recipes
|
||||||
class mt-12
|
class mt-12
|
||||||
|
|
||||||
|
Heading 3 Parse a single line
|
||||||
|
Markdown
|
||||||
|
Parses a single line into `line_data`, the prints the information from `line_data`.
|
||||||
|
CodeBlock c
|
||||||
|
#include "parser.h"
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
char* line = "example line";
|
||||||
|
// Create the line_data struct
|
||||||
|
terrace_linedata_t line_data;
|
||||||
|
// Set the indent character to a space
|
||||||
|
line_data.indent = ' ';
|
||||||
|
// Populates line_data level, offsetHead, and offsetTail from line
|
||||||
|
terrace_parse_line(line, &line_data);
|
||||||
|
|
||||||
|
printf(
|
||||||
|
"level %u | indent %c | offsetHead %u | offsetTail %u\n",
|
||||||
|
line_data.level,
|
||||||
|
line_data.indent,
|
||||||
|
line_data.offsetHead,
|
||||||
|
line_data.offsetTail
|
||||||
|
);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Heading 3 Parse all lines from stdin
|
||||||
|
Markdown
|
||||||
|
Reads lines from stdin one-by-one and prints each line's `line_data`.
|
||||||
|
CodeBlock c
|
||||||
|
#include "parser.h"
|
||||||
|
// Depends on several cstdlib functions
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
// Pointer to start of line
|
||||||
|
char *line = NULL;
|
||||||
|
// Initial size of the buffer to read into
|
||||||
|
// getline() will resize as needed
|
||||||
|
size_t bufsize = 128;
|
||||||
|
// How many characters have been read
|
||||||
|
ssize_t chars_read = 0;
|
||||||
|
|
||||||
|
// Create the line_data struct
|
||||||
|
terrace_linedata_t line_data;
|
||||||
|
// Set the indent character to a space
|
||||||
|
line_data.indent = ' ';
|
||||||
|
|
||||||
|
while (chars_read = getline(&line, &bufsize, stdin)) {
|
||||||
|
// If chars_read is -1, we've reached end of file.
|
||||||
|
if (chars_read == -1) break;
|
||||||
|
// getline returns lines with a trailing newline
|
||||||
|
// terrace_parse_line expects no trailing newline
|
||||||
|
// strip it off using strtok()
|
||||||
|
// (An odd solution, probably leaks memory)
|
||||||
|
char *terrace_line = strtok(line, "\n");
|
||||||
|
terrace_parse_line(terrace_line, &line_data);
|
||||||
|
|
||||||
|
printf(
|
||||||
|
"level %u | indent %c | offsetHead %u | offsetTail %u\n",
|
||||||
|
line_data.level,
|
||||||
|
line_data.indent,
|
||||||
|
line_data.offsetHead,
|
||||||
|
line_data.offsetTail
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Free the buffer allocated by getline().
|
||||||
|
free(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Heading 2 Core API
|
Heading 2 Core API
|
||||||
class mt-12
|
class mt-12
|
||||||
|
|
||||||
|
@ -15,5 +15,7 @@ module.exports = async (doc, rootLevel) => {
|
|||||||
else node.text = await contentAsText(doc, rootLevel, true)
|
else node.text = await contentAsText(doc, rootLevel, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
node.text = node.text.trimEnd()
|
||||||
|
|
||||||
return node
|
return node
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,6 @@ module.exports = async function(doc) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
pageData.headings = pageData.headings.filter(h => h.level === 2)
|
pageData.headings = pageData.headings.filter(h => h.level === 2)
|
||||||
console.dir(pageData.headings, { depth: null })
|
|
||||||
|
|
||||||
return pageData
|
return pageData
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user