Commit d1a792fe authored by Koichi Yasuoka's avatar Koichi Yasuoka
Browse files

bug fix

parent 9f293651
Loading
Loading
Loading
Loading
+5 −12
Original line number Diff line number Diff line
@@ -3,7 +3,6 @@

class UDPipeEntry(object):
  def __init__(self,result):
    self._result=result
    if "\n" in result:
      t=[UDPipeEntry("0\t_\t_\t_\t_\t_\t0\t_\t_\t_")]
      for r in result.split("\n"):
@@ -14,6 +13,7 @@ class UDPipeEntry(object):
        w.head=w if w._head==0 else t[i+w._head-w.id]
        w._parent=self
      self._tokens=t
      self._result=result
    else:
      w=result.split("\t")
      try:
@@ -21,7 +21,7 @@ class UDPipeEntry(object):
      except:
        w=[0]*10
      self.id,self.form,self.lemma,self.upos,self.xpos,self.feats,self._head,self.deprel,self.deps,self.misc=w if len(w)==10 else [0]*10
    self._useResult=True
      self._result=""
  def __setattr__(self,name,value):
    v=value
    if hasattr(self,name):
@@ -30,26 +30,19 @@ class UDPipeEntry(object):
        i=t.index(self)
        v=self if v==0 else t[i+v-self.id]
      if getattr(self,name)!=v:
        super(UDPipeEntry,self._parent).__setattr__("_result","")
        if name=="id":
          t=self._parent._tokens
          i=t.index(self)
          j=i+v-self.id
          super(UDPipeEntry,t[j]).__setattr__("id",t[i].id)
          super(UDPipeEntry,t[j]).__setattr__("_useResult",False)
          t[i],t[j]=t[j],t[i]
        super(UDPipeEntry,self).__setattr__("_useResult",False)
    super(UDPipeEntry,self).__setattr__(name,v)
  def __repr__(self):
    if self._useResult:
      if hasattr(self,"_tokens"):
        for t in self._tokens:
          if not t._useResult:
            self._useResult=False
            break
    if self._useResult:
    if self._result!="":
      r=self._result
    elif hasattr(self,"_tokens"):
      r="".join(str(t)+"\n" for t in self._tokens[1:])
      r="".join(str(t)+"\n" for t in self._tokens[1:]).replace("\n1\t","\n\n1\t")
    else:
      r="\t".join([str(self.id),self.form,self.lemma,self.upos,self.xpos,self.feats,str(0 if self.head is self else self.head.id),self.deprel,self.deps,self.misc])
    return r if type(r) is str else r.encode("utf-8")