diff options
| author | Alban Peignier | 2017-12-27 21:27:03 +0100 |
|---|---|---|
| committer | Alban Peignier | 2018-01-05 10:23:29 +0100 |
| commit | 8dada2909f01e4e8fe1eb85e88b7ac4562446521 (patch) | |
| tree | 865f3676ae734526514dd399b42483c70a13a7d0 /app/models/chouette/time_table.rb | |
| parent | e753538fbff071f146fbf93dc0dfced5e6405684 (diff) | |
| download | chouette-core-8dada2909f01e4e8fe1eb85e88b7ac4562446521.tar.bz2 | |
Add TimeTable##intersect_periods! to remove given periods. Refs #5299
Diffstat (limited to 'app/models/chouette/time_table.rb')
| -rw-r--r-- | app/models/chouette/time_table.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/app/models/chouette/time_table.rb b/app/models/chouette/time_table.rb index 74c20f061..a43ded6e1 100644 --- a/app/models/chouette/time_table.rb +++ b/app/models/chouette/time_table.rb @@ -569,5 +569,26 @@ module Chouette tt.comment = I18n.t("activerecord.copy", :name => self.comment) tt end + + def intersect_periods!(mask_periods) + dates.each do |date| + unless mask_periods.any? { |p| p.include? date } + dates.delete date + end + end + + periods.each do |period| + mask_periods_with_common_part = mask_periods.select { |p| p.intersect? period.range } + + if mask_periods_with_common_part.empty? + self.periods.delete period + else + mask_periods_with_common_part.each do |mask_period| + intersection = (mask_period & period.range) + period.period_start, period.period_end = intersection.begin, intersection.end + end + end + end + end end end |
