;site: Merge the new sphinx-based website.
See related commit in the site repo. [ci skip]
This commit is contained in:
		
						commit
						f57c6777cd
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -82,3 +82,4 @@ hledger-web/yesod-devel/ | |||||||
| *.spk | *.spk | ||||||
| 
 | 
 | ||||||
| # recent stuff | # recent stuff | ||||||
|  | site | ||||||
|  | |||||||
| @ -1,6 +1,3 @@ | |||||||
| <!-- consolidating dev docs from wiki, https://github.com/simonmichael/hledger/issues/920 WIP --> |  | ||||||
| $TOC$ |  | ||||||
| 
 |  | ||||||
| <style> | <style> | ||||||
| /* table styles */ | /* table styles */ | ||||||
| tr.even { background-color:#eee;} | tr.even { background-color:#eee;} | ||||||
| @ -9,8 +6,6 @@ th, td  {white-space:nowrap;} | |||||||
| 
 | 
 | ||||||
| # Contributor Guide | # Contributor Guide | ||||||
| 
 | 
 | ||||||
| <br clear=all> |  | ||||||
| 
 |  | ||||||
| ## Quick Links | ## Quick Links | ||||||
| 
 | 
 | ||||||
| | | | | | | | | ||||||
| @ -202,7 +197,7 @@ express gratitude, | |||||||
| build prosperity consciousness, | build prosperity consciousness, | ||||||
| and help transform world finance! | and help transform world finance! | ||||||
| 
 | 
 | ||||||
| - Use the donate links on the [home page](/) | - Use the donate links on the [home page](https://hledger.org) | ||||||
| - Configure a recurring donation | - Configure a recurring donation | ||||||
| - Contribute or pledge bounties on issues you care about | - Contribute or pledge bounties on issues you care about | ||||||
| - Ask your organization to contribute | - Ask your organization to contribute | ||||||
| @ -699,7 +694,7 @@ About testing in the hledger project, as of 201809. | |||||||
| 
 | 
 | ||||||
|     Here\'s the pattern (let us know if you see a better way): |     Here\'s the pattern (let us know if you see a better way): | ||||||
| 
 | 
 | ||||||
|     ``` {.haskell} |     ``` haskell | ||||||
|     module Foo ( |     module Foo ( | ||||||
|       ... |       ... | ||||||
|       tests_Foo -- export this module's and submodules' tests |       tests_Foo -- export this module's and submodules' tests | ||||||
| @ -841,19 +836,19 @@ tests, at least. It would be useful to set this up for hledger. | |||||||
| 
 | 
 | ||||||
| Run unit tests: | Run unit tests: | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ make unittest | $ make unittest | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Run doctests: | Run doctests: | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ make doctest | $ make doctest | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Run functional tests (and unit tests, now): | Run functional tests (and unit tests, now): | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ stack install shelltestrunner | $ stack install shelltestrunner | ||||||
| $ make functest | $ make functest | ||||||
| ``` | ``` | ||||||
| @ -861,37 +856,37 @@ $ make functest | |||||||
| Run the package tests (unit tests, maybe doctests, but not functional | Run the package tests (unit tests, maybe doctests, but not functional | ||||||
| tests) of all or selected packages. | tests) of all or selected packages. | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ stack test [PKG] | $ stack test [PKG] | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Run \"default tests: package plus functional tests\": | Run \"default tests: package plus functional tests\": | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ make test | $ make test | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Test generation of haddock docs: | Test generation of haddock docs: | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ make haddocktest | $ make haddocktest | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Thorough test for build issues with current GHC: | Thorough test for build issues with current GHC: | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ make buildtest | $ make buildtest | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Thorough test for build issues with all supported GHC versions: | Thorough test for build issues with all supported GHC versions: | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ make buildtestall | $ make buildtestall | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Run built-in hledger/hledger-lib unit tests via hledger command: | Run built-in hledger/hledger-lib unit tests via hledger command: | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ hledger test  # test installed hledger | $ hledger test  # test installed hledger | ||||||
| $ stack build hledger && stack exec -- hledger test  # test just-built hledger | $ stack build hledger && stack exec -- hledger test  # test just-built hledger | ||||||
| $ hledger test --help | $ hledger test --help | ||||||
| @ -908,19 +903,19 @@ test [TESTPATTERN] [SEED] | |||||||
| 
 | 
 | ||||||
| Rebuild and rerun hledger/hledger-lib unit tests via ghcid: | Rebuild and rerun hledger/hledger-lib unit tests via ghcid: | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ make ghcid-test | $ make ghcid-test | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Rebuild and rerun only some tests via ghcid (see hledger test --help): | Rebuild and rerun only some tests via ghcid (see hledger test --help): | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ make ghcid-test-TESTPATTERN | $ make ghcid-test-TESTPATTERN | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| See all test-related make rules: | See all test-related make rules: | ||||||
| 
 | 
 | ||||||
| ``` {.example} | ``` example | ||||||
| $ make help-test | $ make help-test | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| @ -1516,7 +1511,7 @@ If you're new to this process, [help.github.com](http://help.github.com) may be | |||||||
| 
 | 
 | ||||||
| ### Add yourself to the contributor list | ### Add yourself to the contributor list | ||||||
| 
 | 
 | ||||||
| - after getting something into the master branch, read and sign the [contributor list & agreement](contributors.html). Or, [ask](/docs.html#helpfeedback) to be added. | - after getting something into the master branch, read and sign the [contributor list & agreement](https://hledger.org/contributors.html). Or, [ask](/index.html#help-feedback) to be added. | ||||||
| - give yourself a high five! | - give yourself a high five! | ||||||
| 
 | 
 | ||||||
| ### Work on docs | ### Work on docs | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							| @ -776,8 +776,10 @@ site: \ | |||||||
| 		&& echo 'Please run "make Shake" first (manual compilation of Shake.hs is required)' \
 | 		&& echo 'Please run "make Shake" first (manual compilation of Shake.hs is required)' \
 | ||||||
| 		|| ( \
 | 		|| ( \
 | ||||||
| 			echo; \
 | 			echo; \
 | ||||||
| 			./Shake hledgerorg -VV \
 | 			./Shake hledgerorg -VV; \
 | ||||||
|  | 			make -C site html; \
 | ||||||
| 		) 2>&1 | tee -a site.log | 		) 2>&1 | tee -a site.log | ||||||
|  | #     ^ running both shake and sphinx for now
 | ||||||
| 
 | 
 | ||||||
| ###############################################################################
 | ###############################################################################
 | ||||||
| $(call def-help-subheading,RELEASING:) | $(call def-help-subheading,RELEASING:) | ||||||
|  | |||||||
							
								
								
									
										41
									
								
								Shake.hs
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								Shake.hs
									
									
									
									
									
								
							| @ -113,7 +113,11 @@ sed      = "sed -E" | |||||||
| fromsrcmd = "-f markdown-smart-tex_math_dollars" | fromsrcmd = "-f markdown-smart-tex_math_dollars" | ||||||
| 
 | 
 | ||||||
| -- The kind of markdown we like to generate for the website. | -- The kind of markdown we like to generate for the website. | ||||||
| towebmd = "-t markdown-smart-fenced_divs --atx-headers" | -- This will be consumed by sphinx extensions: | ||||||
|  | --  recommonmark (Commonmark syntax, https://spec.commonmark.org) | ||||||
|  | --  sphinx-markdown-tables (PHP Markdown Extra table syntax, https://michelf.ca/projects/php-markdown/extra/#table) | ||||||
|  | -- XXX trying to force the use of pipe_tables here, but sometimes it uses html instead | ||||||
|  | towebmd = "-t markdown-smart-fenced_divs-fenced_code_attributes-simple_tables-multiline_tables-grid_tables --atx-headers" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| main = do | main = do | ||||||
| @ -208,7 +212,7 @@ main = do | |||||||
|       mdmanuals = ["site" </> manpageNameToUri m <.> "md" | m <- manpageNames] |       mdmanuals = ["site" </> manpageNameToUri m <.> "md" | m <- manpageNames] | ||||||
| 
 | 
 | ||||||
|       -- latest version of the manuals rendered to html |       -- latest version of the manuals rendered to html | ||||||
|       htmlmanuals = ["site/_site" </> manpageNameToUri m <.> "html" | m <- manpageNames++["manual"]] |       htmlmanuals = ["site/_site" </> manpageNameToUri m <.> "html" | m <- manpageNames] | ||||||
| 
 | 
 | ||||||
|       -- old versions of the manuals rendered to html |       -- old versions of the manuals rendered to html | ||||||
|       oldhtmlmanuals = map (normalise . ("site/_site/doc" </>) . (<.> "html")) $ |       oldhtmlmanuals = map (normalise . ("site/_site/doc" </>) . (<.> "html")) $ | ||||||
| @ -220,9 +224,6 @@ main = do | |||||||
| 
 | 
 | ||||||
|       -- TODO: make website URIs lower-case ? |       -- TODO: make website URIs lower-case ? | ||||||
| 
 | 
 | ||||||
|       -- manuals rendered to markdown and combined, ready for web rendering |  | ||||||
|       mdcombinedmanual = "site/manual.md" |  | ||||||
| 
 |  | ||||||
|       -- extensions of static web asset files, to be copied to the website |       -- extensions of static web asset files, to be copied to the website | ||||||
|       webassetexts = ["png", "gif", "cur", "js", "css", "eot", "ttf", "woff", "svg"] |       webassetexts = ["png", "gif", "cur", "js", "css", "eot", "ttf", "woff", "svg"] | ||||||
| 
 | 
 | ||||||
| @ -334,19 +335,6 @@ main = do | |||||||
|         "--lua-filter tools/pandoc-demote-headers.lua" |         "--lua-filter tools/pandoc-demote-headers.lua" | ||||||
|         ">>" out |         ">>" out | ||||||
| 
 | 
 | ||||||
|     -- Generate the combined web manual's markdown source, by |  | ||||||
|     -- concatenating tweaked versions of the individual manuals. |  | ||||||
|     phony "mdcombinedmanual" $ need [ mdcombinedmanual ] |  | ||||||
|     mdcombinedmanual %> \out -> do |  | ||||||
|       need mdmanuals |  | ||||||
|       liftIO $ writeFile mdcombinedmanual $ addToc "" |  | ||||||
|       forM_ mdmanuals $ \f -> do -- site/hledger.md, site/journal.md |  | ||||||
|         cmd_ Shell ("printf '\\n\\n' >>") mdcombinedmanual |  | ||||||
|         cmd_ Shell pandoc f towebmd |  | ||||||
|           "--lua-filter tools/pandoc-drop-toc.lua" |  | ||||||
|           "--lua-filter tools/pandoc-demote-headers.lua" |  | ||||||
|           ">>" mdcombinedmanual |  | ||||||
| 
 |  | ||||||
|     -- Copy some extra markdown files from the main repo into the site |     -- Copy some extra markdown files from the main repo into the site | ||||||
|     -- TODO adding table of contents placeholders |     -- TODO adding table of contents placeholders | ||||||
|     [ |     [ | ||||||
| @ -392,7 +380,6 @@ main = do | |||||||
| 
 | 
 | ||||||
|     -- Render one website page as html, saved in sites/_site/. |     -- Render one website page as html, saved in sites/_site/. | ||||||
|     -- Github-style wiki links will be hyperlinked. |     -- Github-style wiki links will be hyperlinked. | ||||||
|     -- The download page will have a TOC placeholder prepended. |  | ||||||
|     "site/_site//*.html" %> \out -> do |     "site/_site//*.html" %> \out -> do | ||||||
|         let filename = takeBaseName out |         let filename = takeBaseName out | ||||||
|             pagename = fileNameToPageName filename |             pagename = fileNameToPageName filename | ||||||
| @ -403,16 +390,13 @@ main = do | |||||||
|               | otherwise   = "site" </> filename <.> "md" |               | otherwise   = "site" </> filename <.> "md" | ||||||
|             template = "site/site.tmpl" |             template = "site/site.tmpl" | ||||||
|             siteRoot = if "site/_site/doc//*" ?== out then "../.." else "." |             siteRoot = if "site/_site/doc//*" ?== out then "../.." else "." | ||||||
|             maybeAddToc | isdownloadpage = addToc |  | ||||||
|                         | otherwise      = id |  | ||||||
|         need [source, template] |         need [source, template] | ||||||
|         -- read markdown source, link any wikilinks, maybe add a heading and TOC, pipe it to pandoc, write html out |         -- read markdown source, link any wikilinks, pipe it to pandoc, write html out | ||||||
|         Stdin . wikiLink . maybeAddToc <$> (readFile' source) >>= |         Stdin . wikiLink <$> (readFile' source) >>= | ||||||
|           (cmd Shell pandoc "-" fromsrcmd "-t html" |           (cmd Shell pandoc "-" fromsrcmd "-t html" | ||||||
|                            "--template" template |                            "--template" template | ||||||
|                            ("--metadata=siteRoot:" ++ siteRoot) |                            ("--metadata=siteRoot:" ++ siteRoot) | ||||||
|                            ("--metadata=\"title:" ++ pagename ++ "\"") |                            ("--metadata=\"title:" ++ pagename ++ "\"") | ||||||
|                            "--lua-filter=tools/pandoc-toc.lua" |  | ||||||
|                            "-o" out ) |                            "-o" out ) | ||||||
| 
 | 
 | ||||||
|     -- This rule, for updating the live hledger.org site, gets called by: |     -- This rule, for updating the live hledger.org site, gets called by: | ||||||
| @ -662,12 +646,11 @@ main = do | |||||||
|     -- them as the specified versioned snapshot in site/doc/VER/ . |     -- them as the specified versioned snapshot in site/doc/VER/ . | ||||||
|     -- .snapshot is a dummy file. |     -- .snapshot is a dummy file. | ||||||
|     "site/doc/*/.snapshot" %> \out -> do |     "site/doc/*/.snapshot" %> \out -> do | ||||||
|       need $ mdcombinedmanual : mdmanuals |       need mdmanuals | ||||||
|       let snapshot = takeDirectory out |       let snapshot = takeDirectory out | ||||||
|       cmd_ Shell "mkdir -p" snapshot |       cmd_ Shell "mkdir -p" snapshot | ||||||
|       forM_ mdmanuals $ \f -> -- site/hledger.md, site/journal.md |       forM_ mdmanuals $ \f -> -- site/hledger.md, site/journal.md | ||||||
|         cmd_ Shell "cp" f (snapshot </> takeFileName f) |         cmd_ Shell "cp" f (snapshot </> takeFileName f) | ||||||
|       cmd_ Shell "cp" "site/manual.md" snapshot |  | ||||||
|       cmd_ Shell "cp -r site/images" snapshot |       cmd_ Shell "cp -r site/images" snapshot | ||||||
|       cmd_ Shell "touch" out |       cmd_ Shell "touch" out | ||||||
| 
 | 
 | ||||||
| @ -678,7 +661,6 @@ main = do | |||||||
|       -- removeFilesAfter "." commandtxts |       -- removeFilesAfter "." commandtxts | ||||||
|       putNormal "Cleaning generated manuals, staged site content" |       putNormal "Cleaning generated manuals, staged site content" | ||||||
|       removeFilesAfter "." mdmanuals |       removeFilesAfter "." mdmanuals | ||||||
|       removeFilesAfter "." [mdcombinedmanual] |  | ||||||
|       removeFilesAfter "." [ |       removeFilesAfter "." [ | ||||||
|         -- "site/README.md", |         -- "site/README.md", | ||||||
|         -- "site/CONTRIBUTING.md" |         -- "site/CONTRIBUTING.md" | ||||||
| @ -727,11 +709,6 @@ type Markdown = String | |||||||
| addHeading :: String -> Markdown -> Markdown | addHeading :: String -> Markdown -> Markdown | ||||||
| addHeading h = (("# "++h++"\n\n")++) | addHeading h = (("# "++h++"\n\n")++) | ||||||
| 
 | 
 | ||||||
| -- | Prepend a table of contents placeholder. |  | ||||||
| addToc :: Markdown -> Markdown |  | ||||||
| addToc = ((tocMarker++"\n\n")++) |  | ||||||
|   where tocMarker = "$TOC$" |  | ||||||
| 
 |  | ||||||
| -- | Convert Github-style wikilinks to hledger website links. | -- | Convert Github-style wikilinks to hledger website links. | ||||||
| wikiLink :: Markdown -> Markdown | wikiLink :: Markdown -> Markdown | ||||||
| wikiLink = | wikiLink = | ||||||
|  | |||||||
| @ -28,13 +28,9 @@ This doc is for version **_version_** | |||||||
| m4_dnl comment (dev) for releases, uncomment between releases: | m4_dnl comment (dev) for releases, uncomment between releases: | ||||||
| m4_dnl (dev) | m4_dnl (dev) | ||||||
| . | . | ||||||
| <span class="docversions">m4_dnl | m4_dnl <span class="docversions">m4_dnl | ||||||
| </span>)m4_dnl | m4_dnl </span> | ||||||
| m4_dnl | )m4_dnl | ||||||
| m4_dnl Insert a table of contents marker, which doc build scripts will populate. |  | ||||||
| m4_define({{_toc_}},{{ |  | ||||||
| \$TOC\$ |  | ||||||
| }})m4_dnl |  | ||||||
| m4_dnl | m4_dnl | ||||||
| m4_dnl Helpers for generating table markup. | m4_dnl Helpers for generating table markup. | ||||||
| m4_dnl _table_({{ | m4_dnl _table_({{ | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ | |||||||
| 
 | 
 | ||||||
| _web_({{ | _web_({{ | ||||||
| _docversionlinks_({{hledger-api}}) | _docversionlinks_({{hledger-api}}) | ||||||
| _toc_ |  | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ | |||||||
| 
 | 
 | ||||||
| _web_({{ | _web_({{ | ||||||
| _docversionlinks_({{csv}}) | _docversionlinks_({{csv}}) | ||||||
| _toc_ |  | ||||||
| }}) | }}) | ||||||
| _man_({{ | _man_({{ | ||||||
| 
 | 
 | ||||||
| @ -107,22 +106,22 @@ you'll need to specify the format. | |||||||
| DATEFMT is a [strptime-like date parsing pattern](http://hackage.haskell.org/packages/archive/time/latest/doc/html/Data-Time-Format.html#v:formatTime), | DATEFMT is a [strptime-like date parsing pattern](http://hackage.haskell.org/packages/archive/time/latest/doc/html/Data-Time-Format.html#v:formatTime), | ||||||
| which must parse the date field values completely. Examples: | which must parse the date field values completely. Examples: | ||||||
| 
 | 
 | ||||||
| ``` {.rules .display-table} | ``` rules | ||||||
| # for dates like "11/06/2013": | # for dates like "11/06/2013": | ||||||
| date-format %m/%d/%Y | date-format %m/%d/%Y | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ``` {.rules .display-table} | ``` rules | ||||||
| # for dates like "6/11/2013" (note the - to make leading zeros optional): | # for dates like "6/11/2013" (note the - to make leading zeros optional): | ||||||
| date-format %-d/%-m/%Y | date-format %-d/%-m/%Y | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ``` {.rules .display-table} | ``` rules | ||||||
| # for dates like "2013-Nov-06": | # for dates like "2013-Nov-06": | ||||||
| date-format %Y-%h-%d | date-format %Y-%h-%d | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ``` {.rules .display-table} | ``` rules | ||||||
| # for dates like "11/6/2013 11:32 PM": | # for dates like "11/6/2013 11:32 PM": | ||||||
| date-format %-m/%-d/%Y %l:%M %p | date-format %-m/%-d/%Y %l:%M %p | ||||||
| ``` | ``` | ||||||
| @ -153,11 +152,11 @@ This sets a journal entry field (one of the standard names above) to the given t | |||||||
| which can include CSV field values interpolated by name (`%CSVFIELDNAME`) or 1-based position (`%N`). | which can include CSV field values interpolated by name (`%CSVFIELDNAME`) or 1-based position (`%N`). | ||||||
| <!-- Whitespace before or after the value is ignored. --> | <!-- Whitespace before or after the value is ignored. --> | ||||||
| Eg: | Eg: | ||||||
| ```{.rules .display-table} | ```rules | ||||||
| # set the amount to the 4th CSV field with "USD " prepended | # set the amount to the 4th CSV field with "USD " prepended | ||||||
| amount USD %4 | amount USD %4 | ||||||
| ``` | ``` | ||||||
| ```{.rules .display-table} | ```rules | ||||||
| # combine three fields to make a comment (containing two tags) | # combine three fields to make a comment (containing two tags) | ||||||
| comment note: %somefield - %anotherfield, date: %1 | comment note: %somefield - %anotherfield, date: %1 | ||||||
| ``` | ``` | ||||||
| @ -184,12 +183,12 @@ specific field).  When there are multiple patterns they can be written | |||||||
| on separate lines, unindented. | on separate lines, unindented. | ||||||
| The field assignments are on separate lines indented by at least one space. | The field assignments are on separate lines indented by at least one space. | ||||||
| Examples: | Examples: | ||||||
| ```{.rules .display-table} | ```rules | ||||||
| # if the CSV record contains "groceries", set account2 to "expenses:groceries" | # if the CSV record contains "groceries", set account2 to "expenses:groceries" | ||||||
| if groceries | if groceries | ||||||
|  account2 expenses:groceries |  account2 expenses:groceries | ||||||
| ``` | ``` | ||||||
| ```{.rules .display-table} | ```rules | ||||||
| # if the CSV record contains any of these patterns, set account2 and comment as shown | # if the CSV record contains any of these patterns, set account2 and comment as shown | ||||||
| if | if | ||||||
| monthly service fee | monthly service fee | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ | |||||||
| 
 | 
 | ||||||
| _web_({{ | _web_({{ | ||||||
| _docversionlinks_({{journal}}) | _docversionlinks_({{journal}}) | ||||||
| _toc_ |  | ||||||
| }}) | }}) | ||||||
| _man_({{ | _man_({{ | ||||||
| 
 | 
 | ||||||
| @ -404,7 +403,7 @@ double equals sign (`== EXPECTEDBALANCE`). | |||||||
| This asserts that there are no other unasserted commodities in the account  | This asserts that there are no other unasserted commodities in the account  | ||||||
| (or, that their balance is 0).  | (or, that their balance is 0).  | ||||||
| 
 | 
 | ||||||
| ``` {.journal} | ``` journal | ||||||
| 2013/1/1 | 2013/1/1 | ||||||
|   a   $1 |   a   $1 | ||||||
|   a    1€ |   a    1€ | ||||||
| @ -424,7 +423,7 @@ This asserts that there are no other unasserted commodities in the account | |||||||
| It's not yet possible to make a complete assertion about a balance that has multiple commodities. | It's not yet possible to make a complete assertion about a balance that has multiple commodities. | ||||||
| One workaround is to isolate each commodity into its own subaccount: | One workaround is to isolate each commodity into its own subaccount: | ||||||
| 
 | 
 | ||||||
| ``` {.journal} | ``` journal | ||||||
| 2013/1/1 | 2013/1/1 | ||||||
|   a:usd   $1 |   a:usd   $1 | ||||||
|   a:euro   1€ |   a:euro   1€ | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ | |||||||
| 
 | 
 | ||||||
| _web_({{ | _web_({{ | ||||||
| _docversionlinks_({{timeclock}}) | _docversionlinks_({{timeclock}}) | ||||||
| _toc_ |  | ||||||
| }}) | }}) | ||||||
| _man_({{ | _man_({{ | ||||||
| 
 | 
 | ||||||
| @ -38,7 +37,7 @@ some number of hours to an account. Or if the session spans more than | |||||||
| one day, it is split into several transactions, one for each day. For | one day, it is split into several transactions, one for each day. For | ||||||
| the above time log, `hledger print` generates these journal entries: | the above time log, `hledger print` generates these journal entries: | ||||||
| 
 | 
 | ||||||
| ``` {.shell} | ``` shell | ||||||
| $ hledger -f t.timeclock print | $ hledger -f t.timeclock print | ||||||
| 2015/03/30 * optional description after two spaces | 2015/03/30 * optional description after two spaces | ||||||
|     (some:account name)         0.33h |     (some:account name)         0.33h | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ | |||||||
| 
 | 
 | ||||||
| _web_({{ | _web_({{ | ||||||
| _docversionlinks_({{timedot}}) | _docversionlinks_({{timedot}}) | ||||||
| _toc_ |  | ||||||
| }}) | }}) | ||||||
| _man_({{ | _man_({{ | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ | |||||||
| 
 | 
 | ||||||
| _web_({{ | _web_({{ | ||||||
| _docversionlinks_({{hledger-ui}}) | _docversionlinks_({{hledger-ui}}) | ||||||
| _toc_ |  | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
| @ -28,15 +27,15 @@ _web_({{ | |||||||
| .highslide-caption {color:white; background-color:black;} | .highslide-caption {color:white; background-color:black;} | ||||||
| </style> | </style> | ||||||
| <div style="float:right; max-width:200px; text-align:right;"> | <div style="float:right; max-width:200px; text-align:right;"> | ||||||
| <a href="images/hledger-ui/hledger-ui-sample-acc2.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-acc2.png" title="Accounts screen with query and depth limit" /></a> | <a href="_static/images/hledger-ui/hledger-ui-sample-acc2.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/images/hledger-ui/hledger-ui-sample-acc2.png" title="Accounts screen with query and depth limit" /></a> | ||||||
| <a href="images/hledger-ui/hledger-ui-sample-acc.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-acc.png" title="Accounts screen" /></a> | <a href="_static/images/hledger-ui/hledger-ui-sample-acc.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/images/hledger-ui/hledger-ui-sample-acc.png" title="Accounts screen" /></a> | ||||||
| <a href="images/hledger-ui/hledger-ui-sample-acc-greenterm.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-acc-greenterm.png" title="Accounts screen with greenterm theme" /></a> | <a href="_static/images/hledger-ui/hledger-ui-sample-acc-greenterm.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/images/hledger-ui/hledger-ui-sample-acc-greenterm.png" title="Accounts screen with greenterm theme" /></a> | ||||||
| <a href="images/hledger-ui/hledger-ui-sample-txn.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-txn.png" title="Transaction screen" /></a> | <a href="_static/images/hledger-ui/hledger-ui-sample-txn.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/images/hledger-ui/hledger-ui-sample-txn.png" title="Transaction screen" /></a> | ||||||
| <a href="images/hledger-ui/hledger-ui-sample-reg.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-reg.png" title="Register screen" /></a> | <a href="_static/images/hledger-ui/hledger-ui-sample-reg.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/images/hledger-ui/hledger-ui-sample-reg.png" title="Register screen" /></a> | ||||||
| <!-- <br clear=all> --> | <!-- <br clear=all> --> | ||||||
| <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="_static/images/hledger-ui/hledger-ui-bcexample-acc.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/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="_static/images/hledger-ui/hledger-ui-bcexample-acc-etrade-cash.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/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="_static/images/hledger-ui/hledger-ui-bcexample-acc-etrade.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/images/hledger-ui/hledger-ui-bcexample-acc-etrade.png" title="beancount example's etrade investments, all commoditiess" /></a> | ||||||
| </div> | </div> | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ | |||||||
| 
 | 
 | ||||||
| _web_({{ | _web_({{ | ||||||
| _docversionlinks_({{hledger-web}}) | _docversionlinks_({{hledger-web}}) | ||||||
| _toc_ |  | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
| @ -28,10 +27,10 @@ _web_({{ | |||||||
| .highslide-caption {color:white; background-color:black;} | .highslide-caption {color:white; background-color:black;} | ||||||
| </style> | </style> | ||||||
| <div style="float:right; max-width:200px; text-align:right;"> | <div style="float:right; max-width:200px; text-align:right;"> | ||||||
| <a href="images/hledger-web/normal/register.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/register.png" title="Account register view with accounts sidebar" /></a> | <a href="_static/images/hledger-web/normal/register.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/images/hledger-web/normal/register.png" title="Account register view with accounts sidebar" /></a> | ||||||
| <a href="images/hledger-web/normal/journal.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/journal.png" title="Journal view" /></a> | <a href="_static/images/hledger-web/normal/journal.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/images/hledger-web/normal/journal.png" title="Journal view" /></a> | ||||||
| <a href="images/hledger-web/normal/help.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/help.png" title="Help dialog" /></a> | <a href="_static/images/hledger-web/normal/help.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/images/hledger-web/normal/help.png" title="Help dialog" /></a> | ||||||
| <a href="images/hledger-web/normal/add.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/add.png" title="Add form" /></a> | <a href="_static/images/hledger-web/normal/add.png" class="highslide" onclick="return hs.expand(this)"><img src="_static/images/hledger-web/normal/add.png" title="Add form" /></a> | ||||||
| </div> | </div> | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -15,7 +15,6 @@ m4_dnl  hledger_troubleshooting.m4.md | |||||||
| 
 | 
 | ||||||
| _web_({{ | _web_({{ | ||||||
| _docversionlinks_({{hledger}}) | _docversionlinks_({{hledger}}) | ||||||
| _toc_ |  | ||||||
| }}) | }}) | ||||||
| 
 | 
 | ||||||
| _man_({{ | _man_({{ | ||||||
|  | |||||||
| @ -37,7 +37,7 @@ which are often a [query](#queries), filtering the data in some way. | |||||||
| You can save a set of command line options/arguments in a file, one per line, | You can save a set of command line options/arguments in a file, one per line, | ||||||
| and then reuse them by writing `@FILENAME` in a command line. | and then reuse them by writing `@FILENAME` in a command line. | ||||||
| To prevent this expansion of `@`-arguments, precede them with a `--` argument. | To prevent this expansion of `@`-arguments, precede them with a `--` argument. | ||||||
| For more, see [Save frequently used options](Save-frequently-used-options.html). | For more, see [Save frequently used options](save-frequently-used-options.html). | ||||||
| 
 | 
 | ||||||
| ## Special characters in arguments and queries | ## Special characters in arguments and queries | ||||||
| 
 | 
 | ||||||
| @ -168,12 +168,12 @@ but it can also be one of several other formats, listed below. | |||||||
| hledger detects the format automatically based on the file extension, | hledger detects the format automatically based on the file extension, | ||||||
| or if that is not recognised, by trying each built-in "reader" in turn: | or if that is not recognised, by trying each built-in "reader" in turn: | ||||||
| 
 | 
 | ||||||
| | Reader:         | Reads:                                                | Used for file extensions:                           | | Reader:     | Reads:                                              | Used for file extensions:                           | | ||||||
| |-----------------|-------------------------------------------------------|------------------------------------------- | |-------------|-----------------------------------------------------|-----------------------------------------------------| | ||||||
| | `journal`       | hledger's journal format, also some Ledger journals   | `.journal` `.j` `.hledger` `.ledger`    | | `journal`   | hledger's journal format, also some Ledger journals | `.journal` `.j` `.hledger` `.ledger`                | | ||||||
| | `timeclock`     | timeclock files (precise time logging)                | `.timeclock`                               | | `timeclock` | timeclock files (precise time logging)              | `.timeclock`                                        | | ||||||
| | `timedot`       | timedot files (approximate time logging)              | `.timedot`                                 | | `timedot`   | timedot files (approximate time logging)            | `.timedot`                                          | | ||||||
| | `csv`           | comma-separated values (data interchange)             | `.csv`                                     | | `csv`       | comma-separated values (data interchange)           | `.csv`                                              | | ||||||
| 
 | 
 | ||||||
| If needed (eg to ensure correct error messages when a file has the "wrong" extension),  | If needed (eg to ensure correct error messages when a file has the "wrong" extension),  | ||||||
| you can force a specific reader/format by prepending it to the file path with a colon.  | you can force a specific reader/format by prepending it to the file path with a colon.  | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
|  | -- Remove a $TOC$ marker (cf pandoc-toc.lua) from the document. | ||||||
| function Para(p) | function Para(p) | ||||||
|     if not  p.content[1]                  then return p end |     if not  p.content[1]                  then return p end | ||||||
|     if not (p.content[1].t    == "Str")   then return p end |     if not (p.content[1].t    == "Str")   then return p end | ||||||
|  | |||||||
| @ -1,3 +1,5 @@ | |||||||
|  | -- Replace a $TOC$ marker with a table of contents generated from the document's headings. | ||||||
|  | 
 | ||||||
| local headers = {} | local headers = {} | ||||||
| 
 | 
 | ||||||
| function Header(h) | function Header(h) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user