Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-asciidoc for openSUSE:Factory 
checked in at 2026-06-10 15:57:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-asciidoc (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-asciidoc.new.2375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-asciidoc"

Wed Jun 10 15:57:39 2026 rev:2 rq:1358327 version:0.1.0.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-asciidoc/ghc-asciidoc.changes        
2025-12-05 16:56:07.027081711 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-asciidoc.new.2375/ghc-asciidoc.changes      
2026-06-10 15:58:01.636836858 +0200
@@ -1,0 +2,9 @@
+Tue Jun  2 21:49:32 UTC 2026 - Peter Simons <[email protected]>
+
+- Update asciidoc to version 0.1.0.3.
+  Upstream has edited the change log file since the last release in
+  a non-trivial way, i.e. they did more than just add a new entry
+  at the top. You can review the file at:
+  http://hackage.haskell.org/package/asciidoc-0.1.0.3/src/CHANGELOG.md
+
+-------------------------------------------------------------------

Old:
----
  asciidoc-0.1.tar.gz

New:
----
  asciidoc-0.1.0.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-asciidoc.spec ++++++
--- /var/tmp/diff_new_pack.pnpaMm/_old  2026-06-10 15:58:03.704922558 +0200
+++ /var/tmp/diff_new_pack.pnpaMm/_new  2026-06-10 15:58:03.708922723 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-asciidoc
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 %global pkgver %{pkg_name}-%{version}
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        0.1
+Version:        0.1.0.3
 Release:        0
 Summary:        AsciiDoc parser
 License:        BSD-3-Clause

++++++ asciidoc-0.1.tar.gz -> asciidoc-0.1.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/CHANGELOG.md 
new/asciidoc-0.1.0.3/CHANGELOG.md
--- old/asciidoc-0.1/CHANGELOG.md       2001-09-09 03:46:40.000000000 +0200
+++ new/asciidoc-0.1.0.3/CHANGELOG.md   2001-09-09 03:46:40.000000000 +0200
@@ -1,6 +1,41 @@
 # Revision history for asciidoc-hs
 
+## 0.1.0.3 -- 2026-06-02
+
+  * Open block delimiter is exactly two `--` (#12).
+    Fixes  a performance bug with `---` thematic breaks.
+
+  * Improve parsing of link descriptions (#6).
+
+## 0.1.0.2 -- 2026-03-17
+
+  * Allow fenced constructions to end with end-of-input (#9).
+
+  * Fix issue in parsing bracketed arguments (#8).
+
+  * Fix bug in table parsing with rowspans (#5).
+
+  * Improved parsing of line and block comments (#4).
+
+## 0.1.0.1 -- 2026-02-01
+
+  * Fix character escaping issue (#3). Unconstrained forms of
+    delimited constructions weren't being allowed after `++`.
+
+  * Fix some footnote parsing issues (#2).
+
+  * Fix parsing of document attributes in the body of the document (#1).
+    Previously only those in the header were handled.
+
+  * Change handling of doc attributes. Collect them in state so that
+    we can handle attributes defined in the body of the document.
+
+  * Friendlier error message than "endOfInput" on unexpected content
+    at the end.
+
+  * Move regression tests to test/regression.
+
 ## 0.1 -- 2025-11-30
 
-* Initial release.
+  * Initial release.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/asciidoc.cabal 
new/asciidoc-0.1.0.3/asciidoc.cabal
--- old/asciidoc-0.1/asciidoc.cabal     2001-09-09 03:46:40.000000000 +0200
+++ new/asciidoc-0.1.0.3/asciidoc.cabal 2001-09-09 03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
 cabal-version:      3.4
 name:               asciidoc
-version:            0.1
+version:            0.1.0.3
 synopsis:           AsciiDoc parser.
 description:        A parser for AsciiDoc syntax.
 license:            BSD-3-Clause
@@ -12,6 +12,8 @@
 build-type:         Simple
 extra-doc-files:    CHANGELOG.md
 extra-source-files: test/asciidoctor/**/*.test
+                    test/regression/*.test
+                    test/regression/issue_9_include.adoc
                     test/feature/**/*.test
                     test/feature/include/**/*.adoc
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/src/AsciiDoc/Parse.hs 
new/asciidoc-0.1.0.3/src/AsciiDoc/Parse.hs
--- old/asciidoc-0.1/src/AsciiDoc/Parse.hs      2001-09-09 03:46:40.000000000 
+0200
+++ new/asciidoc-0.1.0.3/src/AsciiDoc/Parse.hs  2001-09-09 03:46:40.000000000 
+0200
@@ -12,14 +12,14 @@
 
 import Prelude hiding (takeWhile)
 import Text.HTML.TagSoup.Entity (lookupNamedEntity)
-import Data.Maybe (isNothing, listToMaybe, fromMaybe)
+import Data.Maybe (isNothing, listToMaybe, fromMaybe, catMaybes)
 import Data.Bifunctor (first)
 import Data.Either (lefts, rights)
 import qualified Data.Map as M
 import qualified Data.Text as T
 import qualified Data.Text.Read as TR
 import Data.Text (Text)
-import Data.List (foldl', intersperse)
+import Data.List (foldl', intersperse, isPrefixOf)
 import qualified Data.Attoparsec.Text as A
 import System.FilePath
 import Control.Applicative
@@ -109,11 +109,15 @@
   deriving (Functor, Applicative, Alternative, Monad, MonadPlus,
             MonadFail, MonadReader ParserConfig, MonadState ParserState)
 
-newtype ParserState = ParserState
+data ParserState = ParserState
                      { counterMap :: M.Map Text (CounterType, Int)
+                     , docAttrs :: M.Map Text Text
                      }
         deriving (Show)
 
+defaultDocAttrs :: M.Map Text Text
+defaultDocAttrs = M.insert "sectids" "" mempty
+
 data ParserConfig = ParserConfig
                     { filePath :: FilePath
                     , blockContexts :: [BlockContext]
@@ -129,7 +133,9 @@
                                  , blockContexts = []
                                  , hardBreaks = False
                                  })
-                    (ParserState { counterMap = mempty })
+                    (ParserState { counterMap = mempty
+                                 , docAttrs = defaultDocAttrs
+                                 })
                     p
 
 parse' :: ParserConfig -> ParserState
@@ -137,7 +143,10 @@
 parse' cfg st p t =
   go $ A.parse (evalStateT ( runReaderT (unP p) cfg ) st) t
  where
-  go (A.Fail i _ msg) = Left $ ParseError (T.length t - T.length i) msg
+  go (A.Fail i _ msg) = Left $ ParseError (T.length t - T.length i)
+                             $ if "endOfInput" `isPrefixOf` msg
+                                  then "Unexpected " <> show (T.take 20 i)
+                                  else msg
   go (A.Partial continue) = go (continue "")
   go (A.Done _i r) = Right r
 
@@ -238,24 +247,23 @@
 pDocument :: P Document
 pDocument = do
   meta <- pDocumentHeader
-  let minSectionLevel = case M.lookup "doctype" (docAttributes meta) of
+  attr' <- gets docAttrs
+  let minSectionLevel = case M.lookup "doctype" attr' of
                           Just "book" -> 0
                           _ -> 1
-  bs <- (case M.lookup "hardbreaks-option" (docAttributes meta) of
+  bs <- (case M.lookup "hardbreaks-option" attr' of
             Just "" -> withHardBreaks
             _ -> id) $
-        withBlockContext (SectionContext (minSectionLevel - 1)) (many pBlock)
+        withBlockContext (SectionContext (minSectionLevel - 1)) pBlocks
   skipWhile isSpace
   endOfInput
-  pure $ Document { docMeta = meta , docBlocks = bs }
+  attr <- gets docAttrs
+  pure $ Document { docMeta = meta{ docAttributes = attr } , docBlocks = bs }
 
 pDocumentHeader :: P Meta
 pDocumentHeader = do
-  let handleAttr m (Left k) = M.delete k m
-      handleAttr m (Right (k,v)) = M.insert k v m
-  let defaultDocAttrs = M.insert "sectids" "" mempty
   skipBlankLines
-  topattrs <- foldl' handleAttr defaultDocAttrs <$> many pDocAttribute
+  skipMany pDocAttribute
   skipBlankLines
   (title, titleAttr) <- option ([], Nothing) $ do
     (_,titleAttr) <- pTitlesAndAttributes
@@ -269,12 +277,13 @@
   revision <- if null title
                  then pure Nothing
                  else optional pDocumentRevision
-  attrs <- foldl' handleAttr topattrs <$> many pDocAttribute
+  skipMany pDocAttribute
   pure $ Meta{ docTitle = title
              , docTitleAttributes = titleAttr
              , docAuthors = authors
              , docRevision = revision
-             , docAttributes = attrs }
+             , docAttributes = mempty }
+              -- docAttributes this gets added at the end from docAttrs in 
state
 
 pDocumentTitle :: P [Inline]
 pDocumentTitle = do
@@ -321,18 +330,18 @@
 pLine = takeWhile (not . isEndOfLine) <* (endOfLine <|> endOfInput)
 
 
--- Left key unsets key
--- Right (key, val) sets key
-pDocAttribute :: P (Either Text (Text, Text))
+pDocAttribute :: P ()
 pDocAttribute = do
   vchar ':'
   unset <- option False $ True <$ vchar '!'
   k <- pDocAttributeName
   vchar ':'
   v <- pLineWithEscapes
-  pure $ if unset
-            then Left k
-            else Right (k,v)
+  modify $ \s ->
+    s{ docAttrs =
+         if unset
+            then M.delete k (docAttrs s)
+            else M.insert k v (docAttrs s) }
 
 pDocAttributeName :: P Text
 pDocAttributeName = do
@@ -362,8 +371,8 @@
 skipBlankLines = do
   contexts <- asks blockContexts
   case contexts of
-    ListContext{} : _ -> void $ many $ vchar '+' *> pBlankLine
-    _ -> void $ many pBlankLine
+    ListContext{} : _ -> skipMany $ vchar '+' *> pBlankLine
+    _ -> skipMany pBlankLine
 
 pBlankLine :: P ()
 pBlankLine = takeWhile (\c -> c == ' ' || c == '\t') *> (pLineComment <|> 
endOfLine)
@@ -380,7 +389,15 @@
       pure x
 
 parseBlocks :: Text -> P [Block]
-parseBlocks = parseWith (many pBlock) . (<> "\n") . T.strip
+parseBlocks = parseWith pBlocks . (<> "\n") . T.strip
+
+pBlocks :: P [Block]
+pBlocks = do
+  bs <- many pBlock
+  skipBlankLines
+  skipMany pDocAttribute
+  skipBlankLines
+  pure $ catMaybes bs
 
 parseAsciidoc :: Text -> P Document
 parseAsciidoc = parseWith pDocument . (<> "\n") . T.strip
@@ -398,22 +415,24 @@
 parseInlines :: Text -> P [Inline]
 parseInlines = parseWith pInlines . T.strip
 
-pBlock :: P Block
+pBlock :: P (Maybe Block)
 pBlock = do
   contexts <- asks blockContexts
   skipBlankLines
+  skipMany pDocAttribute
+  skipBlankLines
   (mbtitle, attr) <- pTitlesAndAttributes
   case contexts of
     ListContext{} : _ -> skipWhile (== ' ')
     _ -> pure ()
-  skipMany (pCommentBlock attr)
   let hardbreaks =
        case attr of
           Attr _ kvs
             | Just opts <- M.lookup "options" kvs
               -> "hardbreaks" `T.isInfixOf` opts
           _ -> False
-  (if hardbreaks then withHardBreaks else id) $
+  (Nothing <$ pCommentBlock attr) <|> fmap Just
+    ((if hardbreaks then withHardBreaks else id) $
         pBlockMacro mbtitle attr
     <|> pDiscreteHeading mbtitle attr
     <|> pExampleBlock mbtitle attr
@@ -435,7 +454,7 @@
             , pDefinitionList
             , pIndentedLiteral
             , pPara
-            ]
+            ])
 
 
 pIndentedLiteral :: P BlockType
@@ -537,7 +556,7 @@
       guard (lev > sectionLevel && lev >= 0 && lev <= 5)
       vchar ' '
       title <- pLine >>= parseInlines
-      contents <- withBlockContext (SectionContext lev) $ many pBlock
+      contents <- withBlockContext (SectionContext lev) pBlocks
       -- note: we use sectionLevel, not lev, so in improperly nested content, 
e.g.,
       -- == foo
       -- ==== bar
@@ -610,7 +629,7 @@
   let newContext = case contexts of
                       ListContext ':' n : _ -> ListContext ':' (n + 1)
                       _ -> ListContext ':' 1
-  defn <- withBlockContext newContext (many pBlock)
+  defn <- withBlockContext newContext pBlocks
   void $ many pBlankLine
   pure (term, defn)
 
@@ -681,14 +700,14 @@
 pListItem = do
   mbCheckboxState <- optional pCheckbox
   skipWhile (==' ')
-  bs <- many pBlock
+  bs <- pBlocks
   pure $ ListItem mbCheckboxState bs
 
 pDelimitedLiteralBlock :: Char -> Int -> P [T.Text]
 pDelimitedLiteralBlock c minimumNumber = do
   len <- length <$> some (vchar c) <* pBlankLine
   guard $ len >= minimumNumber
-  let endFence = count len (vchar c) *> pBlankLine
+  let endFence = count len (vchar c) *> (pBlankLine <|> endOfInput)
   manyTill pLine endFence
 
 pDelimitedBlock :: Char -> Int -> P [Block]
@@ -697,7 +716,14 @@
   guard $ len >= minimumNumber
   let endFence = count len (vchar c) *> pBlankLine
   withBlockContext (DelimitedContext c len) $
-    manyTill pBlock endFence
+    catMaybes <$> manyTill pBlock endFence
+
+pDelimitedBlockExact :: Char -> Int -> P [Block]
+pDelimitedBlockExact c exactNumber = do
+  let fence = count exactNumber (vchar c) *> pBlankLine
+  fence
+  withBlockContext (DelimitedContext c exactNumber) $
+    catMaybes <$> manyTill pBlock fence
 
 pPassBlock :: Maybe BlockTitle -> Attr -> P Block
 pPassBlock mbtitle attr = do
@@ -830,10 +856,9 @@
 
 pOpenBlock :: Maybe BlockTitle -> Attr -> P Block
 pOpenBlock mbtitle attr = Block attr mbtitle <$>
-  ((OpenBlock <$> pDelimitedBlock '-' 2)
+  ((OpenBlock <$> pDelimitedBlockExact '-' 2)
    <|>
-  (QuoteBlock Nothing <$>
-     (pDelimitedBlock '-' 2 <|> pDelimitedBlock '_' 4)))
+  (QuoteBlock Nothing <$> (pDelimitedBlock '_' 4)))
 
 parseAdmonitionType :: T.Text -> Maybe AdmonitionType
 parseAdmonitionType t =
@@ -886,6 +911,7 @@
 
 pNormalLine :: P Text
 pNormalLine = do
+  notFollowedBy (string "////" *> pBlankLine) -- block comment
   t <- pLine
   fp <- asks filePath
   guard $ not $ T.all (\c -> c == ' ' || c == '\t') t
@@ -951,16 +977,16 @@
             -- if there are rowspans from rows above, we need to skip some:
             let mbspecs' = case mbspecs of
                              Nothing -> Nothing
-                             Just specs' -> Just [s | (s,0) <- zip specs' 
rowspans]
+                             Just specs' -> Just [s | (s,n) <- zip specs' 
rowspans, n <= 0]
             row@(TableRow cells) <- pTableRow tableOpts mbspecs'
             let numcols = sum (map cellColspan cells)
             let specs = fromMaybe (replicate numcols defaultColumnSpec) mbspecs
             -- now, update rowspans in light of new row
             let updateRowspans [] rs = rs
                 updateRowspans (c:cs) rs =
-                  map (+ (cellRowspan c - 1)) (take (cellColspan c) rs)
+                  map (+ (cellRowspan c)) (take (cellColspan c) rs)
                   ++ updateRowspans cs (drop (cellColspan c) rs)
-            let rowspans' = updateRowspans cells rowspans
+            let rowspans' = updateRowspans cells (map (\x -> x - 1) rowspans)
             (\(rows, colspecs') -> (row:rows, case rows of
                                                  [] -> specs
                                                  _ -> colspecs'))
@@ -1263,24 +1289,27 @@
  where
    pBareAttributeValue =
      T.strip <$> takeWhile (\c -> c /= ',' && c /= ']')
-   pQuotedAttr = do
-     vchar '"'
-     result <- many (satisfy (/='"') <|> (vchar '\\' *> satisfy (/='"')))
-     vchar '"'
-     pure $ T.pack result
+
+pQuotedAttr :: P Text
+pQuotedAttr = do
+   vchar '"'
+   result <- many (satisfy (/='"') <|> (vchar '\\' *> satisfy (/='"')))
+   vchar '"'
+   pure $ T.pack result
 
 pInlines' :: [Char] -> P [Inline]
-pInlines' cs =
-  (do il' <- pInline cs
-      let il = case il' of
-                 Inline (Attr ps kvs) (Span ils)
-                   | Nothing <- M.lookup "role" kvs
-                   -> Inline (Attr ps kvs) (Highlight ils)
-                 _ -> il'
-      addStr . (il:) <$> pInlines' [])
-  <|> (do c <- anyChar
-          pInlines' (c:cs))
-  <|> (addStr [] <$ endOfInput)
+pInlines' cs = do
+  (pLineComment *> pInlines' cs)
+    <|> (do il' <- pInline cs
+            let il = case il' of
+                       Inline (Attr ps kvs) (Span ils)
+                         | Nothing <- M.lookup "role" kvs
+                         -> Inline (Attr ps kvs) (Highlight ils)
+                       _ -> il'
+            addStr . (il:) <$> pInlines' [])
+    <|> (do c <- anyChar
+            pInlines' (c:cs))
+    <|> (addStr [] <$ endOfInput)
  where
   addStr = case cs of
               [] -> id
@@ -1326,10 +1355,9 @@
 pInline :: [Char] -> P Inline
 pInline prevChars = do
   let maybeUnconstrained = case prevChars of
-                              (d:_) -> isSpace d || isPunctuation d
+                              (d:_) -> isSpace d || isPunctuation d || d == '+'
                               [] -> True
   let inMatched = pInMatched maybeUnconstrained
-  skipMany pLineComment
   (do attr <- pFormattedTextAttributes <|> pure mempty
       c <- peekChar'
       case c of
@@ -1372,7 +1400,7 @@
     <$> (string "+++" *> manyTill anyChar (string "+++"))
 
 pLineComment :: P ()
-pLineComment = string "//" *> skipWhile (== ' ') *> void pLine
+pLineComment = string "//" *> satisfy (\c -> c == ' ' || c == '\t') *> void 
pLine
 
 pCrossReference :: P Inline
 pCrossReference = do
@@ -1411,7 +1439,7 @@
     mbc <- peekChar
     case mbc of
       Nothing -> pure ()
-      Just c -> guard $ isSpace c || isPunctuation c
+      Just c -> guard $ isSpace c || isPunctuation c || c == '+'
   Inline attr <$> toInlineType (T.pack cs)
 
 pInlineAnchor :: P Inline
@@ -1532,12 +1560,11 @@
                     then pure [Inline mempty (Str target)]
                     else parseInlines description)
   , ("footnote", \target -> do
-      attr <- pAttributes
-      let (contents, attr') = extractDescription attr
-          fnid = if target == mempty
+      ils <- pBracketedText >>= parseInlines
+      let fnid = if target == mempty
                     then Nothing
                     else Just (FootnoteId target)
-      Inline attr' . Footnote fnid <$> parseInlines contents)
+      pure $ Inline mempty (Footnote fnid ils))
   , ("footnoteref", \_ -> do
       (Attr ps kvs) <- pAttributes
       (target, contents) <- case ps of
@@ -1580,7 +1607,9 @@
   vchar '[' *>
     (mconcat <$> many
          (T.pack <$> some ((vchar '\\' *> char ']') <|>
-                 satisfy (\c -> c /= ']' && not (isEndOfLine c)) <|>
+                           (vchar '+' *> vchar '+' *> char ']'
+                             <* vchar '+' <* vchar '+') <|>
+                 satisfy (\c -> c /= ']' && c /= '[' && not (isEndOfLine c)) 
<|>
                  (' ' <$ (vchar '\\' <* endOfLine)))
           <|> ((\x -> "[" <> x <> "]") <$> pBracketedText)))
     <* vchar ']'
@@ -1602,8 +1631,7 @@
   c <- takeWhile1 isLetter
   guard $ let lc = T.length c in lc >= 2 && lc <= 5
   let email = a <> "@" <> b <> "." <> c
-  attr <- pAttributes <|> pure mempty
-  let (description, attr') = extractDescription attr
+  (description, attr') <- pLinkDescription <|> pure (mempty, mempty)
   Inline attr' . Link EmailLink (Target email)
            <$> if T.null description
                   then pure [Inline mempty (Str email)]
@@ -1633,13 +1661,30 @@
   url <- (scheme <>) . mconcat <$> some
           (urlChunk <|> (do Inline _ (Str t) <- pInMatched False '+' mempty 
(pure . Str)
                             pure t))
-  attr <- pAttributes <|> pure mempty
-  let (description, attr') = extractDescription attr
+  (description, attr') <- pLinkDescription <|> pure (mempty, mempty)
   Inline attr' . Link URLLink (Target url)
              <$> if T.null description
                     then pure [Inline mempty (Str url)]
                     else parseInlines description
 
+pLinkDescription :: P (Text, Attr)
+pLinkDescription = do
+  vchar '['
+  -- parse link description
+  let literalPart = takeWhile1 (\c -> c /= ']' && c /= ',' && c /= '=')
+  description <- option mempty $
+                    pQuotedAttr
+                <|> mconcat <$>
+                     many (literalPart
+                         <|> ("," <$ vchar ',' <* notFollowedBy pKeyValue))
+  -- parse (optional) attributes
+  kvs <- option []
+         (do unless (description == mempty) pComma
+             sepBy pKeyValue pComma <* option () pComma)
+  vchar ']'
+  pure (description, Attr mempty (M.fromList kvs))
+
+
 pBracedAutolink :: P Inline
 pBracedAutolink = vchar '<' *> pAutolink <* vchar '>'
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/Main.hs 
new/asciidoc-0.1.0.3/test/Main.hs
--- old/asciidoc-0.1/test/Main.hs       2001-09-09 03:46:40.000000000 +0200
+++ new/asciidoc-0.1.0.3/test/Main.hs   2001-09-09 03:46:40.000000000 +0200
@@ -20,9 +20,11 @@
 main = do
   asciidoctorTests <- goldenTests "asciidoctor"
   featureTests <- goldenTests "feature"
+  regressionTests <- goldenTests "regression"
   defaultMain $ testGroup "Tests"
     [ testGroup "Asciidoctor" asciidoctorTests
     , testGroup "Feature" featureTests
+    , testGroup "Regression" regressionTests
     , testGroup "Generic"
        [ foldInlineTest
        , foldBlockTest
@@ -33,18 +35,21 @@
 
 goldenTests :: FilePath -> IO [TestTree]
 goldenTests fp = do
-  files <- findTestFiles ("test" </> fp)
-  pure $ map (\(category, fs) ->
-          testGroup category (map toGoldenTest fs)) files
+  (toplevel, groups) <- findTestFiles ("test" </> fp)
+  pure $ map toGoldenTest toplevel ++
+         map (\(category, fs) ->
+          testGroup category (map toGoldenTest fs)) groups
 
 -- Find all .test files in a directory
-findTestFiles :: FilePath -> IO [(FilePath, [FilePath])]
+findTestFiles :: FilePath -> IO ([FilePath], [(FilePath, [FilePath])])
 findTestFiles baseDir = do
-  categories <- listDirectory baseDir
+  fs <- listDirectory baseDir
   let go f = do
         xs <- map ((baseDir </> f) </>) <$> listDirectory (baseDir </> f)
         return (f, sort $ filter ((== ".test") . takeExtension) xs)
-  mapM go categories
+  categories <- mapM go (filter (null . takeExtension) fs)
+  let toplevel = map (baseDir </>) $ filter ((== ".test") . takeExtension) fs
+  return (toplevel, categories)
 
 toGoldenTest :: FilePath -> TestTree
 toGoldenTest fp =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/asciidoctor/outline/numbered.test 
new/asciidoc-0.1.0.3/test/asciidoctor/outline/numbered.test
--- old/asciidoc-0.1/test/asciidoctor/outline/numbered.test     2001-09-09 
03:46:40.000000000 +0200
+++ new/asciidoc-0.1.0.3/test/asciidoctor/outline/numbered.test 2001-09-09 
03:46:40.000000000 +0200
@@ -42,12 +42,7 @@
           Attr
           ( [] , fromList [ ( "id" , "_unnumbered_section" ) ] )
           Nothing
-          (Section
-             (Level 1)
-             [ Inline mempty (Str "Unnumbered Section") ]
-             [ Block
-                 mempty Nothing (Paragraph [ Inline mempty (Str ":numbered:") 
])
-             ])
+          (Section (Level 1) [ Inline mempty (Str "Unnumbered Section") ] [])
       , Block
           Attr
           ( [] , fromList [ ( "id" , "_section_2" ) ] )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_1.test 
new/asciidoc-0.1.0.3/test/regression/issue_1.test
--- old/asciidoc-0.1/test/regression/issue_1.test       1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_1.test   2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,23 @@
+= Test
+
+:doc_attr: bar
+doc_attr = {doc_attr}
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = [ Inline mempty (Str "Test") ]
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes =
+            fromList [ ( "doc_attr" , "bar" ) , ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "doc_attr = ") , Inline mempty (Str "bar") ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_2.test 
new/asciidoc-0.1.0.3/test/regression/issue_2.test
--- old/asciidoc-0.1/test/regression/issue_2.test       1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_2.test   2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,60 @@
+Textfootnote:[Commas break foonotes, do you see?].
+
+Other textfootnote:[This is the same for closing ++[++brackets++]++,
+isn’t it?].
+
+And anotherfootnote:[Some dots do as well. But not all of them.], and a
+final onefootnote:[S. Jackson.].
+
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "Text")
+             , Inline
+                 mempty
+                 (Footnote
+                    Nothing
+                    [ Inline mempty (Str "Commas break foonotes, do you see?") 
])
+             , Inline mempty (Str ".")
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline
+                 mempty (Str "Other textfootnote:[This is the same for closing 
")
+             , Inline mempty (Str "[")
+             , Inline mempty (Str "brackets")
+             , Inline mempty (Str "]")
+             , Inline mempty (Str ",\nisn\8217t it?].")
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "And another")
+             , Inline
+                 mempty
+                 (Footnote
+                    Nothing
+                    [ Inline mempty (Str "Some dots do as well. But not all of 
them.")
+                    ])
+             , Inline mempty (Str ", and a\nfinal one")
+             , Inline
+                 mempty (Footnote Nothing [ Inline mempty (Str "S. Jackson.") 
])
+             , Inline mempty (Str ".")
+             ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_3.test 
new/asciidoc-0.1.0.3/test/regression/issue_3.test
--- old/asciidoc-0.1/test/regression/issue_3.test       1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_3.test   2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,79 @@
+Words _italicised_ in brackets are ++[++_broken_++]++.
+
+But this [_works_], ++[++__this__++]++ too, and ++[++this _also_ works.++]++
+
+Words in *bold* in brackets are ++{++*broken*++}++.
+
+But this {*works*}, ++{++**this**++}++ too, and ++{++this *also* works.++}++
+
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "Words ")
+             , Inline mempty (Italic [ Inline mempty (Str "italicised") ])
+             , Inline mempty (Str " in brackets are ")
+             , Inline mempty (Str "[")
+             , Inline mempty (Italic [ Inline mempty (Str "broken") ])
+             , Inline mempty (Str "]")
+             , Inline mempty (Str ".")
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "But this [")
+             , Inline mempty (Italic [ Inline mempty (Str "works") ])
+             , Inline mempty (Str "], ")
+             , Inline mempty (Str "[")
+             , Inline mempty (Italic [ Inline mempty (Str "this") ])
+             , Inline mempty (Str "]")
+             , Inline mempty (Str " too, and ")
+             , Inline mempty (Str "[")
+             , Inline mempty (Str "this ")
+             , Inline mempty (Italic [ Inline mempty (Str "also") ])
+             , Inline mempty (Str " works.")
+             , Inline mempty (Str "]")
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "Words in ")
+             , Inline mempty (Bold [ Inline mempty (Str "bold") ])
+             , Inline mempty (Str " in brackets are ")
+             , Inline mempty (Str "{")
+             , Inline mempty (Bold [ Inline mempty (Str "broken") ])
+             , Inline mempty (Str "}")
+             , Inline mempty (Str ".")
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "But this {")
+             , Inline mempty (Bold [ Inline mempty (Str "works") ])
+             , Inline mempty (Str "}, ")
+             , Inline mempty (Str "{")
+             , Inline mempty (Bold [ Inline mempty (Str "this") ])
+             , Inline mempty (Str "}")
+             , Inline mempty (Str " too, and ")
+             , Inline mempty (Str "{")
+             , Inline mempty (Str "this ")
+             , Inline mempty (Bold [ Inline mempty (Str "also") ])
+             , Inline mempty (Str " works.")
+             , Inline mempty (Str "}")
+             ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_4a.test 
new/asciidoc-0.1.0.3/test/regression/issue_4a.test
--- old/asciidoc-0.1/test/regression/issue_4a.test      1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_4a.test  2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,23 @@
+<<<
+Asciidoc text followed by a line comment.
+// LINE COMMENT
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block mempty Nothing PageBreak
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "Asciidoc text followed by a line 
comment.\n")
+             ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_4b.test 
new/asciidoc-0.1.0.3/test/regression/issue_4b.test
--- old/asciidoc-0.1/test/regression/issue_4b.test      1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_4b.test  2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,26 @@
+<<<
+Asciidoc text followed by a blank line and a line comment.
+
+// LINE COMMENT
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block mempty Nothing PageBreak
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline
+                 mempty
+                 (Str "Asciidoc text followed by a blank line and a line 
comment.")
+             ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_4c.test 
new/asciidoc-0.1.0.3/test/regression/issue_4c.test
--- old/asciidoc-0.1/test/regression/issue_4c.test      1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_4c.test  2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,26 @@
+<<<
+Asciidoc text followed by a line comment
+// LINE COMMENT
+followed by text.
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block mempty Nothing PageBreak
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline
+                 mempty
+                 (Str "Asciidoc text followed by a line comment\nfollowed by 
text.")
+             ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_4d.test 
new/asciidoc-0.1.0.3/test/regression/issue_4d.test
--- old/asciidoc-0.1/test/regression/issue_4d.test      1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_4d.test  2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,29 @@
+<<<
+Asciidoc text followed by a line comment.
+// LINE COMMENT
+
+Followed by a new paragraph.
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block mempty Nothing PageBreak
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "Asciidoc text followed by a line 
comment.\n")
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph [ Inline mempty (Str "Followed by a new paragraph.") ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_4e.test 
new/asciidoc-0.1.0.3/test/regression/issue_4e.test
--- old/asciidoc-0.1/test/regression/issue_4e.test      1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_4e.test  2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,30 @@
+<<<
+Asciidoc text followed by a line comment.
+
+// LINE COMMENT
+
+Followed by a new paragraph.
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block mempty Nothing PageBreak
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "Asciidoc text followed by a line comment.")
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph [ Inline mempty (Str "Followed by a new paragraph.") ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_4f.test 
new/asciidoc-0.1.0.3/test/regression/issue_4f.test
--- old/asciidoc-0.1/test/regression/issue_4f.test      1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_4f.test  2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,30 @@
+<<<
+Asciidoc text followed by a block comment
+////
+BLOCK COMMENT
+////
+followed by text.
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block mempty Nothing PageBreak
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "Asciidoc text followed by a block comment")
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph [ Inline mempty (Str "followed by text.") ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_4g.test 
new/asciidoc-0.1.0.3/test/regression/issue_4g.test
--- old/asciidoc-0.1/test/regression/issue_4g.test      1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_4g.test  2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,32 @@
+<<<
+Asciidoc text followed by a block comment.
+
+////
+BLOCK COMMENT
+////
+
+Followed by a new paragraph.
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block mempty Nothing PageBreak
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "Asciidoc text followed by a block comment.")
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph [ Inline mempty (Str "Followed by a new paragraph.") ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_4h.test 
new/asciidoc-0.1.0.3/test/regression/issue_4h.test
--- old/asciidoc-0.1/test/regression/issue_4h.test      1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_4h.test  2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,36 @@
+<<<
+Asciidoc text followed by a multi-line block comment.
+
+////
+BLOCK COMMENT LINE 1
+LINE 2
+LINE 3
+////
+
+Followed by a new paragraph.
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block mempty Nothing PageBreak
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline
+                 mempty
+                 (Str "Asciidoc text followed by a multi-line block comment.")
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph [ Inline mempty (Str "Followed by a new paragraph.") ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_5.test 
new/asciidoc-0.1.0.3/test/regression/issue_5.test
--- old/asciidoc-0.1/test/regression/issue_5.test       1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_5.test   2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,116 @@
+<<<
+|===
+|col1|col2
+|11 .2+|12|13
+|21 .2+|22|23
+|===
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block mempty Nothing PageBreak
+      , Block
+          mempty
+          Nothing
+          (Table
+             [ ColumnSpec
+                 { colHorizAlign = Nothing
+                 , colVertAlign = Nothing
+                 , colWidth = Nothing
+                 , colStyle = Nothing
+                 }
+             , ColumnSpec
+                 { colHorizAlign = Nothing
+                 , colVertAlign = Nothing
+                 , colWidth = Nothing
+                 , colStyle = Nothing
+                 }
+             ]
+             (Just
+                [ TableRow
+                    [ TableCell
+                        { cellContent =
+                            [ Block mempty Nothing (Paragraph [ Inline mempty 
(Str "col1") ]) ]
+                        , cellHorizAlign = Nothing
+                        , cellVertAlign = Nothing
+                        , cellColspan = 1
+                        , cellRowspan = 1
+                        }
+                    , TableCell
+                        { cellContent =
+                            [ Block mempty Nothing (Paragraph [ Inline mempty 
(Str "col2") ]) ]
+                        , cellHorizAlign = Nothing
+                        , cellVertAlign = Nothing
+                        , cellColspan = 1
+                        , cellRowspan = 1
+                        }
+                    ]
+                ])
+             [ TableRow
+                 [ TableCell
+                     { cellContent =
+                         [ Block mempty Nothing (Paragraph [ Inline mempty 
(Str "11") ]) ]
+                     , cellHorizAlign = Nothing
+                     , cellVertAlign = Nothing
+                     , cellColspan = 1
+                     , cellRowspan = 1
+                     }
+                 , TableCell
+                     { cellContent =
+                         [ Block mempty Nothing (Paragraph [ Inline mempty 
(Str "12") ]) ]
+                     , cellHorizAlign = Nothing
+                     , cellVertAlign = Nothing
+                     , cellColspan = 1
+                     , cellRowspan = 2
+                     }
+                 ]
+             , TableRow
+                 [ TableCell
+                     { cellContent =
+                         [ Block mempty Nothing (Paragraph [ Inline mempty 
(Str "13") ]) ]
+                     , cellHorizAlign = Nothing
+                     , cellVertAlign = Nothing
+                     , cellColspan = 1
+                     , cellRowspan = 1
+                     }
+                 ]
+             , TableRow
+                 [ TableCell
+                     { cellContent =
+                         [ Block mempty Nothing (Paragraph [ Inline mempty 
(Str "21") ]) ]
+                     , cellHorizAlign = Nothing
+                     , cellVertAlign = Nothing
+                     , cellColspan = 1
+                     , cellRowspan = 1
+                     }
+                 , TableCell
+                     { cellContent =
+                         [ Block mempty Nothing (Paragraph [ Inline mempty 
(Str "22") ]) ]
+                     , cellHorizAlign = Nothing
+                     , cellVertAlign = Nothing
+                     , cellColspan = 1
+                     , cellRowspan = 2
+                     }
+                 ]
+             ]
+             (Just
+                [ TableRow
+                    [ TableCell
+                        { cellContent =
+                            [ Block mempty Nothing (Paragraph [ Inline mempty 
(Str "23") ]) ]
+                        , cellHorizAlign = Nothing
+                        , cellVertAlign = Nothing
+                        , cellColspan = 1
+                        , cellRowspan = 1
+                        }
+                    ]
+                ]))
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_6.test 
new/asciidoc-0.1.0.3/test/regression/issue_6.test
--- old/asciidoc-0.1/test/regression/issue_6.test       1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_6.test   2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,66 @@
+http://discuss.asciidoctor.org[asciidoctor.org,role="green";]
+
+http://discuss.asciidoctor.org["ascidoctor=cool";]
+
+http://example.com[A whole sentence, with comma and period.]
+
+http://example.com["with [brackets]",key=value]
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline
+                 Attr
+                 ( [] , fromList [ ( "role" , "green" ) ] )
+                 (Link
+                    URLLink
+                    (Target "http://discuss.asciidoctor.org";)
+                    [ Inline mempty (Str "asciidoctor.org") ])
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline
+                 mempty
+                 (Link
+                    URLLink
+                    (Target "http://discuss.asciidoctor.org";)
+                    [ Inline mempty (Str "ascidoctor=cool") ])
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline
+                 mempty
+                 (Link
+                    URLLink
+                    (Target "http://example.com";)
+                    [ Inline mempty (Str "A whole sentence, with comma and 
period.") ])
+             ])
+      , Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline
+                 Attr
+                 ( [] , fromList [ ( "key" , "value" ) ] )
+                 (Link
+                    URLLink
+                    (Target "http://example.com";)
+                    [ Inline mempty (Str "with [brackets]") ])
+             ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_8.test 
new/asciidoc-0.1.0.3/test/regression/issue_8.test
--- old/asciidoc-0.1/test/regression/issue_8.test       1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_8.test   2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,40 @@
+A sentence.footnote:[See https://pandoc.org/MANUAL.html[manual] and other 
https://pandoc.org/demos.html[demos].]
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block
+          mempty
+          Nothing
+          (Paragraph
+             [ Inline mempty (Str "A sentence.")
+             , Inline
+                 mempty
+                 (Footnote
+                    Nothing
+                    [ Inline mempty (Str "See ")
+                    , Inline
+                        mempty
+                        (Link
+                           URLLink
+                           (Target "https://pandoc.org/MANUAL.html";)
+                           [ Inline mempty (Str "manual") ])
+                    , Inline mempty (Str " and other ")
+                    , Inline
+                        mempty
+                        (Link
+                           URLLink
+                           (Target "https://pandoc.org/demos.html";)
+                           [ Inline mempty (Str "demos") ])
+                    , Inline mempty (Str ".")
+                    ])
+             ])
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_9.test 
new/asciidoc-0.1.0.3/test/regression/issue_9.test
--- old/asciidoc-0.1/test/regression/issue_9.test       1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_9.test   2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,27 @@
+include::issue_9_include.adoc[]
+>>>
+Document
+  { docMeta =
+      Meta
+        { docTitle = []
+        , docTitleAttributes = Nothing
+        , docAuthors = []
+        , docRevision = Nothing
+        , docAttributes = fromList [ ( "sectids" , "" ) ]
+        }
+  , docBlocks =
+      [ Block
+          mempty
+          Nothing
+          (Include
+             "test/regression/issue_9_include.adoc"
+             (Just
+                [ Block
+                    Attr
+                    ( [ "source" , "cpp" ] , fromList [] )
+                    Nothing
+                    (LiteralBlock
+                       "#include \"MyFile.h\"\n\nMyClass::MyClass(LibParent 
*parent,\n    LibCollectionPtr inputCollection)\n    : LibClass(parent) {\n    
\n    myMemberFn(inputCollection, this->getLibItem());\n    \n}\n")
+                ]))
+      ]
+  }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asciidoc-0.1/test/regression/issue_9_include.adoc 
new/asciidoc-0.1.0.3/test/regression/issue_9_include.adoc
--- old/asciidoc-0.1/test/regression/issue_9_include.adoc       1970-01-01 
01:00:00.000000000 +0100
+++ new/asciidoc-0.1.0.3/test/regression/issue_9_include.adoc   2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,12 @@
+[source, cpp]
+....
+#include "MyFile.h"
+
+MyClass::MyClass(LibParent *parent,
+    LibCollectionPtr inputCollection)
+    : LibClass(parent) {
+    
+    myMemberFn(inputCollection, this->getLibItem());
+    
+}
+....
\ No newline at end of file

Reply via email to