README.md in indexer-0.2.0 vs README.md in indexer-0.3.0

- old
+ new

@@ -1,128 +1,140 @@ -# <span class="ititle">Indexer</span> (v<span class="iversion">0.2.0</span>) +# INDEXER -<b class="isummary">Enable Your Project's Metadata<b> +**Enable Your Project's Metadata** [![Build Status](https://secure.travis-ci.org/rubyworks/indexer.png)](http://travis-ci.org/rubyworks/indexer) +[![Gem Version](https://badge.fury.io/rb/indexer.png)](http://badge.fury.io/rb/indexer) -## Description +## [What is Indexer?](#whatis) -<p class="idescription">Indexer provides projects with a universal metadata format.</p> +Indexer provides projects with a universal metadata format. -Indexer defines a *canonical*, detailed and strict, project <span class="icategory">metadata</span> specification. -The strictness of the specification makes the format simple enough for developers to use without an intermediate API. -Although Indexer also provides a convenience API for working with the specification and its data -more loosely when suitable to the usecase. Indexer also specifies a stanadard location for canonized -metadata to be kept, in a `.index` file. +Indexer defines a *canonical* project metadata specification which is both +detailed and strict. The strictness of the specification makes the format simple +enough for developers to use without an intermediate API. Although Indexer also +provides a convenience API for working with the specification and its data more +loosely when suitable to the usecase. Indexer also specifies a standard +location for canonized metadata to be kept, in a `.index` file. -Indexer provides a tool to import metadata from external sources. Indexer can handle a variety of metadata -source formats, including YAML, HTML Microformats and Ruby DSL scripts. +Indexer provides a tool to import metadata from external sources. Indexer can +handle a variety of metadata source formats, including YAML, HTML Microformats +and Ruby DSL scripts. -## Installation +## [Features](#features) -Indexer is a Ruby application, so as long as you have Ruby installed, it is easy to install Indexer via RubyGems. +* YAML-based format for universal accessibility. +* Platform and programming language agnostic. +* Canonical specification provides idempotent access. +* Convenient Ruby API available. +* Supports custom metadata fields. - $ gem install indexer +## [Instruction](#instruction) -## Instruction +### [Installation](#installation) -Indexer is capable of generating a canonical `.index` file from a variety of sources. Being so flexiable, exactly -how a developer descides to store a project's metadata is a largely a matter of taste. But in general there are -three overall approaches: +Indexer is a Ruby application, so as long as you have Ruby installed, it is easy +to install Indexer via RubyGems. -1. Specify the metadata using microformats in a project's README file. -2. Specify the metadata in one or more static files, often a single YAML file. + $ gem install indexer + +### [Metadata Sources](#sources) + +Indexer is capable of generating a canonical `.index` file from a variety of +sources. Being so flexible, exactly how a developer decides to store a project's +metadata is a largely a matter of taste. But in general there are four overall +approaches: + +1. Specify the metadata in one or more static files, typically a single YAML file. +2. Specify the metadata using microformats in a project's README file. 3. Construct the metadata via a Ruby DSL, customizing the generation in any way. -The first choice is, in many respects, the nicest because it does not require any additional files be added -to a project and it helps to ensure a good README file. On the downside, it requires some HTML be hand-coded -into the README. +The first approach is a great option in the it is the easiest. One can quickly +put together a YAML document covering a project's metadata. Since Indexer is +very flexible in it's parsing of the YAML, it really is a quick and user-friendly +way to go. Typically this file will be called `Index.yml`, but there is no name +requirement. In fact, Indexer will also let you split the metadata up over +multiple files, and can even go as far as using a *file store*, which is +a directory of files, one for each field. -The second approach is a great option in the it is the easiest. One can quickly put together a YAML document -covering a project's metadata. Since Indexer is very flexible in it's parsing of the YAML, it really is a -quick and user-friendly way to go. Typically this file will be called `Index.yml`, but there is no name -requirement. In fact, Indexer will let you split the metadata up over mutliple files, and even use a whole -directory of files, one per field. +The second choice is, in many respects, the nicest because it does not require any +additional files be added to a project and it helps to ensure a good README file. +On the downside, it may require some HTML be hand-coded into the README. If your +README's markup format has a sexy syntax for microformats, this approach rocks. +Otherwise, another approach is probably the better choice. -The last approach provides maximum flexablity. Using the Ruby DSL one can literally script the metadata, -which means it can come from anywhere at all. For example, you might want to pull the project's version -from the `lib/project/version.rb` file, i.e. Bundler style. The DSL is as intutive and as flexible as -using plain YAML, so it's nearly as easy to take this approach. By convention this file is called `Indexfile` -or `Index.rb`, but it too can be any file path one prefers. +The last approach provides maximum flexibility. Using the Ruby DSL one can literally +script the metadata, which means it can come from anywhere at all. For example, +you might want to pull the project's version from the `lib/project/version.rb` +file, i.e. Bundler style. The DSL is as intuitive and as flexible as using plain +YAML, so it's nearly as easy to take this approach. By convention this file is +called `Indexfile` or `Index.rb`, but it too can be any file path one prefers. -On the Indexer wiki you can find detailed tutorials on a variety of setups, along with thier pros and cons. +On the Indexer wiki you can find detailed tutorials on a variety of setups, +along with their pros and cons and various tip and tricks. -As an example of getting started, lets say we want to customize our index metadata via a YAML file, -but we want to keep the version information is a separate `VERSION` file. That's a common layout so Indexer -is designed to handle it out of the box. First create the `VERSION` file. +### [Usage Example](#example) +As an example of getting started, lets say we want to customize our index +metadata via a YAML file, but we want to keep the version information is +a separate `VERSION` file. That's a common layout so Indexer is designed +to handle it out of the box. First create the `VERSION` file. + $ echo '0.1.0' > VERSION -Next we need our YAML file. Indexer makes out life easier by offering us some template generation for -common approaches. In this case we use the `-g/--generate` command option, specifying that we want an -`Index.yml`. +Next we need our YAML file. Indexer makes out life easier by offering us some +template generation for common approaches. In this case we use the `-g/--generate` +command option, specifying that we want an `Index.yml` file. $ index --generate Index.yml Now we can edit the `Index.yaml` file to suite our project. $ vim Index.yml -Once we have the source files setup, its easy to build the canonical `.index` file using the `index` -command line interface. We can simply issue the `index` command with the `-u/--using` command option: +Once we have the source files setup, its easy to build the canonical `.index` +file using the `index` command. We simply issue the `index` command with +the `-u/--using` command option: $ index --using VERSION Index.yml Indexer will utilize both sources and create the `.index` file. -Over time project metadata tends to evolve and change. To keep the canoncial `.index` file up to date simply -call the `index` command without any options. +Over time project metadata tends to evolve and change. To keep the canonical +`.index` file up to date simply call the `index` command without any options. $ index -By default the `.index` file will not be updated if it has a modification time newer than its source files. -If need be, use the `-f/--force` option to override this. +By default the `.index` file will not be updated if it has a modification time +newer than its source files. If need be, use the `-f/--force` option to +override this. -That's the quick "one two". For more information on using Indexer, see the Wiki, API documentation, QED specifications -and the Manpages. +That's the quick "one two" of getting started with Indexer. For more information, +see the Wiki, API documentation, QED specifications and the Manpages. -## Resources +## [Resources](#resources) -<ul> -<li><a class="iresource" href="http://rubyworks.github.com/indexer" name="home">Homepage</a></li> -<li><a class="iresource" href="http://github.com/rubyworks/indexer" name="code">Source Code</a> (Github)</li> -<li><a class="iresource" href="http://rubydoc.info/gems/indexer/frames" name="docs">API Reference</a></li> -<li><a class="irepository" href="http://github.com/rubyworks/indexer/indexer.git" name="upstream">Master Git Repo</a></li> -</ul> +* [Website](http://rubyworks.github.com/indexer) +* [Source Code](http://github.com/rubyworks/indexer) (Github) +* [API Guide](http://rubydoc.info/gems/indexer/frames) +* [Master Git Repo](http://github.com/rubyworks/indexer/indexer.git) -## Requirements +## [Requirements](#requirements) -<ul> -<li class="irequirement"> - <a class="name" href="http://nokogiri.org/">nokogiri</a> <span class="version">1.5+</span></span> -</li> -<li class="irequirement"> - <a class="name" href="http://kramdown.rubyforge.org/">kramdown</a> <span class="version">0.14+</span> -</li> -<li class="irequirement"> - <a class="name" href="https://github.com/vmg/redcarpet">redcarpet</a> <span class="version">2.0+</span> (<span class="optional">optional</span>) -</li> -<li class="irequirement"> - <a class="name" href="http://rubyworks.github.com/qed/">qed</a> <span class="version">2.9+</span> <span class="groups">(test)</span> -</li> -<li class="irequirement"> - <a class="name" href="http://rubyworks.github.com/ae/">ae</a> <span class="version"></span> <span class="groups">(test)</span> -</li> -</ul> +* [nokogiri](http://nokogiri.org/) 1.5+ +* [kramdown](http://kramdown.rubyforge.org/) 0.14+ +* [redcarpet](https://github.com/vmg/redcarpet) 2.0+ (optional) +* [qed](http://rubyworks.github.com/qed/) 2.9+ (test) +* [ae](http://rubyworks.github.com/ae/) (test) -## Authors +## [Authors](#authors) <ul> <li class="iauthor vcard"> <div class="nickname">trans</div> <div><a class="email" href="mailto:transfire@gmail.com">transfire@gmail.com</a></div> @@ -133,16 +145,14 @@ <div><a class="url" href="http://postmodern.github.com/">http://postmodern.github.com/</a></div> </li> </ul> -## Copyrights +## [Copyrights](#copyrights) -<ul> -<li class="icopyright"> - &copy; <span class="year">2012</span> <span class="holder">Rubyworks</span> - <div class="license"> - <a href="http://www.spdx.org/licenses/BSD-2-Clause" rel="license">BSD-2-Clause License</a> - </div> -</li> -<ul> +Indexer is copyrighted open-source software. + +**&copy; 2012 Rubyworks** + +It can be modified and redistributed in accordance with the terms +of the [BSD-2-Clause](http://www.spdx.org/licenses/BSD-2-Clause) license.