Prototype of offline/backendless search functionality and generating/building website from activity bundles (NOTE: cannot add incrementally new activity bundles for now as it will overwrite search index rather than appending to it)
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
from sys import platform as OperatingSystem
|
||||
|
||||
Quotes = '"\''
|
||||
|
||||
if OperatingSystem == "win32":
|
||||
PathSlash = '\\'
|
||||
else:
|
||||
PathSlash = '/'
|
||||
FileProtocol = "file:" + 2*PathSlash
|
||||
|
||||
def ConvertToStandardPathFormat(Path):
|
||||
""" Example,
|
||||
Input: '"file:///some/path/somefile.extension"
|
||||
Output: /some/path/somefile.extension
|
||||
"""
|
||||
Path = Path.strip(Quotes)
|
||||
if Path.startswith(FileProtocol):
|
||||
Path = Path[len(FileProtocol):]
|
||||
return Path
|
||||
|
||||
def GetTextAfter(Text, ReadlinesTextFile):
|
||||
for Lines in range(len(ReadlinesTextFile)):
|
||||
Line = ReadlinesTextFile[Lines].strip('\n')
|
||||
if Line.startswith(Text):
|
||||
return Line[len(Text):]
|
||||
return ''
|
||||
|
||||
def SingleQuoteString(String):
|
||||
if len(String) > 0:
|
||||
if String[0] != '\'' or String[-1] != '\'':
|
||||
String = '\'' + String + '\''
|
||||
return String
|
||||
|
||||
def DoubleQuoteString(String):
|
||||
if len(String) > 0:
|
||||
if String[0] != '"' or String[-1] != '"':
|
||||
String = '"' + String + '"'
|
||||
return String
|
||||
|
||||
def ListIntoString(List, QuoteItems=0, Seprator=' '):
|
||||
if QuoteItems == 2:
|
||||
for i in range(len(List)):
|
||||
Quoteditem = DoubleQuoteString(List[i])
|
||||
List[i] = Quoteditem
|
||||
elif QuoteItems == 1:
|
||||
for i in range(len(List)):
|
||||
Quoteditem = SingleQuoteString(List[i])
|
||||
List[i] = Quoteditem
|
||||
Stringoflist = (Seprator).join(List)
|
||||
return Stringoflist
|
||||
|
||||
# strip=0 => remove both ' & ", 1 => remove ', 2 => remove "
|
||||
def UnquoteString(String, strip=0):
|
||||
while True:
|
||||
if (
|
||||
strip != 2
|
||||
and String.startswith('"')
|
||||
and String.endswith('"')):
|
||||
String = String.strip('"')
|
||||
elif (
|
||||
strip != 1
|
||||
and String.startswith("'")
|
||||
and String.endswith("'")):
|
||||
String = String.strip("'")
|
||||
else:
|
||||
break
|
||||
return String
|
||||
|
||||
def StandardVariableName(Variable):
|
||||
Variable = Variable.casefold()
|
||||
Variable = Variable.replace('_', '').replace(' ', '')
|
||||
return Variable
|
||||
|
||||
#def DictionaryToJsonStr(Dict, BaseIndentation=0):
|
||||
#BI = '\t'*BaseIndentation
|
||||
#JsonStr = BI+'{\n'
|
||||
#for k, v in Dict.items():
|
||||
#JsonStr += BI+'\t"'+k+'" : "'+v+'",\n'
|
||||
#JsonStr = JsonStr[:-2]
|
||||
#JsonStr += '\n'+BI+'}'
|
||||
#return JsonStr
|
||||
|
||||
def StringToKeyValuePair(String, Seprator):
|
||||
SepratorAt = String.find(Seprator)
|
||||
if SepratorAt >= 0:
|
||||
Key = String[:SepratorAt]
|
||||
Value = String[SepratorAt+1:]
|
||||
return Key, Value
|
||||
else:
|
||||
return "", String
|
||||
|
||||
def FormatStrForDictinary(String):
|
||||
String = String.strip(" \n\r")
|
||||
return UnquoteString(String)
|
||||
|
||||
def StrListToDictionary(
|
||||
List,
|
||||
Seprator = '=',
|
||||
FormatFunction = FormatStrForDictinary):
|
||||
Dictionary = {}
|
||||
for i in List:
|
||||
k, v = StringToKeyValuePair(i, Seprator)
|
||||
k, v = FormatFunction(k), FormatFunction(v)
|
||||
if len(k) > 0:
|
||||
Dictionary[k] = v
|
||||
return Dictionary
|
||||
@@ -0,0 +1,29 @@
|
||||
from os.path import isfile as DoesFileExist
|
||||
|
||||
from .DataStructureManupulations import ConvertToStandardPathFormat
|
||||
|
||||
def ReadTextFile(FilePath):
|
||||
FilePath = ConvertToStandardPathFormat(FilePath)
|
||||
if DoesFileExist(FilePath) is True:
|
||||
File = open(FilePath)
|
||||
ReadFile = File.read()
|
||||
File.close()
|
||||
return ReadFile
|
||||
else:
|
||||
return ''
|
||||
|
||||
def ReadlinesTextFile(FilePath):
|
||||
String = ReadTextFile(FilePath)
|
||||
return String.split('\n')
|
||||
|
||||
def WriteTextFiles(FilePath, Text):
|
||||
if type(Text) != str:
|
||||
Text = '\n'.join(Text)
|
||||
File = open(FilePath, 'w')
|
||||
File.write(Text)
|
||||
File.close()
|
||||
|
||||
def WriteBinaryToFile(Filepath, Data):
|
||||
File=open(Filepath, 'wb')
|
||||
File.write(Data)
|
||||
File.close()
|
||||
@@ -0,0 +1,8 @@
|
||||
import ssl
|
||||
from urllib.request import urlopen
|
||||
|
||||
HttpsContext = ssl.create_default_context()
|
||||
|
||||
def Download(Url):
|
||||
return urlopen(Url, context=HttpsContext).read()
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
import os
|
||||
|
||||
def CallFuncInDir(Directory, Function, *args, **kwArgs):
|
||||
CurrentDir = os.getcwd()
|
||||
os.chdir(Directory)
|
||||
Function(*args, **kwArgs)
|
||||
os.chdir(CurrentDir)
|
||||
|
||||
# return True if operation succesful and False if failed
|
||||
def CreateDir(Directory):
|
||||
if not os.path.isfile(Directory):
|
||||
if not os.path.isdir(Directory):
|
||||
os.mkdir(Directory)
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
Reference in New Issue
Block a user