Contents

0xLet/Chain

⛓ Enum to chain functions together

Example Code

let output = Chain.link(
    .out { "First" },
    .link(
        .in {
            print("Value: \($0)")
        },
        .multi(
            [
                .multi(
                    [
                        .end,
                        .end,
                        .end
                    ]
                ),
                .link(
                    .out { "Link" },
                    .link(
                        .out { "Last" },
                        .complete(
                            .inout { value in
                                guard case .string(let value) = value else {
                                    XCTFail()
                                    return .void
                                }
                                
                                return  .string("\(value) !!!")
                            }
                        )
                    )
                )
            ]
        )
    )
)
.run(name: "ChainTests-testOutput")

Normal Chain Output

(lldb) po output
 Variable
 array : 2 elements
 0 : Variable
      - string : "First"
 1 : Variable
 array : 2 elements
        - 0 : E.Variable.void
 1 : Variable
 array : 2 elements
 0 : Variable
 array : 3 elements
 0 : Variable
 array : 1 element
                    - 0 : E.Variable.void
 1 : Variable
 array : 1 element
                    - 0 : E.Variable.void
 2 : Variable
 array : 1 element
                    - 0 : E.Variable.void
 1 : Variable
 array : 2 elements
 0 : Variable
                  - string : "Link"
 1 : Variable
 array : 2 elements
 0 : Variable
                      - string : "Last"
 1 : Variable
 array : 1 element
 0 : Variable
                          - string : "Last !!!"

Flattened Chain Output

(lldb) po output.flatten
 Variable
 array : 8 elements
 0 : Variable
      - string : "First"
    - 1 : E.Variable.void
    - 2 : E.Variable.void
    - 3 : E.Variable.void
    - 4 : E.Variable.void
 5 : Variable
      - string : "Link"
 6 : Variable
      - string : "Last"
 7 : Variable
      - string : "Last !!!"

Package Metadata

Repository: 0xLet/Chain

Homepage: https://github.com/0xLeif/E.num

Stars: 1

Forks: 0

Open issues: 0

Default branch: main

Primary language: swift

License: MIT

Topics: chain, enum, swift

README: README.md