/* * storycode_test.c * * Colloquium - A tiny presentation program * * Copyright (c) 2012 Thomas White * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "../src/sc_parse.h" typedef struct { JsonNode *root; } Stylesheet; Stylesheet *stylesheet_load(const char *filename) { JsonParser *parser; gboolean r; GError *err = NULL; Stylesheet *ss; ss = calloc(1, sizeof(Stylesheet)); if ( ss == NULL ) return NULL; parser = json_parser_new(); r = json_parser_load_from_file(parser, filename, &err); if ( r == FALSE ) { fprintf(stderr, "Failed to load style sheet: '%s'\n", err->message); return NULL; } ss->root = json_parser_steal_root(parser); g_object_unref(parser); return ss; } char *stylesheet_lookup(Stylesheet *ss, const char *path) { JsonNode *node; JsonArray *array; GError *err = NULL; char *ret; const gchar *v; node = json_path_query(path, ss->root, &err); array = json_node_get_array(node); v = json_array_get_string_element(array, 0); if ( v == NULL ) return NULL; ret = strdup(v); json_node_unref(node); return ret; } int main(int argc, char *argv[]) { SCBlock *bl; Stylesheet *ss; ss = stylesheet_load("test.ss"); printf("Frame background: '%s'\n", stylesheet_lookup(ss, "$.slide.frame.bgcol1")); bl = sc_parse("\\wibble{}\\f{wibble \\bg[muhu]{wobble\nwibble\nwabble}}\\frib[\\f] f"); if ( bl == NULL ) { printf("Failed to parse SC\n"); return 1; } show_sc_blocks(bl); return 0; }