Skip to content

Commit ffabedf

Browse files
committed
Add defaults for all block attributes except text, like Draft.js would
1 parent e3f3015 commit ffabedf

File tree

5 files changed

+13
-20
lines changed

5 files changed

+13
-20
lines changed

CHANGELOG.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
55
## Unreleased
66

7+
### Changed
8+
9+
* Assume same block defaults as Draft.js would when attributes are missing: depth = 0, type = unstyled, no entities, no styles ([#110](https://github.com/springload/draftjs_exporter/pull/110)).
10+
711
## [v2.1.5](https://github.com/springload/draftjs_exporter/releases/tag/v2.1.5)
812

913
### Changed
1014

1115
* Minor performance improvements (8% speed-up, 20% lower memory consumption) ([#108](https://github.com/springload/draftjs_exporter/pull/108))
12-
* Assume default block depth of 0 ([#110](https://github.com/springload/draftjs_exporter/pull/110))
1316

1417
### Fixed
1518

draftjs_exporter/html.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ def render(self, content_state=None):
4242
min_depth = 0
4343

4444
for block in blocks:
45-
depth = block.get('depth', 0)
45+
# Assume a depth of 0 if it's not specified, like Draft.js would.
46+
depth = block['depth'] if 'depth' in block else 0
4647
elt = self.render_block(block, entity_map, wrapper_state)
4748

4849
if depth > min_depth:
@@ -59,7 +60,7 @@ def render(self, content_state=None):
5960
return DOM.render(document)
6061

6162
def render_block(self, block, entity_map, wrapper_state):
62-
if block['inlineStyleRanges'] or block['entityRanges']:
63+
if 'inlineStyleRanges' in block and block['inlineStyleRanges'] or 'entityRanges' in block and block['entityRanges']:
6364
content = DOM.create_element()
6465
entity_state = EntityState(self.entity_decorators, entity_map)
6566
style_state = StyleState(self.style_map)

draftjs_exporter/wrapper_state.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ def __str__(self):
8888
return '<WrapperState: %s>' % self.stack
8989

9090
def element_for(self, block, block_content):
91-
type_ = block['type']
92-
depth = block.get('depth', 0)
91+
type_ = block['type'] if 'type' in block else 'unstyled'
92+
depth = block['depth'] if 'depth' in block else 0
9393
options = Options.for_block(self.block_map, type_)
9494
props = dict(options.props)
9595
props['block'] = block

example.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -329,13 +329,7 @@ def style_fallback(props):
329329
}],
330330
"data": {}
331331
}, {
332-
"key": "9fr0j",
333332
"text": "Here are some features worth highlighting:",
334-
"type": "unstyled",
335-
"depth": 0,
336-
"inlineStyleRanges": [],
337-
"entityRanges": [],
338-
"data": {}
339333
}, {
340334
"key": "2mhgt",
341335
"text": "Convert line breaks to <br>\nelements.",

tests/test_html.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
'element': 'li',
1616
'wrapper': ['ul', {'class': 'public-DraftStyleDefault-ul'}]
1717
},
18-
'unstyled': {'element': 'div'}
18+
'unstyled': {'element': 'p'}
1919
},
2020
'style_map': {
2121
'ITALIC': {'element': 'em'},
@@ -293,20 +293,15 @@ def test_render(self):
293293
]
294294
}), '<h1>Header</h1>')
295295

296-
def test_render_no_depth(self):
297-
"""Assume a depth of 0 if it's not specified."""
296+
def test_render_block_defaults(self):
298297
self.assertEqual(self.exporter.render({
299298
'entityMap': {},
300299
'blocks': [
301300
{
302-
'key': '5s7g9',
303-
'text': 'Header',
304-
'type': 'header-one',
305-
'inlineStyleRanges': [],
306-
'entityRanges': []
301+
'text': 'Paragraph',
307302
},
308303
]
309-
}), '<h1>Header</h1>')
304+
}), '<p>Paragraph</p>')
310305

311306
def test_render_empty(self):
312307
self.assertEqual(self.exporter.render({

0 commit comments

Comments
 (0)