lib/subversion_extensions.rb in svn-command-0.0.6 vs lib/subversion_extensions.rb in svn-command-0.0.7

- old
+ new

@@ -11,26 +11,45 @@ class String def colorize_svn_status_lines if Subversion.color self.gsub(/^ *\?/) { $&.yellow.bold}. - gsub(/^ *A/) { $&.green.bold}. - gsub(/^ *M/) { $&.green.bold}. - gsub(/^ *D/) { $&.magenta.bold}. - gsub(/^ *C/) { $&.red.bold}. - gsub(/^ *~/) { $&.red.bold}. - gsub(/^ *!/) { $&.red.bold} + gsub(/^ *A/) { $&.green.bold}. + gsub(/^ *M/) { $&.green.bold}. + gsub(/^ *D/) { $&.magenta.bold}. + gsub(/^ *C/) { $&.red.bold}. + gsub(/^ *~/) { $&.red.bold}. + gsub(/^ *!/) { $&.red.bold} else self end end + def colorize_svn_update_lines + if Subversion.color + self.gsub(/^ *U\s/) { $&.yellow.bold}. + gsub(/^ *A\s/) { $&.green.bold}. + gsub(/^ *M\s/) { $&.green.bold}. + gsub(/^ *D\s/) { $&.magenta.bold}. + gsub(/^ *C\s/) { $&.red.bold} + else + self + end + end + def colorize_svn_diff + if Subversion.color + self.gsub(/^(Index: )(.*)$/) { $2.underline}. + gsub(/^=+\n/, '') + else + self + end + end end # These are methods used by the SvnCommand for filtering and whatever else it needs... # It could probably be moved into SvnCommand, but I thought it might be good to at least make it *possible* to use them apart from SvnCommand. -# Rename to Subversion::Filters ? Then would each_unadded fit? +# Rename to Subversion::Filters ? Then each_unadded would be an odd man out. module Subversion module Extensions Interesting_status_flags = ["M", "A", "D", "?"] Uninteresting_status_flags = ["X", "W"] Status_flags = Interesting_status_flags | Uninteresting_status_flags @@ -66,11 +85,11 @@ }.reject { |line| line =~ /^Fetching external item into/ # Eventually we may want it to include this whole block, but only iff there is something updated for this external. }.reject { |line| line =~ /^External at revision/ - }.join + }.join.colorize_svn_update_lines # Also get rid of all but one "At revision _."? end def self.unadded_lines_filter(input) input.select { |line| @@ -87,9 +106,14 @@ def self.each_unadded(input) unadded_filter(input).each { |line| yield line } + end + + # This is just a wrapper for Subversion.diff that adds some color + def self.diff(*args) + output = Subversion.diff(*args).colorize_svn_diff.add_exit_code_error end end end