d4872f6da3
Optimize the Store::entries() interface
...
The previous iterator was implemented to simply fetch _all_ pathes from
the filesystem, no matter what.
With this implementation, this changes. The iterator now has
functionality to optimize the iteration, if only a subdirectory of the
store is required, for example `$STORE/foo`.
This is done via functionality where the underlying iterator gets
altered.
First of all, the interface was changed to return a `Entries` object,
which itself only covers the libimagstore-internal `PathIterator` type.
This type was changed so that the backend implementation provides an
"PathIterBuilder`, which builds the actual iterator object for the
`PathIterator` type.
The intermediate `StoreIdConstructingIterator` was merged into
`PathIterator` for simplicity.
The `Entries` type got functionality similar to the
`StoreIdIteratorWithStore` type for easier transition to the new API.
This should probably be removed at a later point, though.
As the `walkdir::WalkDir` type is not as nice as it could be, iterators
for two collections in the store could be built like this (untested):
store
.entries()?
.in_collection("foo")
.chain(store.entries()?.in_collection("bar"))
Functionality to exclude subdirectories is not possible with the current
`walkdir::WalkDir` implementation and has to be done during iteration,
with filtering (as usual).
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2018-09-27 12:19:18 +02:00
22d63f0946
Add functionality to create entry at a certain time
2018-07-20 01:37:36 +02:00
664edc7943
Update version string: 0.8.0 -> 0.9.0
2018-05-09 11:39:33 +02:00
2f0a557068
Fix for passing Arc<_> to store interface instead of Box<_>
2018-05-01 21:08:57 +02:00
40688a3c2d
Refactor libimagwiki to fit new store iterator interface
2018-05-01 17:44:01 +02:00
715753ed25
Refactor libimagtodo to fit new store iterator interface
2018-05-01 17:44:01 +02:00
72c83ae3f7
Refactor libimagtimetrack to fit new store iterator interface
2018-05-01 17:44:01 +02:00
08114bbf36
Refactor libimagnotes to fit new store iterator interface
2018-05-01 17:44:00 +02:00
e643f36fa3
Refactor libimaghabit to fit new store iterator interface
2018-05-01 17:44:00 +02:00
bf0bef058d
Refactor libimagdiary to fit new store iterator interface
2018-05-01 17:44:00 +02:00
8f03b4a71a
Refactor libimagcontact to fit new store iterator interface
2018-05-01 17:44:00 +02:00
b3cf96d88b
Refactor error handling, use more error chaining
2018-04-30 17:29:27 +02:00
6d21d8eb49
Update dependency: filters: 0.2 -> 0.3
2018-04-29 10:46:36 +02:00
5f3b7b31e7
Add support for storing email properties
...
We have to move the `Email` type at the bottom of the DeserVcard type
because it contains a table and we must emit tables as last values when
de/serializing.
Maybe this will shoot us in the foot later, but only with TOML I guess.
We'll see. For now, this is good.
For that we need to update a dependency: vobject -> 0.5
2018-04-27 16:57:37 +02:00
0bacfb0a88
Merge pull request #1446 from matthiasbeyer/travis-clippy
...
Travis: clippy
2018-04-26 10:25:45 +02:00
ea80a5a09b
Derive Default for InMemoryFileAbstraction, remove constructor
2018-04-25 19:15:07 +02:00
80c07171aa
Make sure we can deserialize
...
Use default values when field is not there when we deserialize. This
does automatically the right thing.
2018-04-25 13:45:00 +02:00
56c1b78d93
Add getters for DeserVcard helper type
2018-04-25 13:45:00 +02:00
abc142f4b5
Rewrite library
...
libimagcontact stores all contact information in the entry header now.
2018-04-25 12:54:01 +02:00
3eab3af7b0
Remove all libimagentryref usage
2018-04-25 11:30:42 +02:00
55d9b5456f
Adapt to new libimagentryview interface
...
And properly implement Viewer for DiaryViewer
2018-04-24 16:46:15 +02:00
5666ef12d0
Rewrite to not use Store::retrieve_for_module()
2018-04-24 14:01:40 +02:00
2c52957b63
Replace call to retrieve_for_module() with entries()
...
The iterator type handles everything else.
2018-04-24 13:40:42 +02:00
22fb26dc12
Replace Store::retrieve_for_module() with own iterator type
2018-04-24 13:40:42 +02:00
255f4211c9
Rewrite use of iterator with own iterator implementation
2018-04-24 13:40:42 +02:00
9303a72a28
Merge pull request #1436 from matthiasbeyer/imag-log/show-ordered
...
Fix: imag-log show should order by datetime
2018-04-22 15:55:25 +02:00
ee75d2309c
Fix: imag-log show should order by datetime
2018-04-22 14:33:53 +02:00
86b60295ee
Fix: get_youngest_entry_id()
...
We need to reverse the iterator for getting the _youngest_ entry here.
Also seems to fix the issue that imag-diary edit -d <date> did not work
properly.
2018-04-22 14:11:19 +02:00
d2dceb6640
Update version numbers: 0.7.0 -> 0.8.0
2018-04-19 10:05:53 +02:00
4568b1f625
Merge pull request #1380 from matthiasbeyer/minor
...
Minor patches
2018-04-18 16:46:41 +02:00
9daf2cae86
Update dependency: task-hookrs: master -> 0.5
2018-04-18 14:59:26 +02:00
adede7bf26
Remove notion of "main page"
2018-04-18 14:32:23 +02:00
6f16924514
Remove functionality to delete whole wiki
2018-04-18 14:32:09 +02:00
98f8366e4c
Fix documentation in crate metadata
2018-04-17 15:55:08 +02:00
816708a1aa
Add documentation for type
2018-04-16 10:53:23 +02:00
8928f9cb94
Automatically create "index" and link new pages
2018-04-16 10:53:23 +02:00
5e51a77b3f
Add logging output
2018-04-15 10:27:33 +02:00
918d7a76b6
Add Wiki::delete_entry()
2018-04-15 10:27:09 +02:00
2b8a83d9a7
Add entry getter function
2018-04-15 10:27:09 +02:00
c242a362e4
Add id iterator
2018-04-15 10:27:09 +02:00
bb0d4319c3
Initial import: libimagwiki
2018-04-15 10:27:09 +02:00
899f3b9eb9
Update dependency: toml-query: 0.4 -> 0.6
2018-04-15 09:15:16 +02:00
d02b298d5a
Add lints
2018-04-14 00:41:31 +02:00
a40d90fef2
Add lints
2018-04-14 00:41:31 +02:00
ae5c4cf9ba
Fix: view entries sorted
2018-04-13 13:41:02 +02:00
aa32dd1ec2
Add debugging output if kairos fails to parse input
2018-03-23 10:05:58 +01:00
835c003491
Merge pull request #1360 from matthiasbeyer/libimaghabit/create-vs-retrieve
...
Fix: Use retrieve in retrieve variant
2018-03-23 10:03:52 +01:00
30233456df
Fix: Use retrieve in retrieve variant
2018-03-22 21:34:00 +01:00
b62d7eab85
Fix: libimaghabit::habit::HabitTemplate should link created instances to the template
2018-03-22 21:32:58 +01:00
c857f97287
Merge pull request #1357 from matthiasbeyer/libimaghabit/create-vs-retrieve
...
Libimaghabit/create vs retrieve
2018-03-22 21:20:26 +01:00
247b9499a7
Refactor for less verbose code
2018-03-22 14:00:10 +01:00
2232f0153f
Dedup code
2018-03-22 13:54:15 +01:00
964b168f18
Add "retrieve" variants for retrieving instances
...
and fix create implementation to use `Store::create()`, which did the
wrong thing.
2018-03-22 13:51:12 +01:00
45fdeb4e18
Add helper to check whether an instance exists for a date
2018-03-22 13:44:41 +01:00
5d9fd7ab10
Simplify error handling by using linking feature of error-chain
2018-03-12 19:21:48 +01:00
e8ae2fb73e
Add type so that we can serialize a Vcard
2018-03-12 17:45:50 +01:00
65d558727e
Change ref creation to use UID from vcard object
2018-03-12 14:43:02 +01:00
252046583a
Merge pull request #1332 from matthiasbeyer/libimagcontact/all-contacts
...
Implement ContactStore::all_contacts()
2018-03-12 14:17:54 +01:00
8a9b2e9a8f
Fix: use Path::file_stem() instead of Path::file_name()
...
Because we don't want to know the extension of the filename here.
2018-03-12 13:30:31 +01:00
3bf1b6ccec
Implement ContactStore::all_contacts()
2018-03-12 12:52:24 +01:00
8c37fb865a
Rebuild DiaryEntryIterator to be based on StoreIdIterator
...
This patch rebuilds DiaryEntryIterator to be a wrapper around
StoreIdIterator and thus `Diary::entries()` to use `Store::entries` and
not `Store::retrieve_for_module()`.
The `Store::retrieve_for_module()` function is somehow buggy and loads
contents of the files into memory and _somehow_ causes the entries to be
rewritten without newlines.
This bug is fixed by moving away from `Store::retrieve_for_module()`.
2018-03-02 21:25:48 +01:00
Dylan DPC
e7a5e73d25
Update Cargo.toml
2018-02-26 17:04:53 +05:30
b2048b3dcf
Merge pull request #1306 from matthiasbeyer/minor
...
Minor patches
2018-02-20 20:23:41 +01:00
404e9deed2
Add some debug output
2018-02-20 17:29:03 +01:00
585261d468
Add "isflag" support
2018-02-20 17:18:46 +01:00
b9b15957fc
Merge branch 'libimagmail/rewrite-libimagref-api-usage' into libimagentryref/refactor
2018-02-19 12:17:48 +01:00
672873c2f1
Make UniqueContactPathGenerator pub
2018-02-19 12:15:39 +01:00
719daf952b
Refactor libimagcontact for new libimagentryref API
2018-02-19 12:15:39 +01:00
30ad7d89b1
Reimplement libimagmail for new libimagentryref interface
2018-02-19 12:15:22 +01:00
2b26db70ed
Make HabitBuilder derive Debug
2018-02-18 20:03:50 +01:00
50b0ffa6ae
Remove calls to trace_error_exit()
2018-02-12 21:19:48 +01:00
4a4e528aed
Refactor error handling
...
Refactor error handling so we do chain the error with the `?`
operator rather than wrapping it with own types.
Links to other error chains are created with error chain. All unneeded
error kinds were removed.
No API changes.
2018-02-11 23:44:27 +01:00
77be32d80f
Remove "get" iterator, store provides this now
2018-02-11 23:44:27 +01:00
30d2c28a22
Update version string: 0.6.0 -> 0.7.0
2018-02-11 14:22:24 +01:00
3b710e082d
Add missing Cargo.toml metadata
2018-02-10 14:11:46 +01:00
d5a9e4930d
Update dates in license header
...
And add missing header in one file
2018-02-07 02:48:53 +01:00
29e88c5de0
Fix: Header entry setting
...
The header was not set properly. This fixes this bug.
2018-02-06 20:42:43 +01:00
346e5a9444
Add link to toml_query error types
2018-02-06 20:42:43 +01:00
e2e3b4f6e2
Update kairos dependency: 0.1.0-beta-2 -> 0.1.0
2018-02-05 16:20:05 +01:00
da0c1fa594
Rewrite From<> implementations for habit iterators
...
to be generic over all iterators over StoreIds, so they can be build
directly from them.
2018-02-01 16:46:38 +01:00
4d94791b1f
Move date <-> string conversion utility to libimagutil
2018-02-01 09:26:33 +01:00
635d000344
log: 0.4.0-rc.1 -> 0.4.0
2018-01-15 11:21:52 +01:00
f209e12410
Update dependency: log: 0.3.* -> 0.4.0-rc.1
2018-01-15 11:20:07 +01:00
13ff09d8c6
libimagtodo: Replace read with typed read
2018-01-13 01:14:03 +01:00
397f79b238
libimagtimetrack: Replace read with typed read
2018-01-13 01:14:03 +01:00
cb0cb21220
libimagnotes: Replace read with typed read
2018-01-13 01:14:03 +01:00
014b54ad4e
libimaglog: Replace read with typed read
2018-01-13 01:14:03 +01:00
f2b72f4738
libimaghabit: Replace read with typed read
2018-01-13 01:14:03 +01:00
46774d765b
libimagdiary: Replace read with typed read
2018-01-13 01:14:03 +01:00
0c4be78223
Update dependency: toml-query -> 0.6
2018-01-13 01:14:03 +01:00
9a9701fce5
Add flag settings/Contact::is_contact in libimagcontact
2018-01-08 23:46:36 +01:00
1f133eac3b
Use libimagentryutil::isa::Is in libimaghabit
2018-01-08 23:31:10 +01:00
80c460dac9
Transform BookmarkCollection into two traits
...
One trait is implemented on the Store, it retrieves BookmarkCollection
objects.
The other is implemented on `libimagstore::store::Entry` which then
represents a BookmarkCollection.
2018-01-08 15:16:14 +01:00
c0f4a20367
Merge pull request #1200 from matthiasbeyer/refactor-matching-into-command-chaining
...
Refactor matching into command chaining
2018-01-05 15:19:32 +01:00
2c0f35e1a4
Merge pull request #1195 from matthiasbeyer/libimagdiary/support-seconds
...
Add second-support in libimagdiary
2018-01-05 13:54:12 +01:00
dd66936e48
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
a386d50df3
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
e7d5e9ebc2
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
4bb0d0f073
Refactor: Use function chaining instead of matching
2018-01-05 11:37:09 +01:00
dbd9a2faaf
Replace matching with function chaining
2018-01-05 11:37:09 +01:00
c1ff2b14f0
Replace matching with function chaining
2018-01-05 11:37:09 +01:00
57cf5003bd
Move common functionality to utility module
2018-01-05 11:37:09 +01:00
0640bdeb73
Add second-support in libimagdiary
2018-01-04 19:39:07 +01:00
af819f0fca
Remove unneeded "mut"
2018-01-04 19:34:21 +01:00
198e304be9
Initial import of libimaglog implementation
2017-12-25 21:55:04 +01:00
92d4a0237e
Initial import: libimaglog
2017-12-25 21:46:04 +01:00
3c8dd19d11
Update version strings: 0.5.0 -> 0.6.0
2017-12-25 19:17:07 +01:00
0ed636bb06
Refactor libimagrt+libimagstore to pass whole configuration object
...
Before we extracted the store configuration from the configuration
toml::Value object and passed it to the store.
This is unecessary overhead.
Now we pass the whole configuration object and let the store extract the
required values.
2017-12-24 13:52:18 +01:00
840bc86c90
Merge pull request #1178 from matthiasbeyer/libimaghabit/fix-until
...
Fix: Until date is still optional
2017-12-22 14:39:41 +01:00
6246d25c9d
Fix: Until date is still optional
2017-12-22 13:20:11 +01:00
09c9eb6090
Merge pull request #1175 from matthiasbeyer/libimaghabit/remove-unused
...
libimaghabit: Remove unused things
2017-12-22 12:29:50 +01:00
9bf4b9604b
Remove unused variables
2017-12-22 11:03:42 +01:00
90ed0c0e10
Remove unused macro import
2017-12-22 11:02:55 +01:00
96b51280ab
Remove unused imports
2017-12-22 11:01:35 +01:00
cd8f0beae8
Add until-date support
2017-12-22 10:59:27 +01:00
ddf703eaa0
Add HabitTemplate::next_instance_date_after()
...
Rewrite HabitTemplate::next_instance_date() to use the new function
2017-12-19 19:13:12 +01:00
6f244a52ff
Add function to instantiate with a given date
...
Use that function in the `create_instance()` function which was renamed
to `create_instance_today()`.
2017-12-19 19:13:04 +01:00
13e9ee3ffa
Add Habit::next_instance_date()
2017-12-08 14:54:49 +01:00
f81faa3f6a
Make "util" pub
2017-12-08 14:54:49 +01:00
999bdf8d0d
Add HabitTemplate::linked_instances() function
2017-12-08 14:54:49 +01:00
3b319fd4f0
Add HabitInstanceStoreIdIterator::new
2017-12-08 14:54:49 +01:00
30e05d21f9
Add debugging output
2017-12-08 14:54:49 +01:00
90a4139ede
Make builder consuming
2017-12-08 14:54:49 +01:00
dc7a315176
Getter for all instances
2017-12-08 14:54:45 +01:00
b181b488a2
Add extension to check whether an Entry or a StoreId points to a habit instance/template
2017-12-08 14:54:45 +01:00
9af2f34b58
Outsource instance id creation to helper fn
2017-12-08 14:54:45 +01:00
6a13567efc
dependency: kairos: beta-1 -> beta-2
2017-12-08 14:54:45 +01:00
0ffbb2ef1a
Add kairos error chain integration
2017-12-08 14:54:45 +01:00
2c655daa39
Add IsValidHabitObj helper trait
2017-12-08 14:54:45 +01:00
6b33fc9e6f
Update kairos: master -> 0.1.0-beta-1
2017-12-08 14:54:45 +01:00
a6a36455f5
Add recur spec with kairos support
2017-12-08 14:54:41 +01:00
42cabffa64
Implement HabitInstance for Entry
2017-12-08 14:54:41 +01:00
533d97532b
Move date-string conversion utils to util module
2017-12-08 14:54:40 +01:00
a71c9281ec
Initial import
2017-12-08 14:54:40 +01:00
167511afec
Fix formatting and adjust module/lib documentation
...
Also add symlink in module implementation to lib-documentation.
2017-12-08 14:54:40 +01:00
04d5af8d50
Switch to upstream rust-vobject
2017-11-09 11:21:17 +01:00
dfbc69400a
Let ContactData be unpacked and derefd
2017-10-31 19:10:11 +01:00
4fa41faa59
Add iterator for contacts
2017-10-31 19:10:11 +01:00
b05c8c6f6d
Replace search_contact() with all_contacts()
...
We can then use filters to filter out the non relevant ones.
2017-10-31 19:10:11 +01:00
f3d75e97b6
Rely on own clone of rust-vobject
2017-10-31 19:10:10 +01:00
12e8657eb9
Add Contact::is_contact()
2017-10-31 19:09:43 +01:00
f2bd241a59
Add error for header type error
2017-10-31 19:09:43 +01:00
aae19221b6
Impl Contact::get_contact_data()
2017-10-31 19:09:43 +01:00
ce5e7f5252
Impl Store::create_from_path()
2017-10-31 19:09:43 +01:00
c14c19483c
Add lib internal utilities
2017-10-31 19:09:43 +01:00
577f8d313a
Add more error links
2017-10-31 19:09:43 +01:00
04182f5cb6
Add initial layout of code
2017-10-31 19:09:43 +01:00
eaa9ad5993
Add basic documentation on how the lib works
2017-10-31 19:09:43 +01:00
434505f1f0
Initial import of libimagcontact
2017-10-31 19:09:41 +01:00
f82ad2b6d1
Replace uses of try!() macro with "?" operator
2017-10-31 15:04:50 +01:00