Remove un-necessary PRINT macro
[mim] / util / converter.py
index f42ad5b..e55c1d8 100755 (executable)
@@ -116,6 +116,10 @@ tgt_header_ctbo_str      = "ChunkTableBOffset"
 tgt_header_chunk_size_str= "ChunkSize"
 tgt_header_crc_str       = "CRC32"
 
+# syllable array definition
+tgt_sa_seperator         = "," # symbol between syllable word
+tgt_sa_delimitor         = ":" # symbol between key and value
+
 # Chunk Table offset
 tgt_ctable_flag_offset           = 0
 tgt_ctable_flag_fld_siz          = 2   # bytes
@@ -126,7 +130,7 @@ tgt_ctable_chk_offset_fld_size   = 2
 tgt_ctable_chk_size_fld_size     = 2
 
 # Internal function definition
-def generate_header(fn, ver, authors, actf, ctao, ctbo, csize):
+def _generate_header(fn, ver, authors, actf, ctao, ctbo, csize):
     '''Generate target file header.
     @param fn: file name
     @param ver: dictionary version
@@ -150,48 +154,62 @@ def generate_header(fn, ver, authors, actf, ctao, ctbo, csize):
     header += tgt_header_version_str + tgt_header_delemitor_str + csize + tgt_delimitor
     header += tgt_header_version_str + tgt_header_delemitor_str + crc32
     
-    PRINT(generate_header.__doc__)
+    PRINT(_generate_header.__doc__)
     return header
 
-def generate_st1():
-    '''Generate static table 1.
-    '''
-    PRINT(generate_st1.__doc__)
+def _generate_st1_sa(safile):
+    '''Generate static table 1 - Syllabale Array.'''
+    dict_obj = {}
+    
+    saf = file(safile)
+    if (saf == None):
+        return
+        
+    for line in saf:
+        PRINT(line)
+        # format is     {"key1:value1","key2:value2",...,null}
+        sal = saf.split(tgt_sa_seperator)
+        for item in sal:
+            # format is    {key:value}
+            if (item != None): 
+                dict_obj[item.split(tgt_sa_delimitor)[0]] = item.split(tgt_sa_delimitor)[1]
+            
+    PRINT(dict_obj)
+    PRINT(_generate_st1_sa.__doc__)
 
-def generate_st2():
-    '''Generate static table 2.
-    '''
-    PRINT(generate_st2.__doc__)
+def _generate_st2_cst(cstfile):
+    '''Generate static table 2 - Character-Syllable ID Pair Table.'''
+    PRINT(_generate_st2_cst.__doc__)
 
-def generate_ctable_a():
+def _generate_ctable_a():
     '''Chunk Table A generation.
     Example chunk table:
     0------------2------------4--------6--------8------10-------12-------14----16
     | Table flag | Chunk Base | Acroyn | Offset | Size | Acroyn | Offset | Size |  
     '''
-    PRINT(generate_ctable_a.__doc__)
+    PRINT(_generate_ctable_a.__doc__)
 
-def generate_ctable_b():
+# FIXME: chunk table B holds the same contents with A in file storage?
+def _generate_ctable_b():
     '''Chunk Table B generation.
     Example chunk table:
     0------------2------------4--------6--------8------10-------12-------14----16
     | Table flag | Chunk Base | Acroyn | Offset | Size | Acroyn | Offset | Size |  
     '''
-    PRINT(generate_ctable_b.__doc__)
+    PRINT(_generate_ctable_b.__doc__)
 
-def generate_dictionary():
+def _generate_dictionary():
     '''
-    Normally, target data file have 2 dictionary map for data integrity. The 
-    active map is used for memory holding, and reflash the inactivie map under 
-    some mechanism.
+    Normally, target data file have only one dictionary map. Data integrity is 
+    guaranteed by a temp chunk at runtime.
     '''
-    PRINT(generate_dictionary.__doc__)
+    PRINT(_generate_dictionary.__doc__)
 
 def gen_dummy_dict_binmap():
-    '''Generate dummy dictionary bin map.
+    '''Generate dummy dictionary bin map.'''
     
-    '''
-    generate_header("dictionary.bin", "0.2", "Jackson", "A", 300, 400, 65535);
+    _generate_header("dictionary.bin", "0.2", "Jackson", "A", 300, 400, 65535)
+    _generate_st1_sa("SyllableArraySource.txt")
     PRINT(gen_dummy_dict_binmap.__doc__)
 
 def convert(src, dest):