File extension is in extensions list: Difference between revisions

From Rosetta Code
Content added Content deleted
No edit summary
No edit summary
Line 11: Line 11:
isExt :: String -> [String] -> Bool
isExt :: String -> [String] -> Bool
isExt filename extensions = any (`elem` (tails . toLower $ filename)) $ map toLower extensions
isExt filename extensions = any (`elem` (tails . toLower $ filename)) $ map toLower extensions
</lang>

The code defining isExt could be done point free:
<lang Haskell>
isExt filename = any (`elem` (tails . toLower $ filename)) . map toLower
</lang>

Overcoming the one-liner urge on behalf of being more comprehensible would give:
<lang Haskell>
isExt filename extensions = any (`elem` allTails) lowerExtensions
where allTails = tails . toLower $ filename
lowerExtensions = map toLower extensions
</lang>
</lang>



Revision as of 17:09, 11 August 2014

Task
File extension is in extensions list
You are encouraged to solve this task according to the task description, using any language you may know.

Given a file name and a list of extensions (including the dot), tell whether the file's extension is in the extensions list. The check should be case insensitive. The file might not have an extension.

Haskell

<lang Haskell> import Data.List import qualified Data.Char as Ch

toLower :: String -> String toLower = map Ch.toLower

isExt :: String -> [String] -> Bool isExt filename extensions = any (`elem` (tails . toLower $ filename)) $ map toLower extensions </lang>

The code defining isExt could be done point free: <lang Haskell> isExt filename = any (`elem` (tails . toLower $ filename)) . map toLower </lang>

Overcoming the one-liner urge on behalf of being more comprehensible would give: <lang Haskell> isExt filename extensions = any (`elem` allTails) lowerExtensions where allTails = tails . toLower $ filename lowerExtensions = map toLower extensions </lang>


Python

<lang Python> import os

def isExt(filename, extensions):

   return os.path.splitext(filename.lower())[-1] in [e.lower() for e in extensions]

</lang>


Scala

<lang Scala> def isExt(fileName: String, extensions: List[String]): Boolean = {

   extensions.map { _.toLowerCase }.exists { fileName.toLowerCase endsWith _ }

} </lang>