2
1
Fork 0

Compare commits

...

2 commits

Author SHA1 Message Date
4b9a0e9ff2
typegen: add module and name fields to type files 2024-07-22 15:24:43 -07:00
db73ccf0d1
typegen: add module names 2024-07-22 15:00:09 -07:00
3 changed files with 40 additions and 25 deletions

View file

@ -107,6 +107,7 @@ hidetitle = true
}
let index = outform::ModuleIndex {
name: module.header.name.to_string(),
description: module.header.description,
details: module.details.to_string(),
};

View file

@ -4,14 +4,23 @@ use serde::Serialize;
#[derive(Debug, Serialize)]
pub struct ModuleIndex {
pub name: String,
pub description: String,
pub details: String,
}
#[derive(Debug, Serialize)]
pub struct TypeInfo {
pub name: String,
pub module: String,
#[serde(flatten)]
pub details: TypeDetails,
}
#[derive(Debug, Serialize)]
#[serde(rename_all = "lowercase")]
#[serde(tag = "type")]
pub enum TypeInfo {
pub enum TypeDetails {
Class(ClassInfo),
Enum(EnumInfo),
}

View file

@ -211,37 +211,42 @@ pub fn resolve_types(
None => HashMap::new(),
};
let type_ = outform::ClassInfo {
superclass,
description: class.description.clone(),
details: class.details.clone(),
flags: {
let mut flags = Vec::new();
let type_ = outform::TypeInfo {
name: mapping.name.clone(),
module: mapping.module.clone().unwrap(),
details: outform::TypeDetails::Class(outform::ClassInfo {
superclass,
description: class.description.clone(),
details: class.details.clone(),
flags: {
let mut flags = Vec::new();
if coreenum.is_some() {
flags.push(Flag::Enum);
} else if class.singleton {
flags.push(Flag::Singleton);
} else if class.uncreatable {
flags.push(Flag::Uncreatable);
}
if coreenum.is_some() {
flags.push(Flag::Enum);
} else if class.singleton {
flags.push(Flag::Singleton);
} else if class.uncreatable {
flags.push(Flag::Uncreatable);
}
flags
},
properties,
functions,
signals,
variants,
flags
},
properties,
functions,
signals,
variants,
}),
};
outtypes.insert(mapping.name.clone(), outform::TypeInfo::Class(type_));
outtypes.insert(mapping.name.clone(), type_);
}
for enum_ in typespec.enums {
if enum_.module.as_ref().map(|v| v as &str) == Some(module) {
outtypes.insert(
enum_.name,
outform::TypeInfo::Enum(outform::EnumInfo {
outtypes.insert(enum_.name.clone(), outform::TypeInfo {
name: enum_.name,
module: enum_.module.unwrap(),
details: outform::TypeDetails::Enum(outform::EnumInfo {
description: enum_.description,
details: enum_.details,
variants: enum_
@ -254,7 +259,7 @@ pub fn resolve_types(
})
.collect(),
}),
);
});
}
}