mirror of
https://github.com/Ralim/IronOS.git
synced 2025-02-26 07:53:55 +00:00
Cleanup generator code to handle \n in messages
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
#coding=utf-8
|
# coding=utf-8
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
@@ -81,60 +81,64 @@ def escapeC(s):
|
|||||||
|
|
||||||
def getConstants():
|
def getConstants():
|
||||||
# Extra constants that are used in the firmware that are shared across all languages
|
# Extra constants that are used in the firmware that are shared across all languages
|
||||||
consants =[]
|
consants = []
|
||||||
consants.append(('SymbolPlus','+'))
|
consants.append(('SymbolPlus', '+'))
|
||||||
consants.append(('SymbolMinus','-'))
|
consants.append(('SymbolMinus', '-'))
|
||||||
consants.append(('SymbolSpace',' '))
|
consants.append(('SymbolSpace', ' '))
|
||||||
consants.append(('SymbolDot','.'))
|
consants.append(('SymbolDot', '.'))
|
||||||
consants.append(('SymbolDegC','C'))
|
consants.append(('SymbolDegC', 'C'))
|
||||||
consants.append(('SymbolDegF','F'))
|
consants.append(('SymbolDegF', 'F'))
|
||||||
consants.append(('SymbolMinutes','M'))
|
consants.append(('SymbolMinutes', 'M'))
|
||||||
consants.append(('SymbolSeconds','S'))
|
consants.append(('SymbolSeconds', 'S'))
|
||||||
consants.append(('SymbolWatts','W'))
|
consants.append(('SymbolWatts', 'W'))
|
||||||
consants.append(('SymbolVolts','V'))
|
consants.append(('SymbolVolts', 'V'))
|
||||||
consants.append(('SymbolDC','DC'))
|
consants.append(('SymbolDC', 'DC'))
|
||||||
consants.append(('SymbolCellCount','S'))
|
consants.append(('SymbolCellCount', 'S'))
|
||||||
consants.append(('SymbolVersionNumber','V2.06'))
|
consants.append(('SymbolVersionNumber', 'V2.06'))
|
||||||
return consants
|
return consants
|
||||||
def getTipModelEnumTS80():
|
|
||||||
|
|
||||||
|
def getTipModelEnumTS80():
|
||||||
constants = []
|
constants = []
|
||||||
constants.append("B02")
|
constants.append("B02")
|
||||||
constants.append("D25")
|
constants.append("D25")
|
||||||
constants.append("TS80") # end of miniware
|
constants.append("TS80") # end of miniware
|
||||||
constants.append("User") # User
|
constants.append("User") # User
|
||||||
return constants
|
return constants
|
||||||
|
|
||||||
def getTipModelEnumTS100():
|
|
||||||
|
def getTipModelEnumTS100():
|
||||||
constants = []
|
constants = []
|
||||||
constants.append("B02")
|
constants.append("B02")
|
||||||
constants.append("D24")
|
constants.append("D24")
|
||||||
constants.append("BC2")
|
constants.append("BC2")
|
||||||
constants.append(" C1")
|
constants.append(" C1")
|
||||||
constants.append("TS100")# end of miniware
|
constants.append("TS100") # end of miniware
|
||||||
constants.append("BC2")
|
constants.append("BC2")
|
||||||
constants.append("Hakko")# end of hakko
|
constants.append("Hakko") # end of hakko
|
||||||
constants.append("User")
|
constants.append("User")
|
||||||
return constants
|
return constants
|
||||||
|
|
||||||
def getDebugMenu():
|
|
||||||
|
def getDebugMenu():
|
||||||
constants = []
|
constants = []
|
||||||
constants.append(datetime.today().strftime('%d-%m-%y'))
|
constants.append(datetime.today().strftime('%d-%m-%y'))
|
||||||
constants.append("HW G ")
|
constants.append("HW G ")
|
||||||
constants.append("HW M ")
|
constants.append("HW M ")
|
||||||
constants.append("HW P ")
|
constants.append("HW P ")
|
||||||
constants.append("Time ")
|
constants.append("Time ")
|
||||||
constants.append("Move ")
|
constants.append("Move ")
|
||||||
constants.append("RTip ")
|
constants.append("RTip ")
|
||||||
constants.append("CTip ")
|
constants.append("CTip ")
|
||||||
constants.append("CHan ")
|
constants.append("CHan ")
|
||||||
constants.append("Vin ")
|
constants.append("Vin ")
|
||||||
constants.append("PCB ") # PCB Version AKA IMU version
|
constants.append("PCB ") # PCB Version AKA IMU version
|
||||||
return constants
|
return constants
|
||||||
|
|
||||||
|
|
||||||
def getLetterCounts(defs, lang):
|
def getLetterCounts(defs, lang):
|
||||||
textList = []
|
textList = []
|
||||||
#iterate over all strings
|
# iterate over all strings
|
||||||
obj = lang['menuOptions']
|
obj = lang['menuOptions']
|
||||||
for mod in defs['menuOptions']:
|
for mod in defs['menuOptions']:
|
||||||
eid = mod['id']
|
eid = mod['id']
|
||||||
@@ -173,13 +177,13 @@ def getLetterCounts(defs, lang):
|
|||||||
for mod in defs['menuGroups']:
|
for mod in defs['menuGroups']:
|
||||||
eid = mod['id']
|
eid = mod['id']
|
||||||
textList.append(obj[eid]['desc'])
|
textList.append(obj[eid]['desc'])
|
||||||
constants = getConstants()
|
constants = getConstants()
|
||||||
for x in constants:
|
for x in constants:
|
||||||
textList.append(x[1])
|
textList.append(x[1])
|
||||||
textList.extend(getTipModelEnumTS100())
|
textList.extend(getTipModelEnumTS100())
|
||||||
textList.extend(getTipModelEnumTS80())
|
textList.extend(getTipModelEnumTS80())
|
||||||
textList.extend(getDebugMenu())
|
textList.extend(getDebugMenu())
|
||||||
|
|
||||||
# collapse all strings down into the composite letters and store totals for these
|
# collapse all strings down into the composite letters and store totals for these
|
||||||
|
|
||||||
symbolCounts = {}
|
symbolCounts = {}
|
||||||
@@ -187,26 +191,25 @@ def getLetterCounts(defs, lang):
|
|||||||
line = line.replace('\n', '').replace('\r', '')
|
line = line.replace('\n', '').replace('\r', '')
|
||||||
line = line.replace('\\n', '').replace('\\r', '')
|
line = line.replace('\\n', '').replace('\\r', '')
|
||||||
if len(line):
|
if len(line):
|
||||||
#print(line)
|
# print(line)
|
||||||
for letter in line:
|
for letter in line:
|
||||||
symbolCounts[letter] = symbolCounts.get(letter, 0) + 1
|
symbolCounts[letter] = symbolCounts.get(letter, 0) + 1
|
||||||
symbolCounts = sorted(
|
symbolCounts = sorted(
|
||||||
symbolCounts.items(),
|
symbolCounts.items(),
|
||||||
key=lambda kv: (kv[1],kv[0])) # swap to Big -> little sort order
|
key=lambda kv: (kv[1], kv[0])) # swap to Big -> little sort order
|
||||||
symbolCounts = list(map(lambda x: x[0], symbolCounts))
|
symbolCounts = list(map(lambda x: x[0], symbolCounts))
|
||||||
symbolCounts.reverse()
|
symbolCounts.reverse()
|
||||||
return symbolCounts
|
return symbolCounts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def getFontMapAndTable(textList):
|
def getFontMapAndTable(textList):
|
||||||
# the text list is sorted
|
# the text list is sorted
|
||||||
# allocate out these in their order as number codes
|
# allocate out these in their order as number codes
|
||||||
symbolMap = {}
|
symbolMap = {}
|
||||||
symbolMap['\n'] = '\\x01'
|
symbolMap['\n'] = '\\x01' # Force insert the newline char
|
||||||
index = 2 # start at 2, as 0= null terminator,1 = new line
|
index = 2 # start at 2, as 0= null terminator,1 = new line
|
||||||
forcedFirstSymbols = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
|
forcedFirstSymbols = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
|
||||||
#enforce numbers are first
|
# enforce numbers are first
|
||||||
for sym in forcedFirstSymbols:
|
for sym in forcedFirstSymbols:
|
||||||
symbolMap[sym] = "\\x%0.2X" % index
|
symbolMap[sym] = "\\x%0.2X" % index
|
||||||
index = index + 1
|
index = index + 1
|
||||||
@@ -229,12 +232,14 @@ def getFontMapAndTable(textList):
|
|||||||
print('Missing Large font element for {}'.format(sym))
|
print('Missing Large font element for {}'.format(sym))
|
||||||
exit(1)
|
exit(1)
|
||||||
fontLine = fontTable[sym]
|
fontLine = fontTable[sym]
|
||||||
fontTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym))
|
fontTableStrings.append(
|
||||||
|
fontLine + "//{} -> {}".format(symbolMap[sym], sym))
|
||||||
if sym not in fontSmallTable:
|
if sym not in fontSmallTable:
|
||||||
print('Missing Small font element for {}'.format(sym))
|
print('Missing Small font element for {}'.format(sym))
|
||||||
exit(1)
|
exit(1)
|
||||||
fontLine = fontSmallTable[sym]
|
fontLine = fontSmallTable[sym]
|
||||||
fontSmallTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym))
|
fontSmallTableStrings.append(
|
||||||
|
fontLine + "//{} -> {}".format(symbolMap[sym], sym))
|
||||||
|
|
||||||
for sym in textList:
|
for sym in textList:
|
||||||
if sym not in fontTable:
|
if sym not in fontTable:
|
||||||
@@ -242,12 +247,14 @@ def getFontMapAndTable(textList):
|
|||||||
exit(1)
|
exit(1)
|
||||||
if sym not in forcedFirstSymbols:
|
if sym not in forcedFirstSymbols:
|
||||||
fontLine = fontTable[sym]
|
fontLine = fontTable[sym]
|
||||||
fontTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym))
|
fontTableStrings.append(
|
||||||
|
fontLine + "//{} -> {}".format(symbolMap[sym], sym))
|
||||||
if sym not in fontSmallTable:
|
if sym not in fontSmallTable:
|
||||||
print('Missing Small font element for {}'.format(sym))
|
print('Missing Small font element for {}'.format(sym))
|
||||||
exit(1)
|
exit(1)
|
||||||
fontLine = fontSmallTable[sym]
|
fontLine = fontSmallTable[sym]
|
||||||
fontSmallTableStrings.append(fontLine + "//{} -> {}".format(symbolMap[sym],sym))
|
fontSmallTableStrings.append(
|
||||||
|
fontLine + "//{} -> {}".format(symbolMap[sym], sym))
|
||||||
outputTable = "const uint8_t USER_FONT_12[] = {" + to_unicode("\n")
|
outputTable = "const uint8_t USER_FONT_12[] = {" + to_unicode("\n")
|
||||||
for line in fontTableStrings:
|
for line in fontTableStrings:
|
||||||
# join font table int one large string
|
# join font table int one large string
|
||||||
@@ -265,7 +272,7 @@ def getFontMapAndTable(textList):
|
|||||||
def convStr(symbolConversionTable, text):
|
def convStr(symbolConversionTable, text):
|
||||||
# convert all of the symbols from the string into escapes for their content
|
# convert all of the symbols from the string into escapes for their content
|
||||||
outputString = ""
|
outputString = ""
|
||||||
for c in text.replace('\\r', '').replace('\\n','\n'):
|
for c in text.replace('\\r', '').replace('\\n', '\n'):
|
||||||
if c not in symbolConversionTable:
|
if c not in symbolConversionTable:
|
||||||
print('Missing font definition for {}'.format(c))
|
print('Missing font definition for {}'.format(c))
|
||||||
else:
|
else:
|
||||||
@@ -276,7 +283,7 @@ def convStr(symbolConversionTable, text):
|
|||||||
def writeLanguage(languageCode, defs, f):
|
def writeLanguage(languageCode, defs, f):
|
||||||
print("Generating block for " + languageCode)
|
print("Generating block for " + languageCode)
|
||||||
lang = langDict[languageCode]
|
lang = langDict[languageCode]
|
||||||
#Iterate over all of the text to build up the symbols & counts
|
# Iterate over all of the text to build up the symbols & counts
|
||||||
textList = getLetterCounts(defs, lang)
|
textList = getLetterCounts(defs, lang)
|
||||||
# From the letter counts, need to make a symbol translator & write out the font
|
# From the letter counts, need to make a symbol translator & write out the font
|
||||||
(fontTableText, symbolConversionTable) = getFontMapAndTable(textList)
|
(fontTableText, symbolConversionTable) = getFontMapAndTable(textList)
|
||||||
@@ -290,7 +297,6 @@ def writeLanguage(languageCode, defs, f):
|
|||||||
|
|
||||||
f.write(to_unicode("// ---- " + langName + " ----\n\n"))
|
f.write(to_unicode("// ---- " + langName + " ----\n\n"))
|
||||||
|
|
||||||
|
|
||||||
# ----- Writing SettingsDescriptions
|
# ----- Writing SettingsDescriptions
|
||||||
obj = lang['menuOptions']
|
obj = lang['menuOptions']
|
||||||
f.write(to_unicode("const char* SettingsDescriptions[] = {\n"))
|
f.write(to_unicode("const char* SettingsDescriptions[] = {\n"))
|
||||||
@@ -316,14 +322,15 @@ def writeLanguage(languageCode, defs, f):
|
|||||||
|
|
||||||
for mod in defs['messages']:
|
for mod in defs['messages']:
|
||||||
eid = mod['id']
|
eid = mod['id']
|
||||||
if eid not in obj:
|
sourceText = ""
|
||||||
f.write(
|
if 'default' in mod:
|
||||||
|
sourceText = (mod['default'])
|
||||||
|
if eid in obj:
|
||||||
|
sourceText = (obj[eid])
|
||||||
|
translatedText = convStr(symbolConversionTable, sourceText)
|
||||||
|
f.write(
|
||||||
to_unicode("const char* " + eid + " = \"" +
|
to_unicode("const char* " + eid + " = \"" +
|
||||||
convStr(symbolConversionTable, (mod['default'])) + "\";"+ "//{} \n".format(mod['default'])))
|
translatedText + "\";" + "//{} \n".format(sourceText.replace('\n', '_'))))
|
||||||
else:
|
|
||||||
f.write(
|
|
||||||
to_unicode("const char* " + eid + " = \"" +
|
|
||||||
convStr(symbolConversionTable, (obj[eid])) + "\";"+ "//{} \n".format(obj[eid])))
|
|
||||||
|
|
||||||
f.write(to_unicode("\n"))
|
f.write(to_unicode("\n"))
|
||||||
|
|
||||||
@@ -335,7 +342,7 @@ def writeLanguage(languageCode, defs, f):
|
|||||||
eid = mod['id']
|
eid = mod['id']
|
||||||
f.write(
|
f.write(
|
||||||
to_unicode("const char* " + eid + " = \"" +
|
to_unicode("const char* " + eid + " = \"" +
|
||||||
convStr(symbolConversionTable, obj[eid]) + "\";"+ "//{} \n".format(obj[eid])))
|
convStr(symbolConversionTable, obj[eid]) + "\";" + "//{} \n".format(obj[eid])))
|
||||||
|
|
||||||
f.write(to_unicode("\n"))
|
f.write(to_unicode("\n"))
|
||||||
|
|
||||||
@@ -344,7 +351,7 @@ def writeLanguage(languageCode, defs, f):
|
|||||||
for x in constants:
|
for x in constants:
|
||||||
f.write(
|
f.write(
|
||||||
to_unicode("const char* " + x[0] + " = \"" +
|
to_unicode("const char* " + x[0] + " = \"" +
|
||||||
convStr(symbolConversionTable, x[1]) + "\";"+ "//{} \n".format(x[1])))
|
convStr(symbolConversionTable, x[1]) + "\";" + "//{} \n".format(x[1])))
|
||||||
|
|
||||||
f.write(to_unicode("\n"))
|
f.write(to_unicode("\n"))
|
||||||
# Write out tip model strings
|
# Write out tip model strings
|
||||||
@@ -352,19 +359,22 @@ def writeLanguage(languageCode, defs, f):
|
|||||||
f.write(to_unicode("const char* TipModelStrings[] = {\n"))
|
f.write(to_unicode("const char* TipModelStrings[] = {\n"))
|
||||||
f.write(to_unicode("#ifdef MODEL_TS100\n"))
|
f.write(to_unicode("#ifdef MODEL_TS100\n"))
|
||||||
for c in getTipModelEnumTS100():
|
for c in getTipModelEnumTS100():
|
||||||
f.write(to_unicode("\t \"" + convStr(symbolConversionTable, c) + "\","+ "//{} \n".format(c)))
|
f.write(to_unicode("\t \"" + convStr(symbolConversionTable,
|
||||||
|
c) + "\"," + "//{} \n".format(c)))
|
||||||
f.write(to_unicode("#else\n"))
|
f.write(to_unicode("#else\n"))
|
||||||
for c in getTipModelEnumTS80():
|
for c in getTipModelEnumTS80():
|
||||||
f.write(to_unicode("\t \"" + convStr(symbolConversionTable, c) + "\","+ "//{} \n".format(c)))
|
f.write(to_unicode("\t \"" + convStr(symbolConversionTable,
|
||||||
|
c) + "\"," + "//{} \n".format(c)))
|
||||||
f.write(to_unicode("#endif\n"))
|
f.write(to_unicode("#endif\n"))
|
||||||
|
|
||||||
f.write(to_unicode("};\n\n"))
|
f.write(to_unicode("};\n\n"))
|
||||||
|
|
||||||
# Debug Menu
|
# Debug Menu
|
||||||
f.write(to_unicode("const char* DebugMenu[] = {\n"))
|
f.write(to_unicode("const char* DebugMenu[] = {\n"))
|
||||||
|
|
||||||
for c in getDebugMenu():
|
for c in getDebugMenu():
|
||||||
f.write(to_unicode("\t \"" + convStr(symbolConversionTable, c) + "\","+ "//{} \n".format(c)))
|
f.write(to_unicode("\t \"" + convStr(symbolConversionTable,
|
||||||
|
c) + "\"," + "//{} \n".format(c)))
|
||||||
f.write(to_unicode("};\n\n"))
|
f.write(to_unicode("};\n\n"))
|
||||||
|
|
||||||
# ----- Menu Options
|
# ----- Menu Options
|
||||||
@@ -392,12 +402,12 @@ def writeLanguage(languageCode, defs, f):
|
|||||||
convStr(symbolConversionTable, (obj[eid]['text2'][0])) +
|
convStr(symbolConversionTable, (obj[eid]['text2'][0])) +
|
||||||
"\", \"" +
|
"\", \"" +
|
||||||
convStr(symbolConversionTable, (obj[eid]['text2'][1])) +
|
convStr(symbolConversionTable, (obj[eid]['text2'][1])) +
|
||||||
"\" },"+ "//{} \n".format(obj[eid]['text2'])))
|
"\" }," + "//{} \n".format(obj[eid]['text2'])))
|
||||||
else:
|
else:
|
||||||
f.write(
|
f.write(
|
||||||
to_unicode("{ \"" +
|
to_unicode("{ \"" +
|
||||||
convStr(symbolConversionTable, (obj[eid]['text'])) +
|
convStr(symbolConversionTable, (obj[eid]['text'])) +
|
||||||
"\" },"+ "//{} \n".format(obj[eid]['text'])))
|
"\" }," + "//{} \n".format(obj[eid]['text'])))
|
||||||
if 'feature' in mod:
|
if 'feature' in mod:
|
||||||
f.write(to_unicode("#endif\n"))
|
f.write(to_unicode("#endif\n"))
|
||||||
|
|
||||||
@@ -416,7 +426,7 @@ def writeLanguage(languageCode, defs, f):
|
|||||||
f.write(
|
f.write(
|
||||||
to_unicode("\"" +
|
to_unicode("\"" +
|
||||||
convStr(symbolConversionTable, (obj[eid]['text2'][0]) +
|
convStr(symbolConversionTable, (obj[eid]['text2'][0]) +
|
||||||
"\\n" + obj[eid]['text2'][1]) + "\","+ "//{} \n".format(obj[eid]['text2'])))
|
"\\n" + obj[eid]['text2'][1]) + "\"," + "//{} \n".format(obj[eid]['text2'])))
|
||||||
|
|
||||||
f.write(to_unicode("};\n\n"))
|
f.write(to_unicode("};\n\n"))
|
||||||
|
|
||||||
@@ -433,7 +443,7 @@ def writeLanguage(languageCode, defs, f):
|
|||||||
f.write(
|
f.write(
|
||||||
to_unicode("\"" +
|
to_unicode("\"" +
|
||||||
convStr(symbolConversionTable, (obj[eid]['desc'])) +
|
convStr(symbolConversionTable, (obj[eid]['desc'])) +
|
||||||
"\","+ "//{} \n".format(obj[eid]['desc'])))
|
"\"," + "//{} \n".format(obj[eid]['desc'])))
|
||||||
|
|
||||||
f.write(to_unicode("};\n\n"))
|
f.write(to_unicode("};\n\n"))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user