parent
cf0a1b2034
commit
0ef1e51211
1 changed files with 20 additions and 0 deletions
|
@ -64,6 +64,7 @@ module Text.Pandoc.Shared (
|
|||
Element (..),
|
||||
hierarchicalize,
|
||||
uniqueIdent,
|
||||
extractIds,
|
||||
inlineListToIdentifier,
|
||||
isHeaderBlock,
|
||||
headerShift,
|
||||
|
@ -529,6 +530,25 @@ headerLtEq level (Header l _ _) = l <= level
|
|||
headerLtEq level (Div ("",["references"],[]) (Header l _ _ : _)) = l <= level
|
||||
headerLtEq _ _ = False
|
||||
|
||||
-- | Extract the identifiers from a block element.
|
||||
extractBlockIds :: Block -> Set.Set String
|
||||
extractBlockIds (Header _ (ident,_,_) _) | not (null ident) =
|
||||
Set.singleton ident
|
||||
extractBlockIds (Div (ident,_,_) _) | not (null ident) =
|
||||
Set.singleton ident
|
||||
extractBlockIds _ = Set.empty
|
||||
|
||||
-- | Extract the identifiers from an inline element.
|
||||
extractInlineIds :: Inline -> Set.Set String
|
||||
extractInlineIds (Span (ident,_,_) _) | not (null ident) =
|
||||
Set.singleton ident
|
||||
extractInlineIds _ = Set.empty
|
||||
|
||||
-- | Extract the identifiers from a pandoc document.
|
||||
extractIds :: Pandoc -> Set.Set String
|
||||
extractIds doc =
|
||||
query extractBlockIds doc `Set.union` query extractInlineIds doc
|
||||
|
||||
-- | Generate a unique identifier from a list of inlines.
|
||||
-- Second argument is a list of already used identifiers.
|
||||
uniqueIdent :: [Inline] -> Set.Set String -> String
|
||||
|
|
Loading…
Reference in a new issue