;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