mirror of https://github.com/voidlizard/hbs2
wip
This commit is contained in:
parent
3f901966ab
commit
5eed1746e2
|
@ -25,7 +25,7 @@ module Fixme.State
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Fixme.Prelude
|
import Fixme.Prelude
|
||||||
import Fixme.Types hiding (mkstr, mksym)
|
import Fixme.Types
|
||||||
import Fixme.Config
|
import Fixme.Config
|
||||||
|
|
||||||
import HBS2.System.Dir
|
import HBS2.System.Dir
|
||||||
|
@ -367,17 +367,6 @@ instance IsContext c => HasPredicate [Syntax c] where
|
||||||
ListVal [x] -> x
|
ListVal [x] -> x
|
||||||
x -> x
|
x -> x
|
||||||
|
|
||||||
mklist :: IsContext c => [Syntax c] -> Syntax c
|
|
||||||
mklist ss = List noContext ss
|
|
||||||
|
|
||||||
mksym :: IsContext c => Id -> Syntax c
|
|
||||||
mksym = Symbol noContext
|
|
||||||
|
|
||||||
mkint :: (IsContext c, Integral a) => a -> Syntax c
|
|
||||||
mkint = Literal noContext . LitInt . fromIntegral
|
|
||||||
|
|
||||||
mkstr :: IsContext c => Text -> Syntax c
|
|
||||||
mkstr = Literal noContext . LitStr
|
|
||||||
|
|
||||||
{- HLINT ignore "Functor law" -}
|
{- HLINT ignore "Functor law" -}
|
||||||
{- HLINT ignore "Eta reduce" -}
|
{- HLINT ignore "Eta reduce" -}
|
||||||
|
|
|
@ -44,6 +44,31 @@ pattern FixmeHashLike e <- (fixmeHashFromSyn -> Just e)
|
||||||
pattern TimeStampLike :: forall {c} . FixmeTimestamp -> Syntax c
|
pattern TimeStampLike :: forall {c} . FixmeTimestamp -> Syntax c
|
||||||
pattern TimeStampLike e <- (tsFromFromSyn -> Just e)
|
pattern TimeStampLike e <- (tsFromFromSyn -> Just e)
|
||||||
|
|
||||||
|
|
||||||
|
mklist :: IsContext c => [Syntax c] -> Syntax c
|
||||||
|
mklist = List noContext
|
||||||
|
|
||||||
|
mkint :: (IsContext c, Integral a) => a -> Syntax c
|
||||||
|
mkint = Literal noContext . LitInt . fromIntegral
|
||||||
|
|
||||||
|
mksym :: IsContext c => Id -> Syntax c
|
||||||
|
mksym = Symbol noContext
|
||||||
|
|
||||||
|
class MkId a where
|
||||||
|
mkId :: a -> Id
|
||||||
|
|
||||||
|
instance MkId FixmeAttrName where
|
||||||
|
mkId (k :: FixmeAttrName) = Id ("$" <> coerce k)
|
||||||
|
|
||||||
|
class IsContext c => MkStr c a where
|
||||||
|
mkstr :: a -> Syntax c
|
||||||
|
|
||||||
|
instance IsContext c => MkStr c FixmeAttrVal where
|
||||||
|
mkstr (s :: FixmeAttrVal) = Literal (noContext @c) (LitStr (coerce s))
|
||||||
|
|
||||||
|
instance IsContext c => MkStr c Text where
|
||||||
|
mkstr = Literal noContext . LitStr
|
||||||
|
|
||||||
stringLike :: Syntax c -> Maybe String
|
stringLike :: Syntax c -> Maybe String
|
||||||
stringLike = \case
|
stringLike = \case
|
||||||
LitStrVal s -> Just $ Text.unpack s
|
LitStrVal s -> Just $ Text.unpack s
|
||||||
|
@ -150,6 +175,16 @@ data CatAction = CatAction { catAction :: [(Id, Syntax C)] -> ByteString -> IO (
|
||||||
|
|
||||||
data SimpleTemplate = forall c . (IsContext c, Data (Context c), Data c) => SimpleTemplate [Syntax c]
|
data SimpleTemplate = forall c . (IsContext c, Data (Context c), Data c) => SimpleTemplate [Syntax c]
|
||||||
|
|
||||||
|
data CompactAction =
|
||||||
|
Deleted Word64 HashRef
|
||||||
|
| Modified Word64 HashRef FixmeAttrName FixmeAttrVal
|
||||||
|
deriving stock (Eq,Ord,Show,Generic)
|
||||||
|
|
||||||
|
instance Pretty CompactAction where
|
||||||
|
pretty = \case
|
||||||
|
Deleted s r -> pretty $ mklist @C [ mksym "deleted" ]
|
||||||
|
|
||||||
|
|
||||||
data FixmeTemplate =
|
data FixmeTemplate =
|
||||||
Simple SimpleTemplate
|
Simple SimpleTemplate
|
||||||
|
|
||||||
|
@ -311,14 +346,6 @@ commentKey fp =
|
||||||
|
|
||||||
type ContextShit c = (Data c, Data (Context c), IsContext c, Data (Syntax c))
|
type ContextShit c = (Data c, Data (Context c), IsContext c, Data (Syntax c))
|
||||||
|
|
||||||
class MkId a where
|
|
||||||
mkId :: a -> Id
|
|
||||||
|
|
||||||
instance MkId FixmeAttrName where
|
|
||||||
mkId (k :: FixmeAttrName) = Id ("$" <> coerce k)
|
|
||||||
|
|
||||||
mkstr :: forall c . (IsContext c) => FixmeAttrVal -> Syntax c
|
|
||||||
mkstr (s :: FixmeAttrVal) = Literal (noContext @c) (LitStr (coerce s))
|
|
||||||
|
|
||||||
cc0 :: forall c . ContextShit c => Context c
|
cc0 :: forall c . ContextShit c => Context c
|
||||||
cc0 = noContext :: Context c
|
cc0 = noContext :: Context c
|
||||||
|
|
Loading…
Reference in New Issue