Skip to content

Commit

Permalink
remove cardtype generic
Browse files Browse the repository at this point in the history
it seemed like a good idea at the time
  • Loading branch information
TBS1996 committed Dec 29, 2024
1 parent 6398e28 commit 98393f3
Show file tree
Hide file tree
Showing 17 changed files with 279 additions and 289 deletions.
10 changes: 5 additions & 5 deletions speki-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use incread::inc_path;
use review::{review_menu, view_card};
use speki_core::{current_time, App, TimeProvider};
use speki_core::{
AnyType, Attribute, AttributeCard, BackSide, CType, Card, CardId, ClassCard, EventCard,
CardType, Attribute, AttributeCard, BackSide, CType, Card, CardId, ClassCard, EventCard,
InstanceCard, NormalCard, SimpleRecall, StatementCard, TimeStamp, UnfinishedCard,
};
use utils::{
Expand Down Expand Up @@ -142,13 +142,13 @@ pub fn get_timestamp(front: &str) -> TimeStamp {
}
}

pub async fn create_card(ty: CType, app: &App) -> Option<Card<AnyType>> {
pub async fn create_card(ty: CType, app: &App) -> Option<Card> {
let ty = create_type(ty, app).await?;
Some(app.new_any(ty).await)
}

pub async fn create_type(ty: CType, app: &App) -> Option<AnyType> {
let any: AnyType = match ty {
pub async fn create_type(ty: CType, app: &App) -> Option<CardType> {
let any: CardType = match ty {
CType::Instance => new_instance(app).await?.into(),
CType::Normal => new_normal()?.into(),
CType::Unfinished => new_unfinished()?.into(),
Expand Down Expand Up @@ -255,7 +255,7 @@ async fn print_card_info(app: &App, id: CardId) {
let card = app.load_card(id).await.unwrap();
let dependencies = card.dependency_ids().await;

if let AnyType::Instance(ty) = card.card_type() {
if let CardType::Instance(ty) = card.card_type() {
let concept = app.load_card(ty.class).await.unwrap().print().await;
println!("concept: {}", concept);
}
Expand Down
30 changes: 15 additions & 15 deletions speki-cli/src/review.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use crate::{
use dialoguer::{theme::ColorfulTheme, Input, Select};
use rand::prelude::*;
use speki_core::{
AnyType, Attribute, AttributeCard, BackSide, Card, CardId, ClassCard, EventCard, InstanceCard,
CardType, Attribute, AttributeCard, BackSide, Card, CardId, ClassCard, EventCard, InstanceCard,
StatementCard,
};
use speki_dto::Recall;
Expand Down Expand Up @@ -173,7 +173,7 @@ async fn handle_review_action(app: &App, card: CardId, action: ReviewAction) ->
}
}

async fn create_attribute_card(card: &Card<AnyType>, app: &App) -> Option<AttributeCard> {
async fn create_attribute_card(card: &Card, app: &App) -> Option<AttributeCard> {
notify(format!("Which instance ?"));
let instance_id = select_from_all_instance_cards(app).await?;
let instance = app.load_card(instance_id).await.unwrap();
Expand Down Expand Up @@ -224,16 +224,16 @@ async fn handle_action(app: &App, card: CardId, action: CardAction) -> ControlFl

match action {
CardAction::IntoAttribute => match card.card_type() {
AnyType::Normal(_) | AnyType::Unfinished(_) => {
CardType::Normal(_) | CardType::Unfinished(_) => {
if let Some(attr) = create_attribute_card(&card, app).await {
card.into_type(attr).await;
}
}
AnyType::Attribute(_) => {}
AnyType::Instance(_) => {}
AnyType::Class(_) => {}
AnyType::Statement(_) => {}
AnyType::Event(_) => {}
CardType::Attribute(_) => {}
CardType::Instance(_) => {}
CardType::Class(_) => {}
CardType::Statement(_) => {}
CardType::Event(_) => {}
},

CardAction::IntoInstance => {
Expand Down Expand Up @@ -370,7 +370,7 @@ async fn handle_action(app: &App, card: CardId, action: CardAction) -> ControlFl
}

CardAction::ParentClass => {
if let AnyType::Class(class) = card.card_type() {
if let CardType::Class(class) = card.card_type() {
if let Some(parent_class) = select_from_all_class_cards(app).await {
if parent_class != card.id() {
let mut class = class.clone();
Expand Down Expand Up @@ -464,7 +464,7 @@ async fn print_card(app: &App, card: CardId, mut show_backside: bool) -> Control
let card = app.load_card(card).await.unwrap();

let var_name = match card.card_type() {
AnyType::Instance(instance) => match card.back_side() {
CardType::Instance(instance) => match card.back_side() {
Some(_) => {
let parent_class = app.load_card(instance.class).await.unwrap();
let front = format!(
Expand All @@ -482,28 +482,28 @@ async fn print_card(app: &App, card: CardId, mut show_backside: bool) -> Control
}
},

AnyType::Normal(_) => {
CardType::Normal(_) => {
let front = card.print().await;
let back = card.display_backside().await.unwrap_or_default();
(front, back)
}
AnyType::Unfinished(_) => {
CardType::Unfinished(_) => {
show_backside = true;
let front = card.print().await;
let back = String::from("card has no answer yet");
(front, back)
}
AnyType::Attribute(_) => {
CardType::Attribute(_) => {
let front = card.print().await;
let back = card.display_backside().await.unwrap_or_default();
(front, back)
}
AnyType::Class(_) => {
CardType::Class(_) => {
let front = card.print().await;
let back = card.display_backside().await.unwrap_or_default();
(front, back)
}
AnyType::Statement(_) | AnyType::Event(_) => {
CardType::Statement(_) | CardType::Event(_) => {
show_backside = true;
let front = card.print().await;
let back = String::default();
Expand Down
14 changes: 7 additions & 7 deletions speki-cli/src/utils.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use dialoguer::{theme::ColorfulTheme, Input, Select};
use speki_core::{AnyType, App, Attribute, Card, CardId};
use speki_core::{CardType, App, Attribute, Card, CardId};
use speki_dto::AttributeId;
use speki_provider::paths;
use std::path::Path;
Expand All @@ -17,28 +17,28 @@ pub fn notify(msg: impl Into<String>) {
}

pub async fn select_from_subclass_cards(app: &App, class: CardId) -> Option<CardId> {
let cards: Vec<Arc<Card<AnyType>>> = app
let cards: Vec<Arc<Card>> = app
.load_all_cards()
.await
.into_iter()
.filter(|card| block_on(card.load_ancestor_classes()).contains(&class))
.collect();

enumselector::select_item_with_formatter(cards, |card: &Arc<Card<AnyType>>| {
enumselector::select_item_with_formatter(cards, |card: &Arc<Card>| {
block_on(card.print())
})?
.id()
.into()
}

pub async fn select_from_all_instance_cards(app: &App) -> Option<CardId> {
let cards: Vec<Arc<Card<AnyType>>> = app
let cards: Vec<Arc<Card>> = app
.load_all_cards()
.await
.into_iter()
.filter(|card| card.is_instance())
.collect();
enumselector::select_item_with_formatter(cards, |card: &Arc<Card<AnyType>>| {
enumselector::select_item_with_formatter(cards, |card: &Arc<Card>| {
block_on(card.print())
})?
.id()
Expand All @@ -50,7 +50,7 @@ use std::sync::Arc;

pub async fn select_from_all_class_cards(app: &App) -> Option<CardId> {
let cards = app.load_all_cards().await;
enumselector::select_item_with_formatter(cards, |card: &Arc<Card<AnyType>>| {
enumselector::select_item_with_formatter(cards, |card: &Arc<Card>| {
block_on(card.print())
})?
.id()
Expand All @@ -77,7 +77,7 @@ pub fn select_from_attributes(attributes: Vec<Attribute>) -> Option<AttributeId>
pub async fn select_from_all_cards(app: &App) -> Option<CardId> {
enumselector::select_item_with_formatter(
app.load_all_cards().await,
|card: &Arc<Card<AnyType>>| block_on(card.print()).to_owned(),
|card: &Arc<Card>| block_on(card.print()).to_owned(),
)?
.id()
.into()
Expand Down
18 changes: 9 additions & 9 deletions speki-core/src/card/card_types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,33 +60,33 @@ impl CardTrait for UnfinishedCard {
}
}

impl From<StatementCard> for AnyType {
impl From<StatementCard> for CardType {
fn from(value: StatementCard) -> Self {
Self::Statement(value)
}
}

impl From<NormalCard> for AnyType {
impl From<NormalCard> for CardType {
fn from(value: NormalCard) -> Self {
Self::Normal(value)
}
}
impl From<UnfinishedCard> for AnyType {
impl From<UnfinishedCard> for CardType {
fn from(value: UnfinishedCard) -> Self {
Self::Unfinished(value)
}
}
impl From<AttributeCard> for AnyType {
impl From<AttributeCard> for CardType {
fn from(value: AttributeCard) -> Self {
Self::Attribute(value)
}
}
impl From<InstanceCard> for AnyType {
impl From<InstanceCard> for CardType {
fn from(value: InstanceCard) -> Self {
Self::Instance(value)
}
}
impl From<ClassCard> for AnyType {
impl From<ClassCard> for CardType {
fn from(value: ClassCard) -> Self {
Self::Class(value)
}
Expand Down Expand Up @@ -204,7 +204,7 @@ impl EventCard {
pub async fn valid_sub_event(&self, other: CardId, app: &App) -> bool {
let other = app.load_card(other).await.unwrap();

let AnyType::Event(other) = other.data else {
let CardType::Event(other) = other.ty else {
panic!("wrong type");
};

Expand All @@ -213,15 +213,15 @@ impl EventCard {

pub async fn valid_parent_event(&self, parent: CardId, app: &App) -> bool {
let parent = app.load_card(parent).await.unwrap();
let AnyType::Event(parent) = parent.data else {
let CardType::Event(parent) = parent.ty else {
panic!("wrong type");
};

parent.inner_valid_sub_event(self)
}
}

impl From<EventCard> for AnyType {
impl From<EventCard> for CardType {
fn from(value: EventCard) -> Self {
Self::Event(value)
}
Expand Down
Loading

0 comments on commit 98393f3

Please sign in to comment.