Commit Graph

41 Commits

Author SHA1 Message Date
SebastianMC 2c3de3d609 Reorganised unit tests locations - moved all of them to a dedicated folder 2024-02-19 08:59:17 +01:00
SebastianMC 958a9b017c #127 - folder and file with the same (base) name advanced sorting support:
- the last-resort default fallback sorting method (which was alphabetical) is extended to give preference to files. In other words, if all the specified sorting levels don't sort two items, the file goes first (if the other item is a folder)
- added explicit syntax to specify `files-first` or `folders-first`
2024-01-25 18:10:36 +01:00
SebastianMC 11d6623191 #123 - sorting by file basename by default (instead of fullname with ext)
- new syntax `a-z.` and `true a-z.` introduced to allow explicitly sorting by filename with ext
2024-01-25 10:47:05 +01:00
SebastianMC 3000da4edc Removed the unfinished partial implementation of overrideTitle functionality 2024-01-22 19:54:15 +01:00
SebastianMC b4d55c8b70 #111 - changed the sorting behavior for items with undefined attributes
- sorting by bookmarks, item w/o bookmark pushed to the bottom in both: asc and desc orders
- sorting by metadata, item w/o metadata pushed to the bottom in both, asc and desc orders
- sorting by creation or modification date, advanced mode: empty folders (or folders having only folder children) are pushed to the bottom, regardless of asc or desc order
2023-11-13 15:48:27 +01:00
SebastianMC a07f55a037 #74 - Integration with Bookmarks core plugin and support for indirect drag & drop arrangement
- completed!
- need to see if additional unit tests can be created
2023-09-28 16:08:24 +02:00
SebastianMC 3c0cc70b03 #74 - Integration with Bookmarks core plugin and support for indirect drag & drop arrangement
- adjusted behavior of by-bookmark-comparator to adhere to the multi-level sorting support implemented in #89 and merged recently to this branch. Basically, each comparator is responsible only for its own comparison and should no fallback into other default comparisons - instead it should return 0, which indicates item which are equal from the perspective of the comparator
2023-09-19 15:50:42 +02:00
SebastianMC 527a03b050 Merge branch 'master' into 74-integration-with-bookmarks-core-plugin
# Conflicts:
#	src/custom-sort/custom-sort.spec.ts
#	src/custom-sort/custom-sort.ts
2023-09-19 15:43:09 +02:00
SebastianMC c5cd18f498 #89 - Support for multi-level sorting
- full runtime handling (application) of multi-level sorting
- full unit tests coverage of new functions
- metadata-based sorting extended to be applicable at each of sorting level, possibly with different metadata + full unit tests coverage
- having the run-time part ready, the missing part is the extending the sorting-spec-processor.ts
2023-09-19 15:34:39 +02:00
SebastianMC a3190cff62 Merge branch 'master' into 74-integration-with-bookmarks-core-plugin
# Conflicts:
#	src/custom-sort/custom-sort.ts
2023-08-29 00:21:47 +02:00
SebastianMC 76ee3dfa62 #89 - Support for multi-level sorting
- fix in comparator by metadata to support multi-level sorting
- update of relevant existing unit tests
2023-08-29 00:17:58 +02:00
SebastianMC 726b3089b7 Merge branch 'master' into 74-integration-with-bookmarks-core-plugin
# Conflicts:
#	src/custom-sort/custom-sort.ts
2023-08-29 00:06:32 +02:00
SebastianMC 8ea694fcf4 #89 - Support for multi-level sorting
- added run-time execution logic for multi-level sorting
- modified the sorter-by-metadata (required change for multi-level sorting)
- adjusted unit tests
- NO NEW UNIT TESTS
- no syntax added to support specification of multi-level (remains to be done)
2023-08-28 23:41:23 +02:00
SebastianMC 879c11b62f Introduction of 'overrideTitle' property for sorting group:
- sorting engine updated
- no dedicated syntax introduced, new feature used only in unit tests
- replaces the simplistic support for secondary sorting level for regexps
- unit tests
2023-08-25 19:10:38 +02:00
SebastianMC 2670cdb613 Fix for head tail regex match logic, when both regexp produce matching groups
- unit tests
2023-08-25 14:43:43 +02:00
SebastianMC eed3a65f08 Merge branch 'master' into 74-integration-with-bookmarks-core-plugin
# Conflicts:
#	src/custom-sort/custom-sort.spec.ts
#	src/custom-sort/custom-sort.ts
2023-08-24 11:25:41 +02:00
SebastianMC 3cc58f69b9 Refactoring of internal processing context plus support for implicit sorting specs
- !!! NO UNIT TESTS ADDED - remember to do it
2023-08-24 11:18:22 +02:00
SebastianMC 45f5918598 Major improvement: added support for determining and applying sort order currently selected in Obsidian UI
- the meaning of CustomSortOrder.standardObsidian changes from a fixed one to what is actually selected in Obsidian UI
- the CustomSortOrder.standardObsidian can be applied at a folder level (as the default for folder) and at a group level (this is a major addition)
- added a mapping of Obsidian UI sorting methods onto internal plugin sorting methods, plus addition of the Obsidian UI logic to push folders to the top unconditionally
- !!! NO NEW UNIT TESTS FOR THIS FEATURE - must add later
- not tested manually, as the commits extraction and pushing is done as part of #88 github issue
2023-08-24 01:11:22 +02:00
SebastianMC 16f5d61818 Merge branch 'master' into 88-technical-aug-23-refactorings 2023-08-24 00:46:11 +02:00
SebastianMC 7a36f46fa8 Merge branch 'master' into 74-integration-with-bookmarks-core-plugin
# Conflicts:
#	src/custom-sort/custom-sort.spec.ts
#	src/custom-sort/custom-sort.ts
2023-08-24 00:40:30 +02:00
SebastianMC 24355ff0a4 Bugfix in sorterByMetadataField - reverse order working correctly now
- fix in unit tests
2023-08-24 00:35:19 +02:00
SebastianMC b1f36156d1 Bugfix in sorterByMetadataField - reverse order working correctly now
- new unit tests
2023-08-24 00:28:24 +02:00
SebastianMC 949b58b5ff Bugfix in sorterByMetadataField - reverse order working correctly now
- new unit tests
2023-08-24 00:15:32 +02:00
SebastianMC 24b37eb87c Bugfix in sorterByMetadataField - reverse order working correctly now
- new unit tests
2023-08-24 00:09:04 +02:00
SebastianMC 5304c9d601 Merge branch 'master' into 74-integration-with-bookmarks-core-plugin
# Conflicts:
#	src/custom-sort/custom-sort.ts
2023-06-30 19:30:59 +02:00
SebastianMC 037ada5a88
79 foldername variable support (#81)
* #79 - parent-folder-name variable support

- introductions of simplistic macros / templating support
- initially only one macro supported: {:%parent-folder-name%:}
  - macro expanded only for plain-text matching rules, ignored for regexp-based rules
  - for children of the root folder the macro is ignored
- unit tests for the new macros.ts
- unit tests for the testable part of updated custom-sort.ts
2023-06-30 19:05:29 +02:00
SebastianMC 05fbb3f05e #74 - Integration with Bookmarks core plugin and support for indirect drag & drop arrangement
- minor code reformatting for easier diff & readability
2023-04-19 17:06:03 +02:00
SebastianMC 99afdebba8 #74 - Integration with Bookmarks core plugin and support for indirect drag & drop arrangement
Tons of updates:
- feature complete
  - context menu for 'bookmark this' and 'bookmark+siblings' for sorting
  - order of bookmarked siblings reflects the current sorting in File Explorer, whatever it is (!!!)
- unit tests probably missing for the additions
- list of TODO: updated in main.ts and other files inline
2023-04-19 16:59:35 +02:00
SebastianMC 71ab76652c #74 - Integration with Bookmarks core plugin and support for indirect drag & drop arrangement
Tons of updates:
- full integration with standard sorting at folder level and at sorting group level
- refined support for implicit sorting for bookmarks plugin integration
- documentation update (partial, sketchy)
2023-04-18 11:35:10 +02:00
SebastianMC 56348006ce #74 - Integration with Bookmarks core plugin and support for indirect drag & drop arrangement
- feature code complete
- not reviewed
- not tested
- no unit tests coverage
2023-04-07 18:40:35 +02:00
SebastianMC aa31bee80c #72 - Advanced sorting by creation date doesn't work correctly
- bug fixed, the behavior of `< advanced created` sorting method corrected
- new unit tests to cover the scenario
2023-04-03 19:05:13 +02:00
SebastianMC bd875fa804 #60 - Simplified integration with obsidian-icon-folder plugin
- extended the parser with support of new lexeme with-icon:, with or w/o parameter
- unit tests
2023-03-01 10:42:35 +01:00
SebastianMC 01af14b174 #60 - Simplified integration with obsidian-icon-folder plugin
- the plugin integration and matching part completed
- unit tests
2023-02-28 23:57:08 +01:00
SebastianMC 0ba423ce4b #45 - Feature: explicit matching of 'starred' items
- new keyword added to support items starred with Obsidian core plugin 'Starred'
  - the keyword is `starred:`
- detection and more user friendly handling of the general error condition when the File Explorer is not available
  - new ribbon status icon shape to indicate the general error plus detailed error logged to the console
2023-01-03 19:09:37 +01:00
SebastianMC ec0049302b
32 feature: wider support of controlled regexp (#41)
#32 - Implementation completed with rich unit tests coverage.

- manual.md contains a simple example of the new feature
- support for undocumented `\[0-3]` for the requester of the feature ;-)
2022-12-18 19:59:58 +01:00
SebastianMC 84a5238814
#35 - Feature: combining of sorting rules (#36)
- full unit tests coverage of the new functionality
- refactor of the parser to allow more flexible syntax and be able to detect more errors
- introduced many new errors recognized by the parser
2022-11-29 11:17:02 +01:00
SebastianMC 581f5e9f36
#29 - Feature: priorities of sorting rules (#31)
- Implementation with full coverage of unit tests
- Documentation update with details about priorities (as an advanced feature, only in manual.md, not in README.md)
2022-11-29 10:17:15 +01:00
SebastianMC fabd586348
#23 feature request sorting notes with metadata (#26)
* #23 - support for sorting by metadata

- added support for grouping items by the presence of specified metadata
  - new keyword `with-metadata:` introduced for that purpose in lexer
  - if metadata field name is omitted, the default `sort-index-value` is used
- added support for sorting items by notes and folders metadata
  - new keyword 'by-metadata:' introduced for that purpose
  - if metadata field name is omitted, the default `sort-index-value` is used (or metadata name inheritance is used)
- unit tests of sorting spec processor extended accordingly
- documentation and code example in README.md 
- extended to also support true alphabetical on metadata fields
- release unnecessary references after sorting completed
2022-11-12 16:18:18 +01:00
SebastianMC 72550fc01d 13 - Feature request: Sort by modification date, treating folder and files equally
- added unit tests coverage the logic of determining dates for folders
2022-09-26 19:00:23 +02:00
SebastianMC c01d069829 Merge from upstream git@github.com:obsidianmd/obsidian-sample-plugin.git
- because of strict null check adjusted the code where necessary
2022-09-13 18:47:39 +02:00
SebastianMC 93daf529d3 First public release of the Obsidian custom sort plugin 2022-08-06 03:15:44 +02:00