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