punkweb-bb 0.4.1__py3-none-any.whl → 0.4.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
punkweb_bb/bbcode.py CHANGED
@@ -1,71 +1,127 @@
1
1
  import bbcode
2
2
 
3
3
 
4
- def render_color(name, value, options, parent, context):
5
- if "color" in options:
6
- color = options["color"].strip()
7
- return f'<span style="color: {color}">{value}</span>'
8
- return value
4
+ def add_font_tag(parser):
5
+ def _render_font(name, value, options, parent, context):
6
+ if "font" in options:
7
+ font = options["font"].strip()
8
+ return f'<span style="font-family:{font};">{value}</span>'
9
+ return value
10
+
11
+ parser.add_formatter("font", _render_font)
12
+
13
+
14
+ def add_size_tag(parser):
15
+ def _render_size(name, value, options, parent, context):
16
+ if "size" in options:
17
+ size = options["size"].strip()
18
+ return f'<font size="{size}">{value}</font>'
19
+ return value
20
+
21
+ parser.add_formatter("size", _render_size)
22
+
23
+
24
+ def add_color_tag(parser):
25
+ def _render_color(name, value, options, parent, context):
26
+ if "color" in options:
27
+ color = options["color"].strip()
28
+ return f'<span style="color: {color}">{value}</span>'
29
+ return value
30
+
31
+ parser.add_formatter("color", _render_color)
32
+
33
+
34
+ def add_shadow_tag(parser):
35
+ def _render_shadow(name, value, options, parent, context):
36
+ if "shadow" in options:
37
+ shadow = options["shadow"].strip()
38
+ return f'<span id="bbcode-shadow" style="text-shadow: 0px 0px 1em {shadow}">{value}</span>'
39
+ return value
40
+
41
+ parser.add_formatter("shadow", _render_shadow)
42
+
43
+
44
+ def add_url_tag(parser):
45
+ def _render_url(name, value, options, parent, context):
46
+ if "url" in options:
47
+ url = options["url"]
48
+ return f'<a href="{url}">{value}</a>'
49
+ return f'<a href="{value}">{value}</a>'
50
+
51
+ parser.add_formatter(
52
+ "url", _render_url, replace_links=False, replace_cosmetic=False
53
+ )
54
+
55
+
56
+ def add_quote_tag(parser):
57
+ def _render_quote(name, value, options, parent, context):
58
+ if "quote" in options:
59
+ return f'<blockquote><cite>{options["quote"]} said: </cite>{value}</blockquote>'
60
+ return f"<blockquote>{value}</blockquote>"
61
+
62
+ parser.add_formatter(
63
+ "quote", _render_quote, strip=True, swallow_trailing_newline=True
64
+ )
65
+
66
+
67
+ def add_code_tag(parser):
68
+ def _render_code(name, value, options, parent, context):
69
+ if "code" in options:
70
+ language = options["code"].strip()
71
+ return f'<pre><code class="language-{language}">{value}</code></pre>'
72
+ return f"<pre><code>{value}</code></pre>"
73
+
74
+ parser.add_formatter(
75
+ "code",
76
+ _render_code,
77
+ render_embedded=False,
78
+ transform_newlines=False,
79
+ replace_links=False,
80
+ replace_cosmetic=False,
81
+ strip=True,
82
+ swallow_trailing_newline=True,
83
+ )
84
+
85
+
86
+ def add_img_tag(parser):
87
+ def _render_img(name, value, options, parent, context):
88
+ if "width" in options:
89
+ width = options["width"]
90
+ if "height" in options:
91
+ height = options["height"]
92
+
93
+ if "width" in options and "height" in options:
94
+ return (
95
+ f'<img src="{value}" alt="{value}" width="{width}" height="{height}" />'
96
+ )
97
+ elif "width" in options:
98
+ return f'<img src="{value}" alt="{value}" width="{width}" />'
99
+ elif "height" in options:
100
+ return f'<img src="{value}" alt="{value}" height="{height}" />'
101
+
102
+ return f'<img src="{value}" alt="{value}" />'
103
+
104
+ parser.add_formatter(
105
+ "img",
106
+ _render_img,
107
+ render_embedded=False,
108
+ replace_links=False,
109
+ replace_cosmetic=False,
110
+ )
9
111
 
10
112
 
11
- def render_shadow(name, value, options, parent, context):
12
- if "shadow" in options:
13
- shadow = options["shadow"].strip()
14
- return f'<span id="bbcode-shadow" style="text-shadow: 0px 0px 1em {shadow}">{value}</span>'
15
- return value
113
+ def add_spoiler_tag(parser):
114
+ def _render_spoiler(name, value, options, parent, context):
115
+ if "spoiler" in options:
116
+ summary = options["spoiler"]
117
+ return f"<details><summary>{summary}</summary>{value}</details>"
16
118
 
119
+ parser.add_formatter(
120
+ "spoiler", _render_spoiler, strip=True, swallow_trailing_newline=True
121
+ )
17
122
 
18
- def render_font(name, value, options, parent, context):
19
- if "font" in options:
20
- font = options["font"].strip()
21
- return f'<span style="font-family:{font};">{value}</span>'
22
- return value
23
-
24
-
25
- def render_quote(name, value, options, parent, context):
26
- if "quote" in options:
27
- return f'<blockquote><cite>{options["quote"]} said: </cite>{value}</blockquote>'
28
- return f"<blockquote>{value}</blockquote>"
29
-
30
-
31
- def render_code(name, value, options, parent, context):
32
- if "code" in options:
33
- language = options["code"].strip()
34
- return f'<pre><code class="language-{language}">{value}</code></pre>'
35
- return f"<pre><code>{value}</code></pre>"
36
-
37
-
38
- def render_img(name, value, options, parent, context):
39
- if "width" in options:
40
- width = options["width"]
41
- if "height" in options:
42
- height = options["height"]
43
-
44
- if "width" in options and "height" in options:
45
- return f'<img src="{value}" alt="{value}" width="{width}" height="{height}" />'
46
- elif "width" in options:
47
- return f'<img src="{value}" alt="{value}" width="{width}" />'
48
- elif "height" in options:
49
- return f'<img src="{value}" alt="{value}" height="{height}" />'
50
-
51
- return f'<img src="{value}" alt="{value}" />'
52
-
53
-
54
- def render_url(name, value, options, parent, context):
55
- if "url" in options:
56
- url = options["url"]
57
- return f'<a href="{url}">{value}</a>'
58
- return f'<a href="{value}">{value}</a>'
59
-
60
-
61
- def render_size(name, value, options, parent, context):
62
- if "size" in options:
63
- size = options["size"].strip()
64
- return f'<font size="{size}">{value}</font>'
65
- return value
66
-
67
-
68
- def init_default_tags(parser):
123
+
124
+ def init_text_tags(parser):
69
125
  parser.add_simple_formatter("b", "<strong>%(value)s</strong>")
70
126
  parser.add_simple_formatter("i", "<em>%(value)s</em>")
71
127
  parser.add_simple_formatter("u", "<u>%(value)s</u>")
@@ -74,82 +130,97 @@ def init_default_tags(parser):
74
130
  parser.add_simple_formatter("sup", "<sup>%(value)s</sup>")
75
131
  parser.add_simple_formatter("escape", "%(value)s", render_embedded=False)
76
132
 
