diff options
| author | Alban Peignier | 2018-01-05 09:12:07 +0100 |
|---|---|---|
| committer | Alban Peignier | 2018-01-05 10:23:29 +0100 |
| commit | f2fb3bedf3eec870b872842f53b456f08915c3ba (patch) | |
| tree | 8d95d431f29e73e52010d4e4c63ac08fd9c7d37c /app/models/chouette/time_table.rb | |
| parent | e1b3f15bfd3559676b05487dca400a3da43fa126 (diff) | |
| download | chouette-core-f2fb3bedf3eec870b872842f53b456f08915c3ba.tar.bz2 | |
Add TimeTable#remove_periods! and #empty. Refs #5299
Diffstat (limited to 'app/models/chouette/time_table.rb')
| -rw-r--r-- | app/models/chouette/time_table.rb | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/app/models/chouette/time_table.rb b/app/models/chouette/time_table.rb index a43ded6e1..db97dd2fa 100644 --- a/app/models/chouette/time_table.rb +++ b/app/models/chouette/time_table.rb @@ -572,7 +572,7 @@ module Chouette def intersect_periods!(mask_periods) dates.each do |date| - unless mask_periods.any? { |p| p.include? date } + unless mask_periods.any? { |p| p.include? date.date } dates.delete date end end @@ -590,5 +590,35 @@ module Chouette end end end + + def remove_periods!(removed_periods) + dates.each do |date| + if removed_periods.any? { |p| p.include? date.date } + dates.delete date + end + end + + periods.each do |period| + modified_ranges = removed_periods.inject([period.range]) do |period_ranges, removed_period| + period_ranges.map { |p| p.remove removed_period }.flatten + end + + unless modified_ranges.empty? + modified_ranges.each_with_index do |modified_range, index| + new_period = index == 0 ? period : periods.build + + new_period.period_start, new_period.period_end = + modified_range.min, modified_range.max + end + else + periods.delete period + end + end + end + + def empty? + dates.empty? && periods.empty? + end + end end |
