fourmolu-0.15.0.0: A formatter for Haskell source code

Safe Haskell | None
Language | GHC2021

Ormolu.Parser.CommentStream

Contents

- Comment stream
- Comment

Description

Functions for working with comment stream.

Synopsis

- newtype CommentStream = CommentStream [LComment]
- mkCommentStream :: Text -> HsModule GhcPs -> (Maybe LComment, [([LComment], Pragma)], CommentStream)
- type LComment = RealLocated Comment
- data Comment = Comment Bool (NonEmpty Text)
- unComment :: Comment -> NonEmpty Text
- hasAtomsBefore :: Comment -> Bool
- isMultilineComment :: Comment -> Bool

# Comment stream

newtype CommentStream #

A stream of `RealLocated` `Comment`s in ascending order with respect to beginning of corresponding spans.

Constructors

CommentStream [LComment] |

#### Instances

Instances details

Data CommentStream # |
Instance details Defined in Ormolu.Parser.CommentStream Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CommentStream -> c CommentStream # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CommentStream # toConstr :: CommentStream -> Constr # dataTypeOf :: CommentStream -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CommentStream) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CommentStream) # gmapT :: (forall b. Data b => b -> b) -> CommentStream -> CommentStream # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CommentStream -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CommentStream -> r # gmapQ :: (forall d. Data d => d -> u) -> CommentStream -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> CommentStream -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> CommentStream -> m CommentStream # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CommentStream -> m CommentStream # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CommentStream -> m CommentStream #
Monoid CommentStream # |
Instance details Defined in Ormolu.Parser.CommentStream Methods mempty :: CommentStream # mappend :: CommentStream -> CommentStream -> CommentStream # mconcat :: [CommentStream] -> CommentStream #
Semigroup CommentStream # |
Instance details Defined in Ormolu.Parser.CommentStream Methods (<>) :: CommentStream -> CommentStream -> CommentStream # sconcat :: NonEmpty CommentStream -> CommentStream # stimes :: Integral b => b -> CommentStream -> CommentStream #
Eq CommentStream # |
Instance details Defined in Ormolu.Parser.CommentStream Methods (==) :: CommentStream -> CommentStream -> Bool # (/=) :: CommentStream -> CommentStream -> Bool #

mkCommentStream #

Arguments

:: Text | Original input
-> HsModule GhcPs | Module to use for comment extraction
-> (Maybe LComment, [([LComment], Pragma)], CommentStream) | Stack header, pragmas, and comment stream

Create `CommentStream` from `HsModule`. The pragmas are removed from the `CommentStream`.

# Comment

type LComment = RealLocated Comment #

data Comment #

A wrapper for a single comment. The `Bool` indicates whether there were atoms before beginning of the comment in the original input. The `NonEmpty` list inside contains lines of multiline comment `{- … -}` or just single item/line otherwise.

Constructors

Comment Bool (NonEmpty Text) |

#### Instances

Instances details

Data Comment # |
Instance details Defined in Ormolu.Parser.CommentStream Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Comment -> c Comment # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Comment # toConstr :: Comment -> Constr # dataTypeOf :: Comment -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Comment) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Comment) # gmapT :: (forall b. Data b => b -> b) -> Comment -> Comment # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Comment -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Comment -> r # gmapQ :: (forall d. Data d => d -> u) -> Comment -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Comment -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Comment -> m Comment # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Comment -> m Comment # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Comment -> m Comment #
Show Comment # |
Instance details Defined in Ormolu.Parser.CommentStream Methods showsPrec :: Int -> Comment -> ShowS # show :: Comment -> String # showList :: [Comment] -> ShowS #
Eq Comment # |
Instance details Defined in Ormolu.Parser.CommentStream Methods (==) :: Comment -> Comment -> Bool # (/=) :: Comment -> Comment -> Bool #

unComment :: Comment -> NonEmpty Text #

Get a collection of lines from a `Comment`.

hasAtomsBefore :: Comment -> Bool #

Check whether the `Comment` had some non-whitespace atoms in front of it in the original input.

isMultilineComment :: Comment -> Bool #

Is this comment multiline-style?