diff options
author | Aleksei Lipniagov <alipniagov@gitlab.com> | 2019-09-11 21:32:24 +0300 |
---|---|---|
committer | Kamil TrzciĆski <ayufan@ayufan.eu> | 2019-09-11 21:32:24 +0300 |
commit | 50cb6eca570a352a3b9799a66f77edad261763be (patch) | |
tree | d5157634a5100ca6900a3dc8d7b0b806caf39ca5 /lib/gitlab/time_tracking_formatter.rb | |
parent | 6db9cbfe77a556ea2d321f0ea0a0c6b6e14a817c (diff) |
Use 'gitlab_chronic_duration' gem
Replace 'chronic_duration' to 'gitlab_chronic_duration', to make
relevant method calls thread-safe.
Diffstat (limited to 'lib/gitlab/time_tracking_formatter.rb')
-rw-r--r-- | lib/gitlab/time_tracking_formatter.rb | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/lib/gitlab/time_tracking_formatter.rb b/lib/gitlab/time_tracking_formatter.rb index 302da91328a..31883527135 100644 --- a/lib/gitlab/time_tracking_formatter.rb +++ b/lib/gitlab/time_tracking_formatter.rb @@ -4,37 +4,38 @@ module Gitlab module TimeTrackingFormatter extend self - def parse(string) - with_custom_config do - string = string.sub(/\A-/, '') + # We may want to configure it through project settings in a future version. + CUSTOM_DAY_AND_WEEK_LENGTH = { hours_per_day: 8, days_per_month: 20 }.freeze - seconds = ChronicDuration.parse(string, default_unit: 'hours') rescue nil - seconds *= -1 if seconds && Regexp.last_match - seconds - end + def parse(string) + string = string.sub(/\A-/, '') + + seconds = + begin + ChronicDuration.parse( + string, + CUSTOM_DAY_AND_WEEK_LENGTH.merge(default_unit: 'hours')) + rescue + nil + end + + seconds *= -1 if seconds && Regexp.last_match + seconds end def output(seconds) - with_custom_config do - ChronicDuration.output(seconds, format: :short, limit_to_hours: limit_to_hours_setting, weeks: true) rescue nil - end + ChronicDuration.output( + seconds, + CUSTOM_DAY_AND_WEEK_LENGTH.merge( + format: :short, + limit_to_hours: limit_to_hours_setting, + weeks: true)) + rescue + nil end private - def with_custom_config - # We may want to configure it through project settings in a future version. - ChronicDuration.hours_per_day = 8 - ChronicDuration.days_per_week = 5 - - result = yield - - ChronicDuration.hours_per_day = 24 - ChronicDuration.days_per_week = 7 - - result - end - def limit_to_hours_setting Gitlab::CurrentSettings.time_tracking_limit_to_hours end |