2015-11-07 5 views
7

Ich habe kürzlich python-WikEdDiff Paket zu meinem System installiert. Ich verstehe, dass es eine Python-Erweiterung des ursprünglichen JavaScript WikEdDiff-Tools ist. Ich habe versucht, es zu benutzen, aber ich konnte keine Dokumentation dafür finden. Ich bin bei der Verwendung von WikEdDiff.diff() fest. Ich wünsche die anderen Funktionen dieser Klasse verwenden, wie getFragments() und andere, aber auf Kontrolle, es zeigt den folgenden Fehler:Wie benutze ich Python-WikEdDiff?

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python3.4/dist-packages/WikEdDiff/diff.py", line 1123, in detectBlocks 
    self.getSameBlocks() 
    File "/usr/local/lib/python3.4/dist-packages/WikEdDiff/diff.py", line 1211, in getSameBlocks 
    while j is not None and self.oldText.tokens[j].link is None: 
IndexError: list index out of range 

Auf Prüfung, fand ich heraus, dass die tokens[] Struktur in dem Objekt bleibt leer, während es hätte initialisiert werden sollen.

Gibt es eine Initialisierungsfunktion, die ich abgesehen vom Standardkonstruktor aufrufen muss? Oder hat es etwas mit der `WikEdDiffConfig'-Konfigurationsstruktur zu tun, die ich an den Konstruktor übergeben habe?

+0

Es gibt ein Python3 Beispiel hier view-source: https: //github.com/lahwaacz/python-wikeddiff/blob/master/WikEdDiff/__init__.py –

Antwort

3

Sie erhalten diesen Fehler, da das WikEdDiff Objekt intern innerhalb diff() geklärt wurde, wie in this section des Codes angezeigt:

def diff(self, oldString, newString): 
    ... 
    # Free memory 
    self.newText.tokens.clear() 
    self.oldText.tokens.clear() 
    # Assemble blocks into fragment table 
    fragments = self.getDiffFragments() 
    # Free memory 
    self.blocks.clear() 
    self.groups.clear() 
    self.sections.clear() 
    ... 
    return fragments 

Wenn Sie nur die Fragmente benötigen, verwenden Sie die zurückgegebenen Variablen von diff() wie folgt aus: