Skip to content

Instantly share code, notes, and snippets.

@andihaki
Created November 26, 2025 11:58
Show Gist options
  • Select an option

  • Save andihaki/ca21f6410246f6088030f88f92535492 to your computer and use it in GitHub Desktop.

Select an option

Save andihaki/ca21f6410246f6088030f88f92535492 to your computer and use it in GitHub Desktop.
fn handle_event(&mut self, event: &Event) -> bool {
if let Event::Key(key) = event {
if key.kind == KeyEventKind::Press {
match key.code {
KeyCode::Char('q') | KeyCode::Esc => return false,
KeyCode::Enter => self.calculate_tax(),
KeyCode::Backspace => {
self.input.pop();
}
KeyCode::Char(c) => {
let is_digit = c.is_ascii_digit();
if is_digit && self.input.len() < 18 {
self.input.push(c);
} else if is_digit {
self.tax_bracket_info =
"Input diblokir: Maksimal 18 digit.".to_string();
}
}
_ => {}
}
}
}
true
}
@andihaki
Copy link
Author

andihaki commented Nov 26, 2025

refactor option:

0:

if c.is_ascii_digit() {
    if self.input.len() < 18 {
        self.input.push(c);
    } else {
        self.tax_bracket_info = "Input diblokir: Maksimal 18 digit.".to_string();
    }
}

1:

let is_digit = c.is_ascii_digit();

if !is_digit {
    return;
}

if self.input.len() >= 18 {
    self.tax_bracket_info = "Input diblokir: Maksimal 18 digit.".to_string();
    return;
}

self.input.push(c);

2:

let is_digit = c.is_ascii_digit();

if !is_digit {
} else if self.input.len() >= 18 {
    self.tax_bracket_info =
        "Input diblokir: Maksimal 18 digit.".to_string();
} else {
    self.input.push(c);
}

3:

match (c.is_ascii_digit(), self.input.len()) {
    (true, 0..=17) => {
        self.input.push(c);
    }
    (true, 18..=usize::MAX) => {
        self.tax_bracket_info =
            "Input diblokir: Maksimal 18 digit.".to_string();
    }
    (false, _) => {
    }
}

@andihaki
Copy link
Author

versi claude ai

fn handle_event(&mut self, event: &Event) -> bool {
    let Event::Key(key) = event else {
        return true;
    };

    if key.kind != KeyEventKind::Press {
        return true;
    }

    match key.code {
        KeyCode::Char('q') | KeyCode::Esc => false,
        KeyCode::Enter => {
            self.calculate_tax();
            true
        }
        KeyCode::Backspace => {
            self.input.pop();
            true
        }
        KeyCode::Char(c) if c.is_ascii_digit() => {
            self.handle_digit_input(c);
            true
        }
        _ => true,
    }
}

fn handle_digit_input(&mut self, c: char) {
    if self.input.len() < 18 {
        self.input.push(c);
    } else {
        self.tax_bracket_info = "Input diblokir: Maksimal 18 digit.".to_string();
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment