Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rickbutton/has-properties
Gem that provides an easy way to create basic objects with properties
https://github.com/rickbutton/has-properties
Last synced: 5 days ago
JSON representation
Gem that provides an easy way to create basic objects with properties
- Host: GitHub
- URL: https://github.com/rickbutton/has-properties
- Owner: rickbutton
- License: mit
- Created: 2012-12-08T15:43:19.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2012-12-08T16:07:42.000Z (almost 12 years ago)
- Last Synced: 2024-10-18T08:36:53.561Z (20 days ago)
- Language: Ruby
- Size: 110 KB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# has-properties
`has_properties` provides an easy way to create basic class definitions with properties.
It essentially wraps a lot of `attr_(reader/writer/accessor)` calls into a neat package
with a nifty initializer.## Installation
Add this line to your application's Gemfile:
gem 'has-properties'
And then execute:
$ bundle
Or install it yourself as:
$ gem install has-properties
## Usage Example
1. Include the `HasProperties` module
2. Define your properties
3. ??????
4. Profit?```
class Example
include HasProperties
has_read_properties :readable, :another_readable
has_write_properties :writable, :another_writable
has_properties :readable_and_writable
end
e = Example.new(:readable => 1, :writable => 2, :readable_and_writable => 3)
```
```
e.readable
=> 1
```
```
e.readable = 2
=> NoMethodError
```
```
e.writable
=> NoMethodError
```
```
e.writable = 3
=> 3
```
```
e.readable_and_writable
=> 3
```
```
e.readable_and_writable = 4
=> 4
```### Some notes
You don't have to include every property in the initializer hash. For example, the example above
defines the `:another_readable` property, but it was never initialized when the object was created.
This means that a call to `e.another_readable` would equal `nil`.```
e.another_readable
=> nil
```## 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