Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
626ceb3
Fix import
mre Feb 18, 2021
975b7fb
Add subcommand for merge
mre Feb 18, 2021
214a2f9
impl Default for Year (generating empty timelines)
mre Feb 18, 2021
5ad51fc
Split up parser into ParseState and core Parser
mre Feb 18, 2021
1fa6d45
Work on merge setup
mre Feb 18, 2021
c48f9bb
Execute `run` by default if there are no additional arguments
mre Feb 18, 2021
38a27da
Update docs
mre Feb 18, 2021
1695eee
Work on merger
mre Feb 18, 2021
598df77
Remove unused TryFrom
mre Feb 18, 2021
0777aa3
Show full year
mre Feb 19, 2021
1b3610f
handle start and end date in output
mre Mar 3, 2021
6149ac9
Fix test
mre Mar 8, 2021
24d6f57
work on merge
mre Mar 8, 2021
6cf9f12
WIP: merge multiple timeslines
woolfg Mar 8, 2021
babfe92
fix merge 2 test
mre Mar 10, 2021
2085384
Fix clippy warnings
mre Mar 10, 2021
1443239
Add hash to timeline
mre Mar 10, 2021
d01be81
fix lints
mre Mar 10, 2021
a48ee27
Less clones
mre Mar 10, 2021
ee203c1
Remove unused import
mre Mar 10, 2021
fa390bc
fix merge call
mre Mar 10, 2021
2a553a2
Fix import
mre Feb 18, 2021
250b815
Add subcommand for merge
mre Feb 18, 2021
27adefe
impl Default for Year (generating empty timelines)
mre Feb 18, 2021
42ca666
Split up parser into ParseState and core Parser
mre Feb 18, 2021
19840f2
Work on merge setup
mre Feb 18, 2021
fac6c44
Execute `run` by default if there are no additional arguments
mre Feb 18, 2021
a239c07
Update docs
mre Feb 18, 2021
a7a68b9
Work on merger
mre Feb 18, 2021
b013988
Remove unused TryFrom
mre Feb 18, 2021
ea60627
Show full year
mre Feb 19, 2021
a5fb023
handle start and end date in output
mre Mar 3, 2021
622c4c6
Fix test
mre Mar 8, 2021
615c0bf
work on merge
mre Mar 8, 2021
37de103
WIP: merge multiple timeslines
woolfg Mar 8, 2021
cfc6076
fix merge 2 test
mre Mar 10, 2021
7cb3063
Fix clippy warnings
mre Mar 10, 2021
fc822a1
Add hash to timeline
mre Mar 10, 2021
452a2e3
fix lints
mre Mar 10, 2021
05af9d2
Less clones
mre Mar 10, 2021
5cc6726
Remove unused import
mre Mar 10, 2021
74fe53a
fix merge call
mre Mar 10, 2021
ca4cac5
txt for help option
woolfg Mar 11, 2021
86202e4
test for intesity computation #5 -> failing
woolfg Mar 11, 2021
5b15954
Merge branch 'merge' of github.com:codeprintsdev/analyzer into merge
mre Mar 15, 2021
6653dca
Add timestamp
mre Mar 15, 2021
231ef0e
formatting
mre Mar 15, 2021
07054b3
changed output of merge to merged_codeprints_*.json
mre Mar 15, 2021
e80175c
formatting
mre Mar 15, 2021
6f4f175
corrected fixture after fixing the api
woolfg Mar 16, 2021
6c51be2
fix typo in intensity string
mre Mar 18, 2021
cdd23c8
Merge remote-tracking branch 'origin/master' into merge
mre Apr 7, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 50 additions & 5 deletions src/merge.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,15 @@ impl Merger {

/// Merge a single timeline
pub fn merge_timeline(&mut self, timeline: &Timeline) -> Result<()> {
///TODO: make sure that all days are filled with 0 between start and end
for contribution in &timeline.contributions {
let date = contribution.date.clone();
let date = git::parse_date(&date)?;
let count = contribution.count;

if let Some(date) = date {
// Kinda ineffective to call these update functions in a loop
for _ in 0..count {
self.state.update_years(date);
self.state.update_days(date);
}
self.state.update_years(date, count);
self.state.update_days(date, count);
}
}
Ok(())
Expand Down Expand Up @@ -103,4 +101,51 @@ mod test {
assert_eq!(year.range.start, "2020-01-01");
assert_eq!(year.range.end, "2020-01-02");
}

#[test]
fn test_merge_multiple() {
let mut timeline1 = Timeline::default();
let mut timeline2 = Timeline::default();

let range1 = Range {
start: "2020-01-01".into(),
end: "2020-01-02".into(),
};
let range2 = Range {
start: "2020-01-01".into(),
end: "2020-01-03".into(),
};

let year2 = Year { year: "2020".into(), total: 0, range: range2 };
let year1 = Year { year: "2020".into(), total: 123, range: range1 };
timeline1.years = vec![year1];
timeline2.years = vec![year2];

let contributions = vec![
Contribution {
date: "2020-01-01".into(),
count: 1000,
color: "".into(),
intensity: 4,
},
Contribution {
date: "2020-01-02".into(),
count: 234,
color: "".into(),
intensity: 4,
},
];

timeline1.contributions = contributions.clone();
timeline2.contributions = contributions.clone();

let mut merger = Merger::new();
let merged = merger.merge(&[timeline1.clone(),timeline2.clone()]).unwrap();
assert_eq!(merged.years.len(), 1);
let year = &merged.years[0];
assert_eq!(year.year, "2020");
assert_eq!(year.total, 2468);
assert_eq!(year.range.start, "2020-01-01");
assert_eq!(year.range.end, "2020-01-03");
}
}
12 changes: 6 additions & 6 deletions src/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ pub struct ParseState {

impl ParseState {
/// Add a single day to the map of years
pub fn update_years(&mut self, date: NaiveDate) {
pub fn update_years(&mut self, date: NaiveDate, contributions_to_add: usize) {
let y = date.year();
let date_str = date.format("%Y-%m-%d").to_string();

Expand All @@ -37,12 +37,12 @@ impl ParseState {
year.range.start = min(year.range.start.clone(), date_str.clone());
year.range.end = max(year.range.end.clone(), date_str);

year.total += 1;
year.total += contributions_to_add;
}

/// Add a single day to the map of days
pub fn update_days(&mut self, date: NaiveDate) {
*self.days.entry(date).or_insert(0) += 1;
pub fn update_days(&mut self, date: NaiveDate, contributions_to_add: usize) {
*self.days.entry(date).or_insert(0) += contributions_to_add;
}
}

Expand Down Expand Up @@ -199,8 +199,8 @@ impl Parser {
if self.out_of_range(d) {
continue;
}
self.state.update_days(d);
self.state.update_years(d);
self.state.update_days(d, 1);
self.state.update_years(d, 1);
}
}

Expand Down