snipplrCallback({"title":"Color-Coded `svn status` (v3)","source":"<pre class=\"python python\" style=\"font-family:monospace;\"><ol><li class=\"li1\"><div class=\"de1\"><span class=\"co1\">#!\/usr\/bin\/env python<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">&nbsp;<\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"st0\">&quot;&quot;&quot;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"st0\"> Author: Saophalkun Ponlu (http:\/\/phalkunz.com)<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"st0\"> Contact: phalkunz@gmail.com<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"st0\"> Date: May 23, 2009<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"st0\"> Modified: June 15, 2009<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">&nbsp;<\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"st0\"> Additional modifications:<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"st0\"> Author: Phil Christensen (http:\/\/bubblehouse.org)<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"st0\"> Contact: phil@bubblehouse.org<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"st0\"> Date: February 22, 2010<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"st0\">&quot;&quot;&quot;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">&nbsp;<\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"kw1\">import<\/span> <span class=\"kw3\">os<\/span>, <span class=\"kw3\">sys<\/span>, <span class=\"kw3\">re<\/span>, <span class=\"kw3\">subprocess<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">&nbsp;<\/div><\/li><li class=\"li1\"><div class=\"de1\">tabsize = <span class=\"nu0\">4<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">&nbsp;<\/div><\/li><li class=\"li1\"><div class=\"de1\">colorizedSubcommands = <span class=\"br0\">&#40;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">\t<span class=\"st0\">'status'<\/span>,<\/div><\/li><li class=\"li1\"><div class=\"de1\">\t<span class=\"st0\">'add'<\/span>,<\/div><\/li><li class=\"li1\"><div class=\"de1\">\t<span class=\"st0\">'remove'<\/span>,<\/div><\/li><li class=\"li1\"><div class=\"de1\">\t<span class=\"st0\">'diff'<\/span>,<\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">&nbsp;<\/div><\/li><li class=\"li1\"><div class=\"de1\">statusColors = <span class=\"br0\">&#123;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"st0\">&quot;M&quot;<\/span>     : <span class=\"st0\">&quot;31&quot;<\/span>,     <span class=\"co1\"># red <\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"st0\">&quot;<span class=\"es0\">\\?<\/span>&quot;<\/span>    : <span class=\"st0\">&quot;37&quot;<\/span>,     <span class=\"co1\"># grey<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"st0\">&quot;A&quot;<\/span>     : <span class=\"st0\">&quot;32&quot;<\/span>,     <span class=\"co1\"># green<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"st0\">&quot;X&quot;<\/span>     : <span class=\"st0\">&quot;33&quot;<\/span>,     <span class=\"co1\"># yellow<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"st0\">&quot;C&quot;<\/span>     : <span class=\"st0\">&quot;30;41&quot;<\/span>,  <span class=\"co1\"># black on red<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"st0\">&quot;-&quot;<\/span>     : <span class=\"st0\">&quot;31&quot;<\/span>,     <span class=\"co1\"># red<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"st0\">&quot;D&quot;<\/span>     : <span class=\"st0\">&quot;31;1&quot;<\/span>,   <span class=\"co1\"># bold red<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"st0\">&quot;<span class=\"es0\">\\+<\/span>&quot;<\/span>    : <span class=\"st0\">&quot;32&quot;<\/span>,     <span class=\"co1\"># green<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"br0\">&#125;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">&nbsp;<\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"kw1\">def<\/span> colorize<span class=\"br0\">&#40;<\/span>line<span class=\"br0\">&#41;<\/span>: <\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"kw1\">for<\/span> color <span class=\"kw1\">in<\/span> statusColors:<\/div><\/li><li class=\"li1\"><div class=\"de1\">        <span class=\"kw1\">if<\/span> <span class=\"kw3\">re<\/span>.<span class=\"me1\">match<\/span><span class=\"br0\">&#40;<\/span>color, line<span class=\"br0\">&#41;<\/span>:<\/div><\/li><li class=\"li1\"><div class=\"de1\">            <span class=\"kw1\">return<\/span> <span class=\"st0\">''<\/span>.<span class=\"me1\">join<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;<span class=\"es0\">\\0<\/span>01<span class=\"es0\">\\0<\/span>33[&quot;<\/span>, statusColors<span class=\"br0\">&#91;<\/span>color<span class=\"br0\">&#93;<\/span>, <span class=\"st0\">&quot;m&quot;<\/span>, line, <span class=\"st0\">&quot;<span class=\"es0\">\\0<\/span>33[m<span class=\"es0\">\\0<\/span>02&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"kw1\">else<\/span>:<\/div><\/li><li class=\"li1\"><div class=\"de1\">        <span class=\"kw1\">return<\/span> line<\/div><\/li><li class=\"li1\"><div class=\"de1\">&nbsp;<\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"kw1\">def<\/span> escape<span class=\"br0\">&#40;<\/span>s<span class=\"br0\">&#41;<\/span>:<\/div><\/li><li class=\"li1\"><div class=\"de1\">    s = s.<span class=\"me1\">replace<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'$'<\/span>, r<span class=\"st0\">'<span class=\"es0\">\\$<\/span>'<\/span><span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    s = s.<span class=\"me1\">replace<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'&quot;'<\/span>, r<span class=\"st0\">'<span class=\"es0\">\\&quot;<\/span>'<\/span><span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    s = s.<span class=\"me1\">replace<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'`'<\/span>, r<span class=\"st0\">'<span class=\"es0\">\\`<\/span>'<\/span><span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"kw1\">return<\/span> s<\/div><\/li><li class=\"li1\"><div class=\"de1\">&nbsp;<\/div><\/li><li class=\"li1\"><div class=\"de1\">passthru = <span class=\"kw1\">lambda<\/span> x: x<\/div><\/li><li class=\"li1\"><div class=\"de1\">quoted = <span class=\"kw1\">lambda<\/span> x: <span class=\"st0\">'&quot;%s&quot;'<\/span> <span class=\"sy0\">%<\/span> escape<span class=\"br0\">&#40;<\/span>x<span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">&nbsp;<\/div><\/li><li class=\"li1\"><div class=\"de1\"><span class=\"kw1\">if<\/span> __name__ == <span class=\"st0\">&quot;__main__&quot;<\/span>:<\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"kw3\">cmd<\/span> = <span class=\"st0\">' '<\/span>.<span class=\"me1\">join<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#91;<\/span><span class=\"st0\">'svn'<\/span><span class=\"br0\">&#93;<\/span>+<span class=\"br0\">&#91;<\/span><span class=\"br0\">&#40;<\/span>passthru, quoted<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"st0\">' '<\/span> <span class=\"kw1\">in<\/span> arg<span class=\"br0\">&#93;<\/span><span class=\"br0\">&#40;<\/span>arg<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">for<\/span> arg <span class=\"kw1\">in<\/span> <span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span>:<span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    output = <span class=\"kw3\">subprocess<\/span>.<span class=\"me1\">Popen<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">cmd<\/span>, shell=<span class=\"kw2\">True<\/span>, stdout=<span class=\"kw3\">subprocess<\/span>.<span class=\"me1\">PIPE<\/span><span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    cancelled = <span class=\"kw2\">False<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">    <span class=\"kw1\">for<\/span> line <span class=\"kw1\">in<\/span> output.<span class=\"me1\">stdout<\/span>:<\/div><\/li><li class=\"li1\"><div class=\"de1\">        line = line.<span class=\"me1\">expandtabs<\/span><span class=\"br0\">&#40;<\/span>tabsize<span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">        <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span> <span class=\"kw1\">in<\/span> colorizedSubcommands<span class=\"br0\">&#41;<\/span>:<\/div><\/li><li class=\"li1\"><div class=\"de1\">            line = colorize<span class=\"br0\">&#40;<\/span>line<span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">        <span class=\"kw1\">try<\/span>:<\/div><\/li><li class=\"li1\"><div class=\"de1\">            <span class=\"kw3\">sys<\/span>.<span class=\"me1\">stdout<\/span>.<span class=\"me1\">write<\/span><span class=\"br0\">&#40;<\/span>line<span class=\"br0\">&#41;<\/span><\/div><\/li><li class=\"li1\"><div class=\"de1\">        <span class=\"kw1\">except<\/span>:<\/div><\/li><li class=\"li1\"><div class=\"de1\">            <span class=\"kw3\">sys<\/span>.<span class=\"me1\">exit<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><\/div><\/li><\/ol><\/pre>","link":"http:\/\/snipplr.com\/view\/28748\/colorcoded-svn-status-v3\/","id":"28748"});
