2015-11-07 12 views
7

मैंने हाल ही में अपने सिस्टम में python-WikEdDiff पैकेज स्थापित किया है। मैं समझता हूं कि यह मूल जावास्क्रिप्ट WikEdDiff उपकरण का एक अजगर विस्तार है। मैंने इसका इस्तेमाल करने की कोशिश की लेकिन मुझे इसके लिए कोई दस्तावेज नहीं मिला। मैं WikEdDiff.diff() का उपयोग कर अटक गया हूं। मैं इस तरह के getFragments() और दूसरों के रूप में इस वर्ग के अन्य कार्यों, उपयोग करना चाहते हैं, लेकिन जाँच पर, यह निम्न त्रुटि दिखाता है:मैं अजगर-विकीडडिफ का उपयोग कैसे करूं?

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 

जाँच पर, मुझे पता चला है कि वस्तु में tokens[] संरचना जबकि खाली रहता है इसे शुरू किया जाना चाहिए था।

क्या कोई प्रारंभिक कार्य है जिसे मुझे डिफ़ॉल्ट कन्स्ट्रक्टर से अलग करने की आवश्यकता है? या यह 'WikEdDiffConfig' कॉन्फ़िगरेशन संरचना के साथ कुछ करने के लिए है जो मैंने निर्माता को पास किया है?

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 

तुम सिर्फ टुकड़े की जरूरत है, इस तरह diff() की लौटे चर का उपयोग:

+0

यहां एक पायथन 3 उदाहरण है स्रोत-स्रोत: https: //github.com/lahwaacz/python-wikeddiff/blob/master/WikEdDiff/__init__.py –

उत्तर

3

आप के रूप में कोड की this section में दिखाया गया है क्योंकि WikEdDiff वस्तु diff() अंदर आंतरिक रूप से मुक्त कर दिया गया यह त्रुटि प्राप्त,

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+ ] }' 
संबंधित मुद्दे