77
- parser.add_formatter("font", render_font)
78
- parser.add_formatter("color", render_color)
79
- parser.add_formatter("shadow", render_shadow)
80
- parser.add_formatter("url", render_url, replace_links=False, replace_cosmetic=False)
133
+ add_color_tag(parser)
134
+ add_shadow_tag(parser)
135
+ add_font_tag(parser)
136
+ add_url_tag(parser)
137
+
138
+
139
+ def init_alignment_tags(parser):
140
+ parser.add_simple_formatter(
141
+ "center", '<div style="text-align: center">%(value)s</div>'
142
+ )
143
+ parser.add_simple_formatter("left", '<div style="text-align: left">%(value)s</div>')
144
+ parser.add_simple_formatter(
145
+ "right", '<div style="text-align: right">%(value)s</div>'
146
+ )
147
+
148
+
149
+ def init_list_tags(parser):
150
+ parser.add_simple_formatter(
151
+ "ol",
152
+ "<ol>%(value)s</ol>",
153
+ transform_newlines=False,
154
+ strip=True,
155
+ swallow_trailing_newline=True,
156
+ )
157
+ parser.add_simple_formatter(
158
+ "ul",
159
+ "<ul>%(value)s</ul>",
160
+ transform_newlines=False,
161
+ strip=True,
162
+ swallow_trailing_newline=True,
163
+ )
164
+ parser.add_simple_formatter(
165
+ "li",
166
+ "<li>%(value)s</li>",
167
+ newline_closes=True,
168
+ transform_newlines=False,
169
+ same_tag_closes=True,
170
+ strip=True,
171
+ )
172
+
173
+
174
+ def init_default_tags(parser):
175
+ init_text_tags(parser)
176
+ init_alignment_tags(parser)
177
+ init_list_tags(parser)
178
+
179
+ parser.add_simple_formatter("hr", "<hr />", standalone=True)
180
+ add_size_tag(parser)
181
+ add_img_tag(parser)
182
+ add_quote_tag(parser)
183
+ add_code_tag(parser)
184
+ add_spoiler_tag(parser)
81
185
 
82
186
 
83
187
  _parser = None
188
+ _mix_parser = None
84
189
  _shoutbox_parser = None
85
190
 
86
191
 
87
192
  def get_parser():
88
193
  global _parser
89
194
  if _parser is None:
