| Index: experimental/PdfViewer/spec2def.py
 | 
| ===================================================================
 | 
| --- experimental/PdfViewer/spec2def.py	(revision 9812)
 | 
| +++ experimental/PdfViewer/spec2def.py	(working copy)
 | 
| @@ -292,7 +292,7 @@
 | 
|    
 | 
|    return ret
 | 
|    
 | 
| -def commitRow():
 | 
| +def commitRow(fspecPy):
 | 
|    global columnValues
 | 
|    global emitedDitionaryName
 | 
|    global table
 | 
| @@ -393,27 +393,27 @@
 | 
|      comment = fix(tableToClassName[tableKey][1])
 | 
|      
 | 
|      if len(tableToClassName[tableKey]) >= 3 and tableToClassName[tableKey][2] != '':
 | 
| -      print('  pdfspec.addClass(\'' + emitedDitionaryName + '\', \'' + tableToClassName[tableKey][2] + '\', \'' + comment + '\')\\')
 | 
| +      fspecPy.write('  pdfspec.addClass(\'' + emitedDitionaryName + '\', \'' + tableToClassName[tableKey][2] + '\', \'' + comment + '\')\\\n')
 | 
|      else:
 | 
| -      print('  pdfspec.addClass(\'' + emitedDitionaryName + '\', \'Dictionary\', \'' + comment + '\')\\')
 | 
| +      fspecPy.write('  pdfspec.addClass(\'' + emitedDitionaryName + '\', \'Dictionary\', \'' + comment + '\')\\\n')
 | 
|  
 | 
|    if len(tableToClassName[tableKey]) >= 4 and columnValues[0] in tableToClassName[tableKey][3]:
 | 
|      required = True
 | 
|  
 | 
|    if required:
 | 
| -    print('      .required(\'NULL\')\\')
 | 
| +    fspecPy.write('      .required(\'NULL\')\\\n')
 | 
|    else:
 | 
| -    print('      .optional()\\')
 | 
| +    fspecPy.write('      .optional()\\\n')
 | 
|      
 | 
| -  print('          .field(\'' + columnValues[0] + '\')\\')
 | 
| -  print('          .name(\'' + columnValues[0] + '\')\\')
 | 
| -  print('          .type(\'' + columnValues[1] + '\')\\')
 | 
| -  print('          .comment(\'' + columnValues[2] + '\')\\')
 | 
| +  fspecPy.write('          .field(\'' + columnValues[0] + '\')\\\n')
 | 
| +  fspecPy.write('          .name(\'' + columnValues[0] + '\')\\\n')
 | 
| +  fspecPy.write('          .type(\'' + columnValues[1] + '\')\\\n')
 | 
| +  fspecPy.write('          .comment(\'' + columnValues[2] + '\')\\\n')
 | 
|  
 | 
|    if len(tableToClassName[tableKey]) >= 4 and columnValues[0] in tableToClassName[tableKey][3]:
 | 
| -    print('          .must(' + tableToClassName[tableKey][3][columnValues[0]] + ')\\')
 | 
| +    fspecPy.write('          .must(' + tableToClassName[tableKey][3][columnValues[0]] + ')\\\n')
 | 
|  
 | 
| -  print('          .done().done()\\')
 | 
| +  fspecPy.write('          .done().done()\\\n')
 | 
|    
 | 
|    
 | 
|    columnValues = None
 | 
| @@ -429,7 +429,7 @@
 | 
|    if third.rstrip() != '':
 | 
|      columnValues[2] = columnValues[2] + '\n' + third.rstrip()
 | 
|  
 | 
| -def rebaseTable(line):
 | 
| +def rebaseTable(fspecPy, line):
 | 
|    global knownTypes
 | 
|    global columnWidth
 | 
|    
 | 
| @@ -445,7 +445,7 @@
 | 
|      i = i + 1
 | 
|      
 | 
|    if words[i].startswith('(Optional') or words[i].startswith('(Required'):
 | 
