Skip to content

Commit aa4cf5d

Browse files
authored
Merge pull request #79 from EmbroidePy/tatarize-json-metadata
Json metadata serializable elements.
2 parents 6a57bd3 + fcadf56 commit aa4cf5d

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

pyembroidery/JsonWriter.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,16 @@ def write(pattern, f, settings=None):
2323
import json
2424
names = get_common_name_dictionary()
2525

26+
metadata = {}
27+
for item in pattern.extras.items():
28+
key, value = item
29+
if isinstance(value, str):
30+
metadata[key] = value
31+
elif isinstance(value, int):
32+
metadata[key] = value
33+
elif isinstance(value, float):
34+
metadata[key] = value
35+
2636
json_normal = {
2737
"threadlist": [
2838
{
@@ -37,6 +47,6 @@ def write(pattern, f, settings=None):
3747
for thread in pattern.threadlist
3848
],
3949
"stitches": [[s[0], s[1], str(decoded_name(names, s[2]))] for s in pattern.stitches],
40-
"extras": pattern.extras
50+
"extras": metadata
4151
}
4252
json.dump(json_normal, f, indent=4)

test/test_color_fileformats.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from pattern_for_tests import *
66

77

8-
class TestConverts(unittest.TestCase):
8+
class TestColorFormats(unittest.TestCase):
99

1010
def test_write_read_col(self):
1111
file1 = "color.col"

test/test_json.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,26 @@
77

88
class TestJson(unittest.TestCase):
99

10+
def test_metadata_write_read_json(self):
11+
file1 = "metadata.json"
12+
pattern = EmbPattern()
13+
for i in range(4, 20):
14+
pattern.add_thread(EmbThread("random"))
15+
pattern.extras['name'] = "My Embroidery."
16+
pattern.extras['bytes'] = b'\00these are bytes'
17+
pattern.extras['bytes2'] = bytearray(b'this is bytearray')
18+
pattern.extras['value'] = 208
19+
write(pattern, file1)
20+
w_pattern = read(file1)
21+
self.assertEqual(w_pattern.extras['name'], "My Embroidery.")
22+
self.assertEqual(w_pattern.extras['value'], 208)
23+
self.assertEqual(len(pattern.threadlist), len(w_pattern.threadlist))
24+
for q in range(0, len(pattern.threadlist)):
25+
self.assertEqual(pattern.threadlist[q], w_pattern.threadlist[q])
26+
27+
self.addCleanup(os.remove, file1)
28+
29+
1030
def test_colors_write_read_json(self):
1131
file1 = "color.json"
1232
for m in range(0, 50):

0 commit comments

Comments
 (0)