Giter Site home page Giter Site logo

go-chainable's Introduction

Hi ๐Ÿ‘‹, I'm Mauricio

Fullstack Engineer, ๐Ÿฃ in ๐Ÿ‡ง๐Ÿ‡ท, ๐Ÿ  in ๐Ÿ‡ช๐Ÿ‡ธ

3x AWS Certified | Staff Software Enginner @ CommerceHub | ex-AWS

kleinmau

  • ๐Ÿ“ I regularly write articles on mklein.io

  • ๐Ÿ’ฌ Ask me about React, NodeJS, Typescript, AWS, Serverless

  • ๐Ÿ“„ Know about my experiences on Linkedin

Connect with me:

mklein kleinmau mauricioklein 4995725

Languages and Tools:

amplify aws bash circleci css3 docker express git go graphql heroku html5 javascript jekyll jenkins jest kafka kubernetes linux mocha mysql nodejs postgresql postman puppeteer rails react redis ruby travisci typescript

mauricioklein

ย mauricioklein

go-chainable's People

Contributors

mauricioklein avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

xexi

go-chainable's Issues

Panic when the last function in the chain has no return value

When the last function in the chain returns nothing, the system panics:

f1 := func() int { return 0 }
f2 := func(x int) {}

New().Chain(f1, f2).Unwrap()

For the case above, the Unwrap method is supposed to return any zero-value (like an empty string) and a nil error

Gracefully handle argument type mismatch

When the values provided by the chain to a function don't match the arguments type expected by the function, a panic is raised:

f1 := func() int { return 0 }
f2 := func(str string) {}

_, err := New().Chain(f1, f2).Unwrap()

The library should be able to identify such cases and raise a proper error in the chain.

Providing a "nil" value on "chain.From()" causes a panic

Providing a nil argument in chain.From() causes a panic:

// Using `Chain()`
New().From(nil).Chain(
   func (e error) error { return e },
).Unwrap()
// Using `ChainDummy()`
New().From(nil).ChainDummy(
   func (e error) error { return e },
).Unwrap()

The system should accept such values just fine and perform all the validations and logic as any other values provided to the chain.

Library doesn't support non-primitive types

For non-primitive types, the library panics:

type thing struct{}

f1 := func(t thing) thing { return t }
f2 := func(t thing) {}

New().From(thing{}).ChainDummy(f1, f2).Unwrap()

It is supposed to handle non-primitive values just fine, performing all the checkings as a primitive value today.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.