| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- pub enum Column {
- Permissions,
- FileName,
- FileSize(bool),
- Blocks,
- User,
- Group,
- HardLinks,
- Inode,
- }
- // Each column can pick its own alignment. Usually, numbers are
- // right-aligned, and text is left-aligned.
- pub enum Alignment {
- Left, Right,
- }
- impl Column {
- pub fn alignment(&self) -> Alignment {
- match *self {
- FileSize(_) => Right,
- HardLinks => Right,
- Inode => Right,
- Blocks => Right,
- _ => Left,
- }
- }
- pub fn header(&self) -> &'static str {
- match *self {
- Permissions => "Permissions",
- FileName => "Name",
- FileSize(_) => "Size",
- Blocks => "Blocks",
- User => "User",
- Group => "Group",
- HardLinks => "Links",
- Inode => "inode",
- }
- }
- }
- // An Alignment is used to pad a string to a certain length, letting
- // it pick which end it puts the text on. It takes the amount of
- // padding to apply, rather than the width the text should end up,
- // because these strings are usually full of control characters.
- impl Alignment {
- pub fn pad_string(&self, string: &String, padding: uint) -> String {
- match *self {
- Left => string.clone().append(" ".to_string().repeat(padding).as_slice()),
- Right => " ".to_string().repeat(padding).append(string.as_slice()),
- }
- }
- }
|