README.md in banditmask-0.1.0 vs README.md in banditmask-0.2.0

- old
+ new

@@ -1,5 +1,7 @@ +# [![Gem Version](https://badge.fury.io/rb/banditmask.svg)](http://badge.fury.io/rb/banditmask) [![Build Status](https://travis-ci.org/jparker/banditmask.svg?branch=master)](https://travis-ci.org/jparker/banditmask) + # BanditMask BanditMask provides a generic wrapper for working with bitmasks. ## Installation @@ -18,11 +20,11 @@ $ gem install banditmask ## Usage -Create a class which inherits from BanditMask and declare the available bit +Create a class which inherits from `BanditMask`, and declare the available bit names and their corresponding values. ```ruby class ChmodMask < BanditMask bit :read, 0b001 @@ -31,11 +33,11 @@ end ChmodMask.bits # => { :read => 1, :write => 2, :execute => 4 } ``` -To instantiate a new mask class: +Instantiate a new mask class: ```ruby mask = ChmodMask.new # or current_bitmask = 0b001 | 0b010 @@ -60,14 +62,56 @@ ```ruby mask.names # => [:read, :write] ``` +In an class with a bitmask attribute, extend `BanditMask::Banditry` and call +`BanditMask::Banditry.bandit_mask` to add accessor methods for working with the +bitmask attribute. + +```ruby +class ObjectWithBitmaskAttribute + attr_accessor :bitmask + + extend BanditMask::Banditry + bandit_mask :bitmask, as: :bits, with: ChmodMask +end + +obj = ObjectWithBitmaskAttribute.new +obj.bitmask = 0b011 +``` + +This gives you a reader method which delegates to `BanditMask#names`. + +```ruby +obj.bits # => [:read, :write] +``` + +It also gives you a writer method which lets you overwrite the bitmask. + +```ruby +obj.bits = [:read, :execute] +obj.bitmask # => 5 +``` + +Finally, it gives you a query method for checking whether a particular bit is +set on the bitmask. + +```ruby +obj.has? :read # => true +obj.has? :write # => false +``` + ## Development -After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment. +After checking out the repo, run `bin/setup` to install dependencies. Then, run +`bin/console` for an interactive prompt that will allow you to experiment. -To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). +To install this gem onto your local machine, run `bundle exec rake install`. To +release a new version, update the version number in `version.rb`, and then run +`bundle exec rake release` to create a git tag for the version, push git +commits and tags, and push the `.gem` file to +[rubygems.org](https://rubygems.org). ## Contributing 1. Fork it ( https://github.com/[my-github-username]/banditmask/fork ) 2. Create your feature branch (`git checkout -b my-new-feature`)