webgen 1.7.0 released

Published on by Thomas Leitner


  • 2 minor enhancement:

webgen 1.6.0 released

Published on by Thomas Leitner


webgen 1.5.0 released

Published on by Thomas Leitner

This is a small release bringing a new content processor for minifying CSS and a way to do cache busting on any output file.

The cache busting works by incorporating the  modified_at meta information into the file name. All one needs to do to enable this feature is to set the  modified_at_in_dest_path meta information to true.


webgen 1.4.1 released

Published on by Thomas Leitner

This is a small bug fix release, updating is recommended.


  • 2 bug fixes:

    • Give the default meta information for directories a higher priority to avoid problems
    • Fix wrong value of the destination node that occured in certain situations with chained nodes

webgen 1.4.0 released

Published on by Thomas Leitner

Thanks to an (unrelated) bug report for a website with more than 4700 page files I tried to optimize the node finder a bit more, with quite good results!

Depending on the options one uses, node finder option sets can now be cached more effectively which brings down the number of different node sets and therefore more performance (drastically in some cases)!

Another important change is the new  io_open_mode meta information which can be used to change how a file should be opened. This allows one, for example, to use the mode ‘r:BOM|UTF-8’ to open UTF-8 files with a Unicode byte order marker without problems or to specify different encodings for certain files.

