use prosaic_core::{Engine, ProsaicError, Salience};
pub fn register(engine: &mut Engine) -> Result<(), ProsaicError> {
register_rename_templates(engine)?;
register_delete_templates(engine)?;
register_add_templates(engine)?;
register_modify_templates(engine)?;
register_move_templates(engine)?;
register_signature_templates(engine)?;
Ok(())
}
fn register_rename_templates(engine: &mut Engine) -> Result<(), ProsaicError> {
engine.register_template_at(
"code.renamed",
"{old_name|refer} was renamed to {new_name}",
Salience::Low,
)?;
engine.register_template_at(
"code.renamed",
"{old_name|refer} is now called {new_name}",
Salience::Low,
)?;
engine.register_template(
"code.renamed",
"{old_name|refer} was renamed to {new_name}{?consumer_count}, \
which impacts {consumer_count} direct {consumer_count|pluralize:consumer}{?consumers} \
{consumers|truncate:3|join}{/?}{/?}",
)?;
engine.register_template(
"code.renamed",
"{old_name|refer} has been renamed to {new_name}{?consumer_count}, \
affecting {consumer_count} {consumer_count|pluralize:dependent}{?consumers} \
{consumers|truncate:3|join}{/?}{/?}",
)?;
engine.register_template(
"code.renamed",
"{old_name|refer} is now called {new_name}{?consumer_count} \
({consumer_count} {consumer_count|pluralize:consumer} affected{?consumers}: \
{consumers|truncate:3|join}{/?}){/?}",
)?;
engine.register_template_at(
"code.renamed",
"{old_name|refer} has been renamed to {new_name} \u{2014} a significant change \
rippling through {consumer_count} direct {consumer_count|pluralize:consumer}{?consumers}, \
including {consumers|truncate:5|join:bracketed}{/?}",
Salience::High,
)?;
engine.register_template_at(
"code.renamed",
"{old_name|refer} was renamed to {new_name}. This change affects a substantial \
{consumer_count} {consumer_count|pluralize:dependent}{?consumers} \u{2014} notably \
{consumers|truncate:5|join:bracketed}{/?}",
Salience::High,
)?;
Ok(())
}
fn register_delete_templates(engine: &mut Engine) -> Result<(), ProsaicError> {
engine.register_template_at("code.deleted", "{name|refer} was removed", Salience::Low)?;
engine.register_template_at(
"code.deleted",
"{name|refer} has been deleted",
Salience::Low,
)?;
engine.register_template(
"code.deleted",
"{name|refer} was removed{?consumer_count}, \
impacting {consumer_count} {consumer_count|pluralize:dependent}{?consumers} \
{consumers|truncate:3|join}{/?}{/?}",
)?;
engine.register_template(
"code.deleted",
"{name|refer} has been deleted{?consumer_count} \
({consumer_count} {consumer_count|pluralize:reference} to update{?consumers}: \
{consumers|truncate:3|join}{/?}){/?}",
)?;
engine.register_template(
"code.deleted",
"{name|refer} no longer exists{?consumer_count}, \
breaking {consumer_count} {consumer_count|pluralize:consumer}{?consumers} \
{consumers|truncate:3|join}{/?}{/?}",
)?;
engine.register_template_at(
"code.deleted",
"{name|refer} has been removed entirely \u{2014} a breaking change affecting \
{consumer_count} {consumer_count|pluralize:consumer}{?consumers} including \
{consumers|truncate:5|join:bracketed}{/?}. All {consumer_count|pluralize:reference} \
will need migration.",
Salience::High,
)?;
Ok(())
}
fn register_add_templates(engine: &mut Engine) -> Result<(), ProsaicError> {
engine.register_template(
"code.added",
"A new {entity_type} {name} was added in {location}",
)?;
engine.register_template(
"code.added",
"The {entity_type} {name} was introduced in {location}",
)?;
engine.register_template(
"code.added",
"{name} \u{2014} a new {entity_type} \u{2014} was created in {location}",
)?;
Ok(())
}
fn register_modify_templates(engine: &mut Engine) -> Result<(), ProsaicError> {
engine.register_template_at("code.modified", "{name|refer} was modified", Salience::Low)?;
engine.register_template_at(
"code.modified",
"{name|refer} has been updated",
Salience::Low,
)?;
engine.register_template(
"code.modified",
"{name|refer} was modified{?consumer_count}, \
which may affect {consumer_count} {consumer_count|pluralize:consumer}{?consumers} \
{consumers|truncate:3|join}{/?}{/?}",
)?;
engine.register_template(
"code.modified",
"{name|refer} has been updated{?consumer_count} \
({consumer_count} {consumer_count|pluralize:consumer} may need review{?consumers}: \
{consumers|truncate:3|join}{/?}){/?}",
)?;
engine.register_template(
"code.modified",
"Changes to {name|refer}{?consumer_count} affect \
{consumer_count} {consumer_count|pluralize:dependent}{?consumers} \
{consumers|truncate:3|join}{/?}{/?}",
)?;
engine.register_template_at(
"code.modified",
"{name|refer} has been substantially modified, with downstream impact \
across {consumer_count} {consumer_count|pluralize:consumer}{?consumers} \
including {consumers|truncate:5|join:bracketed}{/?}. Thorough review is \
recommended.",
Salience::High,
)?;
Ok(())
}
fn register_move_templates(engine: &mut Engine) -> Result<(), ProsaicError> {
engine.register_template(
"code.moved",
"{name|refer} was moved from {old_location} to {new_location}{?consumer_count}, \
requiring import updates in {consumer_count} {consumer_count|pluralize:file}{?consumers} \
{consumers|truncate:3|join}{/?}{/?}",
)?;
engine.register_template(
"code.moved",
"{name|refer} has been relocated to {new_location}{?consumer_count} \
({consumer_count} {consumer_count|pluralize:import} to update{?consumers}: \
{consumers|truncate:3|join}{/?}){/?}",
)?;
Ok(())
}
fn register_signature_templates(engine: &mut Engine) -> Result<(), ProsaicError> {
engine.register_template(
"code.signature_changed",
"The signature of {name|refer} was changed{?consumer_count}, \
requiring updates in {consumer_count} {consumer_count|pluralize:caller}{?consumers} \
{consumers|truncate:3|join}{/?}{/?}",
)?;
engine.register_template(
"code.signature_changed",
"{name|refer} has a new signature{?consumer_count}, \
impacting {consumer_count} call {consumer_count|pluralize:site}{?consumers} \
{consumers|truncate:3|join}{/?}{/?}",
)?;
Ok(())
}