Skip to content

Commit

Permalink
chore: refactor XML helpers
Browse files Browse the repository at this point in the history
  • Loading branch information
Desdaemon committed Mar 20, 2024
1 parent 625db08 commit ca9a783
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 25 deletions.
2 changes: 1 addition & 1 deletion src/index.rs
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ async fn add_root_xml(root: Spur, path: PathBuf, module_name: ModuleName) -> mie
},
None => break,
Some(Err(err)) => {
debug!("error parsing {}:\n{err}", path.display());
debug!(target: "add_root_xml", "error parsing {}:\n{err}", path.display());
break;
}
_ => {}
Expand Down
55 changes: 31 additions & 24 deletions src/record.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,27 +60,7 @@ impl Record {
stack += 1;
}
if local.as_str() == "field" {
let mut is_inherit_id = false;
let mut maybe_inherit_id = None;
loop {
match reader.next() {
Some(Ok(Token::Attribute { local, value, .. }))
if local.as_str() == "name" && value.as_str() == "inherit_id" =>
{
is_inherit_id = true
}
Some(Ok(Token::Attribute { local, value, .. })) if local.as_str() == "ref" => {
maybe_inherit_id = Some(value.as_str());
}
Some(Ok(Token::ElementEnd { .. })) => break,
None | Some(Err(_)) => break,
_ => {}
}
}
if !is_inherit_id || stack > 1 {
continue;
}
let Some(maybe_inherit_id) = maybe_inherit_id else {
let Some(maybe_inherit_id) = extract_inherit_id(reader, stack) else {
continue;
};
if maybe_inherit_id.contains('.') {
Expand Down Expand Up @@ -160,15 +140,15 @@ impl Record {

loop {
match reader.next() {
Some(Ok(Token::Attribute { local, value, .. })) if in_template => match local.as_bytes() {
b"id" => {
Some(Ok(Token::Attribute { local, value, .. })) if in_template => match local.as_str() {
"id" => {
if let Some((_, xml_id)) = value.split_once('.') {
id = Some(xml_id.into());
} else {
id = Some(value.as_str().into());
}
}
b"inherit_id" => {
"inherit_id" => {
if value.contains('.') {
inherit_id = Some(interner().get_or_intern(value.as_str()).into());
} else {
Expand Down Expand Up @@ -295,3 +275,30 @@ impl Record {
}))
}
}

fn extract_inherit_id<'text>(reader: &mut Tokenizer<'text>, stack: i32) -> Option<&'text str> {
let mut is_inherit_id = false;
let mut maybe_inherit_id = None;
loop {
match reader.next() {
Some(Ok(Token::Attribute { local, value, .. }))
if local.as_str() == "name" && value.as_str() == "inherit_id" =>
{
is_inherit_id = true
}
Some(Ok(Token::Attribute { local, value, .. })) if local.as_str() == "ref" => {
maybe_inherit_id = Some(value.as_str());
}
Some(Ok(Token::ElementEnd { .. })) => break,
None | Some(Err(_)) => break,
_ => {}
}
}
if !is_inherit_id || stack > 1 {
return None;
}
let Some(maybe_inherit_id) = maybe_inherit_id else {
return None;
};
Some(maybe_inherit_id)
}

0 comments on commit ca9a783

Please sign in to comment.