90
- _parser = bbcode.Parser(install_defaults=False)
91
- init_default_tags(_parser)
92
-
93
- _parser.add_simple_formatter("hr", "<hr />", standalone=True)
94
- _parser.add_simple_formatter(
95
- "center", '<div style="text-align: center">%(value)s</div>'
96
- )
97
- _parser.add_simple_formatter(
98
- "left", '<div style="text-align: left">%(value)s</div>'
99
- )
100
- _parser.add_simple_formatter(
101
- "right", '<div style="text-align: right">%(value)s</div>'
102
- )
103
- _parser.add_simple_formatter(
104
- "ol",
105
- "<ol>%(value)s</ol>",
106
- transform_newlines=False,
107
- strip=True,
108
- swallow_trailing_newline=True,
109
- )
110
- _parser.add_simple_formatter(
111
- "ul",
112
- "<ul>%(value)s</ul>",
113
- transform_newlines=False,
114
- strip=True,
115
- swallow_trailing_newline=True,
116
- )
117
- _parser.add_simple_formatter(
118
- "li",
119
- "<li>%(value)s</li>",
120
- newline_closes=True,
121
- transform_newlines=False,
122
- same_tag_closes=True,
123
- strip=True,
124
- )
125
-
126
- _parser.add_formatter("size", render_size)
127
- _parser.add_formatter(
128
- "img",
129
- render_img,
130
- render_embedded=False,
131
- replace_links=False,
132
- replace_cosmetic=False,
133
- )
134
- _parser.add_formatter(
135
- "quote", render_quote, strip=True, swallow_trailing_newline=True
136
- )
137
- _parser.add_formatter(
138
- "code",
139
- render_code,
140
- render_embedded=False,
141
- transform_newlines=False,
195
+ _parser = bbcode.Parser(
196
+ install_defaults=False,
142
197
  replace_links=False,
143
198
  replace_cosmetic=False,
144
- strip=True,
145
- swallow_trailing_newline=True,
146
199
  )
200
+ init_default_tags(_parser)
147
201
  return _parser
148
202
 
149
203
 
150
204
  def get_shoutbox_parser():
151
205
  global _shoutbox_parser
152
206
  if _shoutbox_parser is None:
153
- _shoutbox_parser = bbcode.Parser(install_defaults=False)
154
- init_default_tags(_shoutbox_parser)
207
+ _shoutbox_parser = bbcode.Parser(
208
+ install_defaults=False, replace_links=False, replace_cosmetic=False
209
+ )
210
+ init_text_tags(_shoutbox_parser)
155
211
  return _shoutbox_parser
212
+
213
+
214
+ def get_mix_parser():
215
+ global _mix_parser
216
+ if _mix_parser is None:
217
+ _mix_parser = bbcode.Parser(
218
+ install_defaults=False,
219
+ newline="\n",
220
+ replace_links=False,
221
+ replace_cosmetic=False,
222
+ escape_html=False,
223
+ )
224
+ init_default_tags(_mix_parser)
225
+
226
+ return _mix_parser
@@ -1,32 +1,29 @@
1
1
  /*! SCEditor | (C) 2011-2013, Sam Clarke | sceditor.com/license */
2
2
  html,
3
- body {
3
+ body,
4
+ p,
5
+ code:before,
6
+ table {
4
7
  color: #212529;
5
8
  font-family: Arial, Helvetica sans-serif;
6
9
  font-size: 16px;
7
10
  font-weight: 400;
8
11
  line-height: 1.5;
9
- overflow: visible;
10
- }
11
-
12
- html {
13
- height: 100%;
14
- }
15
-
16
- * {
17
- box-sizing: border-box;
18
- }
19
-
20
- body {
21
12
  margin: 0;
13
+ overflow: visible;
22
14
  padding: 0;
23
15
  }
24
16
 
17
+ *,
25
18
  *:before,
26
19
  *:after {
27
20
  box-sizing: border-box;
28
21
  }
29
22
 
23
+ html {
24
+ height: 100%;
25
+ }
26
+
30
27
  .ios {
31
28
  /* Needed for iOS scrolling bug fix */
32
29
  overflow: auto;
@@ -50,10 +47,14 @@ body.placeholder::before {
50
47
  font-style: italic;
51
48
  }
52
49
 
53
- hr {
54
- border: none;
55
- border-top: 1px solid #ced4da;
56
- margin: 1rem 0;
50
+ table,
51
+ td {
52
+ border: 1px dotted #000;
53
+ empty-cells: show;
54
+ }
55
+
56
+ table td {
57
+ min-width: 5px;
57
58
  }
58
59
 
59
60
  a {
@@ -84,6 +85,22 @@ blockquote cite {
84
85
  font-size: 1rem;
85
86
  }
86
87
 
88
+ hr {
89
+ border: none;
90
+ border-top: 1px solid #ced4da;
91
+ margin: 1rem 0;
92
+ }
93
+
94
+ h1,
95
+ h2,
96
+ h3,
97
+ h4,
98
+ h5,
99
+ h6 {
100
+ padding: 0;
101
+ margin: 0;
102
+ }
103
+
87
104
  /* Prevent empty paragraphs from collapsing */
88
105
  div,
89
106
  p {
@@ -5,7 +5,7 @@ from django import template
5
5
  from django.template.defaultfilters import stringfilter
6
6
  from django.utils.safestring import mark_safe
7
7
 
8
- from punkweb_bb.bbcode import get_parser, get_shoutbox_parser
8
+ from punkweb_bb.bbcode import get_mix_parser, get_parser, get_shoutbox_parser
9
9
  from punkweb_bb.settings import PARSER
10
10
 
11
11
  register = template.Library()
@@ -22,6 +22,12 @@ def render(value):
22
22
  escaped = html.escape(value, quote=False)
23
23
  rendered = md.markdown(escaped, extensions=["markdown.extensions.fenced_code"])
24
24
  return mark_safe(rendered)
25
+ elif PARSER == "mix":
26
+ parser = get_mix_parser()
27
+ escaped = html.escape(value, quote=False)
28
+ rendered = parser.format(escaped)
29
+ rendered = md.markdown(rendered, extensions=["markdown.extensions.fenced_code"])
30
+ return mark_safe(rendered)
25
31
  return value
26
32
 
27
33
 
@@ -32,4 +38,8 @@ def render_shout(value):
32
38
  parser = get_shoutbox_parser()
33
39
  rendered = parser.format(value)
34
40
  return mark_safe(rendered)
41
+ if PARSER == "mix":
42
+ parser = get_shoutbox_parser()
43
+ rendered = parser.format(value)
44
+ return mark_safe(rendered)
35
45
  return value
punkweb_bb/utils.py CHANGED
@@ -11,6 +11,8 @@ def get_editor_widget():
11
11
  return BBCodeEditorWidget()
12
12
  elif PARSER == "markdown":
13
13
  return MarkdownEditorWidget()
14
+ elif PARSER == "mix":
15
+ return MarkdownEditorWidget()
14
16
  return Textarea(attrs={"class": "pw-input"})
15
17
 
16
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: punkweb-bb
3
- Version: 0.4.1
3
+ Version: 0.4.2
4
4
  Summary: Django application that provides a simple and modern forum board software for your Django website.
5
5
  Home-page: https://github.com/Punkweb/PunkwebBB
6
6
  Author: Punkweb
@@ -2,7 +2,7 @@ punkweb_bb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  punkweb_bb/admin.py,sha256=W8f91MenKxds6RUOxL0OkXuoHTGL76zZ-nqZEATPONU,2640
3
3
  punkweb_bb/admin_forms.py,sha256=nvHKaqJx6rJv5G8yzaDcWYU9gsytg9gMJkz79v8bdUc,1414
4
4
  punkweb_bb/apps.py,sha256=GCDLy9B9vumeCsaauQ7LN4FOqE02mXWXECIz8G6KZCQ,207
5
- punkweb_bb/bbcode.py,sha256=AH8x-X4xst0S8Xlyiv18X_RuPAyCGGHEm4H4ChccjM8,4983
5
+ punkweb_bb/bbcode.py,sha256=r0PDZF6L6VoKOm1r-JA9wgi1iKWrjJ9QPcvVZuYOrs0,6499
6
6
  punkweb_bb/context_processors.py,sha256=BEOGvWVukvxJUxWZBIc32ioB-mGqImSEBuhhZjqI2G0,146
7
7
  punkweb_bb/forms.py,sha256=jFW7VDV2tAuHymt_3F20TyWXNq_3ZJ-_KQdeZOk2Sbo,3130
8
8
  punkweb_bb/guests.py,sha256=Nvn4ZVJvQSQs_f-GeSwNn79Qp8ap_CAoXpYfRTqSbxg,467
@@ -15,14 +15,14 @@ punkweb_bb/settings.py,sha256=7ySSAgNiefcdNWtGBPhMh2V8FVnrY7cpdeVIZ5Om7NM,605
15
15
  punkweb_bb/signals.py,sha256=bVdfg942Mwq-fYDZ1Z52Q0V2BCk1lgzGz8JVZFPnzJ8,365
16
16
  punkweb_bb/tests.py,sha256=puvvh789RvK5UxPzol7dFmQPU1dfGPjzjuQ5vka6oT0,26298
17
17
  punkweb_bb/urls.py,sha256=AkTP3VTb6mr0eQU2Wr7C4ZEKvrRDj9mRUFveWOgdE28,2673
18
- punkweb_bb/utils.py,sha256=qxfs8sgWVI55MbAiwfuZ-Ln-v3hRGj_4XhpMbjNCnH0,1568
18
+ punkweb_bb/utils.py,sha256=dtSBMds4xXg_jWxumUfKBXcz_uocDJDtSMnvoBDW_kM,1632
19
19
  punkweb_bb/views.py,sha256=hVys3rHUswD9NS4hL-RN3gIo2SnqY52NKyEoiC2lhOw,18010
20
20
  punkweb_bb/widgets.py,sha256=uIkXnIvYLNncWWyQV069Y2YgeB1m_YG8r5y2ztkdrO8,1502
21
21
  punkweb_bb/__pycache__/__init__.cpython-311.pyc,sha256=3PyxCxoznfadaGt0a7re4j0Ky9z9hblufpcwPB85kK8,161
22
22
  punkweb_bb/__pycache__/admin.cpython-311.pyc,sha256=dNdyvl0j28dlAhcN7nE1KezjP4786itp9rQ3Jq_mooc,3810
23
23
  punkweb_bb/__pycache__/admin_forms.cpython-311.pyc,sha256=ggTP4ngqAlyR1z91zjxh2s5AwzcmRV1EtxTuttZ5aq4,3605
24
24
  punkweb_bb/__pycache__/apps.cpython-311.pyc,sha256=lw328DOwOp1F8FWTFYb3qV1EoBNgRr_Tc4J8DXfIl-I,730
25
- punkweb_bb/__pycache__/bbcode.cpython-311.pyc,sha256=dwVCqvevfi93vv5ROEniMOpcrxjPOnhvsCDnox1gbEQ,6638
25
+ punkweb_bb/__pycache__/bbcode.cpython-311.pyc,sha256=32J8u59U0gHz4ACDuBzVvKyYinh2F-Zmgr8qS-gdmFY,9624
26
26
  punkweb_bb/__pycache__/bbcode_tags.cpython-311.pyc,sha256=QI4BJt5plqLMiAvlVAxibuNONi69PJFQpotpS50olro,8534
27
27
  punkweb_bb/__pycache__/context_processors.cpython-311.pyc,sha256=P7rEsodXonYexbS5vUaUKVJ9tIx1pOVk6NQWVvWNvS8,392
28
28
  punkweb_bb/__pycache__/forms.cpython-311.pyc,sha256=GYifujT3WNioRq9FBFyhNpVpOOYIUJC2u9o4CFidfk8,6735
@@ -39,9 +39,9 @@ punkweb_bb/__pycache__/sitemap.cpython-311.pyc,sha256=GFjuUD20_ikJWj7IFT1Cn7Od-r
39
39
  punkweb_bb/__pycache__/tags.cpython-311.pyc,sha256=nr_Va9Nz8H6kUjxx8mDJi3D4gGo31K92BZKRXHgBFuw,1052
40
40
  punkweb_bb/__pycache__/tests.cpython-311.pyc,sha256=5PSZQVuRWikAHkjKPxn69XWLSHO5PXxzmzSWqG0dOPQ,51701
41
41
  punkweb_bb/__pycache__/urls.cpython-311.pyc,sha256=enGd9gcLCxN77wcy6a7v_WCTut0OWwURscNptONTzPk,3686
42
- punkweb_bb/__pycache__/utils.cpython-311.pyc,sha256=zFY5S4BmYPoiWMVrvaxsvtuabYVjz7cPMZQ4PpKvD0s,2823
42
+ punkweb_bb/__pycache__/utils.cpython-311.pyc,sha256=KlAzhCzyXMiVWZplwzIo4VR9O7KETgR-yjobFhrAecU,2899
43
43
  punkweb_bb/__pycache__/views.cpython-311.pyc,sha256=aA95XS49Ab4c8R6ia_JUqELT03QNsRh-ftkMMLpQVv8,26263
44
- punkweb_bb/__pycache__/widgets.cpython-311.pyc,sha256=gqOCVpoOMIpedui0OQX7kMUnY4Vs2wFt3TLbtUWvkzY,2640
44
+ punkweb_bb/__pycache__/widgets.cpython-311.pyc,sha256=GRDHKCHqMnsUQJez-enP34Dayw0AR0TUPYPrij6QhmM,2640
45
45
  punkweb_bb/migrations/0001_initial.py,sha256=3RGsylygBcWx1kIPhSzOb9v_2yvowsxKfxuSinKKuS0,8950
46
46
  punkweb_bb/migrations/0002_thread_view_count.py,sha256=JJZT53Mp8Ofht3oIi67s-0wzCdpYyu8wOeCi_B8q8Yo,388
47
47
  punkweb_bb/migrations/0003_alter_thread_options.py,sha256=0xwVfSMWs28akDMhMwOdyyuC7JZ47JekkphT8fUCpcA,589
@@ -74,7 +74,7 @@ punkweb_bb/static/punkweb_bb/css/thread-form.css,sha256=9MfqocnamNMjeNJ-w6YTwYbm
74
74
  punkweb_bb/static/punkweb_bb/css/thread.css,sha256=1E7FPNCmvLyOC6xSYmslVho6vde3-t1ex_Hz8GA1k6s,2032
75
75
  punkweb_bb/static/punkweb_bb/css/typography.css,sha256=qbFGBcU-OOe7r41xeW0Gc_9x6yHxhh81XtswmFxgavc,448
76
76
  punkweb_bb/static/punkweb_bb/css/variables.css,sha256=WphZPeJgeqMYy4JYaSTX0gX-JiZh8EJlhieGOGk75DA,1193
77
- punkweb_bb/static/punkweb_bb/editor/bbcode-editor-content.css,sha256=qAjglfH5ePgwlY0an6eC8yvasjKpCjf0KUoeCNg2aZg,1435
77
+ punkweb_bb/static/punkweb_bb/editor/bbcode-editor-content.css,sha256=kVycBvZMkoKFBx9V7f3eOhflK0QbEqpPtsZA_S8Fm6M,1568
78
78
  punkweb_bb/static/punkweb_bb/editor/bbcode-editor-tags.js,sha256=pLgF7lIJnPQXpfqQnkTHBU5tjcvICDHpn2nhvzxwUqA,1624
79
79
  punkweb_bb/static/punkweb_bb/editor/bbcode-editor.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  punkweb_bb/static/punkweb_bb/editor/bbcode-editor.js,sha256=_8McMObUj-Uj37awYk7dc4IQGfGCVYvhfdSFzwohRQU,473
@@ -293,7 +293,7 @@ punkweb_bb/templatetags/can_delete.py,sha256=NiFi_VH3KKaAYxdu9cZXR9gT9SNEeLAxnbx
293
293
  punkweb_bb/templatetags/can_edit.py,sha256=CbnbCcmJkeHZbWbsMn5OmCXMBEa6N1KW6W1dHLQvdWM,133
294
294
  punkweb_bb/templatetags/can_post.py,sha256=6J1ojqqyNX99DBZM30jQiirQxAyY5rMi05QXXQjJB7I,133
295
295
  punkweb_bb/templatetags/humanize_int.py,sha256=C4KmDG0Jv6o8rwT1RXLdWoGLddJxMxgOoRV9I2598AM,248
296
- punkweb_bb/templatetags/render.py,sha256=aiT8zUdQEL9w9bIW7m4-RczSaUluUoeh2ZucEf2iryI,947
296
+ punkweb_bb/templatetags/render.py,sha256=0uhYuB-FWTzIqgVXMdzVb_CS_e68pzrJ1xtMFvhVYeQ,1377
297
297
  punkweb_bb/templatetags/styled_group_name.py,sha256=ybg2SnrXg8nyfZBZOW4L_IV-BlTPrs3EKZ48GsKd-3A,257
298
298
  punkweb_bb/templatetags/styled_username.py,sha256=1bv6_ss8elDtuJosAYBlKagUciUXb_WlA5X8O4mKtLI,202
299
299
  punkweb_bb/templatetags/__pycache__/__init__.cpython-311.pyc,sha256=VEPKwaIhqpKpSSJiotDYngAUdidDzR9PpPiHtKEl1jA,174
@@ -303,14 +303,14 @@ punkweb_bb/templatetags/__pycache__/can_post.cpython-311.pyc,sha256=1IU4-Ar-kwjn
303
303
  punkweb_bb/templatetags/__pycache__/humanize_count.cpython-311.pyc,sha256=UKD6_5RX8YpYpg-LPrgGxBkW56THsbYY51cKTYdKwRY,621
304
304
  punkweb_bb/templatetags/__pycache__/humanize_int.cpython-311.pyc,sha256=csY5ek-bevYVeM91hYFKozuKWXCTXb7M-7Bokwdxhrk,619
305
305
  punkweb_bb/templatetags/__pycache__/markdown.cpython-311.pyc,sha256=gVou8LgnZCf7b5_D52rimaEICsav98nb1YJic10nQyA,1858
306
- punkweb_bb/templatetags/__pycache__/render.cpython-311.pyc,sha256=ZHNy-xp7zeBsVcai7qRvU_PeICLnAO5rPPJKNGYIu18,1899
306
+ punkweb_bb/templatetags/__pycache__/render.cpython-311.pyc,sha256=HSBIb01Aa9FeBDCo6-zimK4o_-jdvlcrGkrEDGWjZVw,2425
307
307
  punkweb_bb/templatetags/__pycache__/shoutbox_bbcode.cpython-311.pyc,sha256=h5Md024xXjG3N574GjQWR8u4c8UsCsiBWP_usQiJUdE,945
308
308
  punkweb_bb/templatetags/__pycache__/shoutbox_render.cpython-311.pyc,sha256=FT-Y3-st8ZLrLNiWWlR308lMi7bmu57YyBpdmF_JEKQ,810
309
309
  punkweb_bb/templatetags/__pycache__/styled_group_name.cpython-311.pyc,sha256=1rXkWaqTzivl0uvVs-UiPHOfvx7rOO4Kce6Elhoer_I,712
310
310
  punkweb_bb/templatetags/__pycache__/styled_username.cpython-311.pyc,sha256=a91ogyUeLdHS9rEU28FWEYeVqcJopjbvPPdnGkmlHKI,628
311
311
  punkweb_bb/templatetags/__pycache__/username.cpython-311.pyc,sha256=GvZkwtrFvkRr1RbxoejyKMmJXr01ABz3lVEwPNq4wxk,626
312
- punkweb_bb-0.4.1.dist-info/LICENSE,sha256=YYysF07B-kyXSO7IWFB9f49ZXa6LIFUTVsR1Ogmhp8s,1507
313
- punkweb_bb-0.4.1.dist-info/METADATA,sha256=W9eOgKixNUN4VigO7cXThoykN11tgT4zFcTRYtCm9Do,5888
314
- punkweb_bb-0.4.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
315
- punkweb_bb-0.4.1.dist-info/top_level.txt,sha256=sWuGdGnk0ejOXiFDzlBqrNs2VbPEx0_i8UwWXn4SuHU,11
316
- punkweb_bb-0.4.1.dist-info/RECORD,,
312
+ punkweb_bb-0.4.2.dist-info/LICENSE,sha256=YYysF07B-kyXSO7IWFB9f49ZXa6LIFUTVsR1Ogmhp8s,1507
313
+ punkweb_bb-0.4.2.dist-info/METADATA,sha256=BBOBKMBfiSmIHsZjAQGR3-w7Z_L_8M3GIO2QpM6WeYA,5888
314
+ punkweb_bb-0.4.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
315
+ punkweb_bb-0.4.2.dist-info/top_level.txt,sha256=sWuGdGnk0ejOXiFDzlBqrNs2VbPEx0_i8UwWXn4SuHU,11
316
+ punkweb_bb-0.4.2.dist-info/RECORD,,