shortcode/shortcodes.h

60 lines
979 B
C
Raw Normal View History

2023-07-14 00:24:37 +00:00
#pragma once
2023-07-12 23:37:55 +00:00
// A chunk is a reference to a piece of string
// from "start" relative to its start
// and goes on for len characters.
2023-07-12 19:22:54 +00:00
struct chunk
{
2023-07-14 00:57:47 +00:00
unsigned int start, len;
2023-07-12 19:22:54 +00:00
};
typedef struct chunk chunk;
// An error
struct sc_error
{
2023-07-14 00:57:47 +00:00
unsigned int position;
unsigned int code;
};
typedef struct sc_error sc_error;
2023-07-12 23:37:55 +00:00
// Describes a parsed shortcode
2023-07-12 19:22:54 +00:00
struct shortcode
{
2023-07-12 20:10:55 +00:00
chunk whole;
2023-07-12 19:22:54 +00:00
chunk name;
chunk data;
char matching;
chunk argnames[100];
chunk argvals[100];
2023-07-14 00:57:47 +00:00
unsigned int argcount;
2023-07-12 19:22:54 +00:00
};
typedef struct shortcode shortcode;
struct sc_result
{
shortcode sc[100];
2023-07-14 01:02:45 +00:00
unsigned int sccount;
sc_error errors[10];
2023-07-14 00:57:47 +00:00
unsigned int errcount;
};
typedef struct sc_result sc_result;
// Error codes
/* You are closing the wrong shortcode.
Example:
{{% foo %}} {{% /bar %}}
*/
2023-07-14 00:24:37 +00:00
#define ERR_MISMATCHED_CLOSING_TAG 1
2023-07-14 01:02:45 +00:00
/* You are using mismatched brackets.
Example:
{{% foo >}}
*/
2023-07-14 00:24:37 +00:00
#define ERR_MISMATCHED_BRACKET 2
sc_result parse(char *);