packages feed

hstyle-0.2.0.3: src/HStyle/Rules/TrailingWhiteSpace.hs

{-# LANGUAGE OverloadedStrings #-}
module HStyle.Rules.TrailingWhiteSpace
    ( trailingWhiteSpaceRule
    , trailingWhiteSpaceChecker
    , trailingWhiteSpaceFixer
    ) where

import Data.Char (isSpace)

import qualified Data.Text as T

import HStyle.Checker
import HStyle.Fixer
import HStyle.Rule
import HStyle.Selector

trailingWhiteSpaceRule :: Rule
trailingWhiteSpaceRule = Rule
    selectLines trailingWhiteSpaceChecker trailingWhiteSpaceFixer

trailingWhiteSpaceChecker :: Checker ()
trailingWhiteSpaceChecker = checkLines $ \() line ->
    if not (T.null line) && isSpace (T.last line)
        then Just "Trailing whitespace"
        else Nothing

trailingWhiteSpaceFixer :: Fixer ()
trailingWhiteSpaceFixer = fixLines $ const T.stripEnd