Ignore:
Timestamp:
04/24/24 13:54:14 (3 weeks ago)
Author:
István Váradi <ivaradi@…>
Branch:
python3
hg-Phase:
(<MercurialRepository 1 'hg:/home/ivaradi/mlx/hg' '/'>, 'public')
Message:

Support for delay codes that require explanations (re #386)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • dcdatagen.py

    r1145 r1146  
    2727# Row type: an actual delay code
    2828DELAYCODE = 2
     29
     30# Row type: an actual delay code requiring a textual explanation
     31DELAYCODE_EXPLANATION_REQUIRED = 3
    2932
    3033#----------------------------------------------------------------------------
     
    702705                    print("msgid \"%srow%d\"" % (poPrefix, rowIndex), file=poFile)
    703706                    generateMsgStr(poFile, columns[i])
    704             elif type==DELAYCODE:
     707            elif type in [DELAYCODE, DELAYCODE_EXPLANATION_REQUIRED]:
    705708                columnIndex = 0
    706709                for column in columns:
     
    739742                    continue
    740743
    741                 if type==DELAYCODE:
     744                if type in [DELAYCODE, DELAYCODE_EXPLANATION_REQUIRED]:
    742745                    print("    \"%s\": \"%s\"," % \
    743746                      (str(columns[codeIndex]).strip(), columns[meaningIndex][0].replace("\n", "")), file=dcdata)
     
    756759        tableMask = 1
    757760        for i in range(0, len(tablePrefixes)):
     761            print("_%s_code2explanationRequired = {" % (tablePrefixes[i],), file=dcdata)
     762
     763            columnIndexes = []
     764            for j in range(0, len(headings)):
     765                if ( (headingFlags[j]&tableMask)==tableMask ):
     766                    columnIndexes.append(j)
     767
     768            codeIndex = columnIndexes[0]
     769            meaningIndex = columnIndexes[2]
     770
     771            rowIndex = 0
     772            for (type, mask, columns) in rows:
     773                if (mask&tableMask)!=tableMask:
     774                    continue
     775
     776                if type in [DELAYCODE, DELAYCODE_EXPLANATION_REQUIRED]:
     777                    print("    \"%s\": %s," % \
     778                          (str(columns[codeIndex]).strip(),
     779                           "True" if type==DELAYCODE_EXPLANATION_REQUIRED else
     780                           "False"),
     781                          file = dcdata)
     782
     783            print("}", file=dcdata)
     784            print(file=dcdata)
     785
     786            tableMask <<= 1
     787
     788        print("def _isExplanationRequired(table, row):", file=dcdata)
     789        print("    code = row[0].strip()", file=dcdata)
     790        print("    return table[code] if code in table else false", file=dcdata)
     791        print(file=dcdata)
     792
     793        tableMask = 1
     794        for i in range(0, len(tablePrefixes)):
    758795
    759796            print("_%s_data = (" % (tablePrefixes[i],), file=dcdata)
    760             print("    lambda row: _extract(_%s_code2meaning, row)," % \
     797            print("    (lambda row: row[0].strip(),", file=dcdata)
     798            print("     lambda row: _extract(_%s_code2meaning, row)," % \
     799              (tablePrefixes[i],), file=dcdata)
     800            print("     lambda row: _isExplanationRequired(_%s_code2explanationRequired, row))," % \
    761801              (tablePrefixes[i],), file=dcdata)
    762802            print("    [", end=' ', file=dcdata)
     
    783823                    print("        (CAPTION, xstr(\"%srow%d\"))," % \
    784824                      (poPrefix, rowIndex), file=dcdata)
    785                 elif type==DELAYCODE:
     825                elif type in [DELAYCODE, DELAYCODE_EXPLANATION_REQUIRED]:
    786826                    print("        (DELAYCODE, [", file=dcdata)
    787827                    for j in columnIndexes:
Note: See TracChangeset for help on using the changeset viewer.