Skip to content

Commit

Permalink
Possibility to disable linter for particulat json objects
Browse files Browse the repository at this point in the history
  • Loading branch information
kala13x committed Jul 4, 2023
1 parent 82c62c6 commit faffcfc
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 32 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,11 @@ install:
@test -d $(INSTALL_BIN) || mkdir -p $(INSTALL_BIN)
@install -m 0755 $(ODIR)/$(NAME) $(INSTALL_BIN)/
@test -d $(INSTALL_INC) || mkdir -p $(INSTALL_INC)
@cp -r ./src/*.h $(INSTALL_INC)/
@cp -r ./src/crypt/*.h $(INSTALL_INC)/
@cp -r ./src/data/*.h $(INSTALL_INC)/
@cp -r ./src/net/*.h $(INSTALL_INC)/
@cp -r ./src/sys/*.h $(INSTALL_INC)/
@cp -r ./src/*.h $(INSTALL_INC)/

.PHONY: clean
clean:
Expand Down
64 changes: 35 additions & 29 deletions src/data/xjson.c
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,7 @@ xjson_obj_t* XJSON_CreateObject(const char *pName, void *pValue, xjson_type_t nT
if (pObj == NULL) return NULL;

pObj->nAllowUpdate = 0;
pObj->nAllowLinter = 1;
pObj->nAllocated = 1;
pObj->pName = NULL;
pObj->pData = pValue;
Expand Down Expand Up @@ -1033,11 +1034,11 @@ static int XJSON_Realloc(xjson_writer_t *pWriter, size_t nSize)
static int XJSON_AppedSpaces(xjson_writer_t *pWriter)
{
if (!pWriter->nTabSize) return XJSON_SUCCESS;
char *pSpaces = (char*)calloc(pWriter->nIdents + 1, sizeof(char));
char *pSpaces = (char*)calloc(pWriter->nIndents + 1, sizeof(char));
if (pSpaces == NULL) return XJSON_FAILURE;

size_t nLenght = 0;
while (nLenght < pWriter->nIdents)
while (nLenght < pWriter->nIndents)
pSpaces[nLenght++] = ' ';

pSpaces[nLenght] = '\0';
Expand All @@ -1056,9 +1057,9 @@ static int XJSON_AppedSpaces(xjson_writer_t *pWriter)
return XJSON_SUCCESS;
}

static int XJSON_WriteString(xjson_writer_t *pWriter, int nIdent, const char *pFmt, ...)
static int XJSON_WriteString(xjson_writer_t *pWriter, int nIndent, const char *pFmt, ...)
{
if (nIdent) XASSERT(XJSON_AppedSpaces(pWriter), XJSON_FAILURE);
if (nIndent) XASSERT(XJSON_AppedSpaces(pWriter), XJSON_FAILURE);

char *pBuffer = NULL;
size_t nBytes = 0;
Expand Down Expand Up @@ -1115,47 +1116,47 @@ static int XJSON_WriteItem(xjson_obj_t *pObj, xjson_writer_t *pWriter)

XASSERT(pObj->pData, XJSON_FAILURE);
XASSERT(XJSON_WriteName(pObj, pWriter), XJSON_FAILURE);
int nIdent = pObj->pName == NULL ? 1 : 0;
int nIndent = (pObj->pName == NULL && pObj->nAllowLinter) ? 1 : 0;

if (pWriter->nPretty)
{
xjson_format_t *pFormat = &pWriter->format;

if (pObj->nType == XJSON_TYPE_STRING)
{
return XJSON_WriteString(pWriter, nIdent, "\"%s%s%s%s\"",
return XJSON_WriteString(pWriter, nIndent, "\"%s%s%s%s\"",
pFormat->pStrFmt, pFormat->pStrClr,
(const char*)pObj->pData, XSTR_FMT_RESET);
}
else if (pObj->nType == XJSON_TYPE_BOOLEAN)
{
return XJSON_WriteString(pWriter, nIdent, "%s%s%s%s",
return XJSON_WriteString(pWriter, nIndent, "%s%s%s%s",
pFormat->pBoolFmt, pFormat->pBoolClr,
(const char*)pObj->pData, XSTR_FMT_RESET);
}
else if (pObj->nType == XJSON_TYPE_NUMBER)
{
return XJSON_WriteString(pWriter, nIdent, "%s%s%s%s",
return XJSON_WriteString(pWriter, nIndent, "%s%s%s%s",
pFormat->pNumFmt, pFormat->pNumClr,
(const char*)pObj->pData, XSTR_FMT_RESET);
}
else if (pObj->nType == XJSON_TYPE_FLOAT)
{
return XJSON_WriteString(pWriter, nIdent, "%s%s%s%s",
return XJSON_WriteString(pWriter, nIndent, "%s%s%s%s",
pFormat->pFloatFmt, pFormat->pFloatClr,
(const char*)pObj->pData, XSTR_FMT_RESET);
}
else if (pObj->nType == XJSON_TYPE_NULL)
{
return XJSON_WriteString(pWriter, nIdent, "%s%s%s%s",
return XJSON_WriteString(pWriter, nIndent, "%s%s%s%s",
pFormat->pNullFmt, pFormat->pNullClr,
(const char*)pObj->pData, XSTR_FMT_RESET);
}
}

return (pObj->nType == XJSON_TYPE_STRING) ?
XJSON_WriteString(pWriter, nIdent, "\"%s\"", (const char*)pObj->pData):
XJSON_WriteString(pWriter, nIdent, "%s", (const char*)pObj->pData);
XJSON_WriteString(pWriter, nIndent, "\"%s\"", (const char*)pObj->pData):
XJSON_WriteString(pWriter, nIndent, "%s", (const char*)pObj->pData);
}

static int XJSON_MapIt(xmap_pair_t *pPair, void *pContext)
Expand All @@ -1175,9 +1176,9 @@ static int XJSON_Ident(xjson_writer_t *pWriter, int nIncrease)
{
if (pWriter->nTabSize)
{
if (nIncrease) pWriter->nIdents += pWriter->nTabSize;
else if (pWriter->nTabSize <= pWriter->nIdents)
pWriter->nIdents -= pWriter->nTabSize;
if (nIncrease) pWriter->nIndents += pWriter->nTabSize;
else if (pWriter->nTabSize <= pWriter->nIndents)
pWriter->nIndents -= pWriter->nTabSize;
else return XJSON_FAILURE;
}

Expand All @@ -1188,13 +1189,13 @@ static int XJSON_WriteHashmap(xjson_obj_t *pObj, xjson_writer_t *pWriter)
{
XASSERT(XJSON_CheckObject(pObj, XJSON_TYPE_OBJECT), XJSON_FAILURE);
XASSERT(XJSON_WriteName(pObj, pWriter), XJSON_FAILURE);
int nIdent = pObj->pName == NULL ? 1 : 0;
int nIndent = (pObj->pName == NULL && pObj->nAllowLinter) ? 1 : 0;
xmap_t *pMap = (xmap_t*)pObj->pData;

XASSERT(XJSON_WriteString(pWriter, nIdent, "{"), XJSON_FAILURE);
nIdent = (pWriter->nTabSize && pMap->nUsed) ? 1 : 0;
XASSERT(XJSON_WriteString(pWriter, nIndent, "{"), XJSON_FAILURE);
nIndent = (pWriter->nTabSize && pMap->nUsed && pObj->nAllowLinter) ? 1 : 0;

if (nIdent)
if (nIndent)
{
XASSERT(XJSON_WriteString(pWriter, 0, "\n"), XJSON_FAILURE);
XASSERT(XJSON_Ident(pWriter, XJSON_IDENT_INC), XJSON_FAILURE);
Expand All @@ -1218,23 +1219,23 @@ static int XJSON_WriteHashmap(xjson_obj_t *pObj, xjson_writer_t *pWriter)
free(pIterator);
}

if (nIdent) XASSERT(XJSON_Ident(pWriter, XJSON_IDENT_DEC), XJSON_FAILURE);
return XJSON_WriteString(pWriter, nIdent, "}");
if (nIndent) XASSERT(XJSON_Ident(pWriter, XJSON_IDENT_DEC), XJSON_FAILURE);
return XJSON_WriteString(pWriter, nIndent, "}");
}

static int XJSON_WriteArray(xjson_obj_t *pObj, xjson_writer_t *pWriter)
{
XASSERT(XJSON_CheckObject(pObj, XJSON_TYPE_ARRAY), XJSON_FAILURE);
XASSERT(XJSON_WriteName(pObj, pWriter), XJSON_FAILURE);
int nIdent = pObj->pName == NULL ? 1 : 0;
int nIndent = (pObj->pName == NULL && pObj->nAllowLinter) ? 1 : 0;

xarray_t* pArray = (xarray_t*)pObj->pData;
XASSERT(XJSON_WriteString(pWriter, nIdent, "["), XJSON_FAILURE);
XASSERT(XJSON_WriteString(pWriter, nIndent, "["), XJSON_FAILURE);

size_t i, nUsed = XArray_Used(pArray);
nIdent = (pWriter->nTabSize && nUsed) ? 1 : 0;
nIndent = (pWriter->nTabSize && nUsed && pObj->nAllowLinter) ? 1 : 0;

if (nIdent)
if (nIndent)
{
XASSERT(XJSON_WriteString(pWriter, 0, "\n"), XJSON_FAILURE);
XASSERT(XJSON_Ident(pWriter, XJSON_IDENT_INC), XJSON_FAILURE);
Expand All @@ -1243,13 +1244,18 @@ static int XJSON_WriteArray(xjson_obj_t *pObj, xjson_writer_t *pWriter)
for (i = 0; i < nUsed; i++)
{
xjson_obj_t *pItem = XArray_GetData(pArray, i);
if (pItem == NULL) continue;

pItem->nAllowLinter = pObj->nAllowLinter;
XASSERT(XJSON_WriteObject(pItem, pWriter), XJSON_FAILURE);
if ((i + 1) < nUsed) XASSERT(XJSON_WriteString(pWriter, 0, ","), XJSON_FAILURE);
if (pWriter->nTabSize) XASSERT(XJSON_WriteString(pWriter, 0, "\n"), XJSON_FAILURE);

if (pWriter->nTabSize && pObj->nAllowLinter)
XASSERT(XJSON_WriteString(pWriter, 0, "\n"), XJSON_FAILURE);
}

if (nIdent) XASSERT(XJSON_Ident(pWriter, XJSON_IDENT_DEC), XJSON_FAILURE);
return XJSON_WriteString(pWriter, nIdent, "]");
if (nIndent) XASSERT(XJSON_Ident(pWriter, XJSON_IDENT_DEC), XJSON_FAILURE);
return XJSON_WriteString(pWriter, nIndent, "]");
}

int XJSON_WriteObject(xjson_obj_t *pObj, xjson_writer_t *pWriter)
Expand Down Expand Up @@ -1338,7 +1344,7 @@ int XJSON_InitWriter(xjson_writer_t *pWriter, char *pOutput, size_t nSize)

pWriter->nTabSize = 0;
pWriter->nPretty = 0;
pWriter->nIdents = 0;
pWriter->nIndents = 0;
pWriter->nLength = 0;

return 1;
Expand Down
3 changes: 2 additions & 1 deletion src/data/xjson.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ typedef enum {
typedef struct xjson_obj_ {
xjson_type_t nType;
uint8_t nAllowUpdate;
uint8_t nAllowLinter;
uint8_t nAllocated;
void *pData;
char *pName;
Expand Down Expand Up @@ -144,7 +145,7 @@ typedef struct xjson_writer_ {
xjson_format_t format;
uint8_t nPretty;
size_t nTabSize;
size_t nIdents;
size_t nIndents;
size_t nLength;
size_t nAvail;
size_t nSize;
Expand Down
2 changes: 1 addition & 1 deletion src/xver.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

#define XUTILS_VERSION_MAX 2
#define XUTILS_VERSION_MIN 5
#define XUTILS_BUILD_NUMBER 32
#define XUTILS_BUILD_NUMBER 33

#ifdef __cplusplus
extern "C" {
Expand Down

0 comments on commit faffcfc

Please sign in to comment.