diff --git a/hgext/beautifygraph.py b/hgext/beautifygraph.py --- a/hgext/beautifygraph.py +++ b/hgext/beautifygraph.py @@ -2,7 +2,7 @@ # beautifygraph.py - improve graph output by using Unicode characters '''This extension beautifies log -G output by using Unicode characters. - + A terminal with UTF-8 support and a monospace Unicode font are required. ''' @@ -20,40 +20,42 @@ testedwith = 'ships-with-hg-core' def extsetup(ui): - def convertedges(line): - def prettyedge(before, edge, after): - if edge == '~': return '\xE2\x95\xA7' # U+2567 ╧ - if edge == 'X': return '\xE2\x95\xB3' # U+2573 ╳ - if edge == '/': return '\xE2\x95\xB1' # U+2571 ╱ - if edge == '-': return '\xE2\x94\x80' # U+2500 ─ - if edge == '|': return '\xE2\x94\x82' # U+2502 │ - if edge == ':': return '\xE2\x94\x86' # U+2506 ┆ - if edge == '\\': return '\xE2\x95\xB2' # U+2572 ╲ - if edge == '+': - if before == ' ' and not after == ' ': return '\xE2\x94\x9C' # U+251C ├ - if after == ' ' and not before == ' ': return '\xE2\x94\xA4' # U+2524 ┤ - return '\xE2\x94\xBC' # U+253C ┼ - return edge + def convertedges(line): + def prettyedge(before, edge, after): + if edge == '~': return '\xE2\x95\xA7' # U+2567 ╧ + if edge == 'X': return '\xE2\x95\xB3' # U+2573 ╳ + if edge == '/': return '\xE2\x95\xB1' # U+2571 ╱ + if edge == '-': return '\xE2\x94\x80' # U+2500 ─ + if edge == '|': return '\xE2\x94\x82' # U+2502 │ + if edge == ':': return '\xE2\x94\x86' # U+2506 ┆ + if edge == '\\': return '\xE2\x95\xB2' # U+2572 ╲ + if edge == '+': + if before == ' ' and not after == ' ': + return '\xE2\x94\x9C' # U+251C ├ + if after == ' ' and not before == ' ': + return '\xE2\x94\xA4' # U+2524 ┤ + return '\xE2\x94\xBC' # U+253C ┼ + return edge line = ' %s ' % line - pretty = []; + pretty = [] for idx in xrange(len(line) - 2): - pretty.append(prettyedge(line[idx], line[idx+1], line[idx+2])) + pretty.append(prettyedge(line[idx], line[idx + 1], line[idx + 2])) return ''.join(pretty) - - def getprettygraphnode(orig, *args, **kwargs): - node = orig(*args, **kwargs) - if node == 'o': return '\xE2\x97\xAF' # U+25EF ◯ - if node == '@': return '\xE2\x8C\xBE' # U+233E ⌾ - if node == '*': return '\xE2\x88\x97' # U+2217 ∗ - if node == 'x': return '\xE2\x97\x8C' # U+25CC ◌ - if node == '_': return '\xE2\x95\xA4' # U+2564 ╤ - return node - def outputprettygraph(orig, ui, graph, *args, **kwargs): - if not ui.plain('graph') and encoding.encoding == "UTF-8": - (edges, text) = zip(*graph) - graph = zip([convertedges(e) for e in edges], text) - return orig(ui, graph, *args, **kwargs) + def getprettygraphnode(orig, *args, **kwargs): + node = orig(*args, **kwargs) + if node == 'o': return '\xE2\x97\xAF' # U+25EF ◯ + if node == '@': return '\xE2\x8C\xBE' # U+233E ⌾ + if node == '*': return '\xE2\x88\x97' # U+2217 ∗ + if node == 'x': return '\xE2\x97\x8C' # U+25CC ◌ + if node == '_': return '\xE2\x95\xA4' # U+2564 ╤ + return node - extensions.wrapfunction(graphmod, 'outputgraph', outputprettygraph) - extensions.wrapfunction(templatekw, 'getgraphnode', getprettygraphnode) + def outputprettygraph(orig, ui, graph, *args, **kwargs): + if not ui.plain('graph') and encoding.encoding == "UTF-8": + (edges, text) = zip(*graph) + graph = zip([convertedges(e) for e in edges], text) + return orig(ui, graph, *args, **kwargs) + + extensions.wrapfunction(graphmod, 'outputgraph', outputprettygraph) + extensions.wrapfunction(templatekw, 'getgraphnode', getprettygraphnode)