Sha256: 44ef433fe68350b4eed043121500f05640eda71023bd5759f2edbf68e503ee87

Contents?: true

Size: 1.85 KB

Versions: 1

Compression:

Stored size: 1.85 KB

Contents

#md_data

An easy notation for describing multidimensional data.

For example:

```
1994
  BuenosAires
    Coal
      19t
    Potassium
      5t
1995
  BuenosAires
    Coal
      8t
    Potassium
      6t
```

Can be written down as:

```
class MaterialConsumption
  include MdData

  dimension :year, [:year_1994, :year_1995]
  dimension :city, [:buenos_aires, :zagreb]
  dimension :material, [:coal, :potassium]

  table_data do
    context 'year_1994 && buenos_aires' do
      add '8t', 'coal'
      add '5t', 'potassium'
    end
    context 'year_1995 && buenos_aires' do
      add '8t', 'coal'
      add '5t', 'potassium'
    end
  end
end

MaterialConsumption.select(:year => :year_1994, :city => :buenos_aires, :material => :coal) #=> '8t'
```
##Usage
By defining dimensions you get helper methods that can be used in 'context' and 'add' conditionals.

```
context 'year_1994 && buenos_aires'  do
  add '8t', 'coal'
end
```

Equals

```
context 'year == :year_1994 && city == :buenos_aires' do
  add '8t', 'material == :coal'
end
```

Important thing here is that this is still just Ruby in quotes. You can add any conditionals that you need
while you still have basic scenario covered and simplified.

##Usage
For any type of ruled based querying, when you want to pull out specific data based on attributes and rules.

## Installation

Add this line to your application's Gemfile:

    gem 'md_data'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install md_data

## Limitations

* No nested context allowed(yet)
* Tests for mis formed data definition
* Support for same dimension instance value and resolving of ambiguity

## Contributing

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
md_data-1.1.1 README.md