Sha256: 91e5b405964d07496e67a8b8ec463ed504afe8b24d7dfaa19bcd037a45e98786

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

module CarrierWave
  module Utilities
    module FileName

      ##
      # Returns the part of the filename before the extension. So if a file is called 'test.jpeg'
      # this would return 'test'
      #
      # === Returns
      #
      # [String] the first part of the filename
      #
      def basename
        split_extension(filename)[0] if filename
      end

      ##
      # Returns the file extension
      #
      # === Returns
      #
      # [String] extension of file or "" if the file has no extension
      #
      def extension
        split_extension(filename)[1] if filename
      end

      private

      def split_extension(filename)
        # regular expressions to try for identifying extensions
        extension_matchers = [
          /\A(.+)\.(tar\.([glx]?z|bz2))\z/, # matches "something.tar.gz"
          /\A(.+)\.([^\.]+)\z/ # matches "something.jpg"
        ]

        extension_matchers.each do |regexp|
          if filename =~ regexp
            return $1, $2
          end
        end

        return filename, "" # In case we weren't able to split the extension
      end
    end # FileName
  end # Utilities
end # CarrierWave

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
carrierwave-3.0.0.beta lib/carrierwave/utilities/file_name.rb