https://github.com/yujideveloper/rekkyo
Enumerated type in Ruby
https://github.com/yujideveloper/rekkyo
enum enumerated-types ruby
Last synced: 10 months ago
JSON representation
Enumerated type in Ruby
- Host: GitHub
- URL: https://github.com/yujideveloper/rekkyo
- Owner: yujideveloper
- License: mit
- Created: 2018-12-07T06:07:43.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2024-02-19T02:51:09.000Z (over 2 years ago)
- Last Synced: 2024-12-28T19:31:15.443Z (over 1 year ago)
- Topics: enum, enumerated-types, ruby
- Language: Ruby
- Size: 75.2 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Rekkyo
[](https://badge.fury.io/rb/rekkyo)
[](https://github.com/yujideveloper/rekkyo/actions/workflows/ruby.yml)
[](https://codeclimate.com/github/yujideveloper/rekkyo/maintainability)
Rekkyo (列挙) is a gem for defining an enumerated type in Ruby.
This gem is inspired by [`ruby-enum`](https://rubygems.org/gems/ruby-enum) and [`enum_class`](https://rubygems.org/gems/enum_class).
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'rekkyo'
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install rekkyo
## Usage
### Basic usage
``` ruby
class Color
include Rekkyo::Type
member :RED
member :GREEN
member :BLUE
end
{ color: Color::RED }.to_json # => "{\"color\":\"RED\"}
Color::RED.red? # => true
Color::BLUE.blue? # => false
Color::RED == Color::RED # => true
Color::RED == Color::BLUE # => false
Color::RED == :RED # => false
Color::RED == "RED" # => false
Color::RED === Color::RED # => true
Color::RED === Color::BLUE # => false
Color::RED === :RED # => true
Color::RED === "RED" # => true
Color::RED.match?(Color::RED) # => true
Color::RED.match?(Color::BLUE) # => false
Color::RED.match?(:RED) # => true
Color::RED.match?("RED") # => true
case "RED"
when Color::RED then "#FF0000"
when Color::BLUE then "#00FF00"
when Color::GREEN then "#0000FF"
else "Unkown"
end
# => "#FF0000"
```
### Custom value
``` ruby
class Color
include Rekkyo::Type
member :RED, "#FF0000"
member :GREEN, "#00FF00"
member :BLUE, "#0000FF"
end
Color::RED.red? # => true
Color::BLUE.blue? # => false
{ color: Color::RED }.to_json # => "{\"color\":\"#FF0000\"}"
Color::RED == Color::RED # => true
Color::RED == Color::BLUE # => false
Color::RED == :"#FF0000" # => false
Color::RED == "#FF0000" # => false
Color::RED === Color::RED # => true
Color::RED === Color::BLUE # => false
Color::RED === :"#FF0000" # => true
Color::RED === "#FF0000" # => true
Color::RED.match?(Color::RED) # => true
Color::RED.match?(Color::BLUE) # => false
Color::RED.match?(:"#FF0000") # => true
Color::RED.match?("#FF0000") # => true
case "#FF0000"
when Color::RED then "RED"
when Color::BLUE then "BLUE"
when Color::GREEN then "GREEN"
else "Unkown"
end
# => "RED"
```
## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also 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`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/yujideveloper/rekkyo.
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).