Last but not least: webgen now uses cmdparse version 3.0.1 instead of 2.x which brings better help output and some other nice changes. However, this also means that custom CLI extensions won’t work anymore! If you have written such an extension, please update it to be compatible to the newer cmdparse version!


  • 7 minor changes:

    • Optimized node finder to more effectively cache node sets
    • Nicer hierarchical output for item tracker nodes descriptions when using webgen show dependencies
    • Updated path handler api to optionally produce a true hierarchical structure instead of the standard RDoc file/directory structure
    • Updated path handler api to additionally create fragment nodes for attributes (not just methods)
    • Updated path handler api template to use an <h2> heading instead of <h1>
    • The IO open mode can now be set on a per path basis with the new  io_open_mode meta information (requested by Johann Friedrich Heinrichmeyer)
    • The cmdparse dependency has been updated to 3.0.1
  • 6 bug fixes:

    • Fixed content processor sass to work with Sass 3.3 and greater
    • Paths named like number.lang.ext (e.g. are now correctly handled (reported by Lars Bähren)
    • Removed invalid quote character from RSS feed template (patch by Sven Hertle, fixes GH#6)
    • Paths like someFile.png now get the title ‘SomeFile’ instead of ‘Somefile’
    • Fixed path handler sitemap to ignore nodes that have the  no_output meta information set
    • Setting an empty pipeline on a block in a Webgen Page Format file now works

webgen 1.3.0 released

Published on by Thomas Leitner

This release fixes some bugs and introduces an updated node finder filter ‘lang’. It now allows to include nodes in the default language if such a node has no translation to the specified languages. This means, for example, that if a website is not completely translated to some language, the untranslated nodes appear in the menu.


  • 1 minor change:

    • Node finder filter ‘lang’ has been updated to support the default fallback language
  • 3 bug fixes:

    • Fixed the  website.link_to_current_page configuration option so that it really works (reported by Johann Friedrich Heinrichmeyer)
    • Virtual nodes now get the correct node class (reported by Johann Friedrich Heinrichmeyer)
    • Fixed Webgen::PathHandler::Base::Node#url to always return a string (reported by Johann Friedrich Heinrichmeyer)

webgen 1.2.1 released

Published on by Thomas Leitner

This release brings mainly some overall and specific performance enhancements. The most benefit comes from caching some often needed data and optimizing calls to URI objects.

However, there is also a specific benefit for those using kramdown and many predefined link definitions as those will not get cached, too. Note that this will need at least kramdown 1.3.2 to work!


webgen 1.2.0 released

Published on by Thomas Leitner

This is just a small update introducing two new configuration options and fixing some bugs.


  • 3 minor changes:

  • 2 bug fixes:

    • Fixed auto-generate mode when the current directory is not the website directory
    • Path handler feed: custom cn/dest_path meta information is now respected

webgen 1.1.0 released

Published on by Thomas Leitner

This release mainly re-introduces two options that were available in the 0.5.x series: website.link_to_current_page and tag.langbar.mapping (formerly named tag.langbar.lang_names).


webgen 1.0.0 released

Published on by Thomas Leitner

It has been long since the last version of the 0.5.x series, more than three years. If you thought that development on webgen halted you were wrong.

With the two beta releases at the end of last year most of the major remaining bugs of this complete rewrite were fixed and the only big job was to update the webgen website. This took me longer than expected but during the update of the website, including all of the documentation, webgen was actively used and in the process I uncovered some more problems which are now fixed, too.

So without further ado I present you webgen 1.0.0!

Why would you want to use it? Here are some reasons:

  • The basic promise of webgen didn’t change. It still allows one without knowledege of a programming language to easily create and generate a website, built from templates and content files. However, the one-oh-oh version now uses the latest libraries to do its job and is up-to-date in all regards.

  • Better CLI commands: The webgen CLI now provides more tools for working with a website. Aside from the usual things like creating a new website and generating the output, it can show the available extension bundles, all available extensions, the configuration options (including documentation, syntax and examples), the generated node tree (including meta information) and node dependencies.

    With the addition of the dry run mode, you can preview what webgen would do without actually changing anything in the destination directory. Combine this with the  destination.show_changes configuration option to see the actual changes that would be done!

  • Better partial site generation: The whole core of webgen was ripped apart and re-implemented to make it easier to add dependent items to a node and the whole system got faster. It is now easier than ever to write an extension that handles a new type of item. Additionally, the webgen CLI can now show the items on which a node depends so that you can see at a glance why a node might get re-generated.

  • Node search API: Many extensions need to generate a possibly nested list of nodes (for example, the tag menu or the path handler feed). Prior to webgen 1.0.0 each of these extensions had to do the work themselves. With this new version, the node_finder extension provides a mechanism to do this in a standardized way. You just provide it with a set of options that defines the nodes that you want and it does all the rest!

  • Many built-in extensions: All built-in extensions that were available in 0.5.x are also available in the 1.0.0 version, plus some more. And if you are missing some extension, it is now very easy to create new extensions; you can even publish them as gems to make them easily available and installable to other users.

    Here are two of the new extensions:

    • The misc.dummy_index extension automatically generates directory index files that are missing.
    • The path_handler.api extension uses RDoc to create Ruby API documentation files that have the same look and feel as the rest of the website. No longer is it necessary to generate the API documentation separately!

    There are also some extension bundles available as Rubygems, they follow the naming scheme webgen-...-bundle.

You can find the full documentation of webgen on the webgen website at For information on how to upgrade a webgen 0.5.x website to this new version, have a look at the upgrade documentation.

webgen 0.5.15 released

Published on by Thomas Leitner


  • Minor changes:

    • kramdown version equal to 0.11.0 is now needed
  • Bug fixes:

    • Fixed bug RF#28393: Worked around a Rubygems problem regarding empty directories (reported by Hans de Graaff)

webgen 0.5.14 released

Published on by Thomas Leitner

This release changes the version of the kramdown library to 0.10.0 and contains one small bug fix.


  • Minor changes:

    • kramdown version equal to 0.10.0 is now needed
  • Bug fixes:

    • Fixed bug RF#28392: problem with rdoc test (reported by Hans de Graaff)

webgen 0.5.13 released

Published on by Thomas Leitner

This just a minor maintainance release which fixes some bugs and adds support for Sassy CSS.


  • Minor changes:

    • Specifying a prefix for kramdown generated header IDs is now possible
    • Added support for Sassy CSS
    • A haml version greater than 3.0.0 is now needed
    • A kramdown version greater or equal to 0.9.0 is now needed
  • Bug fixes:

    • Fixed problem in ContentProcessor::Less where a non-useful error message was shown

webgen 0.5.12 released

Published on by Thomas Leitner

This release includes two minor changes and some bug fixes: The output of the meta information tag is now escaped by default. This can be changed by setting the tag.metainfo.escape_html option in the configuration file. And a rake task for showing outdated translations has been added.


  • Minor changes:

    • Added a rake task to show outdated translations
    • Added a configuration option for specifying whether a meta info value should be escaped
  • Bug fixes:

    • All error messages now display useful path names (reported by Eric Sunshine)
    • Fixed another CSS bug with sub directories in style bundle ‘andreas07’ (reported by Thomas Deselaers)
    • Fixed problem with unintentionally modified link meta information that lead to errors
    • Commands are now correctly shown when running webgen --help
    • Fixed a problem where an incorrect path was shown in error messages

webgen 0.5.11 released

Published on by Thomas Leitner

In this release there are two big changes regarding the internals of webgen:

  1. The dependency on facets has been removed since it was only used in two or three places and since the facets project is not very stable regarding its API.

  2. The default markup language used by the webgen is Markdown and the default processor for converting Markdown to HTML has been Maruku for a long time. However, Maruku has some bugs that need to be fixed and although it runs under Ruby 1.9 there are some issues. Therefore the new default processor for Markdown will be kramdown from now on. Aside from being actively maintained, it is about 5x faster than Maruku and runs on Ruby 1.9 without problems.

    This means that if you used the default configuration, you will automatically use kramdown from now on. If you still want to use Maruku, just change the default processing pipeline for page files:

      Page: erb,tags,maruku,blocks,fragments

    The short name markdown now also refers to kramdown instead of Maruku.

Aside from the new content processor kramdown, another content processor for LESS has been added and the content processor head has been updated to handle arbitrary link tags. Many bugs have been fixed in this release as well.

Note: All deprecated methods have been removed in this release!


  • Major changes:

    • Added content processor kramdown (faster Markdown parser)
    • Added content processor less (extends CSS with variables, mixins, operations, …)
    • Updated content processor head to allow the specification of arbitrary link tags and links to javascript and CSS files by the user
  • Minor changes:

    • Added a CSS class to the HTML tag of the currently selected language of Tag::Langbar (requested by Damien Robert)
    • Removed dependency on facets
    • All deprecated methods have been removed
  • Bug fixes:

    • Fixed atom feed template to produce completely valid feeds
    • Fixed order of feed entries (now sorted from most recent to oldest) (reported by Tuomo Valkonen)
    • Fixed error in SourceHandler::Virtual when creating virtual directories (reported by Tuomo Valkonen)
    • Fixed bug in ContentProcessor::Blocks: context.dest_node was not correctly set when #render_block was called via the context object
    • Fixed bug in Sourcehandler::Main: an error was raised when the configuration option output.do_deletion was set to true (reported by Thomas Deselaers)
    • Fixed RF#27075: Typo in webgen documentation (reported by Luis Parravicini)
    • Fixed bug which occured when archive-tar-minitar was not installed
    • Fixed CSS bug with sub directories in style bundle ‘andreas07’ (reported by Thomas Deselaers)
    • Fixed a bug with path patterns not matching correctly (reported by Damien Robert)
    • Fixed bug in ContentProcessor::Tags with regard to parsing strings/files with a multi-byte encoding under Ruby 1.9 (reported by Stefano Crocco)
    • Fixed bug in terminal size detection (webgen CLI now works in Emacs shell buffer) (reported by Bob Dobbs)

webgen 0.5.10 released

Published on by Thomas Leitner

This is just a small bug fix release. The only change feature wise was the addition of a content processor for checking XML (XHTML) files for validness.


  • Minor enhancements:

    • Added content processor xmllint for checking an XML (XHTML) file for well-formedness and validness
  • Bug fixes:

    • Tag::TikZ: the generated image tags now always have an alt attribute
    • Fixed problem with the webgui when creating a new website
    • Fixed problem with matching directory nodes (reported by Hermann Schichl)
    • Fixed bug RF#26885: paths with dots in the extension and without a language part were handled incorrectly (reported by John Lockman)
    • Fixed bug RF#26890: detecting unused paths did not always work correctly (reported by John Lockman)
    • Fixed problem with handling paths of the form NUMBER.REST (e.g. 1340.png): the number part is now considered the basename and the rest is the extension

webgen 0.5.9 released

Published on by Thomas Leitner

This release does not bring many new and cool features (some naturally made it into this release ;-) but it is another step to bringing more advanced functionality like image gallery and blog support to webgen. Since gallery and blog template files will rely heavily on embedded Ruby scripts via erb, haml and thelike, the functionality of the context object has been expanded to allow the programmatic inclusion of tags and the rendering of blocks.

Another important change in this release is that the naming convention for paths has been made stricter so that it is easier to derive the (a)(l)cn from a source path.

Also note that there have been some incompatible API changes!


  • Major enhancements:

    • webgen tags can now be accessed and used via the context object provided by some content processors (builder, erb, erubis, and haml).

      Tag handlers that do not use the Webgen::Tag::Base module now need to provide one more method - see the API documentation!

    • Likewise, blocks can now be rendered via the context object in the same way as can be done via the blocks content processor.

    • Change in source path naming convention: only files have different parts now (sort information, basename, extension), directories and fragments not - see Source Paths Naming Convention! Also note that directories now always have a trailing slash (source paths and canonical names)!

      This change may lead to unexpected behaviour if you used the sort information part or an extension in your directory names! Check this before upgrading to this version!

    • There is the new notion of passive sources which do not actively create nodes from paths but only on-demand when a to-be-resolved path is not found. This is, for example, very useful for shipping default files that can easily be overridden with custom files by putting the custom files under the to-be-resolve path in a normal source directory.

    • There is now a better system for error reporting which allows for more detailed and more specific (with path name and approximate line number) error reports.

  • Minor enhancements:

    • Added new content processor head for inserting CSS/JS fragments and links into the head section of an HTML file. Arbitrary meta tags can also be inserted.
    • Added new content processor tidy for running tidy over a (most often generated) HTML file (requested by Michael Franzl).
    • Special characters like German umlauts and spaces are now allowed in paths (suggested by Michael Franzl). However, note that using paths with such characters may lead to problems when accessing them later on the server!
    • Added new configuration option output.do_deletion for specifying if generated files should be deleted if their respective source is deleted (suggested by Matthias Kirschner).
    • Added new configuration option tag.coderay.css which allows the inclusion of external stylesheets.
    • Added new meta information used_nodes for specifying dependencies for a node (suggested by Hermann Schichl).
    • The feed source handler now uses the passive sources system for finding its templates and does not rely on the feedtools library anymore (which gives a huge speedup).
    • The sitemap source handler now uses the passive sources system for finding its templates and dos not rely on the builder library anymore. And the format of a *.sitemap file is now similar to that of a *.feed file for consistency.
    • The ERB::Util module is now available when using the erb content processor.
    • Directories are not created anymore if they do not contain any files.
    • There is now the distinction between textual and binary content processors.
    • The leading and trailing whitespace of content blocks in Webgen Page Format is not removed anymore.
  • Bug fixes:

    • Fixed bug RF#25943: apply command did not work without explicitly specifying a directory
    • Tag::Relocatable: the resolved node is now additionally used as dependency for detecting a change
    • Switching on host_os instead of arch for specifying Windows specific behaviour (in preparation for the change of the Windows Ruby Installer).
    • Using $?.exitstatus instead of bit shifting to fix a JRuby issue
    • webgen tag handlers are now called only if all mandatory parameters are set
    • Fixed Website#render to work when called multiple times
    • Fixed Node#is_directory? to also work when called on a fragment with a trailing slash
  • Incompatible API changes:

    • Since one can now get at the parent node of a to-be-created node directly via the Path object, the interface for creating nodes has been simplified. The method SourceHandler::Base#create_node now only takes a path parameter and optionally an options hash for special cases (fragment nodes and virtual nodes), SourceHandler::Base#node_exists has seen a similar change.

      The create_nodes service signature also changed. Also note that the before_node_created message now only sends the path instead of parent and path.

      These changes will in most cases render custom source handlers nonfunctional! Read the API documentation and have a look at the shipped source handlers!

    • Node.absolute_name has been removed since it has no purpose anymore!

  • Deprecation notes:

    • Path#cnbase and Path#cnbase= are now deprecated, use Path#basename and Path#basename= instead!
    • Common.absolute_path(path, base) is deprecated, use Path.make_absolute(base, path) instead! Note the different parameter order!
    • Node#absolute_cn and Node#absolute_lcn are now deprecated, use Node#acn and Node#alcn instead!

webgen 0.5.8 released

Published on by Thomas Leitner

This release brings some very useful new features and paves the way for more new features in the next versions!

The most notable change is that there is no distinction between website styles and templates anymore - both are called bundles now or more specifically, for example, style bundles. Since both were basically the same but provided different kinds of content I thought that it would be useful to drop the distinction.

This also lead to changes in the CLI command create which can now take any number of website bundles from which the new website will be created. Also, the create command got a new companion, the apply command which can be used to apply website bundles to an already existing website.

But that’s not all regarding website bundles: after the addition of a new source class for handling local or remote, possibily gzipped, tar archives, it is now very easy to provide style bundles or even complete websites on websites. For example, if a user develops a new website style bundle and puts it on his website, anyone can use it by just using

webgen create -b default -b new_site

As usual, some minor enhancements, many bug fixes and many documentation updates made it into this release! See the changes section for a complete list of changes and also note that some parts of the API got deprecated!


  • Major enhancements:

    • Everything except feed handling (due to the dependency feedtools not working) is now Ruby 1.9 compatible! However, be aware that some used libraries may not work correctly under Ruby 1.9 - this is, for example, sometimes the case with Maruku!
    • The distinction between website styles and website templates is no more - say welcome to website bundles!
    • Added new source class which can handle local or remote (gzipped) tar archives - see Source::TarArchive
    • Added new CLI command for applying a style bundle to a webgen website - see The webgen command
  • Minor enhancements:

    • Added new value current for attribute node for webgen block content processor - see ContentProcessor::Blocks
    • The CLI commands apply and create can now make use of remote website bundles due to Source::TarArchive
    • Added new option contentprocessor.redcloth.hard_breaks for specifying if single newlines should become HTML line break tags
    • The use of the environment variable WEBGEN_WEBSITE moved from the CLI to the main Webgen::Website class so that it is also available when programmatically using webgen.
  • Bug fixes:

    • Tag::Link: the linked-to node is now correctly specified for partial site regeneration
    • Fixed Node#changed? and Node#meta\_info\_changed?: dependent meta information nodes are now checked in Node#changed?
    • SourceHandler::Virtual: changes in the meta information for virtual nodes are now correctly detected
    • SourceHandler::Metainfo: empty meta information files don’t throw errors anymore
    • SourceHandler::Metainfo: deleting a path/alcn from a meta information file now correctly updates the affected nodes
    • SourceHandler::Virtual/SourceHandler::Page: detection of deleted paths between webgen runs now works correctly and doesn’t throw error anymore (bug reported by Tim Hunter)
    • SourceHandler::Fragment: fixed bug with header tag attribute parsing
    • Fixed a small CSS bug in the website bundle style-andres06
    • Fixed bug in CLI: commands specified in ext/init.rb are now correctly recognized
    • Webgen::Website: #execute_in_env now correctly sets back prior website object
    • Updated used versions of dependencies, rake is now a development dependency, all development dependencies now use >= instead of just =. This fixes a bug with rake (reported by Chad Wooley)
  • Documentation:

    • The documentation now includes previews of all website style bundles
    • The configuration option reference now shows the default values for each option
    • Updated installation instructions and added platform specific notes
    • Added documentation for Source::FileSystem and Source::TarArchive
    • Other general user documentation updates
    • Went through the whole API documentation and fixed documentation bugs and added some new documentation
    • Online API documentation now uses the new RDoc template darkfish
  • Deprecation notes:

    • The objects node, ref_node, dest_node and website are deprecated and will be removed in one of the next versions, use context.node, context.ref_node, context.dest_node and instead!
    • Node#flagged is now called Node#flagged? - the old name will be removed in one of the next releases.
    • Webgen::Block is now named Webgen::Page::Block and Webgen::WebgenPageFormatError is now called Webgen::Page::FormatError - the old names will be removed in one of the next releases.
    • Webgen::ContentProcessor::Context is now named Webgen::Context - the old name will be removed in one of the next releases.
    • All website templates have been removed, there is just one default website bundle instead for a default website.
    • The class Webgen::WebsiteManager now handles bundles instead of styles and templates.

webgen 0.5.7 released

Published on by Thomas Leitner

Although this is a just a minor interim release, the 0.5.x series is declared stable with this release and should be used instead of the old stable 0.4.x series! The one exception is when you rely on features of the 0.4.x series that have not been ported to 0.5.x yet.

Aside from this this release brings some new features, various issues were fixed and the homepage was updated so that the current version and release date are visible from the start page.


  • Major enhancements:

    • 0.5.x series declared the new stable webgen series
  • Minor enhancements:

    • Added two very useful options to ContentProcessor::Blocks
    • Added one new option to Tag::LangBar
    • Added .ico as extension that is handled by SourceHandler::Copy (suggested by Matthias Kirschner)
    • Added detection of non webgen website
    • Updated API and user documentation
    • Current webgen version and release date visible on start date (tip from Sebastian Gassner)
    • The webgen CLI now uses the environment variable WEBGEN_WEBSITE instead of the current directory as the location of the webgen website if the switch -d is not specified
  • Bug fixes:

    • Fixed a small bug in Common::Sitemap: directories with just an index file did not appear in the sitemap (reported by Damien Robert)
    • Removed causes of Ruby code warnings

webgen 0.5.6 released

Published on by Thomas Leitner

The main emphasis on this release lies on a new implementation of the update tree/write tree cycle which now also allows the creation of nodes not only in the update tree phase but also in the write phase. A user visible change of this is, for example, that nodes for page fragment are now not created at page node creation time but through a content processor when the page node is written. Since menus would not be correctly generated in this situation, the update/write cycle is now executed as often as needed (which amounts to two times in nearly all situations).

Since the internal code changed a lot from the last release, you may need to update your extensions to comply with the new internal API! Have a look at the ChangeLog or the git log to see all changes.

Building on the above changes a new webgen tag for generating high quality graphics using the LaTeX library PGF/TikZ is now available.

The next release of webgen will concentrate on the blog support. For example, a source handler for automatically generating tag pages is in the works. Stay tuned!


  • Major enhancements:

    • Updated internals to allow for node creation during the write phase
    • Fragment nodes are now generated by the content processor fragments
    • Added new webgen tag link for generating links
    • Added new webgen tag tikz for generating high quality graphics
  • Minor enhancements:

    • Added new option to SourceHandler::Feed for specifying the name of the block that should be rendered for the feed entry content
    • Added new option to SourceHandler::Feed for specifying the RSS version that should be used
    • The feed entries for SourceHandler::Feed are now ordered from newest to oldest instead of the other way around
    • Added new configuration option tag.langbar.lang_names
    • Many documentation fixes, especially in the configuration reference
  • Bug fixes:

    • Fixed a small bug in Webgen::Page: empty block options work again now
    • Fixed all bugs that occured when running the test suite with Ruby 1.9

webgen 0.5.5 released

Published on by Thomas Leitner

This is just a small release which fixes a bug with absolute virtual URLs. The only change feature wise was the addition of the configuration option which allows to generate either a nested or a sequential menu (like the horizontal menu style in webgen 0.4.x).

If you want to live on the edge, a beta gem is now provided via Github’s gem server. To use the beta gem you need to run

gem sources -a
gem install gettalong-webgen

Be aware that these beta gems are not officially supported but are normally in quite a useable state and are updated more often than the official gem for testing purposes.


  • Minor enhancements:

    • New configuration option
    • Depending on fixed gem version (using = instead of >=)
  • Bug fixes:

    • RF#21349: absolute virtual URLs didn’t work correctly
    • small docu fixes

webgen 0.5.4 released

Published on by Thomas Leitner

This release features updated documentation and some enhancements and fixes. The upgrading instructions have been expanded and provide now more details on how to convert an old 0.4.x site to 0.5.x.


  • Major enhancements:

    • Added content processor erubis
    • Added content processor rdiscount
  • Minor enhancements:

    • Added configuration file helpers for setting the default processing pipeline
    • New content processor short names aliases: textile for redcloth, markdown for maruku
    • Better error messages when parsing files in Webgen Page Format
    • Updated documentation
  • Bug fixes:

    • Circular dependencies between nodes are now correctly prevented

webgen 0.5.3 released

Published on by Thomas Leitner

This release brings some usability and feature enhancements to webgen as well as several bug fixes. Also note that this release requires facets version 2.4.3 instead of 2.4.1!

  • Setting some configuration options (for example, the path patterns used by Webgen::SourceHandler::Copy) was very complicated in previous releases. With the introduction of configuration file helpers this gets much easier now. For example, adding some path patterns for Webgen::SourceHandler::Copy can be done like this now:

        add: [**/*.pdf, **/*.avi]
  • A new source handler for automatic feed generation has been added. This is the first part of the blogging support that will be introduced in the following versions of webgen.

  • The styling of the menu tag has been modified: an additional CSS class specifying the current menu level has been added and the surrounding div tag has been removed.

    Attention: This may break websites which relied on the surrounding div tag with the webgen-menu CSS class for styling.

  • I have added upgrading information for upgrading 0.4.x websites to 0.5.x.


  • Major enhancements:

    • Added a feed source handler for generating atom and/or RSS feeds.
    • Added a sitemap source handler for generating XML sitemaps
    • Ported the sitemap tag and feature-enhanced it
  • Minor enhancements:

    • Added configuration file helpers, see configuration file documentation.
    • Updated metainfo source handler to be more efficient.
    • Updated breadcrumb trail tag to allow the specification of a start and an end level and added better node change checking.
    • Added new meta information kind for specifying the kind of a node (used, for example, by the new sitemap tag)
    • Added new meta information change_freq and priority (used by the new sitemap source handler)
    • Added new meta information draft which can be set on paths that should not create any nodes
    • New level specific CSS class names for generated menus
    • Removed unnecessary div tag surrounding generated menus
    • Added upgrading information
  • Bug fixes:

    • Meta information sort_info was not correctly set which lead to sort errors when creating menus.
    • Fixed bug with meta information change detection: modified_at was taken into account although this changes on every content change.
    • Fix some other bugs releated to the meta information modified_at.
    • An API change in facets from version 2.4.1 to 2.4.3 prevented webgen from working, now facets 2.4.3 is needed for webgen.
    • Fixed bug in template source handler: template chain resolution stopped at default.template in sub directory and did not go further towards the root directory.

webgen 0.5.2 released

Published on by Thomas Leitner

This release brings some updates to the core as well as a browser based GUI, some bug fixes and better Windows support. The most noteable update to the core is better partial site generation support.

When a file that was in the menu changed, all files which included a menu with a link to this file got regenerated, too. However, that was not always necessary since the content of the changed file does not appear in the menu, only its meta information title. Therefore the new system checks if the meta information of the changed file has changed and only then regenerates all menus. This system is now also used by all other extensions like the breadcrumb trail or the langbar tag.

The new webgen webgui which can be started via webgen webgui is a graphical pendant to the command line interface. It features

  • auto-completion of entered website directory paths
  • possibility to create and render websites
  • live view of a rendered website or preview of a to-be-created website

The preview mode when creating a website is very useful for choosing the right template and style for a new website, especially for people new to webgen.


  • Major enhancements:

    • better partial site regeneration
    • browser based GUI
  • Bug fixes:

    • RF#21507: rdoc documentation link now works again
    • corrected some Windows specific bugs, test suite runs fine now on Windows
    • terminal width recognition now works again
    • global command line option --log-level now works as intended

webgen 0.5.1 released

Published on by Thomas Leitner

Since the 0.5.0 release did not have as many features as the older 0.4.x releases, this release as well as the next few releases concentrate on porting features from the latest 0.4.x version. The focus of this release was adding the missing content processors and most of the more widely used tags.

If you want to have a currently missing feature in the next release, write to the mailing list!

A new google group which mirrors the webgen-users mailing list on Rubyforge has also be created.


  • Major feature enhancements:

    • ported 4 content processors: haml, sass, rdoc and builder
    • ported 5 tags: breadcrumb_trail, langbar, include_file, execute_cmd and date
    • implemented 1 new tag: coderay
  • Bug fixes:

    • fixed bug RF#21387: webgen CLI now works correctly when stty is not available

webgen 0.5.0 released

Published on by Thomas Leitner

This is the first release of the new development line of webgen which is a complete rewrite of the 0.4.x series. The new architecture allows for partial website generation, faster start-up times and easier extension development.

The 0.5.0 version is not as feature rich and tested as the the latest 0.4.x version, yet. This will change with the following versions.


  • Complete rewrite of 0.4.x series

webgen 0.4.7 released

Published on by Thomas Leitner

Minor release with feature enhancements:

  • added support for Haml markup
  • added support for Sass markup

webgen 0.4.6 released

Published on by Thomas Leitner

This is a bug fix release:

  • fixed bug in handling of meta information in File/Pagehandler (thanks to Andrea Ferro)
  • fixed bug in handling of directory and file names with special characters (see Bug #13757)

webgen 0.4.5 released

Published on by Thomas Leitner

This release contains some bug fixes:

  • a small bug fix for Tag/News - there have been some cases where loading the plugin lead to an error. This has been fixed now!

  • fixed a bug with file name resolution: filenames are now searched using a case insensitive search sothat, for example, images with an uppercase extension are processed correctly

  • fixed bug in File/ThumbnailWriter: no check was performed if a thumbnail for a given image already existed

One new feature: links can now be customized by providing a custom link renderer via the meta information link_callback - more information on the Meta Information Reference

webgen 0.4.4 released

Published on by Thomas Leitner

Only a (very) small bug fix version due to Rubygems being case sensitive when it comes to gem names. This version fixes the installation problem with Rubygems! Everything else is identical to the 0.4.3 version!

webgen 0.4.3 released

Published on by Thomas Leitner

I got mails about webgen not working with Ruby 1.8.6 on Windows anymore. It seems that a bug in the 1.8.6 release prevents webgen from correctly finding directories. However, this bug has already been fixed which means that webgen should work again with the next One-Click-Installer for Windows. Until then I recommend using webgen with the latest 1.8.5 version on Windows (I found that it is no problem to have two versions of Ruby installed on Windows using the One-Click-Installer).

And now on to the new features and other changes:

  • Updated exifr support to version 0.10 - versions lower than 0.10 are not supported anymore!
  • redcloth is now a dependency sothat all the examples and website templates really work out-of-the-box!
  • Removed website style plain due to incompatible license.
  • Added submitted plugin Tag/HtmlMetaInfo from Andrea Censi - thanks!
  • Added submitted plugin Tag/News from Jeremy Hinegardner - thanks!
  • Added submitted plugin ContentConverter/Maruku from Andrea Censi - thanks!

Closed bugs:

  • Page and template files can now be written using either Windows, Mac or Unix EOL encodings!
  • Fixed order of webgen data directory discovery - local data directories are preferred now!
  • File/TemplateHandler will not use the default metainfo from File/PageHandler anymore!

webgen 0.4.2 released

Published on by Thomas Leitner

Another minor release which concentrates on fixing some bugs and adding some new features:

New features:

  • Implemented support for sipttra (Simple Plain Text Tracker) files and using it for the project status page
  • HTML is now the default content format for template files
  • New parameters for Tag/BreadcrumbTrail: Tag/BreadcrumbTrail:omitLast and Tag/BreadcrumbTrail:omitIndexFile
  • New parameter Core/Configuration:customVars for storing custom global variables and a new plugin Tag/CustomVar for accessing them
  • Added an example websites section to the examples section
  • Added a HowTo page which answer some often asked questions!
  • Added a man page contributed by the Debian project

Closed bugs:

  • Specifying arguments to the run command to render only certain files now actually works! ;-)
  • Fixed bug when loading site specific plugins: the use of load_plugin should now work correctly!
  • All website styles updated to behave correctly when File/DefaultHandler:linkToCurrentPage is false

Thanks for the many comments and suggestions since the last release, especially to Bill Paxton, Massimiliano Filacchioni, Erhard Karger, Alejandro Sierra, Fritz Heinrichmeyer and Vincent Fourmond!

webgen 0.4.1 released

Published on by Thomas Leitner

A minor release with bug fixes and some small enhancements:

  • webgen Windows bug resolved: webgen now really runs on Windows - thanks for the fast feedback!
  • Rake task for running webgen - thanks to Jeremy Hinegardner for providing it!
  • Meta information template can now be set to nil to specify that no template should be used!
  • Small documentation updates - thanks to John Gabriel for pointing out some flaws!

webgen 0.4.0 released

Published on by Thomas Leitner

This is a major release with many updates to the webgen core, the plugins and the documentation. Plugins written for prior version won’t work with this one anymore. However, changing them to work again is easy. As an upgrade guide is currently not available have a look at webgen plugins and the API documentation to see how to do upgrade plugins.

Major changes:

  • New website layout :-)
  • webgen now includes many website styles which can be used out of the box!
  • Template files have the same format as page files now and can be nested!
  • Speed-up through caching of node information
  • New and cool gallery style
  • New content converter plugin (ContentConverter/XmlBuilder)
  • New plugin for syntax highlighting (Misc/SyntaxHighlighter)
  • Many changes to the core (plugin system revised, webgen can now be used from other Ruby applications directly, faster node resolution, hooks are now spelled with only lowercase letters, …)
  • Structure of meta information blocks changed
  • New meta information linkAttrs for setting additional attributes on links
  • Handling and structure of meta information backing file changed
  • Evaluation of page files changed (first converted to HTML, then ERB, then webgen tags)
  • “Static” menus now available
  • New sub-commands for the webgen command
  • Gallery editor application deprecated.
  • Many tests have been added.
  • Documentation on the homepage as well as the API documentation is now more complete
  • Fixed many bugs
  • Many other changes

For detailed information have a look at the ChangeLog file included in the webgen distribution!

Upcoming features:

  • More documentation
  • Blogging plugins
  • RSS generation plugins

webgen 0.3.8 released

Published on by Thomas Leitner

Bug fix release

webgen 0.3.7 released

Published on by Thomas Leitner

Major changes:

  • Now using cmdparse version 2.0.0!
  • Attention: For unified naming in reference to image galleries, I have removed all occurences of the word “picture” from the code and documentation and replaced it with “image”. Therefore you may need to adapt your code, especially custom gallery layouters!
  • Attention: Many documentation and library files have been renamed for better consistency! Custom plugins may have to be adapted!
  • New application for managing image galleries (only alpha quality currently!)
  • Smileys are now optionally replaced with emoticons (several different emoticon packs available) -> see Misc/SmileyReplacer
  • Site specific commands (used in command line processing) can now be used
  • New plugin Tag/Download for nice download links
  • New parameters: PageFileHandler:defaultPageMetaData, SitemapTag:honorInMenu
  • Removed parameters: PageFileHandler:useERB, PageFileHandler:defaultContentFormat
  • Renamed tag navbar to breadcrumbTrail
  • Images in image galleries can now be ordered by specifying the orderInfo meta information
  • The use of directory index files is now optional: by setting the parameter File/DirectoryHandler:indexFile to nil directory index files are not used
  • Languages can now be specified using 2-char ISO-639-1 codes or 3-char ISO-639-2 codes
  • Now there is a link (next to the wiki link) to the source of each page unless the page was programmatically generated.

webgen 0.3.4 released

Published on by Thomas Leitner

Major changes:

  • FileHandler now uses path patterns and/or extensions for determining which files to process!
  • ERB (embedded ruby) can now be used in templates and page files !
  • Relocatable tag now accepts complex URIs (URIs with query and fragment part, absolute URIs)
  • Changed meta info name menuOrder to orderInfo (e.g. used for specifying order information for menus) – you have to adapt your page and backing files!!!
  • New parameters: PageFileHandler:useERB
  • Changed parameters: FileHandler:ignorePaths, CopyFileHandler:paths
  • New page describing meta information items used by plugins
  • Fixed bugs

webgen 0.3.3 released

Published on by Thomas Leitner

Major changes:

  • New command line interface based on CommandParser
  • Now you can let webgen create the basic directories and files by executing webgen create my_site
  • New logging plugin lets you have more control over logging and log files
  • Now each website can have a plugin directory
  • New parameters for: Tag/WikiLink
  • Changed format of backing files -> have a look at the documentation
  • Removed obsolete Extension Loader plugin
  • Fixed bugs

webgen 0.3.2 released

Published on by Thomas Leitner

Bug fix release for bug #1637 and other bugs

webgen 0.3.1 released

Published on by Thomas Leitner

Major changes:

  • Better DefaultLayouter for image galleries
  • Output names for page files now customizable (see File/PageHandler)
  • On-the-fly creation of thumbnails for images with RMagick
  • New tags: Tag/Sitemap
  • Tag lang renamed, new name langbar!
  • New parameters for menu tag
  • Automatic checking of HTML files on their validness
  • Fixed bugs

webgen 0.3.0 released

Published on by Thomas Leitner

Major changes:

  • Textile, Markdown, RDOC and HTML as content format supported!!!
  • New tags: Tag/WikiLink
  • Improved plugin system
  • On-the-fly creation of new tags
  • Fixed bugs
  • Improved online documentation: pages on file handlers and tags now show parameters and other additional info
  • Added comprehensive test suite
  • and more…

webgen 0.2.0 released

Published on by Thomas Leitner

The new release contains some more documentation, bug fixes and many new features:

  • directly noticeable is the colorized output for showing plugins and the configuration parameters
  • more tags and new options for the existing tags
  • support for ‘virtual files’ which allow the inclusion of links to external files into menus and the like
  • better default handling of various error situations
  • it’s now easier to add new plugins for tags and file handlers
  • and more …

And last but not least, there is now a homepage at which was generated with webgen and shows most of its features.

webgen 0.1.0 released

Published on by Thomas Leitner

webgen is a template based web page generator. It is used to generate static web pages from templates and page description files.

All basic things are working and some documentation does also exist :-).

An example website is included which should get you started. Use “rake testsite” or change to the testsite directory and type “ruby -I../lib ../bin/webgen” to build the testsite. The output will go to testsite/output.