Comments (1)
Hey there, @bbbneo333! Thanks for using the gem and for reaching out with your question.
The issue with creating a intersected schedule with an empty set of hours versus failing hard with an exception is that an empty schedule would be functionally pointless in every scenario where it is to be used: Time calculations would always return zero, selecting a group of periods would always return an empty set, and determining whether a time was in business hours would always return false.
Now, we could implement a null object pattern within the gem for this case, but I don't know if it's worth the overhead of maintenance given the niche applicability.
With that said, here are a couple suggested approaches for your use case:
# exception handling
def schedules_intersect?(schedule1, schedule2)
(schedule1 & schedule2).intervals.any?
rescue Biz::Error::Configuration => error
error.message == 'hours not provided' ? false : raise
end
schedules_intersect?(s1, s2)
# null-object pattern
class NullSchedule
def intervals
[]
end
end
def intersected_schedule(schedule1, schedule2)
schedule1 & schedule2
rescue Biz::Error::Configuration => error
error.message == 'hours not provided' ? NullSchedule.new : raise
end
intersected_schedule(s1, s2).intervals.any?
I'm going to close this issue for now as I don't think there's anything actionable, but please do let me know how you addressed your issue and/or if the above suggestions were helpful.
from biz.
Related Issues (20)
- Question: equivalent of working_hours #advance_to_working_time ? HOT 2
- Specify extra working periods HOT 2
- NoMethodError: undefined method `on' for #<Biz::Periods::Proxy:0x007f9b164d5d10> HOT 3
- Find the next busniess day during work hours HOT 2
- NoMethodError: undefined method `wday' for nil:NilClass HOT 4
- dates.days(0).after returns nil HOT 4
- Short days before holiday HOT 2
- Store configuration in a database HOT 4
- Timezone not included in returned time objects HOT 2
- Infinity loop when no hours are configured HOT 3
- Times spanning over midnight (nonsensical hours provided) HOT 2
- Please consider adding a changelog HOT 3
- Strange behavior with 24-hour work days HOT 7
- help! 在设置shifts之后,时长计算有误,麻烦关注一下 HOT 1
- Export to schema.org OpeningHoursSpecification HOT 1
- Incorrect periods and working hours when shifts and hours fall on same day HOT 1
- Creating empty Biz::Schedule HOT 7
- TypeError Exception when using Ruby 2.4.0
- Documentation for setting global config in Rails HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from biz.