delegate
Version, currently 0.2.02 versions
- 0.2.0latestAug 23, 2018
- 0.1.0not indexedOct 4, 2018
github.com/anicholson/delegate
delegator macros for Crystal
4 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
delegate:
github: anicholson/delegate
version: ~> 0.2.0Then run:
shards installshard.yml
- Crystal
0.26.0- License
- MIT
- Author
- Andy Nicholson
Dependencies
This version declares no dependencies.
README
delegate
Ruby's delegate feature, implemented as Crystal macros.
Installation
Add this to your application's shard.yml:
dependencies:
delegate:
github: anicholson/delegate
Usage
require "delegate"
class Engine
def state
:stopped
end
end
class Car
include Delegate
def initialize(@engine)
end
private getter engine
delegate to: engine, methods: [state]
end
car = Car.new(Engine.new)
car.state # => :stopped
delegating to non-implemented methods results in a compile-time error:
require "delegate"
# ... Engine definition as before
class Motorbike
def initialize(@engine)
end
private getter engine
delegate to: engine, methods: [state, current_gear]
end
bike = Motorbike.new(Engine.new)
bike.current_gear # :boom: compile error: Engine does not implement :current_gear
Development
- Check out the code via
git clone - Run
shards install - Run
crystal specto run all tests.
Contributing
- Fork it (https://github.com/your-github-user/delegate/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Contributors
- anicholson Andy Nicholson - creator, maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.2.0- Tagged
- Aug 23, 2018
- Commit
4d09e81e341c- Crystal
0.26.0- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/anicholson/delegate
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 2