Skip to content

Commit de6fb2b

Browse files
shaileshmishrashaileshmishra
authored andcommitted
✨ supercharged rte added: json_to_html()
1 parent c2544a8 commit de6fb2b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+4498
-3215
lines changed

.talismanrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
threshold: medium

contentstack_utils/__init__.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@
33
# coverage report -m
44
# coverage html -d coveragereport
55
"""
6-
The __init__.py files are required to make Python treat the directories as containing
7-
packages; this is done to prevent directories with a common name, such as string,
8-
from unintentionally hiding valid modules that occur later on the module search path
9-
Used: Safety checks your installed dependencies for known security vulnerabilities
10-
file __init__.py contains package information like
11-
126
__author__, __status__, __version__, __endpoint__ and __email__
137
148
`Your code has been rated at 10.00/10`

contentstack_utils/embedded/item_type.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,6 @@
1010

1111

1212
class ItemType(enum.Enum):
13-
"""
14-
Contains Two option for ItemsType
15-
16-
ENTRY
17-
ASSET
18-
"""
13+
"""Contains Two option for ItemsType => ENTRY and ASSET """
1914
ENTRY = 'entry'
2015
ASSET = 'asset'

contentstack_utils/embedded/styletype.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,7 @@ class StyleType(enum.Enum):
1010

1111
"""
1212
This StyleType contains four options like below.
13-
14-
BLOCK
15-
INLINE
16-
LINK
17-
DISPLAY
18-
DOWNLOAD
13+
BLOCK ,INLINE ,LINK,DISPLAY,DOWNLOAD
1914
"""
2015

2116
BLOCK = 'block'

contentstack_utils/helper/converter.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,3 @@ def convert_style(style) -> StyleType:
1212
return StyleType.DISPLAY
1313
elif style == 'download':
1414
return StyleType.DOWNLOAD
15-

contentstack_utils/helper/metadata.py

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -38,63 +38,28 @@ def __init__(self, text: str, item_type: str, item_uid: str,
3838

3939
@property
4040
def get_text(self):
41-
"""text for embedded objects
42-
43-
Returns:
44-
str : text for embedded objects
45-
"""
4641
return self.text
4742

4843
@property
4944
def get_item_type(self):
50-
"""item_type for embedded objects
51-
52-
Returns:
53-
str : item_type for embedded objects
54-
"""
5545
return self.item_type
5646

5747
@property
5848
def get_item_uid(self):
59-
"""item_uid for embedded objects
60-
61-
Returns:
62-
str : item_uid for embedded objects
63-
"""
6449
return self.item_uid
6550

6651
@property
6752
def get_content_type_uid(self):
68-
"""content_type_uid for embedded objects
69-
70-
Returns:
71-
str : content_type_uid for embedded objects
72-
"""
7353
return self.content_type_uid
7454

7555
@property
7656
def get_style_type(self) -> StyleType:
77-
"""style_type for embedded objects
78-
79-
Returns:
80-
StyleType : style_type for embedded objects
81-
"""
8257
return self.style_type
8358

8459
@property
8560
def get_outer_html(self):
86-
"""outer_html for embedded objects
87-
88-
Returns:
89-
str : outer_html for embedded objects
90-
"""
9161
return self.outer_html
9262

9363
@property
9464
def get_attributes(self):
95-
"""attributes for embedded objects
96-
97-
Returns:
98-
str : attributes for embedded objects
99-
"""
10065
return self.attributes
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from contentstack_utils.render.options import Options
2+
3+
4+
class NodeToHtml:
5+
6+
@staticmethod
7+
def text_node_to_html(node, option: Options):
8+
"""
9+
accepts node type,
10+
on the basis of the node type, generates string
11+
:rtype: str
12+
"""
13+
node_text = node['text']
14+
if 'superscript' in node:
15+
node_text = option.render_mark('superscript', node_text)
16+
if 'subscript' in node:
17+
node_text = option.render_mark('subscript', node_text)
18+
if 'inlineCode' in node:
19+
node_text = option.render_mark('inlineCode', node_text)
20+
if 'strikethrough' in node:
21+
node_text = option.render_mark('strikethrough', node_text)
22+
if 'underline' in node:
23+
node_text = option.render_mark('underline', node_text)
24+
if 'italic' in node:
25+
node_text = option.render_mark('italic', node_text)
26+
if 'bold' in node:
27+
node_text = option.render_mark('bold', node_text)
28+
return node_text
Lines changed: 96 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,117 @@
1-
# pylint: disable=missing-function-docstring
2-
# pylint: disable=missing-docstring
3-
# pylint: disable=too-few-public-methods
41
from contentstack_utils.helper.metadata import Metadata
52

63

7-
def _title_or_uid(embedded_obj: dict) -> str:
4+
def _title_or_uid(_obj: dict) -> str:
85
_title = ""
9-
if embedded_obj is not None:
10-
if 'title' in embedded_obj and len(embedded_obj['title']) != 0:
11-
_title = embedded_obj['title']
12-
elif 'uid' in embedded_obj:
13-
_title = embedded_obj['uid']
6+
if _obj is not None:
7+
if 'title' in _obj and len(_obj['title']) != 0:
8+
_title = _obj['title']
9+
elif 'uid' in _obj:
10+
_title = _obj['uid']
1411
return _title
1512

1613

17-
def _asset_title_or_uid(embedded_obj: dict) -> str:
14+
def _asset_title_or_uid(_obj: dict) -> str:
1815
_title = ""
19-
if embedded_obj is not None:
20-
if 'title' in embedded_obj and len(embedded_obj['title']) != 0:
21-
_title = embedded_obj['title']
22-
elif 'filename' in embedded_obj:
23-
_title = embedded_obj['filename']
24-
elif 'uid' in embedded_obj:
25-
_title = embedded_obj['uid']
16+
if _obj is not None:
17+
if 'title' in _obj and len(_obj['title']) != 0:
18+
_title = _obj['title']
19+
elif 'filename' in _obj:
20+
_title = _obj['filename']
21+
elif 'uid' in _obj:
22+
_title = _obj['uid']
2623
return _title
2724

2825

2926
class Options:
3027

3128
@staticmethod
32-
def render_options(embedded_obj: dict, metadata: Metadata):
29+
def render_options(_obj: dict, metadata: Metadata):
3330
if metadata.style_type.value == 'block':
34-
return '<div><p>' + _title_or_uid(embedded_obj) \
35-
+ '</p><div><p>Content type: <span>' + embedded_obj['_content_type_uid'] \
31+
return '<div><p>' + _title_or_uid(_obj) \
32+
+ '</p><div><p>Content type: <span>' + _obj['_content_type_uid'] \
3633
+ '</span></p></div>'
3734
if metadata.style_type.value == 'inline':
38-
return '<span>' + _title_or_uid(embedded_obj) + '</span>'
35+
return '<span>' + _title_or_uid(_obj) + '</span>'
3936
if metadata.style_type.value == 'link':
40-
return '<a href=' + embedded_obj['url'] + '>' + _title_or_uid(embedded_obj) + '</a>'
37+
return '<a href=' + _obj['url'] + '>' + _title_or_uid(_obj) + '</a>'
4138
if metadata.style_type.value == 'display':
42-
return '<img src=' + embedded_obj['url'] + ' alt=' \
43-
+ _asset_title_or_uid(embedded_obj) + '/>'
39+
return '<img src=' + _obj['url'] + ' alt=' \
40+
+ _asset_title_or_uid(_obj) + '/>'
4441
if metadata.style_type.value == 'download':
45-
return '<a href=' + embedded_obj['url'] + '>' + _asset_title_or_uid(embedded_obj) + '</a>'
42+
return '<a href=' + _obj['url'] + '>' + _asset_title_or_uid(_obj) + '</a>'
4643

44+
@staticmethod
45+
def render_mark(mark_type: str, render_text: str):
46+
if mark_type == 'superscript':
47+
return "<sup>" + render_text + "</sup>"
48+
if mark_type == 'subscript':
49+
return "<sub>" + render_text + "</sub>"
50+
if mark_type == 'inlineCode':
51+
return "<span>" + render_text + "</span>"
52+
if mark_type == 'strikethrough':
53+
return "<strike>" + render_text + "</strike>"
54+
if mark_type == 'underline':
55+
return "<u>" + render_text + "</u>"
56+
if mark_type == 'italic':
57+
return "<em>" + render_text + "</em>"
58+
if mark_type == 'bold':
59+
return "<strong>" + render_text + "</strong>"
60+
else:
61+
return render_text
62+
pass
63+
64+
@staticmethod
65+
def render_node(node_type, node_obj: dict, callback):
66+
inner_html = callback(node_obj['children'])
67+
if node_type == 'p':
68+
return "<p>" + inner_html + "</p>"
69+
if node_type == 'a':
70+
return "<a href=\"" + node_obj["attrs"]["url"] + "\">" + inner_html + "</a>"
71+
if node_type == 'img':
72+
return "<img src=" + "\""+node_obj["attrs"]["url"] + inner_html + "\" />"
73+
if node_type == 'embed':
74+
return "<iframe href=" + node_obj["attrs"]["url"] + ">" + inner_html + "</iframe>"
75+
if node_type == 'h1':
76+
return "<h1>" + inner_html + "</h1>"
77+
if node_type == 'h2':
78+
return "<h2>" + inner_html + "</h2>"
79+
if node_type == 'h3':
80+
return "<h3>" + inner_html + "</h3>"
81+
if node_type == 'h4':
82+
return "<h4>" + inner_html + "</h4>"
83+
if node_type == 'h5':
84+
return "<h5>" + inner_html + "</h5>"
85+
if node_type == 'h6':
86+
return "<h6>" + inner_html + "</h6>"
87+
if node_type == 'ol':
88+
return "<ol>" + inner_html + "</ol>"
89+
if node_type == 'ul':
90+
return "<ul>" + inner_html + "</ul>"
91+
if node_type == 'li':
92+
return "<li>" + inner_html + "</li>"
93+
if node_type == 'hr':
94+
return "<hr />"
95+
if node_type == 'table':
96+
return "<table>" + inner_html + "</table>"
97+
if node_type == 'thead':
98+
return "<thead>" + inner_html + "</thead>"
99+
if node_type == 'tbody':
100+
return "<tbody>" + inner_html + "</tbody>"
101+
if node_type == 'tfoot':
102+
return "<tfoot>" + inner_html + "</tfoot>"
103+
if node_type == 'tr':
104+
return "<tr>" + inner_html + "</tr>"
105+
106+
if node_type == 'th':
107+
return "<th>" + inner_html + "</th>"
108+
if node_type == 'td':
109+
return "<td>" + inner_html + "</td>"
110+
if node_type == 'blockquote':
111+
return "<blockquote>" + inner_html + "</blockquote>"
112+
if node_type == 'code':
113+
return "<code>" + inner_html + "</code>"
114+
if node_type in ['doc', 'reference']:
115+
return inner_html
116+
else:
117+
return inner_html

0 commit comments

Comments
 (0)