Commit Graph

27 Commits

Author SHA1 Message Date
Nick Groenen d330af3989
Release v0.5.0 2021-01-05 15:47:35 +01:00
Nick Groenen a0cef3d9c8
New: Add --no-recursive-embeds to break infinite recursion cycles
It's possible to end up with "recursive embeds" when two notes embed
each other. This happens for example when a `Note A.md` contains
`![[Note B]]` but `Note B.md` also contains `![[Note A]]`.

By default, this will trigger an error and display the chain of notes
which caused the recursion.

Using the new `--no-recursive-embeds`, if a note is encountered for a
second time while processing the original note, rather than embedding it
again a link to the note is inserted instead to break the cycle.

See also: https://github.com/zoni/obsidian-export/issues/1
2021-01-05 15:45:34 +01:00
Nick Groenen cdb2517365
new: make walk options configurable on CLI
By default hidden files, patterns listed in `.export-ignore` as well as
any files ignored by git are excluded from exports. This behavior has
been made configurable on the CLI using the new flags `--hidden`,
`--ignore-file` and `--no-git`.
2021-01-05 00:05:17 +01:00
Nick Groenen 4401123ea1
chg: print warnings to stderr rather than stdout
Warning messages emitted when encountering broken links/references will
now be printed to stderr as opposed to stdout.
2021-01-04 21:45:00 +01:00
Nick Groenen 6033407266
new: support links referencing headings
Previously, links referencing a heading (`[[note#heading]]`) would just
link to the file name without including an anchor in the link target.
Now, such references will include an appropriate `#anchor` attribute.

Note that neither the original Markdown specification, nor the more
recent CommonMark standard, specify how anchors should be constructed
for a given heading.

There are also some differences between the various Markdown rendering
implementations.

Obsidian-export uses the [slug] crate to generate anchors which should
be compatible with most implementations, however your mileage may vary.

(For example, GitHub may leave a trailing `-` on anchors when headings
end with a smiley. The slug library, and thus obsidian-export, will
avoid such dangling dashes).

[slug]: https://crates.io/crates/slug
2021-01-04 21:45:00 +01:00
Nick Groenen fcb4cd9dec
new: support embeds referencing headings
Previously, partial embeds (`![[note#heading]]`) would always include
the entire file into the source note. Now, such embeds will only include
the contents of the referenced heading (and any subheadings).

Links and embeds of [arbitrary blocks] remains unsupported at this time.

[arbitrary blocks]: https://publish.obsidian.md/help/How+to/Link+to+blocks
2021-01-04 19:12:51 +01:00
Nick Groenen cc58ca01a5
Include filter_fn field in WalkOptions debug display 2020-12-24 00:05:36 +01:00
Nick Groenen e3201e58be
Release v0.4.0 2020-12-23 00:31:07 +01:00
Nick Groenen ac86d62678
Add brief library documentation to all public types and functions 2020-12-23 00:23:43 +01:00
Nick Groenen 310e1cce50
Set git-repository-url for mdBook 2020-12-22 23:16:25 +01:00
Nick Groenen 147c2a4bd5
Add changelog to mdBook 2020-12-22 14:28:38 +01:00
Nick Groenen 6d03d4b2ca
Add release checklist 2020-12-22 12:56:35 +01:00
Nick Groenen 6245c9a31d
Fix: correct relative links within embedded notes
Links within an embedded note would point to other local resources
relative to the filesystem location of the note being embedded.

When a note inside a different directory would embed such a note, these
links would point to invalid locations.

Now these links are calculated relative to the top note, which ensures
these links will point to the right path.
2020-12-22 12:42:07 +01:00
Nick Groenen 207ca1124e
Move vault_contents out of Context and into Exporter
This reduces the need to pass vault_contents around in various places
and restricts Context to dealing with the actual note which is being
processed, instead of also carrying program state information.

This will help with future feature development as note parsing functions
can now access Exporter directly.
2020-12-22 12:01:26 +01:00
Nick Groenen e9d5e69e24
Update Cargo.toml version number 2020-12-21 15:24:47 +01:00
Nick Groenen a1178fa308
Release v0.3.0 2020-12-21 15:13:48 +01:00
Nick Groenen 4d05ac1e4c
Setup gitchangelog
This adds a changelog (CHANGES.md) which is automatically generated with
[gitchangelog].

[gitchangelog]: https://github.com/vaab/gitchangelog
2020-12-21 14:02:49 +01:00
Nick Groenen 749f3e425c
Chg: Add extra whitespace around multi-line warnings
This makes errors a bit easier to distinguish after a number of warnings
has been printed.
2020-12-21 13:55:41 +01:00
Nick Groenen 3b46d6b7d1
New: Report file tree when RecursionLimitExceeded is hit
This refactors the Context to maintain a list of all the files which
have been processed so far in a chain of embeds. This information is
then used to print a more helpful error message to users of the CLI when
RecursionLimitExceeded is returned.
2020-12-21 13:54:30 +01:00
Nick Groenen 7027290697
Allow custom filter function to be passed with WalkOptions 2020-12-13 23:15:13 +01:00
Nick Groenen 8a28d627e4
Re-export vault_contents and WalkOptions as pub from crate root 2020-12-11 14:52:59 +01:00
Nick Groenen 466bc28485
Run mdbook hook against README.md too 2020-12-08 01:03:24 +01:00
Nick Groenen f1393fca37
Update installation instructions
Installation no longer requires a git repository URL now that a crate is
published.
2020-12-08 01:00:58 +01:00
Nick Groenen 6de76d9480
Add MdBook generation script and precommit hook 2020-12-08 01:00:09 +01:00
Nick Groenen 2edc2e87fb
Add more reliable non-ASCII tetscase 2020-12-07 23:32:25 +01:00
Nick Groenen bbf789d605
Create FUNDING.yml 2020-12-07 22:49:20 +01:00
Nick Groenen c2de776148
Public release 2020-12-07 22:35:57 +01:00