Current section
Files
Jump to
Current section
Files
src/example.gleam
// This is example program running on JavaScript runtime.
import gleam/dynamic.{string}
import gleam/fetch
import gleam/http/request
import gleam/io
import gleam/javascript/promise
import gleam/result
import gleam/string
import gleam_community/ansi
import jasper.{Index, Key, Root, String, parse_json, query_json}
pub fn main() {
let word = "gleam"
use body <- promise.await(fetch(word))
let _ =
result.try(body, fn(body) {
let mean = parse(body)
io.println(
"Gleam mean..."
|> ansi.yellow,
)
io.println(
mean
|> ansi.yellow,
)
Ok(mean)
})
promise.resolve(Ok(Nil))
}
pub fn fetch(word: String) {
let url =
["https://api.dictionaryapi.dev/api/v2/entries/en/", word]
|> string.concat
let assert Ok(req) = request.to(url)
use resp <- promise.try_await(fetch.send(req))
use resp <- promise.try_await(fetch.read_text_body(resp))
promise.resolve(Ok(resp.body))
}
fn parse(body: String) {
let assert Ok(json) = parse_json(body)
let assert Ok(String(definition)) =
query_json(
json,
Root
|> Index(0)
|> Key("meanings")
|> Index(0)
|> Key("definitions")
|> Index(0)
|> Key("definition"),
)
definition
}