| -    commitRow()
 | 
| +    commitRow(fspecPy)
 | 
|      
 | 
|      columnWidth[0] = line.find(words[1])
 | 
|      
 | 
| @@ -458,24 +458,24 @@
 | 
|    return False
 | 
|      
 | 
|      
 | 
| -def stopTable():
 | 
| +def stopTable(fspecPy):
 | 
|    global tableHeaderFound
 | 
|    global emitedDitionaryName
 | 
|  
 | 
|    if not inTable():
 | 
|      return
 | 
|    
 | 
| -  commitRow()
 | 
| +  commitRow(fspecPy)
 | 
|    tableHeaderFound = False
 | 
|    emitedDitionaryName = ''
 | 
| -  print('      .done()')
 | 
| -  print
 | 
| +  fspecPy.write('      .done()\n')
 | 
| +  fspecPy.write('\n')
 | 
|      
 | 
|  
 | 
|  def killTable():
 | 
|    return
 | 
|  
 | 
| -def processLineCore(line):
 | 
| +def processLineCore(fspecPy, line):
 | 
|    global lines
 | 
|    global tableLine
 | 
|    global tableRow
 | 
| @@ -483,7 +483,7 @@
 | 
|    global columnValues
 | 
|    global mustFollowTableHeader
 | 
|    
 | 
| -  global fnewspec
 | 
| +  #global fnewspec
 | 
|    
 | 
|    lines = lines + 1
 | 
|    
 | 
| @@ -493,12 +493,12 @@
 | 
|    
 | 
|    words = line.split()
 | 
|    if len(words) == 0:
 | 
| -    stopTable()
 | 
| +    stopTable(fspecPy)
 | 
|      return False
 | 
|          
 | 
|    isTableHeader = re.search('^[\s]*(TABLE [0-9].[0-9][0-9]?)', striped)
 | 
|    if isTableHeader:
 | 
| -    stopTable()
 | 
| +    stopTable(fspecPy)
 | 
|      tableDescriptionFound(striped)
 | 
|      mustFollowTableHeader = True
 | 
|      return False
 | 
| @@ -535,7 +535,7 @@
 | 
|        newRow(first, second, third)
 | 
|        return True
 | 
|      
 | 
| -    if rebaseTable(striped):
 | 
| +    if rebaseTable(fspecPy, striped):
 | 
|        first = striped[0 : columnWidth[0]]
 | 
|        second = striped[columnWidth[0] : columnWidth[0] + columnWidth[1]]
 | 
|        third = striped[columnWidth[0] + columnWidth[1] :]
 | 
| @@ -549,15 +549,15 @@
 | 
|        return True
 | 
|        
 | 
|      if len(first.split()) > 1:
 | 
| -      stopTable()
 | 
| +      stopTable(fspecPy)
 | 
|        return False
 | 
|  
 | 
|      if first != '' and first[0] == ' ':
 | 
| -      stopTable()
 | 
| +      stopTable(fspecPy)
 | 
|        return False
 | 
|  
 | 
|      if first != '' and second != '' and third == '':
 | 
| -      stopTable()
 | 
| +      stopTable(fspecPy)
 | 
|        return False
 | 
|  
 | 
|      if first == '' and second != '' and second[0] != ' ':
 | 
| @@ -565,7 +565,7 @@
 | 
|          appendRow(second, third)
 | 
|          return True
 | 
|        else:
 | 
| -        stopTable()
 | 
| +        stopTable(fspecPy)
 | 
|          return False
 | 
|  
 | 
|      if first != '' and second != '' and third[0] != '(':
 | 
| @@ -573,61 +573,65 @@
 | 
|        return False
 | 
|        
 | 
|      if first == '' and second != '' and second[0] == ' ':
 | 
| -      stopTable()
 | 
| +      stopTable(fspecPy)
 | 
|        return False
 | 
|  
 | 
|      if first != '' and second != '' and third[0] == '(':
 | 
