# core.c Core funtion of the transpiler. Handles reading lines and processing them according to the current state. --- ## Includes ```c #include #include "transpile.h" #include "internal/transpile_internal.h" #include "utils.h" ``` --- ## Forward Declarations ```c static int8_t process_line(t_state *s, char *line); ``` ## Function Descriptions ### `transpile` Transpiles input from a file to an output file based on the specified extension and mapping. #### Parameters - `in`: Pointer to the input file. - `out`: Pointer to the output file. - `ext`: Pointer to the file extension string. - `map`: Pointer to the mapping structure. #### Return Value Return 0 on success, or a non-zero error code on failure. #### Implementation ```c int8_t transpile(FILE *in, FILE *out, const char *ext, t_map *map) { t_state s; char *line; int8_t ret; state_init(&s, in, out, ext, map); ret = 0; line = read_line(in); while (NULL != line && 0 == ret) { ret = process_line(&s, line); free(line); line = read_line(in); } free(line); return (ret); } ``` ### `process_line` Processes a single line of input based on the current state. #### Parameters - `s`: Pointer to the current state structure. - `line`: Pointer to the line of text to process. #### Return Value Return 0 on success, or a non-zero error code on failure. #### Implementation ```c static int8_t process_line(t_state *s, char *line) { s->src_line++; if (0 == s->in_block && starts_with(line, "```")) return (handle_fence_open(s, line)); if (1 == s->in_block && starts_with(line, "```")) return (handle_fence_close(s)); if (1 == s->in_block) return (handle_code_line(s, line)); return (0); }