1
1
mirror of https://github.com/github/semantic.git synced 2024-11-28 10:15:55 +03:00

Merge pull request #397 from github/range-length

Add a function to compute a range's length
This commit is contained in:
Rob Rix 2016-01-12 12:15:46 -05:00
commit b60a232bd6
2 changed files with 6 additions and 3 deletions

View File

@ -9,11 +9,14 @@ import Data.Maybe (fromMaybe)
data Range = Range { start :: !Int, end :: !Int } data Range = Range { start :: !Int, end :: !Int }
deriving (Eq, Show) deriving (Eq, Show)
rangeLength :: Range -> Int
rangeLength range = end range - start range
substring :: Range -> T.Text -> T.Text substring :: Range -> T.Text -> T.Text
substring range = T.take (end range - start range) . T.drop (start range) substring range = T.take (rangeLength range) . T.drop (start range)
sublist :: Range -> [a] -> [a] sublist :: Range -> [a] -> [a]
sublist range = take (end range - start range) . drop (start range) sublist range = take (rangeLength range) . drop (start range)
totalRange :: T.Text -> Range totalRange :: T.Text -> Range
totalRange t = Range 0 $ T.length t totalRange t = Range 0 $ T.length t

View File

@ -18,7 +18,7 @@ toList :: Source a -> [a]
toList = Vector.toList . getVector toList = Vector.toList . getVector
slice :: Range -> Source a -> Source a slice :: Range -> Source a -> Source a
slice range = Source . Vector.slice (start range) (end range - start range) . getVector slice range = Source . Vector.slice (start range) (rangeLength range) . getVector
toString :: Source Char -> String toString :: Source Char -> String
toString = toList toString = toList