Use Gitea Releases for installation and ship VS Code highlighting

This commit is contained in:
Antigravity committed 2026-10-06 14:12:58 +00:00
1 parent a46bd6e132
commit 201bdee372
243 files changed
+3289 -12521

No files matched your search

@@ -0,0 +1,150 @@
public type UserStatus {
Pending
Active
Disabled(reason: Text)
}
public type CreateInput {
id: Id
name: Text
email: Text
phone: Text?
score: Int
labels: Map<Text, Text>
}
public type CreateResult {
Created(user: User)
InvalidName(reason: Text)
InvalidEmail(reason: Text)
}
public type User {
id: Id
name: Text
email: Text
phone: Text?
score: Int
labels: Map<Text, Text>
status: UserStatus
}
public type UserView {
id: Id
name: Text
email: Text
phone: Text
score: Int
can_sign_in: Bool
}
public create(input: CreateInput) (result: CreateResult) {
normalized = normalize(input)
result = create_name(normalized, normalized.name)
}
normalize(input: CreateInput) (result: CreateInput) {
result = input
result.name = text.trim(input.name)
result.email = text.lower(text.trim(input.email))
}
create_name(input: CreateInput, name: "") (result: CreateResult) {
result = CreateResult.InvalidName("name is required")
}
create_name(input: CreateInput, name: other) (result: CreateResult) {
result = create_email(input, name, input.email)
}
create_email(input: CreateInput, name: Text, email: "") (result: CreateResult) {
result = CreateResult.InvalidEmail("email is required")
}
create_email(input: CreateInput, name: Text, email: other) (result: CreateResult) {
user = User {
id = input.id
name = name
email = email
phone = input.phone
score = input.score
labels = input.labels
status = UserStatus.Pending
}
result = CreateResult.Created(user)
}
public activate(user: User) (result: User) {
result = user
result.status = UserStatus.Active
}
public disable(user: User, reason: Text) (result: User) {
result = user
result.status = UserStatus.Disabled(reason)
}
public can_sign_in(status: UserStatus.Active) (allowed: Bool) {
allowed = true
}
public can_sign_in(status: other) (allowed: Bool) {
allowed = false
}
phone_text(phone: Text) (result: Text) {
result = phone
}
phone_text(phone: null) (result: Text) {
result = "Not provided"
}
public to_view(user: User) (view: UserView) {
view = UserView {
id = user.id
name = user.name
email = user.email
phone = phone_text(user.phone)
score = user.score
can_sign_in = can_sign_in(user.status)
}
}
public to_views(users: List<User>) (views: List<UserView>) {
views = each(to_view, users)
}
is_active(user: User) (result: Bool) {
result = can_sign_in(user.status)
}
public active_views(users: List<User>) (views: List<UserView>) {
active = filter(is_active, users)
views = each(to_view, active)
}
has_id(user: User, expected: Id) (matches: Bool) {
matches = user.id == expected
}
public find_user(users: List<User>, id: Id) (user: User?) {
user = find(has_id, users, id)
}
public put_label(user: User, key: Text, value: Text) (result: User) {
result = user
result.labels = put(user.labels, key, value)
}
public label(user: User, key: Text) (value: Text?) {
value = get(user.labels, key)
}
score_bonus(user: User, rate: Decimal) (amount: Decimal) {
amount = user.score * rate
}
public total_score_bonus(users: List<User>, rate: Decimal) (total: Decimal) {
total = sum(score_bonus, users, rate)
}
+1 -11
View File
@@ -4,17 +4,7 @@ use support::{checked, rejected, sources};
#[test]
fn full_language_contract_package_checks_with_the_official_sources() {
let prd = include_str!("../../../.trellis/tasks/09-04-dever-language-mvp/prd.md");
let source = prd
.split_once("## Complete Package Example\n")
.unwrap()
.1
.split_once("```dever\n")
.unwrap()
.1
.split_once("\n```")
.unwrap()
.0;
let source = include_str!("../fixtures/core/complete_package.dever");
let mut sources = dever_core::source::SourceMap::default();
sources.add("account/user.dever", source);
checked(&sources);
+1 -4
View File
@@ -189,10 +189,7 @@ fn current_examples_official_packages_and_complete_contract_roundtrip() {
assert_roundtrip_at(&path, source.text());
}
}
let prd = include_str!("../../../.trellis/tasks/09-04-dever-language-mvp/prd.md");
let (_, example) = prd.split_once("## Complete Package Example\n").unwrap();
let (_, fenced) = example.split_once("```dever\n").unwrap();
assert_roundtrip(fenced.split_once("\n```").unwrap().0);
assert_roundtrip(include_str!("../fixtures/core/complete_package.dever"));
}
fn source_root_relative(path: &FilePath) -> PathBuf {
+1 -4
View File
@@ -47,10 +47,7 @@ fn assigned(expression: &str) -> Expression {
#[test]
fn parses_the_complete_package_from_the_product_contract() {
let prd = include_str!("../../../.trellis/tasks/09-04-dever-language-mvp/prd.md");
let (_, example_section) = prd.split_once("## Complete Package Example\n").unwrap();
let (_, fenced) = example_section.split_once("```dever\n").unwrap();
let (source, _) = fenced.split_once("\n```").unwrap();
let source = include_str!("../fixtures/core/complete_package.dever");
let package = parsed(source);
assert_eq!(
package