diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8a518e6e..9e7772e3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+### 2.1.84
+
+2023-08-17 09:49
+
+#### NEW
+
+- Shortdate format config options (run `doing config update` and see the new `shortdate_format` section in your config file)
+
### 2.1.83
2023-07-01 12:49
diff --git a/Gemfile.lock b/Gemfile.lock
index 21a177ac..5e3dc9cd 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
- doing (2.1.83)
+ doing (2.1.84)
chronic (~> 0.10, >= 0.10.2)
deep_merge (~> 1.2, >= 1.2.1)
gli (~> 2.20, >= 2.20.1)
diff --git a/README.md b/README.md
index 74642b7a..f3e3152f 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ _If you're one of the rare people like me who find this useful, feel free to
-The current version of `doing` is 2.1.82.
+The current version of `doing` is 2.1.83.
Find all of the documentation in the [doing wiki][wiki].
diff --git a/docs/doc/Array.html b/docs/doc/Array.html
index 5fc2a510..448d7f34 100644
--- a/docs/doc/Array.html
+++ b/docs/doc/Array.html
@@ -350,7 +350,7 @@
diff --git a/docs/doc/BooleanTermParser.html b/docs/doc/BooleanTermParser.html
index 2519baf8..6a8d0230 100644
--- a/docs/doc/BooleanTermParser.html
+++ b/docs/doc/BooleanTermParser.html
@@ -105,7 +105,7 @@ Defined Under Namespace
diff --git a/docs/doc/BooleanTermParser/Clause.html b/docs/doc/BooleanTermParser/Clause.html
index a9221793..fd7e92dc 100644
--- a/docs/doc/BooleanTermParser/Clause.html
+++ b/docs/doc/BooleanTermParser/Clause.html
@@ -283,7 +283,7 @@
diff --git a/docs/doc/BooleanTermParser/Operator.html b/docs/doc/BooleanTermParser/Operator.html
index 4ab45be3..5165d116 100644
--- a/docs/doc/BooleanTermParser/Operator.html
+++ b/docs/doc/BooleanTermParser/Operator.html
@@ -162,7 +162,7 @@
diff --git a/docs/doc/BooleanTermParser/Query.html b/docs/doc/BooleanTermParser/Query.html
index 0b9cd521..d2c619c3 100644
--- a/docs/doc/BooleanTermParser/Query.html
+++ b/docs/doc/BooleanTermParser/Query.html
@@ -407,7 +407,7 @@
diff --git a/docs/doc/BooleanTermParser/QueryParser.html b/docs/doc/BooleanTermParser/QueryParser.html
index 7d90c49e..d4a5b915 100644
--- a/docs/doc/BooleanTermParser/QueryParser.html
+++ b/docs/doc/BooleanTermParser/QueryParser.html
@@ -125,7 +125,7 @@ Overview
diff --git a/docs/doc/BooleanTermParser/QueryTransformer.html b/docs/doc/BooleanTermParser/QueryTransformer.html
index fa3118f8..b817091d 100644
--- a/docs/doc/BooleanTermParser/QueryTransformer.html
+++ b/docs/doc/BooleanTermParser/QueryTransformer.html
@@ -114,7 +114,7 @@
diff --git a/docs/doc/Doing.html b/docs/doc/Doing.html
index 72556bfc..fcc4eada 100644
--- a/docs/doc/Doing.html
+++ b/docs/doc/Doing.html
@@ -122,7 +122,7 @@
VERSION =
- '2.1.83'
+ '2.1.84'
@@ -138,7 +138,7 @@
diff --git a/docs/doc/Doing/ArrayCleanup.html b/docs/doc/Doing/ArrayCleanup.html
index f0bb1f80..f27ff16c 100644
--- a/docs/doc/Doing/ArrayCleanup.html
+++ b/docs/doc/Doing/ArrayCleanup.html
@@ -306,7 +306,7 @@
diff --git a/docs/doc/Doing/ArrayNestedHash.html b/docs/doc/Doing/ArrayNestedHash.html
index a30339f4..e934d7d7 100644
--- a/docs/doc/Doing/ArrayNestedHash.html
+++ b/docs/doc/Doing/ArrayNestedHash.html
@@ -188,7 +188,7 @@
diff --git a/docs/doc/Doing/ArrayTags.html b/docs/doc/Doing/ArrayTags.html
index 23ce1922..9e9207fb 100644
--- a/docs/doc/Doing/ArrayTags.html
+++ b/docs/doc/Doing/ArrayTags.html
@@ -414,7 +414,7 @@
- #resolve_key_path(keypath, create: false, distance: 2) ⇒ Array
+ #resolve_key_path(keypath, create: false, distance: 2, exact: false) ⇒ Array
@@ -1013,7 +1022,7 @@
- #resolve_key_path(keypath, create: false, distance: 2) ⇒ Array
+ #resolve_key_path(keypath, create: false, distance: 2, exact: false) ⇒ Array
@@ -1219,7 +1228,7 @@
diff --git a/docs/doc/Doing/DayOneRenderer.html b/docs/doc/Doing/DayOneRenderer.html
index ce81a48a..a66227c8 100644
--- a/docs/doc/Doing/DayOneRenderer.html
+++ b/docs/doc/Doing/DayOneRenderer.html
@@ -373,7 +373,7 @@
diff --git a/docs/doc/Doing/DayoneExport.html b/docs/doc/Doing/DayoneExport.html
index b9402185..b42278cd 100644
--- a/docs/doc/Doing/DayoneExport.html
+++ b/docs/doc/Doing/DayoneExport.html
@@ -280,7 +280,7 @@
diff --git a/docs/doc/Doing/DoingExport.html b/docs/doc/Doing/DoingExport.html
index 270f4351..78c867f2 100644
--- a/docs/doc/Doing/DoingExport.html
+++ b/docs/doc/Doing/DoingExport.html
@@ -196,7 +196,7 @@
diff --git a/docs/doc/Doing/DoingImport.html b/docs/doc/Doing/DoingImport.html
index ba9d841c..ec82af11 100644
--- a/docs/doc/Doing/DoingImport.html
+++ b/docs/doc/Doing/DoingImport.html
@@ -381,7 +381,7 @@
diff --git a/docs/doc/Doing/Entry.html b/docs/doc/Doing/Entry.html
index 45fe3098..e532f092 100644
--- a/docs/doc/Doing/Entry.html
+++ b/docs/doc/Doing/Entry.html
@@ -476,7 +476,7 @@
diff --git a/docs/doc/Doing/Errors.html b/docs/doc/Doing/Errors.html
index 9b0d11a7..db2ef9e8 100644
--- a/docs/doc/Doing/Errors.html
+++ b/docs/doc/Doing/Errors.html
@@ -181,7 +181,7 @@
diff --git a/docs/doc/Doing/Errors/DoingNoTraceError.html b/docs/doc/Doing/Errors/DoingNoTraceError.html
index 9e30b284..8c039f09 100644
--- a/docs/doc/Doing/Errors/DoingNoTraceError.html
+++ b/docs/doc/Doing/Errors/DoingNoTraceError.html
@@ -180,7 +180,7 @@
diff --git a/docs/doc/Doing/Errors/DoingRuntimeError.html b/docs/doc/Doing/Errors/DoingRuntimeError.html
index 471a40ea..56e6a8cb 100644
--- a/docs/doc/Doing/Errors/DoingRuntimeError.html
+++ b/docs/doc/Doing/Errors/DoingRuntimeError.html
@@ -180,7 +180,7 @@
diff --git a/docs/doc/Doing/Errors/DoingStandardError.html b/docs/doc/Doing/Errors/DoingStandardError.html
index 394d6c0b..c8d5c2aa 100644
--- a/docs/doc/Doing/Errors/DoingStandardError.html
+++ b/docs/doc/Doing/Errors/DoingStandardError.html
@@ -176,7 +176,7 @@
diff --git a/docs/doc/Doing/Errors/EmptyInput.html b/docs/doc/Doing/Errors/EmptyInput.html
index 093853e3..bde495ac 100644
--- a/docs/doc/Doing/Errors/EmptyInput.html
+++ b/docs/doc/Doing/Errors/EmptyInput.html
@@ -184,7 +184,7 @@
diff --git a/docs/doc/Doing/Errors/HistoryLimitError.html b/docs/doc/Doing/Errors/HistoryLimitError.html
index 4dece4d2..38a2f7e7 100644
--- a/docs/doc/Doing/Errors/HistoryLimitError.html
+++ b/docs/doc/Doing/Errors/HistoryLimitError.html
@@ -184,7 +184,7 @@
diff --git a/docs/doc/Doing/Errors/InvalidPlugin.html b/docs/doc/Doing/Errors/InvalidPlugin.html
index f4a9d4c5..43d973ab 100644
--- a/docs/doc/Doing/Errors/InvalidPlugin.html
+++ b/docs/doc/Doing/Errors/InvalidPlugin.html
@@ -184,7 +184,7 @@
diff --git a/docs/doc/Doing/Errors/MissingBackupFile.html b/docs/doc/Doing/Errors/MissingBackupFile.html
index 64e8c781..3cf3b477 100644
--- a/docs/doc/Doing/Errors/MissingBackupFile.html
+++ b/docs/doc/Doing/Errors/MissingBackupFile.html
@@ -184,7 +184,7 @@
diff --git a/docs/doc/Doing/Errors/NoResults.html b/docs/doc/Doing/Errors/NoResults.html
index fbbb1a15..0cef4972 100644
--- a/docs/doc/Doing/Errors/NoResults.html
+++ b/docs/doc/Doing/Errors/NoResults.html
@@ -184,7 +184,7 @@
diff --git a/docs/doc/Doing/Errors/PluginException.html b/docs/doc/Doing/Errors/PluginException.html
index 19cba53f..ec1839a4 100644
--- a/docs/doc/Doing/Errors/PluginException.html
+++ b/docs/doc/Doing/Errors/PluginException.html
@@ -238,7 +238,7 @@
diff --git a/docs/doc/Doing/Errors/UserCancelled.html b/docs/doc/Doing/Errors/UserCancelled.html
index 719d0d49..fe112100 100644
--- a/docs/doc/Doing/Errors/UserCancelled.html
+++ b/docs/doc/Doing/Errors/UserCancelled.html
@@ -184,7 +184,7 @@
diff --git a/docs/doc/Doing/Errors/WrongCommand.html b/docs/doc/Doing/Errors/WrongCommand.html
index c936caad..2c2d515f 100644
--- a/docs/doc/Doing/Errors/WrongCommand.html
+++ b/docs/doc/Doing/Errors/WrongCommand.html
@@ -184,7 +184,7 @@
diff --git a/docs/doc/Doing/HTMLExport.html b/docs/doc/Doing/HTMLExport.html
index ee351d18..af957e00 100644
--- a/docs/doc/Doing/HTMLExport.html
+++ b/docs/doc/Doing/HTMLExport.html
@@ -246,7 +246,7 @@
diff --git a/docs/doc/Doing/Hooks.html b/docs/doc/Doing/Hooks.html
index c8fe0b94..83c1731d 100644
--- a/docs/doc/Doing/Hooks.html
+++ b/docs/doc/Doing/Hooks.html
@@ -354,7 +354,7 @@
diff --git a/docs/doc/Doing/Item.html b/docs/doc/Doing/Item.html
index e017b791..6103d043 100644
--- a/docs/doc/Doing/Item.html
+++ b/docs/doc/Doing/Item.html
@@ -991,7 +991,7 @@
diff --git a/docs/doc/Doing/ItemDates.html b/docs/doc/Doing/ItemDates.html
index 6dc09729..c16a10d6 100644
--- a/docs/doc/Doing/ItemDates.html
+++ b/docs/doc/Doing/ItemDates.html
@@ -554,7 +554,7 @@
diff --git a/docs/doc/Doing/ItemQuery.html b/docs/doc/Doing/ItemQuery.html
index 1061a34c..b4391e48 100644
--- a/docs/doc/Doing/ItemQuery.html
+++ b/docs/doc/Doing/ItemQuery.html
@@ -685,7 +685,7 @@
diff --git a/docs/doc/Doing/ItemState.html b/docs/doc/Doing/ItemState.html
index 04bdf1e3..32f84fd8 100644
--- a/docs/doc/Doing/ItemState.html
+++ b/docs/doc/Doing/ItemState.html
@@ -377,7 +377,7 @@
diff --git a/docs/doc/Doing/ItemTags.html b/docs/doc/Doing/ItemTags.html
index e89cf585..a97c3330 100644
--- a/docs/doc/Doing/ItemTags.html
+++ b/docs/doc/Doing/ItemTags.html
@@ -488,7 +488,7 @@
diff --git a/docs/doc/Doing/Items.html b/docs/doc/Doing/Items.html
index 5d445524..27e4e4c1 100644
--- a/docs/doc/Doing/Items.html
+++ b/docs/doc/Doing/Items.html
@@ -1792,7 +1792,7 @@
diff --git a/docs/doc/Doing/JSONExport.html b/docs/doc/Doing/JSONExport.html
index 6fd722e5..f54247e8 100644
--- a/docs/doc/Doing/JSONExport.html
+++ b/docs/doc/Doing/JSONExport.html
@@ -212,7 +212,7 @@
diff --git a/docs/doc/Doing/JSONImport.html b/docs/doc/Doing/JSONImport.html
index cd7c64dc..5e959bfb 100644
--- a/docs/doc/Doing/JSONImport.html
+++ b/docs/doc/Doing/JSONImport.html
@@ -285,7 +285,7 @@
diff --git a/docs/doc/Doing/Logger.html b/docs/doc/Doing/Logger.html
index 495b8679..add8743e 100644
--- a/docs/doc/Doing/Logger.html
+++ b/docs/doc/Doing/Logger.html
@@ -1797,7 +1797,7 @@
diff --git a/docs/doc/Doing/MarkdownExport.html b/docs/doc/Doing/MarkdownExport.html
index 8f8095f2..fe9c32f7 100644
--- a/docs/doc/Doing/MarkdownExport.html
+++ b/docs/doc/Doing/MarkdownExport.html
@@ -256,7 +256,7 @@
diff --git a/docs/doc/Doing/Note.html b/docs/doc/Doing/Note.html
index 4a5dce8e..1a6004a5 100644
--- a/docs/doc/Doing/Note.html
+++ b/docs/doc/Doing/Note.html
@@ -747,7 +747,7 @@
diff --git a/docs/doc/Doing/Pager.html b/docs/doc/Doing/Pager.html
index 521bc334..683cb7f2 100644
--- a/docs/doc/Doing/Pager.html
+++ b/docs/doc/Doing/Pager.html
@@ -296,7 +296,7 @@
diff --git a/docs/doc/Doing/Plugins.html b/docs/doc/Doing/Plugins.html
index 8b3c403f..40874844 100644
--- a/docs/doc/Doing/Plugins.html
+++ b/docs/doc/Doing/Plugins.html
@@ -1340,7 +1340,7 @@
diff --git a/docs/doc/Doing/Prompt.html b/docs/doc/Doing/Prompt.html
index 9cbb844a..14268b12 100644
--- a/docs/doc/Doing/Prompt.html
+++ b/docs/doc/Doing/Prompt.html
@@ -326,7 +326,7 @@
diff --git a/docs/doc/Doing/PromptChoose.html b/docs/doc/Doing/PromptChoose.html
index dc222547..c9eb97cb 100644
--- a/docs/doc/Doing/PromptChoose.html
+++ b/docs/doc/Doing/PromptChoose.html
@@ -474,7 +474,7 @@
diff --git a/docs/doc/Doing/PromptFZF.html b/docs/doc/Doing/PromptFZF.html
index b4e41409..b9df9005 100644
--- a/docs/doc/Doing/PromptFZF.html
+++ b/docs/doc/Doing/PromptFZF.html
@@ -381,7 +381,7 @@
diff --git a/docs/doc/Doing/PromptInput.html b/docs/doc/Doing/PromptInput.html
index 641ef877..175e704e 100644
--- a/docs/doc/Doing/PromptInput.html
+++ b/docs/doc/Doing/PromptInput.html
@@ -562,7 +562,7 @@
diff --git a/docs/doc/Doing/PromptSTD.html b/docs/doc/Doing/PromptSTD.html
index 0cce00c3..33cc92ae 100644
--- a/docs/doc/Doing/PromptSTD.html
+++ b/docs/doc/Doing/PromptSTD.html
@@ -283,7 +283,7 @@
diff --git a/docs/doc/Doing/PromptYN.html b/docs/doc/Doing/PromptYN.html
index cc2a3815..cc66e048 100644
--- a/docs/doc/Doing/PromptYN.html
+++ b/docs/doc/Doing/PromptYN.html
@@ -227,7 +227,7 @@
diff --git a/docs/doc/Doing/Section.html b/docs/doc/Doing/Section.html
index 30ce6ce6..b1211e2f 100644
--- a/docs/doc/Doing/Section.html
+++ b/docs/doc/Doing/Section.html
@@ -400,7 +400,7 @@
diff --git a/docs/doc/Doing/StringHighlight.html b/docs/doc/Doing/StringHighlight.html
index 824dd8e8..2d60e0b0 100644
--- a/docs/doc/Doing/StringHighlight.html
+++ b/docs/doc/Doing/StringHighlight.html
@@ -523,7 +523,7 @@
diff --git a/docs/doc/Doing/StringNormalize.html b/docs/doc/Doing/StringNormalize.html
index a597a3d4..ae0b0520 100644
--- a/docs/doc/Doing/StringNormalize.html
+++ b/docs/doc/Doing/StringNormalize.html
@@ -1036,7 +1036,7 @@
diff --git a/docs/doc/Doing/StringQuery.html b/docs/doc/Doing/StringQuery.html
index 35eb16b8..3349122f 100644
--- a/docs/doc/Doing/StringQuery.html
+++ b/docs/doc/Doing/StringQuery.html
@@ -771,7 +771,7 @@
diff --git a/docs/doc/Doing/StringTags.html b/docs/doc/Doing/StringTags.html
index 0a0fccb8..e38c74c8 100644
--- a/docs/doc/Doing/StringTags.html
+++ b/docs/doc/Doing/StringTags.html
@@ -874,7 +874,7 @@
diff --git a/docs/doc/Doing/StringTransform.html b/docs/doc/Doing/StringTransform.html
index 5b5af66f..a69facf4 100644
--- a/docs/doc/Doing/StringTransform.html
+++ b/docs/doc/Doing/StringTransform.html
@@ -589,7 +589,7 @@
diff --git a/docs/doc/Doing/StringTruncate.html b/docs/doc/Doing/StringTruncate.html
index 9bcc8918..6311b417 100644
--- a/docs/doc/Doing/StringTruncate.html
+++ b/docs/doc/Doing/StringTruncate.html
@@ -438,7 +438,7 @@
diff --git a/docs/doc/Doing/StringURL.html b/docs/doc/Doing/StringURL.html
index 2fc28f88..80afaa24 100644
--- a/docs/doc/Doing/StringURL.html
+++ b/docs/doc/Doing/StringURL.html
@@ -399,7 +399,7 @@
diff --git a/docs/doc/Doing/SymbolNormalize.html b/docs/doc/Doing/SymbolNormalize.html
index 94e8d065..326061c2 100644
--- a/docs/doc/Doing/SymbolNormalize.html
+++ b/docs/doc/Doing/SymbolNormalize.html
@@ -331,7 +331,7 @@
diff --git a/docs/doc/Doing/TaskPaperExport.html b/docs/doc/Doing/TaskPaperExport.html
index daf78722..54972ede 100644
--- a/docs/doc/Doing/TaskPaperExport.html
+++ b/docs/doc/Doing/TaskPaperExport.html
@@ -212,7 +212,7 @@
diff --git a/docs/doc/Doing/TemplateExport.html b/docs/doc/Doing/TemplateExport.html
index 9f102ed9..008cf5eb 100644
--- a/docs/doc/Doing/TemplateExport.html
+++ b/docs/doc/Doing/TemplateExport.html
@@ -239,7 +239,7 @@
diff --git a/docs/doc/Doing/TemplateString.html b/docs/doc/Doing/TemplateString.html
index 0bea5a13..0c961e44 100644
--- a/docs/doc/Doing/TemplateString.html
+++ b/docs/doc/Doing/TemplateString.html
@@ -802,7 +802,7 @@
diff --git a/docs/doc/Doing/TimingImport.html b/docs/doc/Doing/TimingImport.html
index d73dcbf1..9f6e9335 100644
--- a/docs/doc/Doing/TimingImport.html
+++ b/docs/doc/Doing/TimingImport.html
@@ -275,7 +275,7 @@
diff --git a/docs/doc/Doing/Types.html b/docs/doc/Doing/Types.html
index fa583e93..0d92e420 100644
--- a/docs/doc/Doing/Types.html
+++ b/docs/doc/Doing/Types.html
@@ -241,7 +241,7 @@
diff --git a/docs/doc/Doing/Util.html b/docs/doc/Doing/Util.html
index 101755bb..ca6f157b 100644
--- a/docs/doc/Doing/Util.html
+++ b/docs/doc/Doing/Util.html
@@ -982,7 +982,7 @@
diff --git a/docs/doc/Doing/Util/Backup.html b/docs/doc/Doing/Util/Backup.html
index 5b95fa0c..8774597e 100644
--- a/docs/doc/Doing/Util/Backup.html
+++ b/docs/doc/Doing/Util/Backup.html
@@ -684,7 +684,7 @@
diff --git a/docs/doc/Doing/Version.html b/docs/doc/Doing/Version.html
index 8f450ce1..b6d4dd97 100644
--- a/docs/doc/Doing/Version.html
+++ b/docs/doc/Doing/Version.html
@@ -513,7 +513,7 @@
diff --git a/docs/doc/Doing/WWID.html b/docs/doc/Doing/WWID.html
index f3833f00..8bec648d 100644
--- a/docs/doc/Doing/WWID.html
+++ b/docs/doc/Doing/WWID.html
@@ -5155,7 +5155,7 @@
diff --git a/docs/doc/FalseClass.html b/docs/doc/FalseClass.html
index 68de8d83..57a31410 100644
--- a/docs/doc/FalseClass.html
+++ b/docs/doc/FalseClass.html
@@ -235,7 +235,7 @@
diff --git a/docs/doc/GLI.html b/docs/doc/GLI.html
index fdc3f25d..1549780c 100644
--- a/docs/doc/GLI.html
+++ b/docs/doc/GLI.html
@@ -107,7 +107,7 @@ Defined Under Namespace
diff --git a/docs/doc/GLI/Commands.html b/docs/doc/GLI/Commands.html
index 246677fa..061ae156 100644
--- a/docs/doc/GLI/Commands.html
+++ b/docs/doc/GLI/Commands.html
@@ -107,7 +107,7 @@ Defined Under Namespace
diff --git a/docs/doc/GLI/Commands/Help.html b/docs/doc/GLI/Commands/Help.html
index d6cbdb4b..af66205f 100644
--- a/docs/doc/GLI/Commands/Help.html
+++ b/docs/doc/GLI/Commands/Help.html
@@ -175,7 +175,7 @@
diff --git a/docs/doc/GLI/Commands/MarkdownDocumentListener.html b/docs/doc/GLI/Commands/MarkdownDocumentListener.html
index 0f971c64..2b9351b2 100644
--- a/docs/doc/GLI/Commands/MarkdownDocumentListener.html
+++ b/docs/doc/GLI/Commands/MarkdownDocumentListener.html
@@ -753,7 +753,7 @@
diff --git a/docs/doc/Hash.html b/docs/doc/Hash.html
index b4cc89a2..598f82cf 100644
--- a/docs/doc/Hash.html
+++ b/docs/doc/Hash.html
@@ -1000,7 +1000,7 @@
diff --git a/docs/doc/Numeric.html b/docs/doc/Numeric.html
index 8268508c..254427d7 100644
--- a/docs/doc/Numeric.html
+++ b/docs/doc/Numeric.html
@@ -214,7 +214,7 @@
diff --git a/docs/doc/Object.html b/docs/doc/Object.html
index 89c0b654..441c9092 100644
--- a/docs/doc/Object.html
+++ b/docs/doc/Object.html
@@ -193,7 +193,7 @@
diff --git a/docs/doc/PhraseParser.html b/docs/doc/PhraseParser.html
index 7a7fe8be..87125ff8 100644
--- a/docs/doc/PhraseParser.html
+++ b/docs/doc/PhraseParser.html
@@ -105,7 +105,7 @@ Defined Under Namespace
diff --git a/docs/doc/PhraseParser/Operator.html b/docs/doc/PhraseParser/Operator.html
index 98a98361..835bda5e 100644
--- a/docs/doc/PhraseParser/Operator.html
+++ b/docs/doc/PhraseParser/Operator.html
@@ -162,7 +162,7 @@
diff --git a/docs/doc/PhraseParser/PhraseClause.html b/docs/doc/PhraseParser/PhraseClause.html
index a50b18cc..5eddee1f 100644
--- a/docs/doc/PhraseParser/PhraseClause.html
+++ b/docs/doc/PhraseParser/PhraseClause.html
@@ -293,7 +293,7 @@
diff --git a/docs/doc/PhraseParser/Query.html b/docs/doc/PhraseParser/Query.html
index 58721306..bd4a2f49 100644
--- a/docs/doc/PhraseParser/Query.html
+++ b/docs/doc/PhraseParser/Query.html
@@ -485,7 +485,7 @@
diff --git a/docs/doc/PhraseParser/QueryParser.html b/docs/doc/PhraseParser/QueryParser.html
index 8b2e1cb6..d50066e1 100644
--- a/docs/doc/PhraseParser/QueryParser.html
+++ b/docs/doc/PhraseParser/QueryParser.html
@@ -126,7 +126,7 @@ Overview
diff --git a/docs/doc/PhraseParser/QueryTransformer.html b/docs/doc/PhraseParser/QueryTransformer.html
index b56767f4..74c6048f 100644
--- a/docs/doc/PhraseParser/QueryTransformer.html
+++ b/docs/doc/PhraseParser/QueryTransformer.html
@@ -114,7 +114,7 @@
diff --git a/docs/doc/PhraseParser/TermClause.html b/docs/doc/PhraseParser/TermClause.html
index 22a4edb0..a0ae68af 100644
--- a/docs/doc/PhraseParser/TermClause.html
+++ b/docs/doc/PhraseParser/TermClause.html
@@ -283,7 +283,7 @@
diff --git a/docs/doc/Status.html b/docs/doc/Status.html
index 9a0ae9f4..4acf93e8 100644
--- a/docs/doc/Status.html
+++ b/docs/doc/Status.html
@@ -316,7 +316,7 @@
diff --git a/docs/doc/String.html b/docs/doc/String.html
index 5d0ec239..b809e7aa 100644
--- a/docs/doc/String.html
+++ b/docs/doc/String.html
@@ -679,7 +679,7 @@
diff --git a/docs/doc/Symbol.html b/docs/doc/Symbol.html
index 79c16519..e2c256de 100644
--- a/docs/doc/Symbol.html
+++ b/docs/doc/Symbol.html
@@ -127,7 +127,7 @@ Methods included from
- Generated on Sat Jul 1 13:11:47 2023 by
+ Generated on Thu Aug 17 09:53:01 2023 by
yard
0.9.34 (ruby-3.2.0).
diff --git a/docs/doc/Time.html b/docs/doc/Time.html
index 01e9c170..4874edb4 100644
--- a/docs/doc/Time.html
+++ b/docs/doc/Time.html
@@ -411,7 +411,7 @@
diff --git a/docs/doc/TrueClass.html b/docs/doc/TrueClass.html
index 8e791630..26a4c7cd 100644
--- a/docs/doc/TrueClass.html
+++ b/docs/doc/TrueClass.html
@@ -235,7 +235,7 @@
diff --git a/docs/doc/_index.html b/docs/doc/_index.html
index 8aa8eb5e..4d07e303 100644
--- a/docs/doc/_index.html
+++ b/docs/doc/_index.html
@@ -961,7 +961,7 @@ Namespace Listing A-Z
diff --git a/docs/doc/file.README.html b/docs/doc/file.README.html
index f86986c8..05d68b92 100644
--- a/docs/doc/file.README.html
+++ b/docs/doc/file.README.html
@@ -71,7 +71,7 @@
-
The current version of doing
is <!--VER-->2.1.82<!--END VER-->.
+The current version of doing
is <!--VER-->2.1.83<!--END VER-->.
Find all of the documentation in the doing wiki.
@@ -153,7 +153,7 @@ Changelog
diff --git a/docs/doc/index.html b/docs/doc/index.html
index cc8cf06f..bfef9a66 100644
--- a/docs/doc/index.html
+++ b/docs/doc/index.html
@@ -71,7 +71,7 @@
-The current version of doing
is <!--VER-->2.1.82<!--END VER-->.
+The current version of doing
is <!--VER-->2.1.83<!--END VER-->.
Find all of the documentation in the doing wiki.
@@ -153,7 +153,7 @@ Changelog
diff --git a/docs/doc/top-level-namespace.html b/docs/doc/top-level-namespace.html
index 295a7c93..603cd73e 100644
--- a/docs/doc/top-level-namespace.html
+++ b/docs/doc/top-level-namespace.html
@@ -216,7 +216,7 @@
diff --git a/doing.rdoc b/doing.rdoc
index 238c0ece..56e0532d 100644
--- a/doing.rdoc
+++ b/doing.rdoc
@@ -5,7 +5,7 @@ record of what you've been doing, complete with tag-based time tracking. The
command line tool allows you to add entries, annotate with tags and notes, and
view your entries with myriad options, with a focus on a "natural" language syntax.
-v2.1.83
+v2.1.84
=== Global Options
=== --config_file arg
diff --git a/lib/doing.rb b/lib/doing.rb
index 6c9b17f8..7ec6d248 100644
--- a/lib/doing.rb
+++ b/lib/doing.rb
@@ -106,14 +106,14 @@ def original_options
## @param default A default value to return if the
## provided path returns nil result
##
- def setting(keypath, default = nil)
+ def setting(keypath, default = nil, exact: false)
cfg = config.settings
case keypath
when Array
cfg.dig(*keypath) || default
when String
unless keypath =~ /^[.*]?$/
- real_path = config.resolve_key_path(keypath, create: false)
+ real_path = config.resolve_key_path(keypath, create: false, distance: 0, exact: exact)
return default unless real_path&.count&.positive?
cfg = cfg.dig(*real_path)
diff --git a/lib/doing/configuration.rb b/lib/doing/configuration.rb
index 66f87997..fbb32262 100644
--- a/lib/doing/configuration.rb
+++ b/lib/doing/configuration.rb
@@ -44,6 +44,15 @@ def force_answer
'timer_format' => 'text',
'interval_format' => 'text',
+ 'order' => 'asc',
+
+ 'shortdate_format' => {
+ 'today' => '%_I:%M%P',
+ 'this_week' => '%a %_I:%M%P',
+ 'this_month' => '%m/%d %_I:%M%P',
+ 'older' => '%m/%d/%y %_I:%M%P'
+ },
+
'templates' => {
'default' => {
'date_format' => '%Y-%m-%d %H:%M',
@@ -200,7 +209,7 @@ def fetch(*path, default)
## matched, first match wins)
## @return [Array] ordered array of resolved keys
##
- def resolve_key_path(keypath, create: false, distance: 2)
+ def resolve_key_path(keypath, create: false, distance: 2, exact: false)
cfg = @settings
real_path = []
unless keypath =~ /^[.*]?$/
@@ -211,7 +220,11 @@ def resolve_key_path(keypath, create: false, distance: 2)
new_cfg = nil
if cfg.is_a?(Hash)
- matches = cfg.select { |key, val| key =~ path.to_rx(distance: distance) }
+ matches = if exact
+ cfg.select { |key, _| key == path }
+ else
+ cfg.select { |key, _| key =~ path.to_rx(distance: distance) }
+ end
if matches.count.positive?
shortest = matches.keys.group_by(&:length).min.last[0]
real_path << shortest
diff --git a/lib/doing/template_string.rb b/lib/doing/template_string.rb
index ba1817d0..713c451c 100644
--- a/lib/doing/template_string.rb
+++ b/lib/doing/template_string.rb
@@ -116,7 +116,8 @@ def fill(placeholder, value, wrap_width: 0, color: '', tags_color: '', reset: ''
pad = m['width'].to_i
mark = m['mchar'] || ''
if placeholder == 'shortdate' && m['width'].nil?
- pad = 13
+ fmt_string = Doing.setting('shortdate_format.older', '%m/%d/%y %_I:%M%P', exact: true)
+ pad = Date.today.strftime(fmt_string).length
end
indent = nil
if m['ichar']
diff --git a/lib/doing/time.rb b/lib/doing/time.rb
index ef0ceaca..5179487b 100644
--- a/lib/doing/time.rb
+++ b/lib/doing/time.rb
@@ -12,13 +12,13 @@ class ::Time
#
def relative_date
if self > Date.today.to_time
- strftime('%_I:%M%P')
+ strftime(Doing.setting('shortdate_format.today', '%_I:%M%P', exact: true))
elsif self > (Date.today - 6).to_time
- strftime('%a %_I:%M%P')
+ strftime(Doing.setting('shortdate_format.this_week', '%a %_I:%M%P', exact: true))
elsif year == Date.today.year || (year + 1 == Date.today.year && month > Date.today.month)
- strftime('%m/%d %_I:%M%P')
+ strftime(Doing.setting('shortdate_format.this_month', '%m/%d %_I:%M%P', exact: true))
else
- strftime('%m/%d/%y %_I:%M%P')
+ strftime(Doing.setting('shortdate_format.older', '%m/%d/%y %_I:%M%P', exact: true))
end
end
diff --git a/lib/doing/version.rb b/lib/doing/version.rb
index a324b5f1..e87dacb4 100644
--- a/lib/doing/version.rb
+++ b/lib/doing/version.rb
@@ -1,3 +1,3 @@
module Doing
- VERSION = '2.1.83'
+ VERSION = '2.1.84'
end