Skip to content

Only keyword keys are supported #1

@tomconnors

Description

@tomconnors

Hi there, thanks for this library!
My application uses some string keys in its state map, which plato currently doesn't support. I started working on adding support for strings, but I figured it would be worth generalizing it further to support any type for a key, plus adding a couple features. Thought I'd run this by you before I get too deep into it:

The keys in local storage would be in this format:

{base-key}[{separator}{type-of-key}:{value-of-key}, ...]": value

So for this map: {:foo {"bar" {{:qux "baz"} ['a 'b 'c]}}}, a separator _, and the base key "base-key", we'd get something like this in local storage:

{ "base-key_kw:foo_str:bar_hm:{:qux "baz"}": "[a b c]" }

Tangentially related features:

  • ability to control depth of paths that go into Local Storage keys. So we could, for instance, choose a depth of 2 and have a map like {:foo {:bar {:baz 3}}} and end up with this in local storage:
{ "base-key_kw:foo_kw:bar": "{:baz 3}" }
  • ability to control whether to put vectors into local storage keys or just serialize the whole thing. Something like {:foo [1 2 3]} could be:
"base-key_kw:foo": "[1 2 3]"

or

"base-key_kw:foo": [],
"base-key_kw:foo_0": 1,
"base-key_kw:foo_1": 2,
"base-key_kw:foo_2": 3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions