README.md in active_fedora-noid-0.1.0 vs README.md in active_fedora-noid-0.2.0
- old
+ new
@@ -1,2 +1,131 @@
-# active_fedora-noid
-Noid identifier services for ActiveFedora-based applications
+[![Version](https://badge.fury.io/rb/active_fedora-noid.png)](http://badge.fury.io/rb/active_fedora-noid)
+[![Apache 2.0 License](http://img.shields.io/badge/APACHE2-license-blue.svg)](./LICENSE)
+[![Contribution Guidelines](http://img.shields.io/badge/CONTRIBUTING-Guidelines-blue.svg)](./CONTRIBUTING.md)
+[![API Docs](http://img.shields.io/badge/API-docs-blue.svg)](http://rubydoc.info/gems/active_fedora-noid)
+[![Build Status](https://travis-ci.org/projecthydra-labs/active_fedora-noid.png?branch=master)](https://travis-ci.org/projecthydra-labs/active_fedora-noid)
+[![Dependency Status](https://gemnasium.com/projecthydra-labs/active_fedora-noid.png)](https://gemnasium.com/projecthydra-labs/active_fedora-noid)
+[![Coverage Status](https://img.shields.io/coveralls/projecthydra-labs/active_fedora-noid.svg)](https://coveralls.io/r/projecthydra-labs/active_fedora-noid?branch=master)
+
+# ActiveFedora::Noid
+
+Override your ActiveFedora-based applications with opaque [Noid](https://wiki.ucop.edu/display/Curation/NOID)-based identifiers.
+
+**This gem depends only upon ActiveFedora, not on Hydra or HydraHead**
+
+# Installation
+
+Add this line to your application's Gemfile:
+
+ gem 'active_fedora-noid'
+
+And then execute:
+
+ $ bundle install
+
+Or install it yourself via:
+
+ $ gem install active_fedora-noid
+
+# Usage
+
+## Minting and validating identifiers
+
+Mint a new Noid:
+
+```ruby
+noid_service = ActiveFedora::Noid::Service.new
+noid = noid_service.mint
+```
+
+This creates a Noid with the default identifier template, which you can override (see below). Now that you have a service object with a template, you can also use it to validate identifier to see if they conform to the template:
+
+```ruby
+noid_service.valid? 'xyz123foobar'
+> false
+```
+
+## ActiveFedora integration
+
+To get ActiveFedora to automatically call your Noid service whenever a new ActiveFedora object is saved, create a method on your model called `assign_id` and have it talk to your Noid service, e.g.:
+
+```ruby
+# app/models/my_object.rb
+require 'active_fedora/noid'
+
+class MyObject < ActiveFedora::Base
+ # ...
+
+ def assign_id
+ noid_service.mint
+ end
+
+ # ...
+
+ private
+
+ def noid_service
+ @noid_service ||= ActiveFedora::Noid::Service.new
+ end
+end
+```
+
+## Overriding default behavior
+
+The default minter creates a Noid and dumps it to a statefile in the /tmp directory. You can override the location or name of this statefile as follows:
+
+```ruby
+require 'active_fedora/noid'
+
+ActiveFedora::Noid.configure do |config|
+ config.statefile = '/var/foo/bar'
+end
+```
+
+To override the default identifier pattern -- a nine-character string consisting of two alphanumeric digits, two numeric digits, two alphanumeric digits, two numeric digits, and a check digit -- put the following code in e.g. `config/initializers/active_fedora-noid.rb`:
+
+```ruby
+require 'active_fedora/noid'
+
+ActiveFedora::Noid.configure do |config|
+ config.template = '.ddddd'
+end
+```
+
+For more information about the format of Noid patterns, see pages 8-10 of the [Noid documentation](https://wiki.ucop.edu/download/attachments/16744482/noid.pdf).
+
+If you don't want your minter's state to be persisted, you may also pass in your own minter. First write up a minter class that looks like the following:
+
+```ruby
+class MyMinter
+ def initialize(*args)
+ # do something if you need initialization
+ end
+
+ def mint
+ # spit out an identifier
+ end
+
+ def valid?(identifier)
+ # return true/false if you care about ids conforming to templates
+ end
+end
+```
+
+Then inject an instance of your minter into ActiveFedora::Noid::Service:
+
+```ruby
+noid_service = ActiveFedora::Noid::Service.new(MyMinter.new)
+```
+
+And the service will delegate minting and validating to an instance of your customized minter class.
+
+# Help
+
+If you have questions or need help, please email [the Hydra community tech list](mailto:hydra-tech@googlegroups.com) or stop by [the Hydra community IRC channel](irc://irc.freenode.net/projecthydra).
+
+# Acknowledgments
+
+This software has been developed by and is brought to you by the Hydra community. Learn more at the
+[Project Hydra website](http://projecthydra.org)
+
+![Project Hydra Logo](https://github.com/uvalib/libra-oa/blob/a6564a9e5c13b7873dc883367f5e307bf715d6cf/public/images/powered_by_hydra.png?raw=true)