- Notifications
You must be signed in to change notification settings - Fork12
Pipeline pattern for your jobs, tasks, etc.. (Golang)
License
izniburak/pipeline-go
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This package allows you to use the Pipeline pattern in your processes, and it's built upon the Chain of Responsibility (CoR) design pattern.
CoR is a behavioral design pattern that processes given data through a series of handlers. When a request reaches the pipe class, it processes the data and then forwards it to the next handler. The principle behind this pattern is straightforward.
In summary, the Pipeline is a design pattern tailored for managing sequential modifications to an object. Imagine it as an assembly line: each station represents a pipe, and by the end of the line, you're left with a transformed object.
go get github.com/izniburak/pipeline-go
package mainimport ("fmt""strings""github.com/izniburak/pipeline-go")typeUpperCasePipestruct{}func (u*UpperCasePipe)Handle(value pipeline.PipeValue,next pipeline.PipeNext) pipeline.PipeValue {// get valuetext:=value.(string)capitalized:=strings.ToUpper(text)returnnext(capitalized)}typeTrimSpacePipestruct{}func (t*TrimSpacePipe)Handle(value pipeline.PipeValue,next pipeline.PipeNext) pipeline.PipeValue {// get valuetext:=value.(string)trimmed:=strings.Trim(text," ")returnnext(trimmed)}funcmain() {text:=" buki.dev "pipes:= []pipeline.PipeInterface{new(UpperCasePipe),new(TrimSpacePipe),}result:=pipeline.Send(text).Through(pipes).ThenReturn()fmt.Println(result)// BUKI.DEV}
- Fork the repo (https://github.com/izniburak/pipeline-go/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
- izniburak İzni Burak Demirtaş - creator, maintainer
The MIT License (MIT) - seelicense.md
for more details
About
Pipeline pattern for your jobs, tasks, etc.. (Golang)