Ejemplo n.º 1
0
def _differ_split(row, guide):
    """Break row into segments using guide line"""
    line, left_number, right_number, gap = row

    if left_number and right_number:
        type = ""
    elif left_number:
        type = "remove"
    elif right_number:
        type = "add"

    segments = []
    pos = 2

    if guide:
        assert guide.startswith("? ")

        for m in _re_differ.finditer(guide, pos):
            if m.start() > pos:
                segments.append(
                    _item(text=sapi.escape(line[pos:m.start()]), type=None))
            segments.append(
                _item(text=sapi.escape(line[m.start():m.end()]),
                      type="change"))
            pos = m.end()

    segments.append(_item(text=sapi.escape(line[pos:]), type=None))

    return _item(gap=ezt.boolean(gap),
                 type=type,
                 segments=segments,
                 left_number=left_number,
                 right_number=right_number)
Ejemplo n.º 2
0
def _differ_split(row, guide):
  """Break row into segments using guide line"""
  line, left_number, right_number, gap = row

  if left_number and right_number:
    type = "" 
  elif left_number:
    type = "remove"
  elif right_number:
    type = "add"

  segments = []  
  pos = 2

  if guide:
    assert guide.startswith("? ")

    for m in _re_differ.finditer(guide, pos):
      if m.start() > pos:
        segments.append(_item(text=sapi.escape(line[pos:m.start()]), type=None))
      segments.append(_item(text=sapi.escape(line[m.start():m.end()]),
                            type="change"))
      pos = m.end()

  segments.append(_item(text=sapi.escape(line[pos:]), type=None))

  return _item(gap=ezt.boolean(gap), type=type, segments=segments,
               left_number=left_number, right_number=right_number)
Ejemplo n.º 3
0
def _mdiff_split(flag, line_number_text):
    """Break up row from mdiff output into segments"""
    line_number, text = line_number_text
    segments = []
    pos = 0
    while True:
        m = _re_mdiff.search(text, pos)
        if not m:
            segments.append(_item(text=sapi.escape(text[pos:]), type=None))
            break

        if m.start() > pos:
            segments.append(
                _item(text=sapi.escape(text[pos:m.start()]), type=None))

        if m.group(1) == "+":
            segments.append(_item(text=sapi.escape(m.group(2)), type="add"))
        elif m.group(1) == "-":
            segments.append(_item(text=sapi.escape(m.group(2)), type="remove"))
        elif m.group(1) == "^":
            segments.append(_item(text=sapi.escape(m.group(2)), type="change"))

        pos = m.end()

    return _item(segments=segments, line_number=line_number)
Ejemplo n.º 4
0
 def __getitem__(self, idx):
   item = self.annotation.__getitem__(idx)
   diff_url = None
   if item.prev_rev:
     diff_url = '%sr1=%s&r2=%s' % (self.diff_url, item.prev_rev, item.rev)
   thisline = link_includes(sapi.escape(item.text), self.repos,
                            self.path_parts, self.include_url)
   return _item(text=thisline, line_number=item.line_number,
                rev=item.rev, prev_rev=item.prev_rev,
                diff_url=diff_url, date=item.date, author=item.author)
Ejemplo n.º 5
0
 def __getitem__(self, idx):
   item = self.annotation.__getitem__(idx)
   diff_url = None
   if item.prev_rev:
     diff_url = '%sr1=%s&r2=%s' % (self.diff_url, item.prev_rev, item.rev)
   thisline = link_includes(sapi.escape(item.text), self.repos,
                            self.path_parts, self.include_url)
   return _item(text=thisline, line_number=item.line_number,
                rev=item.rev, prev_rev=item.prev_rev,
                diff_url=diff_url, date=item.date, author=item.author)
Ejemplo n.º 6
0
            to_item = _mdiff_split(flag, todata)
            yield _item(gap=ezt.boolean(gap), columns=(from_item, to_item))
            gap = False


_re_mdiff = re.compile("\0([+-^])(.*?)\1")


def _mdiff_split(flag, (line_number, text)):
    """Break up row from mdiff output into segments"""
    segments = []
    pos = 0
    while True:
        m = _re_mdiff.search(text, pos)
        if not m:
            segments.append(_item(text=sapi.escape(text[pos:]), type=None))
            break

        if m.start() > pos:
            segments.append(
                _item(text=sapi.escape(text[pos:m.start()]), type=None))

        if m.group(1) == "+":
            segments.append(_item(text=sapi.escape(m.group(2)), type="add"))
        elif m.group(1) == "-":
            segments.append(_item(text=sapi.escape(m.group(2)), type="remove"))
        elif m.group(1) == "^":
            segments.append(_item(text=sapi.escape(m.group(2)), type="change"))

        pos = m.end()
Ejemplo n.º 7
0
def htmlify(html):
    # if kconv module exists, convert Japanese character code to utf-8
    if multibyte == 1:
        html = toutf8(html)
    html = sapi.escape(html)
    return html
Ejemplo n.º 8
0
      had_changes = 1
      yield _item(gap=ezt.boolean(gap), columns=(from_item, to_item), type="intraline")
      gap = False
  if not had_changes:
    yield _item(type=_RCSDIFF_NO_CHANGES)

_re_mdiff = re.compile("\0([+-^])(.*?)\1")

def _mdiff_split(flag, (line_number, text)):
  """Break up row from mdiff output into segments"""
  segments = []
  pos = 0
  while True:
    m = _re_mdiff.search(text, pos)
    if not m:
      segments.append(_item(text=sapi.escape(text[pos:]), type=None))
      break

    if m.start() > pos:
      segments.append(_item(text=sapi.escape(text[pos:m.start()]), type=None))

    if m.group(1) == "+":
      segments.append(_item(text=sapi.escape(m.group(2)), type="add"))
    elif m.group(1) == "-":
      segments.append(_item(text=sapi.escape(m.group(2)), type="remove"))
    elif m.group(1) == "^":
      segments.append(_item(text=sapi.escape(m.group(2)), type="change"))

    pos = m.end()

  return _item(segments=segments, line_number=line_number)  
Ejemplo n.º 9
0
def htmlify(html):
  # if kconv module exists, convert Japanese character code to utf-8
  if multibyte == 1:
    html = toutf8(html)
  html = sapi.escape(html)
  return html