File: README.md

package info (click to toggle)
rust-timeago 0.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 220 kB
  • sloc: makefile: 4
file content (79 lines) | stat: -rw-r--r-- 2,437 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# timeago
In Rust, format Duration into string like "1 hour ago" or "01hou".

Currently it does not [take the calendar into account](https://github.com/vi/timeago/issues/12) and assumes each month is about 30.4 days long.

Parsing such string back to a `Duration` is out of scope for this crate. Maybe see the [`chrono-english`](https://docs.rs/chrono-english) crate instead.

With `isolang` feature off, it supports Rust from version 1.24.

## API

[Documentation link](https://docs.rs/timeago/)

Simplified API excerpt (pseudocode):

```rust
pub struct Formatter<L : Language = English>{...}

impl Formatter {
    pub fn new() -> Formatter<English>;
    pub fn with_language(l: Language) -> Self;
    pub fn num_items(&mut self, x: usize) -> &mut Self;
    pub fn max_unit(&mut self, x: TimeUnit) -> &mut Self;
    pub fn min_unit(&mut self, x: TimeUnit) -> &mut Self;
    pub fn too_low(&mut self, x: &'static str) -> &mut Self;
    pub fn too_high(&mut self, x: &'static str) -> &mut Self;
    pub fn max_duration(&mut self, x: Duration) -> &mut Self;
    pub fn ago(&mut self, x: &'static str) -> &mut Self;
    
    pub fn convert(&self, d: Duration) -> String;
    pub fn convert_chrono(&self, from: chrono::DateTime, to: chrono::DateTime) -> String;
}

pub fn from_isolang(x : isolang::Language) -> Option<Box<Language>>;

pub fn format_5chars(d: Duration) -> String;
```

A `Language` can be constructed from [isolang::Language](https://docs.rs/isolang/1/isolang/enum.Language.html).

## Translations

* English
* Russian
* French
* Portuguese (contributed)
* German (unchecked)
* Belarusian (unchecked)
* Polish (unchecked)
* Spanish (contributed)
* Chinese (contributed)
* Romanian (contributed)
* Swedish (contributed)
* Turkish (contributed)
* Japanese (contributed)
* Danish (contributed)
* Italian (contributed)
* Ukrainian (contributed)

If you checked some language and certify that it's allright, submit a pull request that removes "(unchecked)" or "(contributed)" in the list above.

## Tool

There is a helper command line tool that allows easier experimenting when adding a new translation:

```
$ cargo run --features isolang en
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target/debug/timeago en`
60
1 minute ago
7200
2 hours ago
```

# See also

* [chrono-humanize](https://docs.rs/crate/chrono-humanize)
* compound_duration - split `Duration` into weeks/days/minues/etc. parts