You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
davhojt d556894a35 docs(events): correct grammar 2 years ago
..
README.md docs(events): correct grammar 2 years ago

README.md

events

Instructions

You have to design a notification system for a platform.

Depending on the type of event, your event handler will control the size, color and position of the notification.

Create a method named notify which returns a Notification with the following characteristics for each of:

  • Remainder:
    • size: 50
    • color: (50, 50, 50)
    • position: Bottom
    • content: the slice associated to the enum value.
  • Registration(chrono::Duration):
    • size: 30
    • color: (255, 2, 22)
    • position: Top
    • content: "You have {duration} left before the registration ends"
  • Appointment(text)
    • size: 100
    • color: (200, 200, 3)
    • position: Center
    • content: text associated to the value
  • Holiday
    • size: 25
    • color: (0, 255, 0)
    • position: Top
    • content: "Enjoy your holiday"

duration must be displayed in the form of {hours}H:{minutes}M:{seconds}S. The time will represent the remaining time before the event starts. For example, if there are 2 hours, 32 minutes and 3 seconds left, then the content will be "You have 13H:38M:14S left before the registration ends"

Implement the std::fmt::Display trait so the text of the notifications are printed in the right color in the command line.

Dependencies

chrono = "0.4"

Expected Functions and Data Structures

use chrono::Duration;
use colored::*;

#[derive(Debug, Eq, PartialEq)]
enum Position {
	Top,
	Bottom,
	Center,
}

#[derive(Debug, Eq, PartialEq)]
struct Notification {
	size: u32,
	color: (u8, u8, u8),
	position: Position,
	content: String,
}

#[derive(Debug)]
enum Event<'a> {
	Remainder(&'a str),
	Registration(Duration),
	Appointment(&'a str),
	Holiday,
}

use std::fmt;

impl fmt::Display for Notification {
}

use Event::*;

impl Event {
	fn notify(&self) -> Notification {
	}
}

Usage

Here is a program to test your function.

use events::Event::*;
use chrono::Duration;

fn main() {
	let remainder = Remainder("Go to the doctor");
	println!("{}", remainder.notify());
	let registration = Registration(Duration::seconds(49094));
	println!("{}", registration.notify());
	let appointment = Appointment("Go to the doctor");
	println!("{}", appointment.notify());
	let holiday = Holiday;
	println!("{}", holiday.notify());
}

And its output

$ cargo run
(Bottom, 50, Go to the doctor)
(Top, 30, You have 13H:38M:14S left before the registration ends)
(Center, 100, Go to the doctor)
(Top, 25, Enjoy your holiday)
$

Notions