1
1
mirror of https://github.com/github/semantic.git synced 2024-12-24 07:25:44 +03:00

Move Range to a module

This commit is contained in:
joshvera 2015-12-02 21:40:34 -05:00
parent d443f6f520
commit 2a063d3277
6 changed files with 15 additions and 9 deletions

View File

@ -5,6 +5,7 @@ import Diff
import Interpreter
import Patch
import Syntax
import Range
import Split
import Term
import Unified

View File

@ -4,7 +4,7 @@ import Diff
import Patch
import Syntax
import Term
import Unified
import Range
import Control.Comonad.Cofree
import Control.Monad.Free
import qualified Data.Map as Map

View File

@ -4,6 +4,7 @@ import Diff
import Patch
import Syntax
import Term
import Range
import Control.Arrow
import Control.Monad.Free
import Control.Comonad.Cofree
@ -36,9 +37,6 @@ unified diff before after = do
accumulateContext (out, previous) (child, Just range) = (mconcat [ out, pure . chunk $ substring Range { start = previous, end = start range } source, child ], end range)
accumulateContext (out, previous) (child, _) = (out <> child, previous)
substring :: Range -> String -> String
substring range = take (end range - start range) . drop (start range)
range :: Patch (Term a Info) -> Maybe Range
range patch = range . extract <$> after patch where
extract (annotation :< _) = annotation
@ -47,5 +45,3 @@ range patch = range . extract <$> after patch where
change :: String -> [Chunk String] -> [Chunk String]
change bound content = [ chunk "{", chunk bound ] ++ content ++ [ chunk bound, chunk "}" ]
instance Ord Range where
a <= b = start a <= start b

View File

@ -22,6 +22,7 @@ library
, SES
, Categorizable
, Term
, Range
build-depends: base >= 4.8 && < 5
, containers
, free

View File

@ -5,14 +5,12 @@ import Data.Set
import Control.Monad.Free
import Patch
import Term
import Range
import Categorizable
data Annotated a annotation f = Annotated annotation (Syntax a f)
deriving (Functor, Eq, Show, Foldable)
data Range = Range { start :: Int, end :: Int }
deriving (Eq, Show)
type Category = String
data Info = Info { characterRange :: Range, lineRange :: Range, categories :: (Set Category) }

10
src/Range.hs Normal file
View File

@ -0,0 +1,10 @@
module Range where
data Range = Range { start :: Int, end :: Int }
deriving (Eq, Show)
substring :: Range -> String -> String
substring range = take (end range - start range) . drop (start range)
instance Ord Range where
a <= b = start a <= start b