Packages
caffeine_lang
0.0.1
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang/phase_1/parser/utils/general_common.gleam
import caffeine_lang/types/ast
import gleam/dict
import gleam/list
import gleam/result
import gleam/string
// ==== Public ====
/// Converts a string to an accepted type.
pub fn string_to_accepted_type(
string: String,
) -> Result(ast.AcceptedTypes, String) {
case string {
"Boolean" -> Ok(ast.Boolean)
"Decimal" -> Ok(ast.Decimal)
"Integer" -> Ok(ast.Integer)
"String" -> Ok(ast.String)
"List(String)" ->
Ok(ast.List(ast.String))
_ -> Error("Unknown attribute type: " <> string)
}
}
/// Extracts team and service name parameters from the file path.
pub fn extract_params_from_file_path(
file_path: String,
) -> Result(dict.Dict(String, String), String) {
use #(team_name, service_name) <- result.try(
case file_path |> string.split("/") |> list.reverse {
[file, team, ..] -> Ok(#(team, string.replace(file, ".yaml", "")))
_ -> Error("Invalid file path: expected at least 'team/service.yaml'")
},
)
let params =
dict.from_list([#("team_name", team_name), #("service_name", service_name)])
Ok(params)
}