use crate::application::{
OutputToken,
errors::{ErrorPresenter, ErrorToken},
};
fn render(token: &OutputToken) -> &'static str {
match token {
OutputToken::Conflict => "✗ conflict",
OutputToken::UpdateBranch => "✗ update-branch",
OutputToken::SyncUnknown => "? sync-unknown",
OutputToken::CiFail => "✗ ci-fail",
OutputToken::CiAction => "⚠ ci-action",
OutputToken::ReviewRequested => "⚠ review",
OutputToken::MergeReady => "✓ merge-ready",
}
}
fn render_error(token: ErrorToken) -> &'static str {
match token {
ErrorToken::AuthRequired => "! gh auth login",
ErrorToken::RateLimited => "✗ rate-limited",
ErrorToken::ApiError => "✗ api-error",
}
}
pub fn render_to_string(tokens: &[OutputToken]) -> String {
tokens.iter().map(render).collect::<Vec<_>>().join(" ")
}
pub fn display(tokens: &[OutputToken]) {
print!("{}", render_to_string(tokens));
}
pub struct Presenter;
impl ErrorPresenter for Presenter {
fn show_error(&self, token: ErrorToken) {
print!("{}", render_error(token));
}
}