all repos — litestore @ cd4b3f1a419f9900d51beaaf666ab338e3dfe98f

A minimalist nosql document store.

Improved indexing of JSON documents.
h3rald h3rald@h3rald.com
Sat, 05 May 2018 13:06:00 +0200
commit

cd4b3f1a419f9900d51beaaf666ab338e3dfe98f

parent

ba2d32e40c8ac776d1289f710a558319820adc21

1 files changed, 18 insertions(+), 1 deletions(-)

jump to
M lib/utils.nimlib/utils.nim

@@ -158,9 +158,26 @@ result["data"] = obj

result["tags"] = %tags proc toPlainText*(s: string): string = + var str: string + var json: JsonNode var tags = peg"""'<' [^>]+ '>'""" var special_chars = peg"""\*\*+ / \_\_+ / \-\-+ / \#\#+ / \+\++ / \~\~+ / \`\`+ """ - return s.replace(tags).replace(special_chars) + try: + json = s.parseJson() + except: + discard + if not json.isNil: + if json.kind == JObject: + # Only process string values + str = toSeq(json.pairs).filterIt(it.val.kind == JString).mapIt(it.val.getStr).join(" ") + elif json.kind == JArray: + # Only process string values + str = toSeq(json.items).filterIt(it.kind == JString).mapIt(it.getStr).join(" ") + else: + str = s + else: + str = s + return str.replace(tags).replace(special_chars) proc checkIfBinary*(binary:int, contenttype:string): int = if binary == -1 and contenttype.isBinary: