Skip to content

Commit 913ca87

Browse files
committed
Include only a portion of a file (issue #8)
1 parent beab4ba commit 913ca87

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

IncludeFilter.hs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,27 @@ includeCodeBlock (CodeBlock (_, classes, _) list) = do
104104
let blocks = fmap (B.codeBlockWith ("", newclasses, [])) content
105105
fmap B.toList blocks
106106

107+
cropContent :: [String] -> (String, String) -> [String]
108+
cropContent lines (skip, count) =
109+
if not $ null skip then
110+
if not $ null count then
111+
take (read count) (drop (read skip) lines)
112+
else
113+
drop (read skip) lines
114+
else
115+
lines
116+
117+
includeCropped :: Block -> IO [Block]
118+
includeCropped (CodeBlock (_, classes, _) list) = do
119+
let [filePath, skip, count] = lines list
120+
let content = fileContentAsString filePath
121+
let croppedContent = unlines <$> ((cropContent . lines <$> content) <*> pure (skip, count))
122+
fmap (stripPandoc . readMarkdown def) croppedContent
123+
107124
doInclude :: Block -> IO [Block]
108125
doInclude cb@(CodeBlock (_, classes, _) list)
109126
| "code" `elem` classes = includeCodeBlock cb
127+
| "cropped" `elem` classes = includeCropped cb
110128
| "include" `elem` classes = simpleInclude list classes
111129
doInclude x = return [x]
112130

test/input.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,10 @@ gamma.md
1010
```include
1111
beta.md
1212
```
13+
```cropped
14+
alpha.md
15+
2
16+
1
17+
```
1318

1419
text

0 commit comments

Comments
 (0)