doc: use macros not divs to select web/man content
Use slightly clearer m4 macros instead of special divs to mark content as web only/man only. The temporary doc/*.md files are no longer needed, slightly more redundant work is done.
This commit is contained in:
		
							parent
							
								
									6787decca2
								
							
						
					
					
						commit
						4c291dc54e
					
				
							
								
								
									
										44
									
								
								Shake.hs
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								Shake.hs
									
									
									
									
									
								
							| @ -97,8 +97,6 @@ main = do | |||||||
|         ] |         ] | ||||||
|       -- manuals m4 source, may include other files (hledger/doc/hledger.1.m4.md) |       -- manuals m4 source, may include other files (hledger/doc/hledger.1.m4.md) | ||||||
|       m4manpages = [manpageDir m </> m <.> "m4.md" | m <- manpageNames] |       m4manpages = [manpageDir m </> m <.> "m4.md" | m <- manpageNames] | ||||||
|       --  manuals rendered to markdown, ready for adjusting to web or man pages by pandoc (hledger/doc/hledger.1.md) |  | ||||||
|       mdmanpages = [manpageDir m </> m <.> "md" | m <- manpageNames] |  | ||||||
|       --   manuals rendered to nroff, ready for man (hledger/doc/hledger.1) |       --   manuals rendered to nroff, ready for man (hledger/doc/hledger.1) | ||||||
|       nroffmanpages = [manpageDir m </> m | m <- manpageNames] |       nroffmanpages = [manpageDir m </> m | m <- manpageNames] | ||||||
|       --    manuals rendered to text, ready for embedding (hledger/doc/hledger.1.txt) |       --    manuals rendered to text, ready for embedding (hledger/doc/hledger.1.txt) | ||||||
| @ -135,26 +133,21 @@ main = do | |||||||
| 
 | 
 | ||||||
|     -- man pages |     -- man pages | ||||||
| 
 | 
 | ||||||
|     -- process m4 includes and macros to get markdown, ready for further processing by pandoc |     -- use m4 and pandoc to process macros, filter content, and convert to nroff suitable for man output | ||||||
|     mdmanpages |%> \out -> do -- hledger/doc/hledger.1.md |  | ||||||
|       let dir = takeDirectory out |  | ||||||
|           src = out -<.> "m4.md" |  | ||||||
|           lib = "doc/lib.m4" |  | ||||||
|       -- assume all other m4 files in dir are included by this one XXX not true in hledger-lib |  | ||||||
|       deps <- liftIO $ filter (/= src) . filter (".m4.md" `isSuffixOf`) . map (dir </>) |  | ||||||
|               <$> S.getDirectoryContents dir |  | ||||||
|       need $ src : lib : deps |  | ||||||
|       cmd Shell "m4 -P -DWEB -DMAN -I" dir lib src ">" out |  | ||||||
| 
 |  | ||||||
|     -- adjust man page mds for man output and convert to nroff, with pandoc |  | ||||||
|     phony "manpages" $ need nroffmanpages |     phony "manpages" $ need nroffmanpages | ||||||
| 
 | 
 | ||||||
|     nroffmanpages |%> \out -> do -- hledger/doc/hledger.1 |     nroffmanpages |%> \out -> do -- hledger/doc/hledger.1 | ||||||
|       let src  = out <.> "md" |       let src = out <.> "m4.md" | ||||||
|  |           lib = "doc/lib.m4" | ||||||
|  |           dir = takeDirectory out | ||||||
|           tmpl = "doc/manpage.nroff" |           tmpl = "doc/manpage.nroff" | ||||||
|       need $ src : tmpl : pandocFilters |       -- assume all other m4 files in dir are included by this one XXX not true in hledger-lib | ||||||
|       cmd pandoc src "-s --template" tmpl |       deps <- liftIO $ filter (/= src) . filter (".m4.md" `isSuffixOf`) . map (dir </>) <$> S.getDirectoryContents dir | ||||||
|         "--filter doc/pandoc-drop-web-blocks" |       need $ src : lib : tmpl : deps ++ pandocFilters | ||||||
|  |       cmd Shell | ||||||
|  |         "m4 -P -DMAN -I" dir lib src "|" | ||||||
|  |         pandoc "-f markdown -s --template" tmpl | ||||||
|  |         -- "--filter doc/pandoc-drop-web-blocks" | ||||||
|         "--filter doc/pandoc-drop-html-blocks" |         "--filter doc/pandoc-drop-html-blocks" | ||||||
|         "--filter doc/pandoc-drop-html-inlines" |         "--filter doc/pandoc-drop-html-inlines" | ||||||
|         "--filter doc/pandoc-drop-links" |         "--filter doc/pandoc-drop-links" | ||||||
| @ -180,19 +173,25 @@ main = do | |||||||
|         ] |         ] | ||||||
|       cmd Shell (Cwd "site") "hakyll-std/hakyll-std" "build" |       cmd Shell (Cwd "site") "hakyll-std/hakyll-std" "build" | ||||||
| 
 | 
 | ||||||
|     -- adjust man page mds for web output, with pandoc |     -- use m4 and pandoc to process macros and filter content, leaving markdown suitable for web output | ||||||
|     phony "webmanpages" $ need webmanpages |     phony "webmanpages" $ need webmanpages | ||||||
| 
 | 
 | ||||||
|     webmanpages |%> \out -> do -- site/hledger.md |     webmanpages |%> \out -> do -- site/hledger.md | ||||||
|       let m       = manpageUriToName $ dropExtension $ takeFileName out -- hledger.1 |       let m       = manpageUriToName $ dropExtension $ takeFileName out -- hledger.1 | ||||||
|           src     = manpageDir m </> m <.> "md" -- hledger/doc/hledger.1.md |           dir     = manpageDir m | ||||||
|  |           src     = dir </> m <.> "m4.md" | ||||||
|  |           lib     = "doc/lib.m4" | ||||||
|           heading = let h = dropExtension m |           heading = let h = dropExtension m | ||||||
|                     in if "hledger_" `isPrefixOf` h |                     in if "hledger_" `isPrefixOf` h | ||||||
|                        then drop 8 h ++ " format" |                        then drop 8 h ++ " format" | ||||||
|                        else h |                        else h | ||||||
|       need $ src : pandocFilters |       -- assume all other m4 files in dir are included by this one XXX not true in hledger-lib | ||||||
|  |       deps <- liftIO $ filter (/= src) . filter (".m4.md" `isSuffixOf`) . map (dir </>) <$> S.getDirectoryContents dir | ||||||
|  |       need $ src : lib : deps ++ pandocFilters | ||||||
|       liftIO $ writeFile out $ "# " ++ heading ++ "\n\n" |       liftIO $ writeFile out $ "# " ++ heading ++ "\n\n" | ||||||
|       cmd Shell pandoc src "-t markdown --atx-headers" |       cmd Shell | ||||||
|  |         "m4 -P -DMAN -DWEB -I" dir lib src "|" | ||||||
|  |         pandoc "-f markdown -t markdown --atx-headers" | ||||||
|         "--filter doc/pandoc-demote-headers" |         "--filter doc/pandoc-demote-headers" | ||||||
|         -- "--filter doc/pandoc-add-toc" |         -- "--filter doc/pandoc-add-toc" | ||||||
|         -- "--filter doc/pandoc-drop-man-blocks" |         -- "--filter doc/pandoc-drop-man-blocks" | ||||||
| @ -231,7 +230,6 @@ main = do | |||||||
| 
 | 
 | ||||||
|     phony "clean" $ do |     phony "clean" $ do | ||||||
|       putNormal "Cleaning generated files" |       putNormal "Cleaning generated files" | ||||||
|       removeFilesAfter "." mdmanpages |  | ||||||
|       removeFilesAfter "." webmanpages |       removeFilesAfter "." webmanpages | ||||||
|       removeFilesAfter "." [webmanual] |       removeFilesAfter "." [webmanual] | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2,12 +2,12 @@ | |||||||
| % | % | ||||||
| % January 2016 | % January 2016 | ||||||
| 
 | 
 | ||||||
| <div class="web"> | _web_({{ | ||||||
| _versions_({{hledger-api}}) | _versions_({{hledger-api}}) | ||||||
| 
 | 
 | ||||||
| * toc | * toc | ||||||
| </div> | }}) | ||||||
| <div class="man"> | _man_({{ | ||||||
| 
 | 
 | ||||||
| # NAME | # NAME | ||||||
| 
 | 
 | ||||||
| @ -24,7 +24,7 @@ hledger is a cross-platform program for tracking money, time, or any other commo | |||||||
| using double-entry accounting and a simple, editable file format. | using double-entry accounting and a simple, editable file format. | ||||||
| hledger is inspired by and largely compatible with ledger(1). | hledger is inspired by and largely compatible with ledger(1). | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
| 
 | 
 | ||||||
| hledger-api is a simple web API server, intended to support | hledger-api is a simple web API server, intended to support | ||||||
| client-side web apps operating on hledger data. It comes with a series | client-side web apps operating on hledger data. It comes with a series | ||||||
| @ -110,7 +110,7 @@ access. | |||||||
| <!-- `-B --cost` --> | <!-- `-B --cost` --> | ||||||
| <!-- : show amounts in their cost price's commodity --> | <!-- : show amounts in their cost price's commodity --> | ||||||
| 
 | 
 | ||||||
| <div class="man"> | _man_({{ | ||||||
| 
 | 
 | ||||||
| # ENVIRONMENT | # ENVIRONMENT | ||||||
| 
 | 
 | ||||||
| @ -142,4 +142,4 @@ The need to precede options with `--` when invoked from hledger is awkward. | |||||||
| <!-- appear to run normally, but you will be seeing pages served from the --> | <!-- appear to run normally, but you will be seeing pages served from the --> | ||||||
| <!-- first one. --> | <!-- first one. --> | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
|  | |||||||
| @ -2,12 +2,12 @@ | |||||||
| % | % | ||||||
| % April 2016 | % April 2016 | ||||||
| 
 | 
 | ||||||
| <div class="web"> | _web_({{ | ||||||
| _versions_({{csv}}) | _versions_({{csv}}) | ||||||
| 
 | 
 | ||||||
| * toc | * toc | ||||||
| </div> | }}) | ||||||
| <div class="man"> | _man_({{ | ||||||
| 
 | 
 | ||||||
| # NAME | # NAME | ||||||
| 
 | 
 | ||||||
| @ -15,7 +15,7 @@ CSV - how hledger reads CSV data, and the CSV rules file format | |||||||
| 
 | 
 | ||||||
| # DESCRIPTION | # DESCRIPTION | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
| 
 | 
 | ||||||
| hledger can read | hledger can read | ||||||
| [CSV](http://en.wikipedia.org/wiki/Comma-separated_values) files, | [CSV](http://en.wikipedia.org/wiki/Comma-separated_values) files, | ||||||
|  | |||||||
| @ -2,12 +2,12 @@ | |||||||
| % | % | ||||||
| % April 2016 | % April 2016 | ||||||
| 
 | 
 | ||||||
| <div class="web"> | _web_({{ | ||||||
| _versions_({{journal}}) | _versions_({{journal}}) | ||||||
| 
 | 
 | ||||||
| * toc | * toc | ||||||
| </div> | }}) | ||||||
| <div class="man"> | _man_({{ | ||||||
| 
 | 
 | ||||||
| # NAME | # NAME | ||||||
| 
 | 
 | ||||||
| @ -15,7 +15,7 @@ Journal - hledger's default file format, representing a General Journal | |||||||
| 
 | 
 | ||||||
| # DESCRIPTION | # DESCRIPTION | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
| 
 | 
 | ||||||
| hledger's usual data source is a plain text file containing journal entries in hledger journal format. | hledger's usual data source is a plain text file containing journal entries in hledger journal format. | ||||||
| This file represents a standard accounting [general journal](http://en.wikipedia.org/wiki/General_journal). | This file represents a standard accounting [general journal](http://en.wikipedia.org/wiki/General_journal). | ||||||
|  | |||||||
| @ -2,12 +2,12 @@ | |||||||
| %  | %  | ||||||
| % April 2016 | % April 2016 | ||||||
| 
 | 
 | ||||||
| <div class="web"> | _web_({{ | ||||||
| _versions_({{timeclock}}) | _versions_({{timeclock}}) | ||||||
| 
 | 
 | ||||||
| * toc | * toc | ||||||
| </div> | }}) | ||||||
| <div class="man"> | _man_({{ | ||||||
| 
 | 
 | ||||||
| # NAME | # NAME | ||||||
| 
 | 
 | ||||||
| @ -15,7 +15,7 @@ Timeclock - the time logging format of timeclock.el, as read by hledger | |||||||
| 
 | 
 | ||||||
| # DESCRIPTION | # DESCRIPTION | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
| 
 | 
 | ||||||
| hledger can read timeclock files. | hledger can read timeclock files. | ||||||
| [As with Ledger](http://ledger-cli.org/3.0/doc/ledger3.html#Time-Keeping), | [As with Ledger](http://ledger-cli.org/3.0/doc/ledger3.html#Time-Keeping), | ||||||
|  | |||||||
| @ -2,12 +2,12 @@ | |||||||
| % | % | ||||||
| % April 2016 | % April 2016 | ||||||
| 
 | 
 | ||||||
| <div class="web"> | _web_({{ | ||||||
| _versions_({{timedot}}) | _versions_({{timedot}}) | ||||||
| 
 | 
 | ||||||
| * toc | * toc | ||||||
| </div> | }}) | ||||||
| <div class="man"> | _man_({{ | ||||||
| 
 | 
 | ||||||
| # NAME | # NAME | ||||||
| 
 | 
 | ||||||
| @ -15,7 +15,7 @@ Timedot - hledger's human-friendly time logging format | |||||||
| 
 | 
 | ||||||
| # DESCRIPTION | # DESCRIPTION | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
| 
 | 
 | ||||||
| Timedot is a plain text format for logging dated, categorised quantities (eg time), supported by hledger. | Timedot is a plain text format for logging dated, categorised quantities (eg time), supported by hledger. | ||||||
| It is convenient for approximate and retroactive time logging, | It is convenient for approximate and retroactive time logging, | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| % | % | ||||||
| % October 2015 | % October 2015 | ||||||
| 
 | 
 | ||||||
| <div class="web"> | _web_({{ | ||||||
| _versions_({{hledger-ui}}) | _versions_({{hledger-ui}}) | ||||||
| 
 | 
 | ||||||
| * toc | * toc | ||||||
| @ -20,8 +20,8 @@ _versions_({{hledger-ui}}) | |||||||
| <a href="images/hledger-ui/hledger-ui-bcexample-acc.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc.png" title="beancount example accounts" /></a> | <a href="images/hledger-ui/hledger-ui-bcexample-acc.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc.png" title="beancount example accounts" /></a> | ||||||
| <a href="images/hledger-ui/hledger-ui-bcexample-acc-etrade:cash.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc-etrade:cash.png" title="beancount example's etrade cash subaccount" /></a> | <a href="images/hledger-ui/hledger-ui-bcexample-acc-etrade:cash.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc-etrade:cash.png" title="beancount example's etrade cash subaccount" /></a> | ||||||
| <a href="images/hledger-ui/hledger-ui-bcexample-acc-etrade.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc-etrade.png" title="beancount example's etrade investments, all commoditiess" /></a> | <a href="images/hledger-ui/hledger-ui-bcexample-acc-etrade.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc-etrade.png" title="beancount example's etrade investments, all commoditiess" /></a> | ||||||
| </div> | }}) | ||||||
| <div class="man"> | _man_({{ | ||||||
| 
 | 
 | ||||||
| # NAME | # NAME | ||||||
| 
 | 
 | ||||||
| @ -38,13 +38,13 @@ hledger is a cross-platform program for tracking money, time, or any other commo | |||||||
| using double-entry accounting and a simple, editable file format. | using double-entry accounting and a simple, editable file format. | ||||||
| hledger is inspired by and largely compatible with ledger(1). | hledger is inspired by and largely compatible with ledger(1). | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
| 
 | 
 | ||||||
| hledger-ui is hledger's curses-style interface. | hledger-ui is hledger's curses-style interface. | ||||||
| It reads a hledger journal file | It reads a hledger journal file | ||||||
| <div class="man"> | _man_({{ | ||||||
| (~/.hledger.journal, $LEDGER_FILE, or -f FILE; see hledger(1) or hledger_journal(5)) | (~/.hledger.journal, $LEDGER_FILE, or -f FILE; see hledger(1) or hledger_journal(5)) | ||||||
| </div> | }}) | ||||||
| and provides a simple full-screen console interface for viewing account balances and transactions. | and provides a simple full-screen console interface for viewing account balances and transactions. | ||||||
| 
 | 
 | ||||||
| It is simpler and more convenient for | It is simpler and more convenient for | ||||||
| @ -231,7 +231,7 @@ This screen will appear if there is a problem, such as a parse error, | |||||||
| when you press g to reload. Once you have fixed the problem described, | when you press g to reload. Once you have fixed the problem described, | ||||||
| press g again to reload and restore normal operation. | press g again to reload and restore normal operation. | ||||||
| 
 | 
 | ||||||
| <div class="man"> | _man_({{ | ||||||
| 
 | 
 | ||||||
| # ENVIRONMENT | # ENVIRONMENT | ||||||
| 
 | 
 | ||||||
| @ -263,4 +263,4 @@ The register screen's switching between historic balance and running | |||||||
| total based on query arguments may be confusing, and there is no | total based on query arguments may be confusing, and there is no | ||||||
| column heading to indicate which is being displayed. | column heading to indicate which is being displayed. | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
|  | |||||||
| @ -2,12 +2,12 @@ | |||||||
| % | % | ||||||
| % October 2015 | % October 2015 | ||||||
| 
 | 
 | ||||||
| <div class="web"> | _web_({{ | ||||||
| _versions_({{hledger-web}}) | _versions_({{hledger-web}}) | ||||||
| 
 | 
 | ||||||
| * toc | * toc | ||||||
| </div> | }}) | ||||||
| <div class="man"> | _man_({{ | ||||||
| # NAME | # NAME | ||||||
| 
 | 
 | ||||||
| hledger-web - web interface for the hledger accounting tool | hledger-web - web interface for the hledger accounting tool | ||||||
| @ -32,7 +32,7 @@ hledger-web - web interface for the hledger accounting tool | |||||||
| hledger is a cross-platform program for tracking money, time, or any other commodity, | hledger is a cross-platform program for tracking money, time, or any other commodity, | ||||||
| using double-entry accounting and a simple, editable file format. | using double-entry accounting and a simple, editable file format. | ||||||
| hledger is inspired by and largely compatible with ledger(1). | hledger is inspired by and largely compatible with ledger(1). | ||||||
| </div> | }}) | ||||||
| 
 | 
 | ||||||
| hledger-web is hledger's web interface.  It starts a simple web | hledger-web is hledger's web interface.  It starts a simple web | ||||||
| application for browsing and adding transactions, and optionally | application for browsing and adding transactions, and optionally | ||||||
| @ -176,7 +176,7 @@ The following common hledger options should also work: | |||||||
| `-B --cost` | `-B --cost` | ||||||
| : show amounts in their cost price's commodity | : show amounts in their cost price's commodity | ||||||
| 
 | 
 | ||||||
| <div class="man"> | _man_({{ | ||||||
| 
 | 
 | ||||||
| # ENVIRONMENT | # ENVIRONMENT | ||||||
| 
 | 
 | ||||||
| @ -208,4 +208,4 @@ If you start two instances on the same port, the second one will | |||||||
| appear to run normally, but you will be seeing pages served from the | appear to run normally, but you will be seeing pages served from the | ||||||
| first one. | first one. | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
|  | |||||||
| @ -2,12 +2,12 @@ | |||||||
| % | % | ||||||
| % April 2016 | % April 2016 | ||||||
| 
 | 
 | ||||||
| <div class="web"> | _web_({{ | ||||||
| _versions_({{hledger}}) | _versions_({{hledger}}) | ||||||
| 
 | 
 | ||||||
| * toc | * toc | ||||||
| </div> | }}) | ||||||
| <div class="man"> | _man_({{ | ||||||
| 
 | 
 | ||||||
| # NAME | # NAME | ||||||
| 
 | 
 | ||||||
| @ -26,16 +26,14 @@ file format. It is inspired by and largely compatible with ledger(1). | |||||||
| Tested on unix, mac, windows, hledger aims to be a reliable, practical | Tested on unix, mac, windows, hledger aims to be a reliable, practical | ||||||
| tool for daily use. | tool for daily use. | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
| 
 |  | ||||||
| _include_(description.m4.md) | _include_(description.m4.md) | ||||||
| _include_(examples.m4.md) | _include_(examples.m4.md) | ||||||
| _include_(options.m4.md) | _include_(options.m4.md) | ||||||
| _include_(queries.m4.md) | _include_(queries.m4.md) | ||||||
| _include_(commands.m4.md) | _include_(commands.m4.md) | ||||||
| _include_(troubleshooting.m4.md) | _include_(troubleshooting.m4.md) | ||||||
| 
 | _man_({{ | ||||||
| <div class="man"> |  | ||||||
| 
 | 
 | ||||||
| # ENVIRONMENT | # ENVIRONMENT | ||||||
| 
 | 
 | ||||||
| @ -60,4 +58,4 @@ hledger can't render non-ascii characters when run from a Windows command prompt | |||||||
| When input data contains non-ascii characters, a suitable system locale must be configured (or there will be an unhelpful error). | When input data contains non-ascii characters, a suitable system locale must be configured (or there will be an unhelpful error). | ||||||
| Eg on POSIX, set LANG to something other than C. | Eg on POSIX, set LANG to something other than C. | ||||||
| 
 | 
 | ||||||
| </div> | }}) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user