Sha256: 432090dc5e3aa8a45a70b2601f76f19b56a5efcdf796ff5471f724ebc8642fb1

Contents?: true

Size: 1.51 KB

Versions: 34

Compression:

Stored size: 1.51 KB

Contents

# Redmine - project management software
# Copyright (C) 2006-2015  Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

module Redmine #:nodoc:
  module CoreExtensions #:nodoc:
    module String #:nodoc:
      # Custom string conversions
      module Conversions
        # Parses hours format and returns a float
        def to_hours
          s = self.dup
          s.strip!
          if s =~ %r{^(\d+([.,]\d+)?)h?$}
            s = $1
          else
            # 2:30 => 2.5
            s.gsub!(%r{^(\d+):(\d+)$}) { $1.to_i + $2.to_i / 60.0 }
            # 2h30, 2h, 30m => 2.5, 2, 0.5
            s.gsub!(%r{^((\d+)\s*(h|hours?))?\s*((\d+)\s*(m|min)?)?$}i) { |m| ($1 || $4) ? ($2.to_i + $5.to_i / 60.0) : m[0] }
          end
          # 2,5 => 2.5
          s.gsub!(',', '.')
          begin; Kernel.Float(s); rescue; nil; end
        end
      end
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
redmine_extensions-0.0.39 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.0.38 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.0.37 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.1.11 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.1.10 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.0.36 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.0.34 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.1.09 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.1.07 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.1.06 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.1.05 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.1.04 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.1.03 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.0.33 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.1.02 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.1.01 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.0.29 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.0.28 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.0.27 spec/redmine/lib/redmine/core_ext/string/conversions.rb
redmine_extensions-0.0.24 spec/redmine/lib/redmine/core_ext/string/conversions.rb