Today I wanted to have a index.html for a directory full of DocBook articles. Being quite lazy I simply wrote a small Ruby script for doing this since I couldn’t get sed to do what I want:
#!/usr/bin/ruby -w
require 'rexml/document'
def getTitle(file)
doc = REXML::Document.new(File.new(file))
title = doc.elements.each("/article/title"){|t| return t.text}
return File.filename(file)
end
puts <<EOS
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Guides</title>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>
<link rel="stylesheet" type="text/css" href="../_s/style.css"/>
</head>
<body>
<h1>Guides</h1>
<ul>
EOS
dh = Dir.new(".")
dh.each do |f|
next if ['.','..'].include?(f)
path = dh.path+File::SEPARATOR+f
indexxml = path+File::SEPARATOR+"index.xml"
indexhtml=path+File::SEPARATOR+"index.html"
if File.directory?(path) and File.exists?(indexxml)
puts "<li><a href="#{indexhtml}">#{getTitle(indexxml)}</a></li>"
end
end
puts <<EOS
</ul>
</body>
</html>
EOS
Since I’m currently learning Ruby - or let’s call it refreshing my Ruby knownledge - I’m trying to write most of the scripts I need everyday in Ruby to get some practice. Starting with today I will also post these small scripts here :)
Do you want to give me feedback about this article in private? Please send it to comments@zerokspot.com.
Alternatively, this website also supports Webmentions. If you write a post on a blog that supports this technique, I should get notified about your link π