|
|
|
@ -16,7 +16,6 @@ impl From<nom::Err<nom::error::Error<&str>>> for SaveEntityParseError {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[derive(Debug, PartialEq)]
|
|
|
|
#[derive(Debug, PartialEq)]
|
|
|
|
pub(crate) enum Token {
|
|
|
|
pub(crate) enum Token {
|
|
|
|
Tag(String),
|
|
|
|
Tag(String),
|
|
|
|
@ -33,7 +32,12 @@ pub(crate) fn tokenize(line: &str) -> Vec<Token> {
|
|
|
|
|
|
|
|
|
|
|
|
while l.len() > 0 {
|
|
|
|
while l.len() > 0 {
|
|
|
|
debug!("Line: {:?}", l);
|
|
|
|
debug!("Line: {:?}", l);
|
|
|
|
if let Ok((rem, (_, s, _))) = tuple((char::<&str, ()>('"'), take_until("\""), char::<&str, ()>('"')))(l) {
|
|
|
|
if let Ok((rem, (_, s, _))) = tuple((
|
|
|
|
|
|
|
|
char::<&str, ()>('"'),
|
|
|
|
|
|
|
|
take_until("\""),
|
|
|
|
|
|
|
|
char::<&str, ()>('"'),
|
|
|
|
|
|
|
|
))(l)
|
|
|
|
|
|
|
|
{
|
|
|
|
debug!("Parsed string {:?}", s);
|
|
|
|
debug!("Parsed string {:?}", s);
|
|
|
|
tokens.push(Token::Str(s.into()));
|
|
|
|
tokens.push(Token::Str(s.into()));
|
|
|
|
l = rem;
|
|
|
|
l = rem;
|
|
|
|
@ -41,13 +45,14 @@ pub(crate) fn tokenize(line: &str) -> Vec<Token> {
|
|
|
|
debug!("Parsed float {:?}", num);
|
|
|
|
debug!("Parsed float {:?}", num);
|
|
|
|
tokens.push(Token::Num(num.into()));
|
|
|
|
tokens.push(Token::Num(num.into()));
|
|
|
|
l = rem;
|
|
|
|
l = rem;
|
|
|
|
} else if let Ok((rem, (_, tag, _))) = tuple((space0, alphanumeric1::<&str, ()>, space0))(l) {
|
|
|
|
} else if let Ok((rem, (_, tag, _))) = tuple((space0, alphanumeric1::<&str, ()>, space0))(l)
|
|
|
|
|
|
|
|
{
|
|
|
|
debug!("Parsed tag {:?}", tag);
|
|
|
|
debug!("Parsed tag {:?}", tag);
|
|
|
|
tokens.push(Token::Tag(tag.into()));
|
|
|
|
tokens.push(Token::Tag(tag.into()));
|
|
|
|
l = rem;
|
|
|
|
l = rem;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
debug!("Breaking loop");
|
|
|
|
debug!("Breaking loop");
|
|
|
|
break
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -72,11 +77,12 @@ fn test_tokenize() {
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///
|
|
|
|
///
|
|
|
|
/// Returns reflected `Transform`
|
|
|
|
/// Returns reflected `Transform`
|
|
|
|
///
|
|
|
|
///
|
|
|
|
pub(crate) fn parse_save_transform(tokens: &Vec<Token>) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
pub(crate) fn parse_save_transform(
|
|
|
|
|
|
|
|
tokens: &Vec<Token>,
|
|
|
|
|
|
|
|
) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
// Tag(Transform),
|
|
|
|
// Tag(Transform),
|
|
|
|
// Tag(Translation), Number, Number, Number
|
|
|
|
// Tag(Translation), Number, Number, Number
|
|
|
|
// Tag(Rotation), Number, Number, Number, Number
|
|
|
|
// Tag(Rotation), Number, Number, Number, Number
|
|
|
|
@ -107,8 +113,12 @@ fn test_parse_transform() {
|
|
|
|
///
|
|
|
|
///
|
|
|
|
/// Returns a reflected `Name`
|
|
|
|
/// Returns a reflected `Name`
|
|
|
|
///
|
|
|
|
///
|
|
|
|
pub(crate) fn parse_save_name(tokens: &Vec<Token>) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
pub(crate) fn parse_save_name(
|
|
|
|
if let Some((Token::Tag(t), &[Token::Str(ref s)])) = tokens.split_first() && *t == String::from("name") {
|
|
|
|
tokens: &Vec<Token>,
|
|
|
|
|
|
|
|
) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
|
|
|
|
if let Some((Token::Tag(t), &[Token::Str(ref s)])) = tokens.split_first()
|
|
|
|
|
|
|
|
&& *t == String::from("name")
|
|
|
|
|
|
|
|
{
|
|
|
|
Ok(Name::new(s.clone()).clone_value())
|
|
|
|
Ok(Name::new(s.clone()).clone_value())
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
Err(SaveEntityParseError::Component("Name".into()))
|
|
|
|
Err(SaveEntityParseError::Component("Name".into()))
|
|
|
|
@ -159,7 +169,9 @@ impl Component for SaveModel {
|
|
|
|
///
|
|
|
|
///
|
|
|
|
/// Returns a reflected `SaveModel`
|
|
|
|
/// Returns a reflected `SaveModel`
|
|
|
|
///
|
|
|
|
///
|
|
|
|
pub(crate) fn parse_save_model(tokens: &Vec<Token>) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
pub(crate) fn parse_save_model(
|
|
|
|
|
|
|
|
tokens: &Vec<Token>,
|
|
|
|
|
|
|
|
) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
todo!("parse_save_model");
|
|
|
|
todo!("parse_save_model");
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
@ -206,7 +218,9 @@ impl Component for SaveCameraRenderTarget {
|
|
|
|
///
|
|
|
|
///
|
|
|
|
/// Returns a reflected `SaveCameraRenderTarget
|
|
|
|
/// Returns a reflected `SaveCameraRenderTarget
|
|
|
|
///
|
|
|
|
///
|
|
|
|
pub(crate) fn parse_save_camera(tokens: &Vec<Token>) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
pub(crate) fn parse_save_camera(
|
|
|
|
|
|
|
|
tokens: &Vec<Token>,
|
|
|
|
|
|
|
|
) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
todo!("parse_save_camera");
|
|
|
|
todo!("parse_save_camera");
|
|
|
|
|
|
|
|
|
|
|
|
// Nothing parsed well
|
|
|
|
// Nothing parsed well
|
|
|
|
@ -281,7 +295,9 @@ impl Component for SaveParent {
|
|
|
|
///
|
|
|
|
///
|
|
|
|
/// Returns a reflected `SaveParent`
|
|
|
|
/// Returns a reflected `SaveParent`
|
|
|
|
///
|
|
|
|
///
|
|
|
|
pub(crate) fn parse_save_parent(tokens: &Vec<Token>) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
pub(crate) fn parse_save_parent(
|
|
|
|
|
|
|
|
tokens: &Vec<Token>,
|
|
|
|
|
|
|
|
) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
todo!("parse_save_parent");
|
|
|
|
todo!("parse_save_parent");
|
|
|
|
|
|
|
|
|
|
|
|
// Ok(SaveParent(parent_file.into()).clone_value())
|
|
|
|
// Ok(SaveParent(parent_file.into()).clone_value())
|
|
|
|
@ -305,7 +321,9 @@ fn test_parse_parent() {
|
|
|
|
///
|
|
|
|
///
|
|
|
|
/// Returns a reflected `Window`
|
|
|
|
/// Returns a reflected `Window`
|
|
|
|
///
|
|
|
|
///
|
|
|
|
pub(crate) fn parse_save_window(tokens: &Vec<Token>) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
pub(crate) fn parse_save_window(
|
|
|
|
|
|
|
|
tokens: &Vec<Token>,
|
|
|
|
|
|
|
|
) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
todo!("parse_save_window");
|
|
|
|
todo!("parse_save_window");
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
@ -342,7 +360,9 @@ fn test_parse_window() {
|
|
|
|
///
|
|
|
|
///
|
|
|
|
/// Returns a reflected `Text`
|
|
|
|
/// Returns a reflected `Text`
|
|
|
|
///
|
|
|
|
///
|
|
|
|
pub(crate) fn parse_save_ui_text(tokens: &Vec<Token>) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
pub(crate) fn parse_save_ui_text(
|
|
|
|
|
|
|
|
tokens: &Vec<Token>,
|
|
|
|
|
|
|
|
) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
|
|
|
|
todo!("parse_save_ui_text");
|
|
|
|
todo!("parse_save_ui_text");
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
|