so://phie

soso

My pretty neat website
git clone git://soophie.de/soso

blob: 491af84beffe43d84c73cdfa7fbb6397f939927a (920 bytes)[raw]

1#pragma once

2

3#include <buf.h>

4#include <orb.h>

5#include "util.h"

6

7#define DUC_OUT ((orb_ctx_t *) out)

8#define DUC_WRITE(str) { buf_write(DUC_OUT->out, str); }

9#define DUC_CLEAR() { buf_free(DUC_OUT->out); }

10

11#define BINARY(bytes, len) { buf_write_len(DUC_OUT->out, bytes, len); }

12#define HTML(str) DUC_WRITE(str ? str : "")

13#define STRING(str) { \

14 buf_t buf = BUF_NULL; \

15 buf_write(&buf, str); \

16 buf_repall(&buf, "&", "&amp;"); \

17 buf_repall(&buf, "<", "&lt;"); \

18 buf_repall(&buf, ">", "&gt;"); \

19 buf_concat(DUC_OUT->out, buf); \

20 buf_free(&buf); \

21}

22#define PRINTF(fmt, ...) { buf_writef(DUC_OUT->out, fmt, __VA_ARGS__); }

23#define NUMBER(num) PRINTF("%d", num)

24#define FORMAT_TIME(time, fmt) { \

25 struct tm *tm = localtime(time); \

26 char buffer[100]; \

27 int len = strftime(buffer, 100, fmt, tm); \

28 buffer[len] = '\0'; \

29 STRING(buffer) \

30}

31

32#define MARKDOWN(str) { util_md_html(str, DUC_OUT->out); }