summaryrefslogtreecommitdiff
path: root/tools/examples/svnlog2html.rb
diff options
context:
space:
mode:
Diffstat (limited to 'tools/examples/svnlog2html.rb')
-rwxr-xr-xtools/examples/svnlog2html.rb139
1 files changed, 139 insertions, 0 deletions
diff --git a/tools/examples/svnlog2html.rb b/tools/examples/svnlog2html.rb
new file mode 100755
index 0000000..a7571cc
--- /dev/null
+++ b/tools/examples/svnlog2html.rb
@@ -0,0 +1,139 @@
+#!/usr/bin/env ruby
+
+#
+######################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+######################################################################
+#
+
+require "erb"
+require "svn/client"
+
+include ERB::Util
+
+path = File.expand_path(ARGV.shift || Dir.pwd)
+
+html = <<-HEADER
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <style type="text/css">
+div.entry
+{
+ border: 1px solid red;
+ border-width: 1px 0 0 1px;
+ margin: 2em 2em 2em 3em;
+ padding: 0 2em;
+}
+
+pre.message
+{
+ border-left: 1px solid red;
+ margin: 1em 2em;
+ padding-left: 1em;
+}
+
+div.info
+{
+ text-align: right;
+}
+
+span.info
+{
+ border-bottom: 1px solid red;
+ padding: 0 5px 1px 1em;
+}
+
+span.author
+{
+ font-style: italic;
+}
+
+span.date
+{
+ color: #999;
+}
+
+li.action-A
+{
+ color: blue;
+}
+
+li.action-M
+{
+ color: green;
+}
+
+li.action-D
+{
+ color: red;
+ text-decoration: line-through;
+}
+ </style>
+ <title>#{h path}</title>
+</head>
+<body>
+<h1>#{h path}</h1>
+HEADER
+
+ctx = Svn::Client::Context.new
+ctx.log(path, "HEAD", 0, 40, true, true) do
+ |changed_paths, rev, author, date, message|
+
+ html << <<-ENTRY_HEADER
+
+<div class="entry">
+ <h2>r#{h rev}</h2>
+ <pre class="message">#{h message}</pre>
+ <div class="info">
+ <span class="info">
+ by <span class="author">#{h author}</span>
+ at <span class="date">#{date}</span>
+ </span>
+ </div>
+ <div class="changed-path">
+ENTRY_HEADER
+
+ changed_paths.sort.each do |path, changed_path|
+ action = changed_path.action
+ html << <<-ENTRY_PATH
+ <ul>
+ <li class="action-#{h action}">
+ <span class="action">#{h action}</span>:
+ <span class="changed-path">#{h path}</span>
+ </li>
+ </ul>
+ENTRY_PATH
+ end
+
+ html << <<-ENTRY_FOOTER
+ </div>
+</div>
+
+ENTRY_FOOTER
+end
+
+html << <<-FOOTER
+</body>
+</html>
+FOOTER
+
+puts html