2015-11-07 23 views
7

Son zamanlarda sistemime python-WikEdDiff paketini yükledim. Anladığım kadarıyla, orijinal JavaScript WikEdDiff aracının bir python uzantısı. Kullanmaya çalıştım ama bunun için herhangi bir belge bulamadım. WikEdDiff.diff() kullanıyordum. Böyle getFragments() ve diğerleri gibi bu sınıfın diğer işlevleri kullanmak isteyen, ancak kontrol üzerinde, aşağıdaki hata gösterir:Python-WikEdDiff'i nasıl kullanırım?

denetimi üzerinde
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 

, ben nesnesinde tokens[] yapı ise boş kalır öğrendim başlatılmış olmalıydı.

Varsayılan kurucudan ayrılmam gereken bir başlatma işlevi var mı? Yoksa yapıcıya ilettiğim 'WikEdDiffConfig' yapılandırma yapısıyla ilgisi var mı? Sadece parçaları gerekiyorsa

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 

böyle diff() ait iade değişkeni kullanabilirsiniz: WikEdDiff nesne diff() içine dahili olarak aklandı çünkü kod this section gösterildiği gibi

+0

bir python3 örneği burada kaynağı görüntüle yok: https: //github.com/lahwaacz/python-wikeddiff/blob/master/WikEdDiff/__init__.py –

cevap

3

Sen, bu hatayı alıyorum

import WikEdDiff as WED 
config=WED.WikEdDiffConfig() 
w = WED.WikEdDiff(config) 
f = w.diff("abc", "efg") 
# do whatever you want with f, but don't use w 
print(' '.join([i.text+i.type for i in f])) 
# outputs '{ [ (> abc- ) abc< efg+ ] }'