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`)