diff options
Diffstat (limited to 'fuzzycat/utils.py')
-rw-r--r-- | fuzzycat/utils.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/fuzzycat/utils.py b/fuzzycat/utils.py index 3a4be99..97125ce 100644 --- a/fuzzycat/utils.py +++ b/fuzzycat/utils.py @@ -2,6 +2,7 @@ import collections import itertools +import json import re import string from typing import Any, Callable, DefaultDict, Dict, List, Optional, Sequence @@ -10,6 +11,21 @@ A couple of utilities, may be split up into separate modules. """ +class SetEncoder(json.JSONEncoder): + """ + Helper to encode python sets into JSON lists. + So you can write something like this: + json.dumps({"things": set([1, 2, 3])}, cls=SetEncoder) + """ + def default(self, obj): + """ + Decorate call to standard implementation. + """ + if isinstance(obj, set): + return list(obj) + return json.JSONEncoder.default(self, obj) + + class StringPipeline: """ Minimalistic grouping of functions applied on an input string to produce |