RM_14735_allow_negative_time_entries.diff

Jérôme BATAILLE, 2014-01-11 18:29

Download (1.02 KB)

View differences:

lib/redmine/core_ext/string/conversions.rb (revision 281)
24 24
        def to_hours
25 25
          s = self.dup
26 26
          s.strip!
27
          if s =~ %r{^(\d+([.,]\d+)?)h?$}
27
          if s =~ %r{^([-]?\d+([.,]\d+)?)h?$}
28 28
            s = $1
29 29
          else
30 30
            # 2:30 => 2.5
31
            s.gsub!(%r{^(\d+):(\d+)$}) { $1.to_i + $2.to_i / 60.0 }
31
            s.gsub!(%r{^(-?\d+):(\d+)$}) { $1.to_i + ( $2.to_i / 60.0 * ($1.to_i > 0 ? 1 : -1) ) }
32 32
            # 2h30, 2h, 30m => 2.5, 2, 0.5
33
            s.gsub!(%r{^((\d+)\s*(h|hours?))?\s*((\d+)\s*(m|min)?)?$}) { |m| ($1 || $4) ? ($2.to_i + $5.to_i / 60.0) : m[0] }
33
            s.gsub!(%r{^((-?\d+)\s*(h|hours?))?\s*((\d+)\s*(m|min)?)?$}) { |m| ($1 || $4) ? ($2.to_i + $5.to_i / 60.0 * ($2.to_i > 0 ? 1 : -1)) : m[0] }
34 34
          end
35 35
          # 2,5 => 2.5
36 36
          s.gsub!(',', '.')