Home | History | Annotate | Download | only in cs
      1 /*
      2  * Copyright 2001-2004 Brandon Long
      3  * All Rights Reserved.
      4  *
      5  * ClearSilver Templating System
      6  *
      7  * This code is made available under the terms of the ClearSilver License.
      8  * http://www.clearsilver.net/license.hdf
      9  *
     10  */
     11 
     12 #include <stdio.h>
     13 #include <stdlib.h>
     14 #include <unistd.h>
     15 
     16 #include "cs.h"
     17 #include "util/neo_misc.h"
     18 #include "util/neo_hdf.h"
     19 
     20 static NEOERR *output (void *ctx, char *s)
     21 {
     22   printf ("%s", s);
     23   return STATUS_OK;
     24 }
     25 
     26 int main (int argc, char *argv[])
     27 {
     28   NEOERR *err;
     29   CSPARSE *parse;
     30   HDF *hdf;
     31   int verbose = 0;
     32   char *hdf_file, *cs_file;
     33   char c;
     34 
     35   extern char *optarg;
     36 
     37   err = hdf_init(&hdf);
     38   if (err != STATUS_OK)
     39   {
     40     nerr_log_error(err);
     41     return -1;
     42   }
     43 
     44   err = cs_init (&parse, hdf);
     45   if (err != STATUS_OK) {
     46     nerr_log_error(err);
     47     return -1;
     48   }
     49 
     50   while ((c = getopt(argc, argv, "Hvh:c:")) != EOF )
     51 
     52     switch (c) {
     53     case 'h':
     54       hdf_file=optarg;
     55       err = hdf_read_file(hdf, hdf_file);
     56       if (err != STATUS_OK) {
     57 	nerr_log_error(err);
     58 	return -1;
     59       }
     60       break;
     61     case 'c':
     62       cs_file=optarg;
     63       if ( verbose )
     64 	printf ("Parsing %s\n", cs_file);
     65 
     66       err = cs_parse_file (parse, cs_file);
     67       if (err != STATUS_OK) {
     68 	err = nerr_pass(err);
     69 	nerr_log_error(err);
     70 	return -1;
     71       }
     72       break;
     73     case 'v':
     74       verbose=1;
     75       break;
     76     case 'H':
     77       fprintf(stderr, "Usage: %s [-v] [-h <file.hdf>] [-c <file.cs>]\n", argv[0]);
     78       fprintf(stderr, "     -h <file.hdf> load hdf file file.hdf (multiple allowed)\n");
     79       fprintf(stderr, "     -c <file.cs>  load cs file file.cs (multiple allowed)\n");
     80       fprintf(stderr, "     -v            verbose output\n");
     81       return -1;
     82       break;
     83     }
     84 
     85 
     86   err = cs_render(parse, NULL, output);
     87   if (err != STATUS_OK) {
     88     err = nerr_pass(err);
     89     nerr_log_error(err);
     90     return -1;
     91   }
     92 
     93   if (verbose) {
     94     printf ("\n-----------------------\nCS DUMP\n");
     95     err = cs_dump(parse, NULL, output);
     96   }
     97 
     98   cs_destroy (&parse);
     99 
    100   if (verbose) {
    101     printf ("\n-----------------------\nHDF DUMP\n");
    102     hdf_dump (hdf, NULL);
    103   }
    104 
    105   return 0;
    106 }
    107