Sha256: 16b4a417c5421b63758a04e779353e092bef82e36c294d3fa6f2c0829f0bfa32

Contents?: true

Size: 1.71 KB

Versions: 2

Compression:

Stored size: 1.71 KB

Contents

# Mashed

A Mash.

## Installation

Add this line to your application's Gemfile:

    gem 'mashed'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install mashed

## Usage

```ruby
Mash = Mashed::Mash

m = Mash.new(title: "Hello", starred: false, completed_at: nil)

m.title # => "Hello"
m.methods # => ["title", "starred", "completed_at"]

tasks = Api(:tasks, :v1).get("/tasks", list_id: "inbox").json.map { |hash| Mash.new(hash) }

tasks.each do |task|
  puts tasks.title
end
```

### A Mash Is Not A Hash

```ruby
Mash = Mashed::Mash

m = Mash.new(a: "A", b: "B")
m.map { |key, value| puts [key, value].inspect } # => raise

# assuming activesupport is present...

m.with_indifferent_access # => nil
# there is no key of "with_indifferent_access" for the internal hash
```

### There is also a StringyHash

```ruby
h = StringyHash.stringify(a: "A", b: "B")

h["a"] === h[:a] # => true

h[:something_new] = "foo"
h.key?(:something_new) # => true
h.key?("something_new") # => true
```

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

## StringyHash

To help make the Mash work there also is a StringyHash class. It's a
simple delegate to the normal Hash except that it tries to enforce that
all incoming and outgoing keys are strings.

### Usage

```ruby
StringyHash = Mash::StringyHash

sh = StringyHash.new(title: "Hello", starred: false, completed_at: nil)
sh.keys # => ["title", "starred", "completed_at"]
sh[:title] # => "Hello"
sh["title"] # => "Hello"

class Title
  def to_s
    "title"
  end
end

sh[Title.new] # => "Hello"
```

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mashed-1.0.2 README.md
mashed-1.0.1 README.md