aboutsummaryrefslogtreecommitdiffstats
path: root/fuzzycat/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'fuzzycat/utils.py')
-rw-r--r--fuzzycat/utils.py16
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