From ea5fda4de12fec003e7a2375d0ffbde11b845ca0 Mon Sep 17 00:00:00 2001 From: Manish Date: Fri, 1 May 2020 15:44:29 +1000 Subject: [PATCH] Simplified extractData.generateIndex() logic. Tags are casefolded and capitalized than checked for duplicate entries --- generator/main.py | 86 ++++++++++++++++++------------------ generator/portableCode/OS.py | 1 + 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/generator/main.py b/generator/main.py index 27631f8..03f6de0 100644 --- a/generator/main.py +++ b/generator/main.py @@ -24,7 +24,6 @@ along with SAAS. If not, see . import glob import json import os -import shutil import sys from urllib.parse import quote as strToHtmlFmt import zipfile @@ -84,7 +83,7 @@ class extractData: infoDict = self.extractActivityInfo(infoFiles[0], bundle) self.bundlesInfoList.append(infoDict) - # FIXME: create seprate function for it + # FIXME: create separate function for it # extract and copy icon activityName = infoDict.get("name") if type(activityName) == str: @@ -106,8 +105,6 @@ class extractData: self.iconErrorBundles.append(bundlePath) bundle.close() - # FIXME: uncomment below function. - # Disabled sometime during development as time consuming self.copyBundle(bundlePath, activityName) bundle.close() @@ -152,45 +149,48 @@ class extractData: be created for it. appends keys rather than replacing where multiple map to same """ - # FIXME: Simplify logic: replace str, tuple, list etc. with 'string' & 'array' - def generateIndex(self) - - for activity in json.loads(self.infoJson): - indexDict = { - "name": "", - "description" : "", - "tags": () - } - - name = activity.get["name"] - if name != None: - indexDict["name"] == name - - summary = activity.get["summary"] - if summary != None: - indexDict["summary"] = summary - description = activity.get["description"] - if description != None: - indexDict["summary"] = ( - indexDict["summary"] + ' ' + description) - - tags = [] - tagsKeys = ["tag", "tags", "category", "categories"] - for key in tagsKeys: - tagsString = activity.get[tag] - if tagsString != None: - for tag in tagString: - tag = tag.casefold().capitalize() - if tag not in tags: - tags.append[tag] - infoDict["tags"] = tuple(tags) - - self.indexDictList.append(indexDict) - self.indexJs = ( - "search.assignIndex(" + - json.dumps(self.indexDictList, indent=4) + - ")" - ) + def generateIndex(self): + for activity in json.loads(self.infoJson): + indexDict = { + "name": "", + "summary": "", + "description": "", + "tags": () + } + + name = activity.get("name") + if name is not None: + indexDict["name"] = name + + summary = activity.get("summary") + if summary is not None: + indexDict["summary"] = summary + + description = activity.get("description") + if description is not None: + indexDict["description"] = description + + tags = [] + tagsKeys = ["tag", "tags", "category", "categories"] + for key in tagsKeys: + tagsString = activity.get(key) + if tagsString is not None: + if tagsString.find(';') != -1: + tagsList = tagsString.split(';') + else: + tagsList = tagsString.split() + for tag in tagsList: + tag = tag.casefold().capitalize() + if tag not in tags: + tags.append(tag) + indexDict["tags"] = tuple(tags) + + self.indexDictList.append(indexDict) + self.indexJs = ( + "search.assignIndex(" + + json.dumps(self.indexDictList, indent=4) + + ")" + ) def generateInfoJson(self): self.infoJson = json.dumps(self.bundlesInfoList, indent=4) diff --git a/generator/portableCode/OS.py b/generator/portableCode/OS.py index bc89237..7518183 100644 --- a/generator/portableCode/OS.py +++ b/generator/portableCode/OS.py @@ -1,4 +1,5 @@ import os +import shutil def CallFuncInDir(Directory, Function, *args, **kwArgs):