def exportFields(self): """ Converts data from values to a compact data structure for being used to compute a checksum in JavaScript. """ # # Export structures: # 1. [ name, 1, test, [value1, ...] ] # 2. [ name, 2, value ] # 3. [ name, 3, test, default? ] # export = [] for key in sorted(self.__fields): source = self.__fields[key] content = [] content.append("'%s'" % key) # We have available values to permutate for if "values" in source: values = source["values"] if "detect" in source and len(values) > 1: # EXPORT STRUCT 1 content.append("1") content.append(source["detect"]) if "default" in source: # Make sure that default value is first in values = values[:] values.remove(source["default"]) values.insert(0, source["default"]) content.append(toJson(values)) else: # EXPORT STRUCT 2 content.append("2") content.append(toJson(values[0])) # Has no relevance for permutation, just insert the test else: if "detect" in source: # EXPORT STRUCT 3 content.append("3") # Add detection class content.append(source["detect"]) # Add default value if available if "default" in source: content.append(toJson(source["default"])) else: # Has no detection and no permutation. Ignore it completely continue export.append("[%s]" % ",".join(content)) if export: return "[%s]" % ",".join(export) else: return None
def encode(content, name): if callback: return "%s(%s,'%s');" % (callback, toJson(content), name) else: return toJson(content)
def writeJson(dst, content): return writeFile(dst, toJson(content))