Compare commits

...
Author SHA1 Message Date
alphafetus a9dfbb423f refactor: remove unused traits crate
This crate was created as an experimental way to make data stores reactive, but is no longer used or required.
2026-09-24 12:18:18 -04:00
Lucas Vas 2e0e47d72b Merge pull request #81 from R15-Software-Dev/fix/admin-file-errors
Insert trailing commas after lists of strings
2026-04-27 15:02:16 -04:00
alphafetus 287598bb79 fix: insert trailing commas after lists of strings
This was already present for lists of dictionaries, but lists that contained a single string also failed to parse properly.
2026-04-27 14:57:31 -04:00
5 changed files with 2 additions and 99 deletions

No files matched your search

+2 -1
View File
@@ -554,7 +554,8 @@ pub async fn get_student_pdf(student_id: String) -> Result<(String, Vec<u8>), Se
.replace("[", "(") .replace("[", "(")
.replace("]", ")") .replace("]", ")")
// Ensures trailing commas for lists of dictionaries // Ensures trailing commas for lists of dictionaries
.replace("))", "),)"); .replace("))", "),)")
.replace("\")", "\",)");
debug_log!("New string: {}", typst_string); debug_log!("New string: {}", typst_string);
-7
View File
@@ -1,7 +0,0 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "traits"
version = "0.1.0"
-6
View File
@@ -1,6 +0,0 @@
[package]
name = "traits"
version = "0.1.0"
edition = "2024"
[dependencies]
-3
View File
@@ -1,3 +0,0 @@
pub mod reactive;
pub use reactive::*;
-82
View File
@@ -1,82 +0,0 @@
/// Trait that ensures a reactive struct can be created from a non-reactive struct.
///
/// For example:
///
/// ```rust
/// struct User {
/// id: i32,
/// name: String
/// }
///
/// struct UserReactive {
/// id: RwSignal<i32>,
/// name: RwSignal<String>
/// }
///
/// impl ReactiveCapture for UserReactive {
/// // implement - required for ReactiveType.
/// }
///
/// impl AsReactive for User {
/// type ReactiveType = UserReactive;
/// fn as_reactive(self) -> UserReactive {
/// UserReactive {
/// id: RwSignal::new(self.id),
/// name: RwSignal::new(self.name)
/// }
/// }
/// }
/// ```
pub trait AsReactive {
/// The type of the reactive struct. It must implement `ReactiveCapture`.
type ReactiveType: ReactiveCapture;
/// Wraps all fields of the struct into an `RwSignal`, returning a new
/// "reactive" struct.
///
/// Note that this method consumes the original struct and returns a new
/// reactive struct.
fn as_reactive(self) -> Self::ReactiveType;
}
/// Trait that ensures a reactive struct can be captured into a non-reactive struct.
/// The "captured" struct does not contain *any* reactive fields, meaning that it is not
/// wrapped in an `RwSignal`.
///
/// The captured struct should simply collect all the values from the reactive fields at
/// that point in time.
///
/// For example:
///
/// ```rust
/// struct User {
/// id: i32,
/// name: String
/// }
///
/// struct UserReactive {
/// id: RwSignal<i32>,
/// name: RwSignal<String>
/// }
///
/// impl AsReactive for User {
/// // implement - required for CaptureType.
/// }
///
/// impl ReactiveCapture for UserReactive {
/// type CaptureType = User;
/// fn capture(&self) -> User {
/// User {
/// id: self.id.get(),
/// name: self.name.get()
/// }
/// }
/// }
/// ```
pub trait ReactiveCapture {
/// The type of the captured struct. It must implement `AsReactive`.
type CaptureType: AsReactive;
/// Captures the current state of the reactive struct into a non-reactive struct.
fn capture(&self) -> Self::CaptureType;
}