aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette/time_table.rb
diff options
context:
space:
mode:
authorAlban Peignier2017-12-27 21:27:03 +0100
committerAlban Peignier2018-01-05 10:23:29 +0100
commit8dada2909f01e4e8fe1eb85e88b7ac4562446521 (patch)
tree865f3676ae734526514dd399b42483c70a13a7d0 /app/models/chouette/time_table.rb
parente753538fbff071f146fbf93dc0dfced5e6405684 (diff)
downloadchouette-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.rb21
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