aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette/time_table.rb
diff options
context:
space:
mode:
authorAlban Peignier2018-01-05 09:12:07 +0100
committerAlban Peignier2018-01-05 10:23:29 +0100
commitf2fb3bedf3eec870b872842f53b456f08915c3ba (patch)
tree8d95d431f29e73e52010d4e4c63ac08fd9c7d37c /app/models/chouette/time_table.rb
parente1b3f15bfd3559676b05487dca400a3da43fa126 (diff)
downloadchouette-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.rb32
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