| -      commitRow()
 | 
| +      commitRow(fspecPy)
 | 
|        newRow(first, second, third)
 | 
|        return True
 | 
|      
 | 
|      return False
 | 
|    return False
 | 
|    
 | 
| -def processLine(line):
 | 
| -  global fnewspec
 | 
| +def processLine(fspecPy, line):
 | 
| +  #global fnewspec
 | 
|    
 | 
| -  inSpec = processLineCore(line)
 | 
| +  inSpec = processLineCore(fspecPy, line)
 | 
|    
 | 
|    #just return, use the next lines if you wish to rewrite spec
 | 
| -  #return
 | 
| +  return
 | 
|    
 | 
|    if inSpec:
 | 
|      #resize colum with types
 | 
|      line = line[:columnWidth[0] + columnWidth[1]] + (' ' * (60 - columnWidth[1])) + line[columnWidth[0] + columnWidth[1]:]
 | 
|      line = line[:columnWidth[0]] + (' ' * (40 - columnWidth[0])) + line[columnWidth[0]:]
 | 
|    
 | 
| -  fnewspec.write(line)
 | 
| +  #fnewspec.write(line)
 | 
|    
 | 
|  
 | 
|  def generateDef():
 | 
|    global lines
 | 
| -  global fnewspec
 | 
| +  #global fnewspec
 | 
|    
 | 
| -  fnewspec = open('PdfReference-okular-2.txt', 'w')
 | 
| +  #fnewspec = open('PdfReference-okular-2.txt', 'w')
 | 
|    
 | 
| -  print 'import datatypes'
 | 
| -  print
 | 
| +  # pdf spec in text format
 | 
| +  fspecText = open(sys.argv[1], 'r')
 | 
| +  
 | 
| +  # pdf spec in python directives 
 | 
| +  fspecPy = open(sys.argv[2], 'w')
 | 
| +  
 | 
| +  fspecPy.write('import datatypes\n')
 | 
| +  fspecPy.write('\n')
 | 
|  
 | 
| -  print 'def buildPdfSpec(pdfspec):'
 | 
| +  fspecPy.write('def buildPdfSpec(pdfspec):\n')
 | 
|    
 | 
| -  for line in sys.stdin:
 | 
| -    processLine(line)
 | 
| +  for line in fspecText:
 | 
| +    processLine(fspecPy, line)
 | 
|     
 | 
|    # close last table if it was not closed already 
 | 
| -  stopTable()
 | 
| +  stopTable(fspecPy)
 | 
|    
 | 
| -  print
 | 
| +  fspecPy.write('\n')
 | 
|  
 | 
| -  print 'def addDictionaryTypesTo(knowTypes):'  
 | 
| +  fspecPy.write('def addDictionaryTypesTo(knowTypes):\n')  
 | 
|    for e in tableToClassName:
 | 
| -    print('  knowTypes[\'' + tableToClassName[e][0] + '\'] = [\'SkPdf' + tableToClassName[e][0] + '*\', \'' + tableToClassName[e][0] + 'FromDictionary\', datatypes.CppNull(), \'ret->podofo()->GetDataType() == ePdfDataType_Dictionary\']')
 | 
| -  print
 | 
| -  print
 | 
| -
 | 
| +    fspecPy.write('  knowTypes[\'' + tableToClassName[e][0] + '\'] = [\'SkPdf' + tableToClassName[e][0] + '*\', \'SkPdf' + tableToClassName[e][0] + 'FromDictionary\', datatypes.CppNull(), \'ret->podofo()->GetDataType() == PoDoFo::ePdfDataType_Dictionary\', \'A_DICTIONARY\']\n')
 | 
| +  fspecPy.write('\n')
 | 
|    
 | 
|    #print lines
 | 
| -  fnewspec.close()
 | 
| +  #fnewspec.close()
 | 
|  
 | 
|  if '__main__' == __name__:
 | 
|    sys.exit(generateDef())
 | 
| 
 |