static bool RenderVariablePrimitive(Buffer *out, const JsonElement *primitive, const bool escaped, const bool key_mode) { if (key_mode && JsonElementGetPropertyName(primitive)) { if (escaped) { RenderHTMLContent(out, JsonElementGetPropertyName(primitive), strlen(JsonElementGetPropertyName(primitive))); } else { BufferAppendString(out, JsonElementGetPropertyName(primitive)); } return true; } switch (JsonGetPrimitiveType(primitive)) { case JSON_PRIMITIVE_TYPE_STRING: if (escaped) { RenderHTMLContent(out, JsonPrimitiveGetAsString(primitive), strlen(JsonPrimitiveGetAsString(primitive))); } else { BufferAppendString(out, JsonPrimitiveGetAsString(primitive)); } return true; case JSON_PRIMITIVE_TYPE_INTEGER: { char *str = StringFromLong(JsonPrimitiveGetAsInteger(primitive)); BufferAppendString(out, str); free(str); } return true; case JSON_PRIMITIVE_TYPE_REAL: { char *str = StringFromDouble(JsonPrimitiveGetAsReal(primitive)); BufferAppendString(out, str); free(str); } return true; case JSON_PRIMITIVE_TYPE_BOOL: BufferAppendString(out, JsonPrimitiveGetAsBool(primitive) ? "true" : "false"); return true; case JSON_PRIMITIVE_TYPE_NULL: return true; default: assert(!"Unrecognised JSON primitive type"); } return false; }
static void RenderContent(Buffer *out, const char *content, size_t len, bool html, bool skip_content) { if (skip_content) { return; } if (html) { RenderHTMLContent(out, content, len); } else { BufferAppend(out, content, len); } }
static void RenderContent(Writer *out, const char *content, size_t len, bool html, bool skip_content) { if (skip_content) { return; } if (html) { RenderHTMLContent(out, content, len); } else { WriterWriteLen(out, content, len); } }