Estoy buscando una herramienta, preferiblemente con una licencia FLOSS, que pueda hacer algo como lo siguiente:
thetool --template mytemplate.c.someformat --data mydata.json --schema myschema.json --out myoutput.c
¿dónde thetool
está la herramienta ejecutable que estoy buscando? ¿ mytemplate.c.someformat
Mi archivo de plantilla parece un archivo C pero con marcado de estilo de plantilla para el reemplazo de datos? mydata.json
Contiene datos para completar la plantilla. myschema.json
Es un esquema que explica las conexiones entre los elementos de datos (es bueno tenerlo, pero no es estrictamente obligatorio) y myoutput.c
es el archivo C generado.
¿Existe tal herramienta por ahí? El soporte json nativo es clave aquí, donde los mensajes de error pueden resaltar áreas problemáticas en la fuente json. XML no es una opción. No necesita tener soporte explícito para C. Debe poder generar archivos en formato genérico ASCII/UTF-8.
Debe poder ejecutarse como una herramienta de línea de comandos tanto en Windows como en GNU/Linux. También es bueno si se puede vincular como una biblioteca desde python o C.
la sintaxis no se ha verificado, ya que necesito la herramienta para hacerlo.
#include <stdio.h>
int main(void) {
#{{ for person in persons }}
#{{ if person.likes.length > 0 }}
printf("#{{ person.name }} likes:\n");
#{{ for liked in person.likes }}
printf(" * #{{ likes.name }}\n");
#{{ endfor }}
#{{ else }}
printf("#{{ person.name }} doesn't like anyone.");
#{{ endif }}
printf("\n");
#{{ endfor }}
return(0);
}
{
"persons": {
{
"id": "10",
"name": "Mr Mister",
"likes": {
"20",
"22"
}
},
{
"id": "20",
"name": "Ms Missy",
"likes": {
"10",
}
},
{
"id": "22",
"name": "No Body",
"likes":
{}
}
},
"schema": "personSchema"
}
{
"personSchema": {
{
"id": {
"type": "integer",
"attrib": "unique"
}
"name": {
"type": "string"
}
"likes":
{
"type": "integer",
"connection": "personSchema.id"
}
}
}
}
#include <stdio.h>
int main(void) {
printf("Mr Mister likes:\n");
printf(" * Ms Missy\n");
printf(" * No Body\n");
printf("\n");
printf("Ms Missy likes:\n");
printf(" * Mr Mister\n");
printf("\n");
printf("No Body doesn't like anyone.");
printf("\n");
return(0);
}
Hay muchos lenguajes de programación, muchos motores de plantillas y muchos analizadores JSON (y su solicitud parece estar en un contexto de programación), así que simplemente combine uno de cada uno y obtendrá lo que desea.
Por ejemplo, mustache es un formato de plantilla simple con implementaciones en varios lenguajes, incluido un módulo Pystache de Python. (Se basa en CTemplate , que viene como una biblioteca de C++).
Super User no es un servicio de escritura de guiones, pero aquí hay algo para comenzar .
usuario416
johan
Miguel