+sub show_diff {
+ my ($self, $level, $item1, $item2, %params) = @_;
+
+ if (!$self->_load_text_diff) {
+ $self->warn("Perl module Text::Diff is not available");
+ return;
+ }
+
+ my @texts = map { ref $_ ? YAML::Dump($_) : $_ } ($item1, $item2);
+
+ $self->message($level, Text::Diff::diff(\$texts[0], \$texts[1], \%params));
+}
+
+sub _load_text_diff {
+ $text_diff_available = eval("use Text::Diff (); 1;") ? 1 : 0 unless defined $text_diff_available;
+ return $text_diff_available;
+}
+