Skip to content

Commit

Permalink
Simplify
Browse files Browse the repository at this point in the history
  • Loading branch information
ryuichiueda committed Jan 17, 2025
1 parent a1297ef commit 557a555
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 28 deletions.
17 changes: 17 additions & 0 deletions src/elements/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,23 @@ pub fn eat_blank_with_comment(feeder: &mut Feeder, core: &mut ShellCore, ans_tex
true
}

fn eat_blank_lines(feeder: &mut Feeder, core: &mut ShellCore, ans_text: &mut String) -> Result<(), ParseError> {
loop {
eat_blank_with_comment(feeder, core, ans_text);
if feeder.starts_with("\n") {
*ans_text += &feeder.consume(1);
continue;
}

if feeder.len() == 0 {
feeder.feed_additional_line(core)?;
continue;
}

return Ok(());
}
}

fn eat_redirect(feeder: &mut Feeder, core: &mut ShellCore,
ans: &mut Vec<Redirect>, ans_text: &mut String) -> bool {
if let Some(r) = Redirect::parse(feeder, core) {
Expand Down
10 changes: 1 addition & 9 deletions src/elements/command/case.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,15 +131,7 @@ impl CaseCommand {
ans.text += &feeder.consume(2);

loop {
command::eat_blank_with_comment(feeder, core, &mut ans.text);
if feeder.starts_with("\n") {
ans.text += &feeder.consume(1);
}

if feeder.len() == 0 {
feeder.feed_additional_line(core)?;
}

command::eat_blank_lines(feeder, core, &mut ans.text)?;
if feeder.starts_with("esac") {
break;
}
Expand Down
28 changes: 9 additions & 19 deletions src/elements/command/for.rs
Original file line number Diff line number Diff line change
Expand Up @@ -156,21 +156,15 @@ impl ForCommand {
true
}

fn eat_arithmetic(feeder: &mut Feeder, ans: &mut Self, core: &mut ShellCore) -> bool {
fn eat_arithmetic(feeder: &mut Feeder, ans: &mut Self, core: &mut ShellCore) -> Result<bool, ParseError> {
if ! feeder.starts_with("((") {
return false;
return Ok(false);
}
ans.text += &feeder.consume(2);
ans.has_arithmetic = true;

loop {
command::eat_blank_with_comment(feeder, core, &mut ans.text);
if feeder.len() == 0 {
match feeder.feed_additional_line(core).is_ok() {
true => continue,
false => return false,
}
}
command::eat_blank_lines(feeder, core, &mut ans.text)?;

let a = ArithmeticExpr::parse(feeder, core, true);
if a.is_some() {
Expand All @@ -181,17 +175,17 @@ impl ForCommand {
command::eat_blank_with_comment(feeder, core, &mut ans.text);
if feeder.starts_with(";") {
if ans.arithmetics.len() >= 3 {
return false;
return Ok(false);
}
ans.text += &feeder.consume(1);
}else if feeder.starts_with("))") {
if ans.arithmetics.len() != 3 {
return false;
return Ok(false);
}
ans.text += &feeder.consume(2);
return ans.arithmetics.len() == 3;
return Ok(ans.arithmetics.len() == 3);
}else {
return false;
return Ok(false);
}
}
}
Expand Down Expand Up @@ -237,19 +231,15 @@ impl ForCommand {

if Self::eat_name(feeder, &mut ans, core) {
Self::eat_in_part(feeder, &mut ans, core)?;
}else if ! Self::eat_arithmetic(feeder, &mut ans, core) {
}else if ! Self::eat_arithmetic(feeder, &mut ans, core)? {
return Ok(None);
}

if ! Self::eat_end(feeder, &mut ans, core) {
return Ok(None);
}

if feeder.len() == 0 {
feeder.feed_additional_line(core)?;
}

while command::eat_blank_with_comment(feeder, core, &mut ans.text) {}
command::eat_blank_lines(feeder, core, &mut ans.text)?;

if command::eat_inner_script(feeder, core, "do", vec!["done"], &mut ans.do_script, false)? {
ans.text.push_str("do");
Expand Down

0 comments on commit 557a555

Please sign in to comment.