Compare commits
19 Commits
v0.1.1
...
v0.1.4-jk2
Author | SHA1 | Date | |
---|---|---|---|
5897a90a99 | |||
77e649f747 | |||
77886cb1c6 | |||
57394668be | |||
3b1f91bcb0 | |||
4075c4fb18 | |||
![]() |
35ca2b896e | ||
![]() |
0705c55e77 | ||
![]() |
f8edb70065 | ||
![]() |
218705bdc9 | ||
![]() |
48a8789c4d | ||
![]() |
48ab7f9514 | ||
![]() |
f2d9a2abe6 | ||
![]() |
cb55a967d0 | ||
![]() |
52c0daedbb | ||
![]() |
09b856488b | ||
![]() |
9218a83d41 | ||
![]() |
a896244367 | ||
![]() |
ec83de9978 |
13
README.md
13
README.md
@@ -19,7 +19,7 @@ Some basic knowledge of [TiddlyWiki](https://tiddlywiki.com)
|
||||
|
||||
|
||||
Documentation / Installation
|
||||
============================
|
||||
----------------------------
|
||||
|
||||
Find a live version of the edition on the web with further instructions
|
||||
at https://sobjornstad.github.io/tzk/.
|
||||
@@ -28,3 +28,14 @@ You can find the documentation for the CLI
|
||||
versioning with Git,
|
||||
and creating public and other derivative versions of the wiki)
|
||||
at https://tzk.readthedocs.io/en/latest/.
|
||||
|
||||
|
||||
Video walkthrough
|
||||
-----------------
|
||||
|
||||
Since tzk is still in an alpha state,
|
||||
general instructions on how to use it are somewhat lacking at the moment.
|
||||
To fill in the gap in the meantime,
|
||||
I recorded an hour-long walkthrough showing how you might take notes using tzk;
|
||||
you can select individual sections to watch if that's longer than you want.
|
||||
[Watch the video on YouTube](https://www.youtube.com/watch?v=9X_T-DVie8o).
|
||||
|
@@ -18,9 +18,9 @@ copyright = '2021 Soren Bjornstad'
|
||||
author = 'Soren Bjornstad'
|
||||
|
||||
# The short X.Y version
|
||||
version = "0.1.1"
|
||||
version = "0.1.4"
|
||||
# The full version, including alpha/beta/rc tags
|
||||
release = "0.1.1"
|
||||
release = "0.1.4"
|
||||
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
19752
docs/index.html
19752
docs/index.html
File diff suppressed because one or more lines are too long
@@ -1,6 +1,8 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
. venv/bin/activate
|
||||
rm -rf build/
|
||||
rm -f dist/*
|
||||
mkdir -p dist
|
||||
python setup.py sdist bdist_wheel
|
||||
|
2
setup.py
2
setup.py
@@ -9,7 +9,7 @@ with open("README.md", "r") as fh:
|
||||
|
||||
setuptools.setup(
|
||||
name="tzk",
|
||||
version="0.1.1",
|
||||
version="0.1.4",
|
||||
author="Soren I. Bjornstad",
|
||||
author_email="zettelkasten@sorenbjornstad.com",
|
||||
description="Build tool for TiddlyWiki Zettelkasten",
|
||||
|
@@ -83,6 +83,12 @@ class ListenCommand(CliCommand):
|
||||
|
||||
@classmethod
|
||||
def setup_arguments(cls, parser: argparse.ArgumentParser) -> None:
|
||||
parser.add_argument(
|
||||
"--host",
|
||||
metavar="HOST",
|
||||
help="Host to listen on.",
|
||||
default=str(cm().listen_host or "127.0.0.1"),
|
||||
)
|
||||
parser.add_argument(
|
||||
"-p", "--port",
|
||||
metavar="PORT",
|
||||
@@ -109,6 +115,7 @@ class ListenCommand(CliCommand):
|
||||
tw.exec(
|
||||
[
|
||||
("listen",
|
||||
f"host={args.host}",
|
||||
f"port={args.port}",
|
||||
f"username={args.username}",
|
||||
f"password={args.password}")
|
||||
|
@@ -278,7 +278,8 @@ def compile_html_file(
|
||||
will be placed, relative to the private wiki's root directory.
|
||||
Default ``output/public_site``.
|
||||
:param overwrite: If the ``output_folder`` already exists,
|
||||
should we overwrite it? Default True.
|
||||
should we overwrite any files in it with the same name?
|
||||
Default True.
|
||||
:param externalize_attachments: If True, update tiddlers that match
|
||||
the ``attachment_filter`` parameter to point to
|
||||
external versions of their content.
|
||||
@@ -311,13 +312,10 @@ def compile_html_file(
|
||||
f"(To overwrite any files existing in the output folder, "
|
||||
f"set overwrite = True for this builder.)")
|
||||
|
||||
try:
|
||||
shutil.rmtree(output_folder)
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
shutil.copytree(
|
||||
Path(build_state['public_wiki_folder']) / "output",
|
||||
Path(output_folder),
|
||||
dirs_exist_ok=True
|
||||
)
|
||||
info(f"Successfully copied built output to {os.path.abspath(output_folder)}.")
|
||||
|
||||
@@ -362,7 +360,7 @@ def _private_people_replacement_table(
|
||||
|
||||
|
||||
@tzk_builder
|
||||
def replace_private_people(initialer: Callable[[str], str] = None) -> None:
|
||||
def replace_private_people(initialer: Callable[[str], str] = None, replace_link_text = False) -> None:
|
||||
"""
|
||||
Replace the names of people who are not marked Public with their initials.
|
||||
|
||||
@@ -386,35 +384,60 @@ def replace_private_people(initialer: Callable[[str], str] = None) -> None:
|
||||
that takes one string argument
|
||||
(a tiddler filename without the full path, e.g., ``MsJaneDoe.tid``)
|
||||
and returns a string to be considered the "initials" of that person.
|
||||
|
||||
:param replace_link_text: If you have links in the form
|
||||
``So then [[John said|MrJohnDoe]] something about this``,
|
||||
then enabling this option ensures that the link is fully
|
||||
replaced with
|
||||
``So then [[J.D.|PrivatePerson]] something about this``.
|
||||
This means that when using this feature, having the
|
||||
link text also be meaningful after redaction is important.
|
||||
|
||||
.. warning ::
|
||||
Using this link replacement feature does not redact everything, just the link
|
||||
(and the link text with `replace_link_text` enabled). So *do not* rely on it
|
||||
for redacting everything. Making a tiddler public still needs consideration and
|
||||
tooling is there to help, not to replace your own judgment.
|
||||
"""
|
||||
assert 'public_wiki_folder' in build_state
|
||||
|
||||
replacement_table = _private_people_replacement_table(initialer)
|
||||
from pprint import pprint; pprint(replacement_table)
|
||||
tid_files = (Path(build_state['public_wiki_folder']) / "tiddlers").glob("**/*.tid")
|
||||
|
||||
for tiddler in tid_files:
|
||||
dirty = False
|
||||
with tiddler.open() as f:
|
||||
lines = f.readlines()
|
||||
for idx, line in enumerate(lines):
|
||||
for i in range(len(lines)):
|
||||
for replace_person, replace_initials in replacement_table.items():
|
||||
if replace_person in line:
|
||||
if '|' + replace_person + ']]' in line:
|
||||
if replace_person in lines[i]:
|
||||
if '|' + replace_person + ']]' in lines[i]:
|
||||
# link with the person as the target only;
|
||||
# beware that you might have put something private in the text
|
||||
lines[idx] = line.replace(replace_person,
|
||||
'PrivatePerson')
|
||||
elif '[[' + replace_person + ']]' in line:
|
||||
if replace_link_text:
|
||||
# with this option, the initials are also
|
||||
# put in the text, solving the warning before
|
||||
end = lines[i].find('|' + replace_person + ']]')
|
||||
start = lines[i].rfind('[[', 0, end) + 2
|
||||
search = f"[[{lines[i][start:end]}|{replace_person}]]"
|
||||
replace = f"[[{replace_initials}|PrivatePerson]]"
|
||||
|
||||
lines[i] = lines[i].replace(search, replace)
|
||||
else:
|
||||
lines[i] = lines[i].replace(replace_person, 'PrivatePerson')
|
||||
elif '[[' + replace_person + ']]' in lines[i]:
|
||||
# link with the person as the target and text
|
||||
lines[idx] = line.replace(replace_person,
|
||||
lines[i] = lines[i].replace(
|
||||
replace_person,
|
||||
replace_initials + '|PrivatePerson')
|
||||
else:
|
||||
# camel-case link or unlinked reference in text;
|
||||
# or spurious substring, so rule that out with the '\b' search
|
||||
lines[idx] = re.sub(
|
||||
lines[i] = re.sub(
|
||||
r"\b" + re.escape(replace_person) + r"\b",
|
||||
f'<<privateperson "{replace_initials}">>',
|
||||
line
|
||||
lines[i]
|
||||
)
|
||||
dirty = True
|
||||
if dirty:
|
||||
|
@@ -0,0 +1,5 @@
|
||||
created: 20210925145600000
|
||||
modified: 20210925145600000
|
||||
tags:
|
||||
title: $:/config/TiddlyRemember/DefaultClasses
|
||||
type: text/vnd.tiddlywiki
|
@@ -0,0 +1,7 @@
|
||||
created: 20210929144900000
|
||||
modified: 20210929144900000
|
||||
tags:
|
||||
title: $:/config/TiddlyRemember/snippets/remembercz
|
||||
|
||||
<<remembercz "%NOTE_ID%"
|
||||
"Cloze">>
|
@@ -0,0 +1,8 @@
|
||||
created: 20210929144900000
|
||||
modified: 20210929144900000
|
||||
tags:
|
||||
title: $:/config/TiddlyRemember/snippets/rememberq
|
||||
|
||||
<<rememberq "%NOTE_ID%"
|
||||
"Q"
|
||||
"A">>
|
@@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2020 Soren Bjornstad.
|
||||
Copyright (c) 2020-2021 Soren Bjornstad and the TiddlyRemember community.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@@ -0,0 +1,20 @@
|
||||
created: 20210929144300000
|
||||
modified: 20210929144300000
|
||||
tags: $:/tags/Macro
|
||||
title: $:/plugins/sobjornstad/TiddlyRemember/macros/insert-snippet
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define tr-insert-note(snippet)
|
||||
<$vars
|
||||
thetime=<<now "[UTC]YYYY0MM0DD0hh0mm0ss0XXX">>
|
||||
theprefix={{$:/config/TiddlyRemember/IdPrefix}}>
|
||||
<$vars
|
||||
noteid={{{ [<theprefix>addsuffix<thetime>] }}}
|
||||
editingtid={{{ [<storyTiddler>get[draft.of]] }}}>
|
||||
<$action-sendmessage
|
||||
$message="tm-edit-text-operation"
|
||||
$param="replace-selection"
|
||||
text={{{ [<__snippet__>search-replace[%NOTE_ID%],<noteid>search-replace[%EDITING_TIDDLER%],<editingtid>] }}}/>
|
||||
</$vars>
|
||||
</$vars>
|
||||
\end
|
@@ -1,10 +1,10 @@
|
||||
created: 20200510004110231
|
||||
modified: 20200730205800000
|
||||
modified: 20200925141800000
|
||||
tags: $:/tags/Macro
|
||||
title: $:/plugins/sobjornstad/TiddlyRemember/macros/remember
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define remembertwo(id, reference)
|
||||
\define remembertwo(id, reference, sched)
|
||||
<div class="tr-selfidentification">
|
||||
<$set name="selfid" filter="""[enlist[$reference$]]""" value="""[<$link to="$reference$">$reference$</$link>: $id$]""" emptyValue="[$id$]">
|
||||
<<selfid>>
|
||||
@@ -16,10 +16,13 @@ type: text/vnd.tiddlywiki
|
||||
<div class="tr-reference">
|
||||
<$text text=<<__reference__>>/>
|
||||
</div>
|
||||
<div class="tr-sched">
|
||||
<$text text=<<__sched__>>/>
|
||||
</div>
|
||||
\end
|
||||
|
||||
\define rememberq(id, question, answer, reference: "")
|
||||
<div class="rememberq remembertwo">
|
||||
\define rememberq(id, question, answer, reference: "", sched: "", class:"")
|
||||
<div class={{{ [[rememberq remembertwo ]addsuffix<__class__>addsuffix[ ]addsuffix{$:/config/TiddlyRemember/DefaultClasses}] }}}>
|
||||
<div class="rquestion tr-ritem">
|
||||
<div>Q:</div>
|
||||
<p>$question$</p>
|
||||
@@ -28,12 +31,12 @@ type: text/vnd.tiddlywiki
|
||||
<div>A:</div>
|
||||
<p>$answer$</p>
|
||||
</div>
|
||||
<$macrocall $name=remembertwo id=<<__id__>> reference=<<__reference__>>/>
|
||||
<$macrocall $name=remembertwo id=<<__id__>> reference=<<__reference__>> sched=<<__sched__>>/>
|
||||
</div>
|
||||
\end
|
||||
|
||||
\define rememberp(id, first, second, reference: "")
|
||||
<div class="rememberp remembertwo">
|
||||
\define rememberp(id, first, second, reference: "", sched: "", class: "")
|
||||
<div class={{{ [[rememberp remembertwo ]addsuffix<__class__>addsuffix[ ]addsuffix{$:/config/TiddlyRemember/DefaultClasses}] }}}>
|
||||
<div class="rfirst tr-ritem">
|
||||
<div>1:</div>
|
||||
<p>$first$</p>
|
||||
@@ -42,23 +45,20 @@ type: text/vnd.tiddlywiki
|
||||
<div>2:</div>
|
||||
<p>$second$</p>
|
||||
</div>
|
||||
<$macrocall $name=remembertwo id=<<__id__>> reference=<<__reference__>>/>
|
||||
<$macrocall $name=remembertwo id=<<__id__>> reference=<<__reference__>> sched=<<__sched__>>/>
|
||||
</div>
|
||||
\end
|
||||
|
||||
\define remembercz(id, text, mode: "block", reference: "")
|
||||
<$list filter="[[$mode$]match[inline]]">
|
||||
<$macrocall $name=twRememberClozeInline id=<<__id__>> text=<<__text__>> reference=<<__reference__>>/>
|
||||
\define remembercz(id, text, mode: "block", reference: "", sched: "", class: "")
|
||||
<$list filter="[[$mode$]match[inline]]" variable=_>
|
||||
<$macrocall $name=twRememberClozeInline id=<<__id__>> text=<<__text__>> reference=<<__reference__>> sched=<<__sched__>> class=<<__class__>>/>
|
||||
</$list>
|
||||
<$list filter="[[$mode$]!match[inline]]">
|
||||
<$macrocall $name=twRememberClozeBlock id=<<__id__>> text=<<__text__>> reference=<<__reference__>>/>
|
||||
<$list filter="[[$mode$]!match[inline]]" variable=_>
|
||||
<$macrocall $name=twRememberClozeBlock id=<<__id__>> text=<<__text__>> reference=<<__reference__>> sched=<<__sched__>> class=<<__class__>>/>
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define twRememberClozeBlock(id, text, reference)
|
||||
<div class="remembercz">
|
||||
<span class="cloze-identifier">cloze: </span>
|
||||
<span class="cloze-text">$text$</span>
|
||||
\define twRememberMetadata(id, reference, sched)
|
||||
<div class="tr-selfidentification">
|
||||
<$set name="selfid" filter="""[enlist[$reference$]]""" value="""[<$link to="$reference$">$reference$</$link>: $id$]""" emptyValue="[$id$]">
|
||||
<<selfid>>
|
||||
@@ -70,24 +70,26 @@ type: text/vnd.tiddlywiki
|
||||
<div class="tr-reference">
|
||||
<$text text=<<__reference__>>/>
|
||||
</div>
|
||||
<div class="tr-sched">
|
||||
<$text text=<<__sched__>>/>
|
||||
</div>
|
||||
\end
|
||||
|
||||
\define twRememberClozeInline(id, text, reference)
|
||||
<span class="remembercz">
|
||||
<span class="cloze-identifier">{cloze: </span>
|
||||
\define twRememberClozeBlock(id, text, reference, sched, class)
|
||||
<div class={{{ [[remembercz ]addsuffix<__class__>addsuffix[ ]addsuffix{$:/config/TiddlyRemember/DefaultClasses}] }}}>
|
||||
<span class="cloze-identifier"><span class="tr-name-cloze">cloze: </span></span>
|
||||
<span class="cloze-display"><$set name="unescape" value={{{ [<__text__>search-replace:g[\{],[{]search-replace:g[\}],[}]] }}}><<unescape>></$set></span>
|
||||
<span class="cloze-text">$text$</span>
|
||||
<$macrocall $name="twRememberMetadata" id=<<__id__>> reference=<<__reference__>> sched=<<__sched__>>/>
|
||||
</div>
|
||||
\end
|
||||
|
||||
\define twRememberClozeInline(id, text, reference, sched, class)
|
||||
<span class={{{ [[remembercz ]addsuffix<__class__>addsuffix[ ]addsuffix{$:/config/TiddlyRemember/DefaultClasses}] }}}>
|
||||
<span class="cloze-identifier">{<span class="tr-name-cloze">cloze: </span></span>
|
||||
<span class="cloze-display"><$set name="unescape" value={{{ [<__text__>search-replace:g[\{],[{]search-replace:g[\}],[}]] }}}><<unescape>></$set></span>
|
||||
<span class="cloze-identifier">}</span>
|
||||
<div class="tr-selfidentification">
|
||||
<$set name="selfid" filter="""[enlist[$reference$]]""" value="""[<$link to="$reference$">$reference$</$link>: $id$]""" emptyValue="[$id$]">
|
||||
<<selfid>>
|
||||
</$set>
|
||||
</div>
|
||||
<div class="rid">
|
||||
[$id$]
|
||||
</div>
|
||||
<div class="tr-reference">
|
||||
<$text text=<<__reference__>>/>
|
||||
</div>
|
||||
<span class="cloze-text">$text$</span>
|
||||
<$macrocall $name="twRememberMetadata" id=<<__id__>> reference=<<__reference__>> sched=<<__sched__>>/>
|
||||
</span>
|
||||
\end
|
@@ -43,7 +43,8 @@ div.remembercz {
|
||||
color: <<colour muted-foreground>>;
|
||||
}
|
||||
|
||||
/* the separate reference and ID fields are only for TR's benefit */
|
||||
|
||||
/* these separate fields are only read by the TR parser */
|
||||
div.remembertwo div.tr-reference, .remembercz div.tr-reference {
|
||||
display: none;
|
||||
}
|
||||
@@ -51,3 +52,28 @@ div.remembertwo div.tr-reference, .remembercz div.tr-reference {
|
||||
div.remembertwo div.rid, .remembercz div.rid {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.remembertwo div.tr-sched, .remembercz div.tr-sched {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.remembercz > span.cloze-text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/***** Built-in classes for common format customizations; apply to the class: parameter to macros *****/
|
||||
/* Hide the ID field */
|
||||
.tr-hide-id div.tr-selfidentification {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Hide the ID only if it's an inline cloze */
|
||||
span.remembercz.tr-hide-inline-cloze-id div.tr-selfidentification {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Hide the word "cloze" on inline clozes */
|
||||
span.remembercz.tr-hide-inline-cloze-name span.cloze-identifier span.tr-name-cloze {
|
||||
display: none;
|
||||
}
|
@@ -6,9 +6,13 @@ type: text/vnd.tiddlywiki
|
||||
|
||||
\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
|
||||
|
||||
<span id="tr-version">1.2.2</span>
|
||||
<$set name="tr-rendering" value="yes">
|
||||
|
||||
<span id="tr-version">1.3.2</span>
|
||||
|
||||
{{||$:/plugins/sobjornstad/TiddlyRemember/templates/AnkiDecks}}
|
||||
{{||$:/plugins/sobjornstad/TiddlyRemember/templates/AnkiTags}}
|
||||
|
||||
<$transclude mode="block" />
|
||||
|
||||
</$set>
|
||||
|
@@ -10,21 +10,4 @@ tags: $:/tags/EditorToolbar
|
||||
title: $:/plugins/sobjornstad/TiddlyRemember/toolbar/remembercz
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define getMacro()
|
||||
<<remembercz "$(clozeid)$"
|
||||
"Cloze">>
|
||||
\end
|
||||
|
||||
\define prefixId() $(theprefix)$$(thetime)$
|
||||
|
||||
<$set name=thetime value=<<now "[UTC]YYYY0MM0DD0hh0mm0ss0XXX">> >
|
||||
<$set name=theprefix value={{$:/config/TiddlyRemember/IdPrefix}}>
|
||||
<$set name=clozeid value=<<prefixId>> >
|
||||
<$action-sendmessage
|
||||
$message="tm-edit-text-operation"
|
||||
$param="replace-selection"
|
||||
text=<<getMacro>>
|
||||
/>
|
||||
</$set>
|
||||
</$set>
|
||||
</$set>
|
||||
<$macrocall $name=tr-insert-note snippet={{$:/config/TiddlyRemember/snippets/remembercz}}>
|
@@ -9,22 +9,4 @@ tags: $:/tags/EditorToolbar
|
||||
title: $:/plugins/sobjornstad/TiddlyRemember/toolbar/rememberq
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define getMacro()
|
||||
<<rememberq "$(questionid)$"
|
||||
"Q"
|
||||
"A">>
|
||||
\end
|
||||
|
||||
\define prefixId() $(theprefix)$$(thetime)$
|
||||
|
||||
<$set name=thetime value=<<now "[UTC]YYYY0MM0DD0hh0mm0ss0XXX">> >
|
||||
<$set name=theprefix value={{$:/config/TiddlyRemember/IdPrefix}}>
|
||||
<$set name=questionid value=<<prefixId>> >
|
||||
<$action-sendmessage
|
||||
$message="tm-edit-text-operation"
|
||||
$param="replace-selection"
|
||||
text=<<getMacro>>
|
||||
/>
|
||||
</$set>
|
||||
</$set>
|
||||
</$set>
|
||||
<$macrocall $name=tr-insert-note snippet={{$:/config/TiddlyRemember/snippets/rememberq}}>
|
@@ -2,7 +2,7 @@
|
||||
"title": "$:/plugins/sobjornstad/TiddlyRemember",
|
||||
"description": "TiddlyRemember: Embed Anki notes in your TiddlyWiki",
|
||||
"author": "Soren Bjornstad",
|
||||
"version": "1.2.2",
|
||||
"version": "1.3.2",
|
||||
"core-version": ">=5.1.21",
|
||||
"source": "https://github.com/sobjornstad/TiddlyRemember",
|
||||
"list": "readme license",
|
||||
|
@@ -0,0 +1,68 @@
|
||||
caption: Shuffle Operator
|
||||
title: $:/plugins/mklauber/shuffle/readme
|
||||
|
||||
|!purpose|Randomize the order of the input list|
|
||||
|!input|a selection of titles|
|
||||
|!parameter|a random string to be used to create consistent random ordering|
|
||||
|!output|The input titles, rearranged in a random order|
|
||||
|
||||
This plugin implements a new filter operator called Shuffle. This operator takes the input list and randomizes the order of the list. If no parameter is provided, the list order is random every time.
|
||||
|
||||
!!!Example:
|
||||
```
|
||||
<$list filter="1 2 3 4 5 +[shuffle[]]">
|
||||
|
||||
</$list>
|
||||
```
|
||||
|
||||
<$button popup="$:/state/shuffle/reveal1">Run Demo</$button>
|
||||
|
||||
<$reveal type="popup" state="$:/state/shuffle/reveal1">
|
||||
<div class="tc-drop-down">
|
||||
<$list filter="1 2 3 4 5 +[shuffle[]]">
|
||||
|
||||
</$list>
|
||||
</div>
|
||||
</$reveal>
|
||||
|
||||
Combining this operator with the first operator allows you to choose 1 or more titles randomly from a list.
|
||||
|
||||
!!!Example:
|
||||
```
|
||||
<$list filter="1 2 3 4 5 +[shuffle[]first[2]]">
|
||||
|
||||
</$list>
|
||||
```
|
||||
|
||||
<$button popup="$:/state/shuffle/reveal2">Run Demo</$button>
|
||||
|
||||
<$reveal type="popup" state="$:/state/shuffle/reveal2">
|
||||
<div class="tc-drop-down">
|
||||
<$list filter="1 2 3 4 5 +[shuffle[]first[2]]">
|
||||
|
||||
</$list>
|
||||
</div>
|
||||
</$reveal>
|
||||
|
||||
If a parameter is provided the list will be ordered identically every time it is rendered. This can be useful in conjunction a button that updates a state tiddler. Set the parameter of this operator to reference that state tiddler, and create a button that updates that tiddler, and now the ordering of the random operators only changes when the button is pressed.
|
||||
|
||||
!!!Example:
|
||||
```
|
||||
<$button>
|
||||
<$action-setfield $tiddler="$:/temp/shuffle/example" $field="state" $value=<<now "0hh:0mm:0ss">>/>
|
||||
Change Order
|
||||
</$button>
|
||||
|
||||
<$list filter="1 2 3 4 5 +[shuffle{$:/temp/shuffle/example!!state}]">
|
||||
|
||||
</$list>
|
||||
```
|
||||
|
||||
<$button>
|
||||
<$action-setfield $tiddler="$:/temp/shuffle/example" $field="state" $value=<<now "0hh:0mm:0ss">>/>
|
||||
Update
|
||||
</$button>
|
||||
|
||||
<$list filter="1 2 3 4 5 +[shuffle{$:/temp/shuffle/example!!state}]">
|
||||
|
||||
</$list>
|
@@ -0,0 +1 @@
|
||||
!function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;a<q;)a=(a+c)*l,b*=l,c=t.g(1);for(;a>=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e<l;)g[e]=e++;for(e=0;e<l;e++)g[e]=g[f=s&f+a[e%c]+(b=g[e])],g[f]=b;(d.g=function(a){for(var b,c=0,e=d.i,f=d.j,g=d.S;a--;)b=g[e=s&e+1],c=c*l+g[s&(g[e]=g[f=s&f+b])+(g[f]=b)];return d.i=e,d.j=f,c})(l)}function e(a,b){return b.i=a.i,b.j=a.j,b.S=a.S.slice(),b}function f(a,b){var c,d=[],e=typeof a;if(b&&"object"==e)for(c in a)try{d.push(f(a[c],b-1))}catch(a){}return d.length?d:"string"==e?a:a+"\0"}function g(a,b){for(var c,d=a+"",e=0;e<d.length;)b[s&e]=s&(c^=19*b[s&e])+d.charCodeAt(e++);return i(b)}function h(){try{var b;return j&&(b=j.randomBytes)?b=b(l):(b=new Uint8Array(l),(k.crypto||k.msCrypto).getRandomValues(b)),i(b)}catch(b){var c=k.navigator,d=c&&c.plugins;return[+new Date,k,d,k.screen,i(a)]}}function i(a){return String.fromCharCode.apply(0,a)}var j,k=this,l=256,m=6,n=52,o="random",p=b.pow(l,m),q=b.pow(2,n),r=2*q,s=l-1;if(b["seed"+o]=c,g(b.random(),a),"object"==typeof module&&module.exports){module.exports=c;try{j=require("crypto")}catch(a){}}else"function"==typeof define&&define.amd&&define(function(){return c})}([],Math);
|
@@ -0,0 +1,6 @@
|
||||
created: 20180220123939614
|
||||
modified: 20180220125617309
|
||||
module-type: library
|
||||
tags:
|
||||
title: $:/plugins/mklauber/shuffle/seedrandom.js
|
||||
type: application/javascript
|
@@ -0,0 +1,53 @@
|
||||
(function(){
|
||||
|
||||
"use strict";
|
||||
|
||||
var hash = function(str) {
|
||||
var hash = 0, i, chr, len;
|
||||
if (str.length === 0) return hash;
|
||||
for (i = 0, len = str.length; i < len; i++) {
|
||||
chr = str.charCodeAt(i);
|
||||
hash = ((hash << 5) - hash) + chr;
|
||||
hash |= 0; // Convert to 32bit integer
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
var shuffle = function(array, seed) {
|
||||
var currentIndex = array.length, temporaryValue, randomIndex ;
|
||||
Math.seedrandom(seed)
|
||||
|
||||
// While there remain elements to shuffle...
|
||||
while (0 !== currentIndex) {
|
||||
|
||||
// Pick a remaining element...
|
||||
randomIndex = Math.floor(Math.random() * currentIndex);
|
||||
currentIndex -= 1;
|
||||
|
||||
// And swap it with the current element.
|
||||
temporaryValue = array[currentIndex];
|
||||
array[currentIndex] = array[randomIndex];
|
||||
array[randomIndex] = temporaryValue;
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
var prepare_results = function (source) {
|
||||
var results = [];
|
||||
source(function(tiddler,title) {
|
||||
results.push(title);
|
||||
});
|
||||
return results;
|
||||
};
|
||||
|
||||
exports.shuffle = function(source, operator, options) {
|
||||
var results = prepare_results(source);
|
||||
if (operator['operand'] == "") {
|
||||
shuffle(results);
|
||||
} else {
|
||||
shuffle(results, hash(operator['operand']));
|
||||
}
|
||||
return results;
|
||||
}
|
||||
})();
|
@@ -0,0 +1,6 @@
|
||||
caption: A filter Operator to randomize the order of the list passed to it.
|
||||
created: 20150811171933696
|
||||
modified: 20180220125039203
|
||||
module-type: filteroperator
|
||||
title: $:/plugins/mklauber/shuffle/shuffle.js
|
||||
type: application/javascript
|
@@ -0,0 +1,5 @@
|
||||
exports.name = "shuffle"
|
||||
exports.before = ["render"]
|
||||
exports.startup = function() {
|
||||
$tw.modules.execute('$:/plugins/mklauber/shuffle/seedrandom.js');
|
||||
}
|
@@ -0,0 +1,6 @@
|
||||
created: 20180220133753576
|
||||
modified: 20180220133920300
|
||||
module-type: startup
|
||||
tags:
|
||||
title: $:/plugins/mklauber/shuffle/startup.js
|
||||
type: application/javascript
|
13
tzk/editions/tzk/plugins/shuffle/plugin.info
Normal file
13
tzk/editions/tzk/plugins/shuffle/plugin.info
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"author": "Matthew Lauber",
|
||||
"core-version": ">=5.0.0",
|
||||
"created": "20210105134918257",
|
||||
"dependents": "",
|
||||
"description": "A Shuffle filter operator",
|
||||
"list": "readme",
|
||||
"modified": "20211107172616237",
|
||||
"plugin-type": "plugin",
|
||||
"source": "https://github.com/mklauber/tiddly-shuffle",
|
||||
"title": "$:/plugins/mklauber/shuffle",
|
||||
"version": "1.0.2"
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
created: 20210928031215487
|
||||
creator: soren
|
||||
modified: 20210928031216652
|
||||
modifier: soren
|
||||
title: $:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/do-thing
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
show
|
@@ -1,5 +1,5 @@
|
||||
created: 20200516190911842
|
||||
modified: 20210308030709436
|
||||
modified: 20211113234932630
|
||||
tags:
|
||||
title: $:/config/TiddlyRemember/TagMapping
|
||||
type: text/vnd.tiddlywiki
|
||||
|
@@ -3,4 +3,4 @@ modified: 20201120173215063
|
||||
title: $:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
hide
|
||||
show
|
@@ -1,6 +1,8 @@
|
||||
created: 20210525001044166
|
||||
modified: 20210525000849030
|
||||
creator: soren
|
||||
modified: 20210922125743198
|
||||
modifier: soren
|
||||
title: $:/config/ViewToolbarButtons/Visibility/$:/sib/Buttons/CopyPublicZettelkastenLink
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
show
|
||||
hide
|
@@ -2,9 +2,9 @@ caption: Sidebar info links
|
||||
created: 20210623014408947
|
||||
creator: soren
|
||||
description: Show navigation links to the most important parts of the wiki underneath the subtitle.
|
||||
modified: 20210825145449987
|
||||
modified: 20211107173557802
|
||||
modifier: soren
|
||||
private: no
|
||||
private: yes
|
||||
public: no
|
||||
tags:
|
||||
title: $:/config/zettelkasten/FeatureFlags/SidebarInfoLinks
|
||||
|
@@ -2,7 +2,7 @@ caption: Spoiler banner
|
||||
created: 20210622003118415
|
||||
creator: soren
|
||||
description: Display a warning banner on fiction tiddlers (any tiddler with a non-empty `universe` field) noting that we don't try to hide spoilers.
|
||||
modified: 20210909130158483
|
||||
modified: 20211107181812051
|
||||
modifier: soren
|
||||
private: no
|
||||
public: no
|
||||
|
@@ -0,0 +1,19 @@
|
||||
caption: {{$:/language/Buttons/Linkify/Caption}}
|
||||
condition: [<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]
|
||||
created: 20210928031136147
|
||||
creator: soren
|
||||
description: {{$:/language/Buttons/Linkify/Hint}}
|
||||
icon: $:/core/images/linkify
|
||||
modified: 20210928031136215
|
||||
modifier: soren
|
||||
shortcuts: ((linkify))
|
||||
tags: $:/tags/EditorToolbar
|
||||
title: $:/core/ui/EditorToolbar/linkify
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
<$action-sendmessage
|
||||
$message="tm-edit-text-operation"
|
||||
$param="wrap-selection"
|
||||
prefix="[["
|
||||
suffix="]]"
|
||||
/>
|
@@ -0,0 +1,19 @@
|
||||
caption: {{$:/language/Buttons/Transcludify/Caption}}
|
||||
condition: [<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]
|
||||
created: 20210928031136147
|
||||
creator: soren
|
||||
description: {{$:/language/Buttons/Transcludify/Hint}}
|
||||
icon: $:/core/images/transcludify
|
||||
modified: 20210928031136239
|
||||
modifier: soren
|
||||
shortcuts: ((transcludify))
|
||||
tags: $:/tags/EditorToolbar
|
||||
title: $:/core/ui/EditorToolbar/transcludify
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
<$action-sendmessage
|
||||
$message="tm-edit-text-operation"
|
||||
$param="wrap-selection"
|
||||
prefix="{{"
|
||||
suffix="}}"
|
||||
/>
|
52
tzk/editions/tzk/tiddlers/$__inmysocks_macros_day-diff.js
Normal file
52
tzk/editions/tzk/tiddlers/$__inmysocks_macros_day-diff.js
Normal file
@@ -0,0 +1,52 @@
|
||||
/*\
|
||||
title: $:/inmysocks/macros/day-diff.js
|
||||
type: application/javascript
|
||||
module-type: macro
|
||||
|
||||
Takes two dates and returns their difference in days
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Information about this macro
|
||||
*/
|
||||
|
||||
exports.name = "day-diff";
|
||||
|
||||
exports.params = [
|
||||
{name: "year1"},
|
||||
{name: "month1"},
|
||||
{name: "day1"},
|
||||
{name: "year2"},
|
||||
{name: "month2"},
|
||||
{name: "day2"}
|
||||
];
|
||||
|
||||
/*
|
||||
Run the macro
|
||||
*/
|
||||
exports.run = function(year1, month1, day1, year2, month2, day2) {
|
||||
//Make each date object.
|
||||
var date1 = new Date(year1, Number(month1)+Number(1), day1);
|
||||
var date2 = new Date(year2, Number(month2)+Number(1), day2);
|
||||
|
||||
//Find difference in milliseconds.
|
||||
var elapsed = date2.getTime()-date1.getTime();
|
||||
|
||||
//Number of milliseconds in a day.
|
||||
var dayMS = 86400000;
|
||||
|
||||
//Convert milliseconds to year months and days
|
||||
var days_diff = Math.floor(elapsed/dayMS);
|
||||
|
||||
var result = days_diff;
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
})();
|
@@ -0,0 +1,6 @@
|
||||
created: 20150225185218583
|
||||
modified: 20211204021739668
|
||||
module-type: macro
|
||||
tags:
|
||||
title: $:/inmysocks/macros/day-diff.js
|
||||
type: application/javascript
|
@@ -0,0 +1,31 @@
|
||||
caption: RememberCz
|
||||
condition: [<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]
|
||||
created: 20200517155905263
|
||||
creator: soren
|
||||
description: Remember Cloze Deletion
|
||||
icon: $:/plugins/sobjornstad/TiddlyRemember/icons/lightbulb-black.svg
|
||||
modified: 20211113234933532
|
||||
modifier: soren
|
||||
shortcuts: ((remembercz))
|
||||
tags: $:/tags/EditorToolbar
|
||||
title: $:/plugins/sobjornstad/TiddlyRemember/toolbar/remembercz
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define getMacro()
|
||||
<<remembercz "$(clozeid)$"
|
||||
"Cloze">>
|
||||
\end
|
||||
|
||||
\define prefixId() $(theprefix)$$(thetime)$
|
||||
|
||||
<$set name=thetime value=<<now "[UTC]YYYY0MM0DD0hh0mm0ss0XXX">> >
|
||||
<$set name=theprefix value={{$:/config/TiddlyRemember/IdPrefix}}>
|
||||
<$set name=clozeid value=<<prefixId>> >
|
||||
<$action-sendmessage
|
||||
$message="tm-edit-text-operation"
|
||||
$param="replace-selection"
|
||||
text=<<getMacro>>
|
||||
/>
|
||||
</$set>
|
||||
</$set>
|
||||
</$set>
|
@@ -1,9 +1,9 @@
|
||||
caption: Copy public Zettelkasten link
|
||||
caption: copy public link
|
||||
created: 20201120172611922
|
||||
creator: soren
|
||||
description: Copy a link to this tiddler in the public Zettelkasten
|
||||
list-after: $:/core/ui/Buttons/info
|
||||
modified: 20210825162715432
|
||||
modified: 20210922125543768
|
||||
modifier: soren
|
||||
tags: $:/tags/ViewToolbar
|
||||
title: $:/sib/Buttons/CopyPublicZettelkastenLink
|
||||
@@ -15,7 +15,15 @@ type: text/vnd.tiddlywiki
|
||||
\end
|
||||
|
||||
<$set name="tidTitle" value={{!!title}}>
|
||||
<$button message="tm-copy-to-clipboard" param=<<copier>> tooltip={{!!caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$button message="tm-copy-to-clipboard" param=<<copier>> tooltip={{$:/sib/Buttons/CopyPublicZettelkastenLink!!caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
|
||||
{{$:/core/images/permalink-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>match[yes]]">
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/sib/Buttons/CopyPublicZettelkastenLink!!caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
</$set>
|
@@ -1,15 +1,23 @@
|
||||
caption: Copy tiddler title
|
||||
caption: copy tiddler title
|
||||
created: 20200419143537510
|
||||
creator: soren
|
||||
description: Copy the name of this tiddler to the clipboard
|
||||
list-after: $:/core/ui/Buttons/info
|
||||
modified: 20210825162721583
|
||||
modified: 20210922125723154
|
||||
modifier: soren
|
||||
tags: $:/tags/ViewToolbar
|
||||
title: $:/sib/Buttons/CopyTitleReference
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\whitespace trim
|
||||
<$button message="tm-copy-to-clipboard" param={{!!title}} tooltip={{!!caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$button message="tm-copy-to-clipboard" param={{!!title}} tooltip={{$:/sib/Buttons/CopyTitleReference!!caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
|
||||
<i class="far fa-copy" style="font-size:160%; position:relative; bottom:-4px; left:-1px;"/>
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>match[yes]]">
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/sib/Buttons/CopyTitleReference!!caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
@@ -1,10 +1,11 @@
|
||||
caption: Excise private chunk
|
||||
condition: [<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]
|
||||
created: 20210522034413324
|
||||
creator: soren
|
||||
description: Create a new private chunk from the selection
|
||||
icon: $:/core/images/locked-padlock
|
||||
list-after: $:/core/ui/EditorToolbar/excise
|
||||
modified: 20210522034828757
|
||||
modified: 20210928031136154
|
||||
modifier: soren
|
||||
shortcuts: ((excise-private-chunk))
|
||||
tags: $:/tags/EditorToolbar
|
||||
title: $:/sib/Buttons/excise-private-chunk
|
||||
|
@@ -1,11 +1,13 @@
|
||||
caption: possible
|
||||
color: lightblue
|
||||
created: 20210508225155649
|
||||
modified: 20210508230813020
|
||||
creator: soren
|
||||
modified: 20211229142954562
|
||||
modifier: soren
|
||||
section: main
|
||||
stackorder: 30
|
||||
tags:
|
||||
title: $:/sib/EpistemicStatus/possible
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
I [[withhold judgment|OpinionsRequireCounterarguments]] on the idea; I am merely reporting it.
|
||||
I [[withhold judgment|NoOpinion]] on the idea; I am merely reporting it.
|
@@ -1,7 +1,7 @@
|
||||
caption: Next steps
|
||||
created: 20210828133924602
|
||||
creator: soren
|
||||
modified: 20210828134435065
|
||||
modified: 20210922163144199
|
||||
modifier: soren
|
||||
tags:
|
||||
title: $:/sib/GettingStarted/NextSteps
|
||||
@@ -13,6 +13,8 @@ I recommend starting by ''adding some notes''! Add a couple of tiddlers for the
|
||||
|
||||
Once you've gotten a few notes into the system, you will be in a good place to ''decide what elements of this edition you like and what things you'll want to change''. If you want to get into customizing the wiki and you don't have much experience with TiddlyWiki, check out [[Grok TiddlyWiki|https://groktiddlywiki.com/read]], a complete textbook and reference designed for learning how this stuff works from the ground up.
|
||||
|
||||
At any time, you can watch [[an hour-long walkthrough video|https://www.youtube.com/watch?v=9X_T-DVie8o]] showing the most important features of tzk.
|
||||
|
||||
At any time, you can click the ''tools button {{$:/core/images/theme-button}}'' on the page toolbar (upper-right corner of the wiki, right under the title) to access a wide variety of tools, settings, and documentation related to the Zettelkasten edition.
|
||||
|
||||
If you have questions, comments, or suggestions, please feel free to get in touch at `zettelkasten@sorenbjornstad.com`.
|
@@ -1,14 +1,19 @@
|
||||
created: 20210623014041787
|
||||
creator: soren
|
||||
list-after: $:/core/ui/SideBarSegments/site-subtitle
|
||||
modified: 20210623014719347
|
||||
modified: 20211107173606954
|
||||
modifier: soren
|
||||
tags: $:/tags/SideBarSegment
|
||||
title: $:/sib/SideBar/InfoLinks
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define go-random-action() <$action-navigate $to={{{[tag[Idea]!tag[PrivateChunk]!regexp[/]!tag[Stub]shuffle[]first[]]}}}/>
|
||||
|
||||
<$list filter=<<ff SidebarInfoLinks>> variable=_>
|
||||
[[about|PublicHomepage]] ·
|
||||
[[reading|RecentlyRead]] ·
|
||||
[[favorites|Favorites]]
|
||||
[[favorites|Favorites]] ·
|
||||
<$button class="tc-tiddlylink tc-btn-invisible" actions=<<go-random-action>>>random idea</$button>
|
||||
|
||||
<style>
|
||||
.gtw-sidebar-links a, .gtw-sidebar-links button {
|
||||
|
@@ -1,10 +1,12 @@
|
||||
caption: Stubs
|
||||
created: 20200516155336361
|
||||
creator: soren
|
||||
list-after: $:/core/ui/MoreSideBar/Missing
|
||||
modified: 20210522014721028
|
||||
modified: 20211204001205484
|
||||
modifier: soren
|
||||
title: $:/sib/SideBar/Write/Stub
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
<$list filter="[tag[Stub]sort[]]" emptyMessage="No stubs right now! You're awesome!">
|
||||
<$list filter="[tag[Stub]sort[]] -[[$:/TagSaver]]" emptyMessage="No stubs right now! You're awesome!">
|
||||
<$link to=<<currentTiddler>>><<currentTiddler>></$link><br/>
|
||||
</$list>
|
||||
|
@@ -1,10 +1,12 @@
|
||||
created: 20201204132021892
|
||||
modified: 20210522014049552
|
||||
creator: soren
|
||||
modified: 20211027125509141
|
||||
modifier: soren
|
||||
tags: $:/tags/EditTemplate
|
||||
title: $:/sib/Templates/Automatic/MissingTiddlerCreationNotification
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
<$list filter="[all[current]get[draft.of]prefix[New Tiddler]]" variable="draftof">
|
||||
<$list filter="[all[current]get[draft.of]prefix[New ]]" variable="draftof">
|
||||
<$list filter="[all[current]get[draft.title]backlinks[]first[]]" variable=_>
|
||||
Creating missing tiddler <$link to={{!!draft.title}}/>. The following tiddlers will link here when you save:
|
||||
<<list-links "[all[current]get[draft.title]backlinks[]]">>
|
||||
|
@@ -0,0 +1,33 @@
|
||||
created: 20211120164840100
|
||||
creator: soren
|
||||
description: Navigate to the parent or a sibling of the current subtiddler. Subtiddler names are separated from that of their supertiddlers by a / (and are not system tiddlers).
|
||||
modified: 20211120170254112
|
||||
modifier: soren
|
||||
tags: $:/tags/ViewTemplate
|
||||
title: $:/sib/Templates/Automatic/Subtiddler
|
||||
transcludedin: All tiddlers whose titles contain a slash and are not system tiddlers.
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define expand-siblings() <$action-setfield $tiddler="$:/temp/ShowSiblings" $index=<<currentTiddler>> $value="yes" />
|
||||
\define contract-siblings() <$action-setfield $tiddler="$:/temp/ShowSiblings" $index=<<currentTiddler>> $value="no" />
|
||||
|
||||
<$list filter="[all[current]!is[system]regexp:title[/]]" variable=_>
|
||||
<$set name="parentTiddler" value={{{ [all[current]split[/]butlast[]join[/]] }}}>
|
||||
<$set name="parentTiddlerPlusSlash" value={{{ [<parentTiddler>addsuffix[/]] }}}>
|
||||
<div style="text-align: center;">
|
||||
|
||||
This is a subtiddler of <$link to=<<parentTiddler>>/>.<br>
|
||||
<$reveal stateTitle="$:/temp/ShowSiblings" stateIndex=<<currentTiddler>> type="nomatch" text="yes">
|
||||
<$button class="tc-btn-invisible tc-tiddlylink" actions=<<expand-siblings>>>{{$:/core/images/right-arrow}} Siblings of this subtiddler</$button>
|
||||
</$reveal>
|
||||
<$reveal stateTitle="$:/temp/ShowSiblings" stateIndex=<<currentTiddler>> type="match" text="yes">
|
||||
<$button class="tc-btn-invisible tc-tiddlylink" actions=<<contract-siblings>>>{{$:/core/images/down-arrow}} Siblings of this subtiddler:</$button><br>
|
||||
<$list filter="[prefix<parentTiddlerPlusSlash>]">
|
||||
<$link to=<<currentTiddler>>><$text text={{{ [<currentTiddler>removeprefix<parentTiddlerPlusSlash>] }}}/></$link><br>
|
||||
</$list>
|
||||
</$reveal>
|
||||
|
||||
</div>
|
||||
</$set>
|
||||
</$set>
|
||||
</$list>
|
@@ -0,0 +1,22 @@
|
||||
created: 20211120170347843
|
||||
creator: soren
|
||||
description: Show a warning on tiddlers that don't have a type selected.
|
||||
modified: 20211221014011578
|
||||
modifier: soren
|
||||
tags: $:/tags/ViewTemplate
|
||||
title: $:/sib/Templates/Automatic/TypeTagChecker
|
||||
transcludedin: All tiddlers that exist, aren't system tiddlers or subtiddlers, and don't have at least one tag of the color #ff0000.
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
<!-- System tiddlers, missing tiddlers, and subtiddlers are exempt from the warning. -->
|
||||
<$list filter="[all[current]!is[system]!is[missing]!regexp[/]]">
|
||||
<$list filter="[all[current]tags[]color[#ff0000]] ~[[Oops]] +[match[Oops]]" variable=_>
|
||||
<div style="display: inline-block; vertical-align: center; margin-top: 6px; margin-left: 1em; fill: yellow;">
|
||||
<span style="height: 44px">{{$:/core/images/warning}}</span>
|
||||
</div>
|
||||
<div style="display: inline-block; margin-left: 1em; color: yellow; font-weight: bold;">
|
||||
This tiddler does not have a type tag (type tags appear in red). You should probably attach one.<br>
|
||||
See [[ZettelkastenCardType]] for details on the available options.
|
||||
</div>
|
||||
</$list>
|
||||
</$list>
|
15
tzk/editions/tzk/tiddlers/$__sib_Tools_Tray.tid
Normal file
15
tzk/editions/tzk/tiddlers/$__sib_Tools_Tray.tid
Normal file
@@ -0,0 +1,15 @@
|
||||
caption: Tray
|
||||
created: 20210701023215046
|
||||
creator: soren
|
||||
description: Items we're currently working on but don't need to leave open. Drag and drop a link to a tiddler to add it.
|
||||
list:
|
||||
modified: 20211026030511257
|
||||
modifier: soren
|
||||
tags: Meta Tool
|
||||
title: $:/sib/Tools/Tray
|
||||
tooltype: aggregator
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Stuff I'm working on but don't need to keep open:
|
||||
|
||||
<<list-links-draggable "$:/sib/Tools/Tray" itemTemplate:"$:/sib/Tools/Tray/Template">>
|
@@ -1,6 +1,6 @@
|
||||
created: 20210410004529968
|
||||
creator: soren
|
||||
modified: 20210825162735756
|
||||
modified: 20210924153927403
|
||||
modifier: soren
|
||||
tags:
|
||||
title: $:/sib/indite/InditeChildren
|
||||
@@ -50,11 +50,14 @@ copy <<copy-me>> · <<copy-rendered>>
|
||||
$viewBlock$
|
||||
</div>
|
||||
</$list>
|
||||
|
||||
<$list filter="[<tr-rendering>!match[yes]]" variable=_>
|
||||
<$list filter="[all[current]editmode[edit]] [all[current]editmode[both]]">
|
||||
<div class={{{ [[indite-sbs-editor]addsuffix[ ]addsuffix<thewidth>] }}}>
|
||||
<$transclude tiddler="$:/core/ui/EditTemplate/body/editor"/>
|
||||
</div>
|
||||
</$list>
|
||||
</$list>
|
||||
</$set>
|
||||
\end
|
||||
|
||||
|
@@ -1,7 +1,9 @@
|
||||
caption: Indite view template
|
||||
created: 20210410004824597
|
||||
creator: soren
|
||||
description: Tiddlers that are part of the Indite writing system (under development) hide the normal view template via CSS and use this one instead.
|
||||
modified: 20210523143848140
|
||||
modified: 20210924153731019
|
||||
modifier: soren
|
||||
tags: $:/tags/ViewTemplate
|
||||
title: $:/sib/indite/ViewTemplate
|
||||
transcludedin: All tiddlers tagged <<tag Indite>>.
|
||||
|
@@ -2,7 +2,7 @@ caption: Subtiddlers
|
||||
condition: [all[tiddlers]prefix<storyTiddler>!field:title<storyTiddler>sort[]]
|
||||
created: 20201206210345097
|
||||
creator: soren
|
||||
modified: 20210920161045390
|
||||
modified: 20211227155615108
|
||||
modifier: soren
|
||||
tags: $:/tags/ReferenceExplorerTab
|
||||
title: $:/sib/refexplorer/Subtiddlers
|
||||
|
@@ -1,5 +1,7 @@
|
||||
created: 20210719234124096
|
||||
modified: 20210719235343017
|
||||
creator: soren
|
||||
modified: 20211025140658570
|
||||
modifier: soren
|
||||
tags: $:/tags/Stylesheet
|
||||
title: $:/sib/styles/footnote
|
||||
type: text/vnd.tiddlywiki
|
||||
@@ -26,8 +28,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
.refnotes-footnote:after {
|
||||
content: counter(fnote-count);
|
||||
font-size:small;
|
||||
vertical-align: super;
|
||||
line-height: 1.5;
|
||||
vertical-align: top;
|
||||
font-size: 0.8em;
|
||||
/*vertical-align: super;
|
||||
line-height: 1.5;*/
|
||||
margin-left: 0em;
|
||||
color: yellow;
|
||||
}
|
||||
|
@@ -1,5 +1,7 @@
|
||||
created: 20210624125244567
|
||||
modified: 20210629025407566
|
||||
creator: soren
|
||||
modified: 20211025010048942
|
||||
modifier: soren
|
||||
tags: $:/tags/Stylesheet
|
||||
title: $:/sib/styles/hr
|
||||
type: text/vnd.tiddlywiki
|
||||
@@ -7,7 +9,7 @@ type: text/vnd.tiddlywiki
|
||||
/* Based on: Flaired edges, by Tomas Theunissen
|
||||
https://css-tricks.com/examples/hrs/ */
|
||||
|
||||
.tc-tiddler-body hr, .tc-tiddler-preview-preview hr {
|
||||
.tc-tiddler-body > hr, .tc-tiddler-preview-preview > hr {
|
||||
overflow: visible; /* For IE */
|
||||
height: 30px;
|
||||
border-style: solid;
|
||||
|
7
tzk/editions/tzk/tiddlers/$__tags_EditorToolbar.tid
Normal file
7
tzk/editions/tzk/tiddlers/$__tags_EditorToolbar.tid
Normal file
@@ -0,0 +1,7 @@
|
||||
created: 20210928031136148
|
||||
creator: soren
|
||||
list: $:/core/ui/EditorToolbar/do-thing $:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/linkify $:/core/ui/EditorToolbar/transcludify $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/sib/Buttons/excise-private-chunk $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type $:/plugins/sobjornstad/TiddlyRemember/toolbar/rememberq $:/plugins/sobjornstad/TiddlyRemember/toolbar/remembercz $:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex
|
||||
modified: 20210928031142401
|
||||
modifier: soren
|
||||
title: $:/tags/EditorToolbar
|
||||
type: text/vnd.tiddlywiki
|
@@ -1,5 +1,7 @@
|
||||
created: 20201129183705439
|
||||
list: $:/core/ui/ViewTemplate/title $:/core/ui/ViewTemplate/unfold $:/core/ui/ViewTemplate/subtitle $:/sib/EpistemicStatus/Display $:/sib/MediaRating/Display $:/core/ui/ViewTemplate/tags $:/core/ui/ViewTemplate/classic $:/sib/Templates/Automatic/SpoilerBanner $:/sib/Templates/Automatic/Untitled $:/sib/Templates/Automatic/PrivateChunkParentNotice $:/sib/Templates/Automatic/Source $:/sib/Templates/Topical/MinnesotaStateParkInfo $:/sib/Templates/Automatic/MacroDescription $:/core/ui/ViewTemplate/body $:/sib/indite/ViewTemplate $:/sib/Reviewer/SchedulableTemplate $:/sib/gis/MappingTools $:/sib/Templates/Topical/SabbaticalUpdates/DateNavigation $:/sib/Templates/Automatic/Publicity/ViewerPublicLine $:/core/ui/ViewTemplate/import $:/core/ui/ViewTemplate/plugin $:/plugins/danielo515/2click2edit/ui/ViewTemplate $:/sib/refexplorer/ReferenceExplorer $:/sib/Templates/Automatic/ViewTemplateDescription $:/sib/Templates/Automatic/ReaderActions $:/plugins/kookma/refnotes/viewtemplates/main
|
||||
modified: 20210807194815491
|
||||
creator: soren
|
||||
list: $:/core/ui/ViewTemplate/title $:/core/ui/ViewTemplate/unfold $:/core/ui/ViewTemplate/subtitle $:/sib/EpistemicStatus/Display $:/sib/MediaRating/Display $:/core/ui/ViewTemplate/tags $:/core/ui/ViewTemplate/classic $:/sib/Templates/Automatic/Subtiddler $:/sib/Templates/Automatic/TypeTagChecker $:/sib/Templates/Automatic/SpoilerBanner $:/sib/Templates/Automatic/Untitled $:/sib/Templates/Automatic/PrivateChunkParentNotice $:/sib/Templates/Automatic/Source $:/sib/Templates/Topical/MinnesotaStateParkInfo $:/sib/Templates/Automatic/MacroDescription $:/core/ui/ViewTemplate/body $:/sib/indite/ViewTemplate $:/sib/Reviewer/SchedulableTemplate $:/sib/gis/MappingTools $:/sib/Templates/Topical/SabbaticalUpdates/DateNavigation $:/sib/Templates/Automatic/Publicity/ViewerPublicLine $:/core/ui/ViewTemplate/import $:/core/ui/ViewTemplate/plugin $:/plugins/danielo515/2click2edit/ui/ViewTemplate $:/sib/refexplorer/ReferenceExplorer $:/sib/Templates/Automatic/ViewTemplateDescription $:/sib/Templates/Automatic/ReaderActions
|
||||
modified: 20211120171147065
|
||||
modifier: soren
|
||||
title: $:/tags/ViewTemplate
|
||||
type: text/vnd.tiddlywiki
|
@@ -1,6 +1,8 @@
|
||||
created: 20200507143136944
|
||||
creator: soren
|
||||
list: PublicHomepage/Navigating PublicHomepage/Organization [[PublicHomepage/Points of Interest]] [[PublicHomepage/No Warranty]] PublicHomepage/Copyright PublicHomepage/Contact [[PublicHomepage/Video Tour]]
|
||||
modified: 20210720015457472
|
||||
modified: 20211007181213586
|
||||
modifier: soren
|
||||
tags: Public Meta
|
||||
title: PublicHomepage
|
||||
type: text/vnd.tiddlywiki
|
||||
|
@@ -10,7 +10,7 @@ import sys
|
||||
from typing import Any, Callable, Dict, NoReturn
|
||||
|
||||
|
||||
TZK_VERSION = "0.1.1"
|
||||
TZK_VERSION = "0.1.4"
|
||||
|
||||
|
||||
class BuildError(Exception):
|
||||
|
Reference in New Issue
Block a user