Skip to content

Commit

Permalink
examples
Browse files Browse the repository at this point in the history
  • Loading branch information
inoas committed Jan 1, 2025
1 parent 928ad1a commit 897e5c2
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 39 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

<!-- ## [Unreleased] -->

## [4.1.1] - 2025-01-01

- Improved examples.

## [4.1.0] - 2025-01-01

- Added alternatives function names and label names:
Expand Down
63 changes: 44 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,93 +38,118 @@ import given.{given, not_given}
pub fn given_example() {
let user_understood = False
use <- given(user_understood, return: fn() { "💡 Bright!" })
use <- given(user_understood, return: fn() { "💡 Bright!" })
// …else handle case where user did not understand here…
"🤯 Woof!"
}
pub fn not_given_example() {
let has_admin_role = True
// Fetch this from some database
use <- not_given(has_admin_role, return: fn() { "✋ Denied!" })
let has_admin_role = True
use <- not_given(has_admin_role, return: fn() { "✋ Denied!" })
// …else handle case where they are admin here…
"👌 Access granted..."
}
pub fn given_ok_in_example() {
let a_result = Ok("Hello Joe!")
use ok_value <- given.ok_in(result: a_result, else_return: fn(_error_value) {
"Error value"
})
// …handle Ok value here…
ok_value
}
pub fn given_ok_example() {
let a_result = Ok("Hello Joe, again!")
use ok_value <- given.ok(in: a_result, else_return: fn(_error_value) {
"Error value"
})
// …handle Ok value here…
ok_value
}
pub fn given_error_in_example() {
let a_result = Error("Memory exhausted!")
use error_value <- given.error_in(a_result, else_return: fn(_ok_value) {
"Ok value"
})
// …handle Error value here…
error_value
}
pub fn given_error_example() {
let a_result = Error("Memory exhausted, again!")
use error_value <- given.error(in: a_result, else_return: fn(_ok_value) {
"Ok value"
})
// …handle Error value here…
error_value
}
import gleam/option.{None, Some}
pub fn given_some_in_example() {
let an_option = Some("One Penny")
use some_value <- given.some_in(an_option, else_return: fn() { "Woof!" })
use some_value <- given.some_in(an_option, else_return: fn() { "Woof!" })
// …handle Some value here…
some_value
}
pub fn given_some_example() {
let an_option = Some("One More Penny")
use some_value <- given.some(in: an_option, else_return: fn() { "Woof!" })
// …handle Some value here…
some_value
}
pub fn given_none_in_example() {
let an_option = None
use <- given.none_in(an_option, else_return: fn(_some_value) { "Some value" })
use <- given.none_in(an_option, else_return: fn(_some_value) { "Some value" })
// …handle None here…
"None, e.g. Nothing at all"
}
pub fn given_none_in_another_example() {
pub fn given_none_example() {
let an_option = None
use _else_some_value <- given.none_in(an_option, return: fn() { "None here" })
// …handle Some value here…
"Some value here"
use <- given.none(in: an_option, else_return: fn(_some_value) { "Some value" })
// …handle None here…
"None, e.g. Still nothing!"
}
import gleam/io
pub fn main() {
given_example() |> io.debug
// "🤯 Woof!"
not_given_example() |> io.debug
// "👌 Access granted..."
given_ok_in_example() |> io.debug
// "Hello Joe!"
given_error_in_example() |> io.debug
// "Memory exhausted!"
given_some_in_example() |> io.debug
// "One Penny"
given_none_in_example() |> io.debug
// "None, e.g. Nothing at all"
given_ok_example() |> io.debug
// "Hello Joe, again!"
given_error_example() |> io.debug
// "Memory exhausted, again!"
given_some_example() |> io.debug
// "One More Penny"
given_none_example() |> io.debug
// "None, e.g. Still nothing"
}
```

Expand Down
2 changes: 1 addition & 1 deletion gleam.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name = "given"
version = "4.1.0"
version = "4.1.1"

# Fill out these fields if you intend to generate HTML documentation or publish
# your project to the Hex package manager.
Expand Down
63 changes: 44 additions & 19 deletions src/given/internal/examples.gleam
Original file line number Diff line number Diff line change
Expand Up @@ -2,91 +2,116 @@ import given.{given, not_given}

pub fn given_example() {
let user_understood = False
use <- given(user_understood, return: fn() { "💡 Bright!" })

use <- given(user_understood, return: fn() { "💡 Bright!" })
// …else handle case where user did not understand here…

"🤯 Woof!"
}

pub fn not_given_example() {
let has_admin_role = True
// Fetch this from some database
use <- not_given(has_admin_role, return: fn() { "✋ Denied!" })
let has_admin_role = True

use <- not_given(has_admin_role, return: fn() { "✋ Denied!" })
// …else handle case where they are admin here…

"👌 Access granted..."
}

pub fn given_ok_in_example() {
let a_result = Ok("Hello Joe!")

use ok_value <- given.ok_in(result: a_result, else_return: fn(_error_value) {
"Error value"
})

// …handle Ok value here…
ok_value
}

pub fn given_ok_example() {
let a_result = Ok("Hello Joe, again!")

use ok_value <- given.ok(in: a_result, else_return: fn(_error_value) {
"Error value"
})
// …handle Ok value here…
ok_value
}

pub fn given_error_in_example() {
let a_result = Error("Memory exhausted!")

use error_value <- given.error_in(a_result, else_return: fn(_ok_value) {
"Ok value"
})
// …handle Error value here…
error_value
}

pub fn given_error_example() {
let a_result = Error("Memory exhausted, again!")

use error_value <- given.error(in: a_result, else_return: fn(_ok_value) {
"Ok value"
})
// …handle Error value here…
error_value
}

import gleam/option.{None, Some}

pub fn given_some_in_example() {
let an_option = Some("One Penny")
use some_value <- given.some_in(an_option, else_return: fn() { "Woof!" })

use some_value <- given.some_in(an_option, else_return: fn() { "Woof!" })
// …handle Some value here…
some_value
}

pub fn given_some_example() {
let an_option = Some("One More Penny")

use some_value <- given.some(in: an_option, else_return: fn() { "Woof!" })
// …handle Some value here…
some_value
}

pub fn given_none_in_example() {
let an_option = None
use <- given.none_in(an_option, else_return: fn(_some_value) { "Some value" })

use <- given.none_in(an_option, else_return: fn(_some_value) { "Some value" })
// …handle None here…

"None, e.g. Nothing at all"
}

pub fn given_none_in_another_example() {
pub fn given_none_example() {
let an_option = None
use _else_some_value <- given.none_in(an_option, return: fn() { "None here" })

// …handle Some value here…

"Some value here"
use <- given.none(in: an_option, else_return: fn(_some_value) { "Some value" })
// …handle None here…
"None, e.g. Still nothing!"
}

import gleam/io

pub fn main() {
given_example() |> io.debug
// "🤯 Woof!"

not_given_example() |> io.debug
// "👌 Access granted..."

given_ok_in_example() |> io.debug
// "Hello Joe!"

given_error_in_example() |> io.debug
// "Memory exhausted!"

given_some_in_example() |> io.debug
// "One Penny"

given_none_in_example() |> io.debug
// "None, e.g. Nothing at all"
given_ok_example() |> io.debug
// "Hello Joe, again!"
given_error_example() |> io.debug
// "Memory exhausted, again!"
given_some_example() |> io.debug
// "One More Penny"
given_none_example() |> io.debug
// "None, e.g. Still nothing"
}

0 comments on commit 897e5c2

Please sign in to comment.