snipplrCallback({"id":28748,"title":"colorcoded-svn-status-v3","source":"
#!\/usr\/bin\/env python<\/span><\/div><\/li> <\/div><\/li> """<\/span><\/div><\/li> Author: Saophalkun Ponlu (http:\/\/phalkunz.com)<\/span><\/div><\/li> Contact: phalkunz@gmail.com<\/span><\/div><\/li> Date: May 23, 2009<\/span><\/div><\/li> Modified: June 15, 2009<\/span><\/div><\/li> <\/div><\/li> Additional modifications:<\/span><\/div><\/li> Author: Phil Christensen (http:\/\/bubblehouse.org)<\/span><\/div><\/li> Contact: phil@bubblehouse.org<\/span><\/div><\/li> Date: February 22, 2010<\/span><\/div><\/li> """<\/span><\/div><\/li> <\/div><\/li> import<\/span> os<\/span>,<\/span> sys<\/span>,<\/span> re<\/span>,<\/span> subprocess<\/span><\/div><\/li> <\/div><\/li> tabsize =<\/span> 4<\/span><\/div><\/li> <\/div><\/li> colorizedSubcommands =<\/span> (<\/span><\/div><\/li> \t'status'<\/span>,<\/span><\/div><\/li> \t'add'<\/span>,<\/span><\/div><\/li> \t'remove'<\/span>,<\/span><\/div><\/li> \t'diff'<\/span>,<\/span><\/div><\/li> )<\/span><\/div><\/li> <\/div><\/li> statusColors =<\/span> {<\/span><\/div><\/li> "M"<\/span> : "31"<\/span>,<\/span> # red <\/span><\/div><\/li> "\\?<\/span>"<\/span> : "37"<\/span>,<\/span> # grey<\/span><\/div><\/li> "A"<\/span> : "32"<\/span>,<\/span> # green<\/span><\/div><\/li> "X"<\/span> : "33"<\/span>,<\/span> # yellow<\/span><\/div><\/li> "C"<\/span> : "30;41"<\/span>,<\/span> # black on red<\/span><\/div><\/li> "-"<\/span> : "31"<\/span>,<\/span> # red<\/span><\/div><\/li> "D"<\/span> : "31;1"<\/span>,<\/span> # bold red<\/span><\/div><\/li> "\\+<\/span>"<\/span> : "32"<\/span>,<\/span> # green<\/span><\/div><\/li> }<\/span><\/div><\/li> <\/div><\/li> def<\/span> colorize(<\/span>line)<\/span>: <\/div><\/li> for<\/span> color in<\/span> statusColors:<\/div><\/li> if<\/span> re<\/span>.match<\/span>(<\/span>color,<\/span> line)<\/span>:<\/div><\/li> return<\/span> ''<\/span>.join<\/span>(<\/span>(<\/span>"\\0<\/span>01\\0<\/span>33["<\/span>,<\/span> statusColors[<\/span>color]<\/span>,<\/span> "m"<\/span>,<\/span> line,<\/span> "\\0<\/span>33[m\\0<\/span>02"<\/span>)<\/span>)<\/span><\/div><\/li> else<\/span>:<\/div><\/li> return<\/span> line<\/div><\/li> <\/div><\/li> def<\/span> escape(<\/span>s)<\/span>:<\/div><\/li> s =<\/span> s.replace<\/span>(<\/span>'$'<\/span>,<\/span> r'\\$<\/span>'<\/span>)<\/span><\/div><\/li> s =<\/span> s.replace<\/span>(<\/span>'"'<\/span>,<\/span> r'\\"<\/span>'<\/span>)<\/span><\/div><\/li> s =<\/span> s.replace<\/span>(<\/span>'`'<\/span>,<\/span> r'\\`<\/span>'<\/span>)<\/span><\/div><\/li> return<\/span> s<\/div><\/li> <\/div><\/li> passthru =<\/span> lambda<\/span> x: x<\/div><\/li> quoted =<\/span> lambda<\/span> x: '"%s"'<\/span> % escape(<\/span>x)<\/span><\/div><\/li> <\/div><\/li> if<\/span> __name__ ==<\/span> "__main__"<\/span>:<\/div><\/li> cmd<\/span> =<\/span> ' '<\/span>.join<\/span>(<\/span>