edwh-editorjs 2.3.2__tar.gz → 2.5.0a1__tar.gz
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.
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/.gitignore +1 -0
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/CHANGELOG.md +10 -0
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/PKG-INFO +1 -1
- edwh_editorjs-2.5.0a1/editorjs/__about__.py +1 -0
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/editorjs/blocks.py +35 -3
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/editorjs/core.py +38 -11
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/tests/test_core.py +26 -0
- edwh_editorjs-2.3.2/.github/workflows/build_documentation.yml +0 -36
- edwh_editorjs-2.3.2/.github/workflows/publish_to_pypi.yml +0 -40
- edwh_editorjs-2.3.2/.github/workflows/pytest.yml +0 -30
- edwh_editorjs-2.3.2/editorjs/__about__.py +0 -1
- edwh_editorjs-2.3.2/htmlcov/.gitignore +0 -2
- edwh_editorjs-2.3.2/htmlcov/class_index.html +0 -259
- edwh_editorjs-2.3.2/htmlcov/favicon_32_cb_58284776.png +0 -0
- edwh_editorjs-2.3.2/htmlcov/function_index.html +0 -395
- edwh_editorjs-2.3.2/htmlcov/index.html +0 -132
- edwh_editorjs-2.3.2/htmlcov/keybd_closed_cb_ce680311.png +0 -0
- edwh_editorjs-2.3.2/htmlcov/status.json +0 -1
- edwh_editorjs-2.3.2/htmlcov/style_cb_8e611ae1.css +0 -337
- edwh_editorjs-2.3.2/htmlcov/z_a93c8aeb4b8fa1f9___init___py.html +0 -125
- edwh_editorjs-2.3.2/htmlcov/z_a93c8aeb4b8fa1f9_blocks_py.html +0 -406
- edwh_editorjs-2.3.2/htmlcov/z_a93c8aeb4b8fa1f9_exceptions_py.html +0 -116
- edwh_editorjs-2.3.2/htmlcov/z_a93c8aeb4b8fa1f9_parser_py.html +0 -172
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/README.md +0 -0
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/editorjs/__init__.py +0 -0
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/editorjs/exceptions.py +0 -0
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/editorjs/helpers.py +0 -0
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/editorjs/types.py +0 -0
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/pyproject.toml +0 -0
- {edwh_editorjs-2.3.2 → edwh_editorjs-2.5.0a1}/tests/__init__.py +0 -0
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
4
|
|
|
5
|
+
## v2.4.0 (2024-12-02)
|
|
6
|
+
|
|
7
|
+
### Feature
|
|
8
|
+
|
|
9
|
+
* **image:** Support more options for the image block ([`c74dcce`](https://github.com/educationwarehouse/edwh-editorjs/commit/c74dccef5c1115038f6de0f08250dfa6cff18796))
|
|
10
|
+
|
|
11
|
+
### Fix
|
|
12
|
+
|
|
13
|
+
* Less exceptions, more warnings for better ease-of-use ([`891fca1`](https://github.com/educationwarehouse/edwh-editorjs/commit/891fca198e774c53a8b6365b927a080f61c0b2c8))
|
|
14
|
+
|
|
5
15
|
## v2.3.2 (2024-11-27)
|
|
6
16
|
|
|
7
17
|
### Fix
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: edwh-editorjs
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.5.0a1
|
|
4
4
|
Summary: EditorJS.py
|
|
5
5
|
Project-URL: Homepage, https://github.com/educationwarehouse/edwh-EditorJS
|
|
6
6
|
Author-email: SKevo <skevo.cw@gmail.com>, Robin van der Noord <robin.vdn@educationwarehouse.nl>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.5.0a1"
|
|
@@ -406,7 +406,17 @@ class ImageBlock(EditorJSBlock):
|
|
|
406
406
|
def to_markdown(cls, data: EditorChildData) -> str:
|
|
407
407
|
url = data.get("url", "") or data.get("file", {}).get("url", "")
|
|
408
408
|
caption = data.get("caption", "")
|
|
409
|
-
|
|
409
|
+
|
|
410
|
+
with_border = "1" if data.get("withBorder") else ""
|
|
411
|
+
with_background = "1" if data.get("withBackground") else ""
|
|
412
|
+
stretched = "1" if data.get("stretched") else ""
|
|
413
|
+
|
|
414
|
+
# always custom type so we can render as <figure> instead of markdown2's default (simple <img>)
|
|
415
|
+
return f"""<editorjs type="image" caption="{caption}" border="{with_border}" background="{with_background}" stretched="{stretched}" url="{url}" />\n\n"""
|
|
416
|
+
|
|
417
|
+
@classmethod
|
|
418
|
+
def _caption(cls, node: MDChildNode):
|
|
419
|
+
return node.get("alt") or node.get("caption") or ""
|
|
410
420
|
|
|
411
421
|
@classmethod
|
|
412
422
|
def to_json(cls, node: MDChildNode) -> list[dict]:
|
|
@@ -414,15 +424,37 @@ class ImageBlock(EditorJSBlock):
|
|
|
414
424
|
{
|
|
415
425
|
"type": "image",
|
|
416
426
|
"data": {
|
|
417
|
-
"caption": cls.to_text(node),
|
|
418
427
|
"file": {"url": node.get("url")},
|
|
428
|
+
"caption": cls._caption(node),
|
|
429
|
+
"withBorder": bool(node.get("border", False)),
|
|
430
|
+
"stretched": bool(node.get("stretched", False)),
|
|
431
|
+
"withBackground": bool(node.get("background", False)),
|
|
419
432
|
},
|
|
420
433
|
}
|
|
421
434
|
]
|
|
422
435
|
|
|
423
436
|
@classmethod
|
|
424
437
|
def to_text(cls, node: MDChildNode) -> str:
|
|
425
|
-
|
|
438
|
+
caption = cls._caption(node)
|
|
439
|
+
url = node.get("url")
|
|
440
|
+
|
|
441
|
+
background = node.get("background") or ""
|
|
442
|
+
stretched = node.get("stretched") or ""
|
|
443
|
+
border = node.get("border") or ""
|
|
444
|
+
|
|
445
|
+
return f"""
|
|
446
|
+
<div class="ce-block {stretched and 'ce-block--stretched'}">
|
|
447
|
+
<div class="ce-block__content">
|
|
448
|
+
<div class="cdx-block image-tool image-tool--filled {background and 'image-tool--withBackground'} {stretched and 'image-tool--stretched'} {border and 'image-tool--withBorder'}">
|
|
449
|
+
<div class="image-tool__image">
|
|
450
|
+
<figure>
|
|
451
|
+
<img class="image-tool__image-picture" src="{url}" title="{caption}" alt="{caption}">
|
|
452
|
+
<figcaption>{caption}</figcaption>
|
|
453
|
+
</figure>
|
|
454
|
+
</div>
|
|
455
|
+
</div>
|
|
456
|
+
</div>
|
|
457
|
+
"""
|
|
426
458
|
|
|
427
459
|
|
|
428
460
|
@block("blockquote", "quote")
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import typing as t
|
|
3
|
+
import warnings
|
|
3
4
|
|
|
4
5
|
import markdown2
|
|
5
6
|
import mdast
|
|
6
7
|
from typing_extensions import Self
|
|
7
8
|
|
|
8
9
|
from .blocks import BLOCKS
|
|
10
|
+
from .exceptions import TODO
|
|
9
11
|
from .helpers import unix_timestamp
|
|
10
12
|
from .types import MDRootNode
|
|
11
13
|
|
|
@@ -41,13 +43,26 @@ class EditorJS:
|
|
|
41
43
|
for child in blocks:
|
|
42
44
|
_type = child["type"]
|
|
43
45
|
if not (block := BLOCKS.get(_type)):
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
warnings.warn(
|
|
47
|
+
f"from_json: Unsupported block type `{_type}`",
|
|
48
|
+
category=RuntimeWarning,
|
|
49
|
+
)
|
|
50
|
+
continue
|
|
51
|
+
|
|
52
|
+
try:
|
|
53
|
+
data = child.get("data", {})
|
|
54
|
+
# forward any 'tunes' via data:
|
|
55
|
+
data["tunes"] = data.get("tunes") or child.get("tunes") or {}
|
|
56
|
+
|
|
57
|
+
markdown_items.append(block.to_markdown(data))
|
|
58
|
+
except Exception as e:
|
|
59
|
+
warnings.warn(
|
|
60
|
+
"from_json: Oh oh, unexpected block failure!",
|
|
61
|
+
category=RuntimeWarning,
|
|
62
|
+
source=e,
|
|
63
|
+
)
|
|
64
|
+
# if isinstance(e, TODO):
|
|
65
|
+
# raise e
|
|
51
66
|
|
|
52
67
|
markdown = "".join(markdown_items)
|
|
53
68
|
return cls.from_markdown(markdown)
|
|
@@ -76,9 +91,22 @@ class EditorJS:
|
|
|
76
91
|
for child in self._mdast["children"]:
|
|
77
92
|
_type = child["type"]
|
|
78
93
|
if not (block := BLOCKS.get(_type)):
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
94
|
+
warnings.warn(
|
|
95
|
+
f"to_json: Unsupported block type `{_type}`",
|
|
96
|
+
category=RuntimeWarning,
|
|
97
|
+
)
|
|
98
|
+
continue
|
|
99
|
+
|
|
100
|
+
try:
|
|
101
|
+
blocks.extend(block.to_json(child))
|
|
102
|
+
except Exception as e:
|
|
103
|
+
warnings.warn(
|
|
104
|
+
"to_json: Oh oh, unexpected block failure!",
|
|
105
|
+
category=RuntimeWarning,
|
|
106
|
+
source=e,
|
|
107
|
+
)
|
|
108
|
+
# if isinstance(e, TODO):
|
|
109
|
+
# raise e
|
|
82
110
|
|
|
83
111
|
data = {"time": unix_timestamp(), "blocks": blocks, "version": EDITORJS_VERSION}
|
|
84
112
|
|
|
@@ -107,7 +135,6 @@ class EditorJS:
|
|
|
107
135
|
Export HTML string
|
|
108
136
|
"""
|
|
109
137
|
md = self.to_markdown()
|
|
110
|
-
# todo: deal with custom elements like linktool, attaches
|
|
111
138
|
return self._md.convert(md)
|
|
112
139
|
|
|
113
140
|
def __repr__(self):
|
|
@@ -246,3 +246,29 @@ def test_embed():
|
|
|
246
246
|
print(e.to_markdown())
|
|
247
247
|
print(e.to_html())
|
|
248
248
|
print(e.to_json())
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
def test_image_options():
|
|
252
|
+
json_blocks = r"""{"time":1733155142016,"blocks":[{"id":"e7_WBThzLQ","type":"image","data":{"caption":"border","withBorder":true,"withBackground":false,"stretched":false,"file":{"url":"https://py4web.leiden.dockers.local/img/upload/5.jpg?hash=b39755c8a568cbf45d329e3a3128fb43065b1d1b","name":"kat.jpg","title":"kat","extension":"jpg","size":3682051}}},{"id":"B5qVcjqBuB","type":"image","data":{"caption":"stretch","withBorder":false,"withBackground":false,"stretched":true,"file":{"url":"https://py4web.leiden.dockers.local/img/upload/6.jpg?hash=b39755c8a568cbf45d329e3a3128fb43065b1d1b","name":"kat.jpg","title":"kat","extension":"jpg","size":3682051}}},{"id":"ft32yP2_cv","type":"image","data":{"caption":"background","withBorder":false,"withBackground":true,"stretched":false,"file":{"url":"https://py4web.leiden.dockers.local/img/upload/7.jpg?hash=b39755c8a568cbf45d329e3a3128fb43065b1d1b","name":"kat.jpg","title":"kat","extension":"jpg","size":3682051}}}],"version":"2.30.7"}"""
|
|
253
|
+
|
|
254
|
+
e = EditorJS.from_json(json_blocks)
|
|
255
|
+
|
|
256
|
+
print(e.to_markdown())
|
|
257
|
+
print(e.to_html())
|
|
258
|
+
print(e.to_json())
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
def test_figcaption():
|
|
262
|
+
# md = """"""
|
|
263
|
+
# e = EditorJS.from_markdown(md)
|
|
264
|
+
|
|
265
|
+
js = """{"time":1742471258492,"blocks":[{"id":"ZoA3rbc05C","type":"image","data":{"caption":"Party Time!","withBorder":false,"withBackground":false,"stretched":false,"file":{"url":"https://py4web.leiden.dockers.local/img/upload/23.png?hash=979795a433fc15cb94eccb3159f1f1e4054b1664"}}}],"version":"2.30.7"}"""
|
|
266
|
+
e = EditorJS.from_json(js)
|
|
267
|
+
|
|
268
|
+
html = e.to_html()
|
|
269
|
+
|
|
270
|
+
assert "figcaption" in html
|
|
271
|
+
|
|
272
|
+
print(
|
|
273
|
+
html
|
|
274
|
+
)
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
name: Build documentation
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
release:
|
|
6
|
-
types: [published]
|
|
7
|
-
|
|
8
|
-
jobs:
|
|
9
|
-
build:
|
|
10
|
-
runs-on: ubuntu-latest
|
|
11
|
-
strategy:
|
|
12
|
-
matrix:
|
|
13
|
-
python-version: ['3.10']
|
|
14
|
-
|
|
15
|
-
steps:
|
|
16
|
-
- uses: actions/checkout@v2
|
|
17
|
-
|
|
18
|
-
- name: Set up Python ${{ matrix.python-version }}
|
|
19
|
-
uses: actions/setup-python@v2
|
|
20
|
-
with:
|
|
21
|
-
python-version: ${{ matrix.python-version }}
|
|
22
|
-
|
|
23
|
-
- name: Install dependencies
|
|
24
|
-
run: |
|
|
25
|
-
python -m pip install --upgrade pip
|
|
26
|
-
pip install pdoc
|
|
27
|
-
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
|
28
|
-
- name: Build docs
|
|
29
|
-
run: |
|
|
30
|
-
chmod +x ./scripts/build_documentation.sh
|
|
31
|
-
bash ./scripts/build_documentation.sh
|
|
32
|
-
- name: Deploy
|
|
33
|
-
uses: JamesIves/github-pages-deploy-action@4.1.4
|
|
34
|
-
with:
|
|
35
|
-
branch: documentation
|
|
36
|
-
folder: ./documentation
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
name: Upload Python Package to PyPI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
release:
|
|
5
|
-
types: [published]
|
|
6
|
-
|
|
7
|
-
jobs:
|
|
8
|
-
deploy:
|
|
9
|
-
runs-on: ubuntu-latest
|
|
10
|
-
strategy:
|
|
11
|
-
matrix:
|
|
12
|
-
python-version: ['3.10']
|
|
13
|
-
|
|
14
|
-
steps:
|
|
15
|
-
- uses: actions/checkout@v2
|
|
16
|
-
|
|
17
|
-
- name: Set up Python ${{ matrix.python-version }}
|
|
18
|
-
uses: actions/setup-python@v2
|
|
19
|
-
with:
|
|
20
|
-
python-version: ${{ matrix.python-version }}
|
|
21
|
-
|
|
22
|
-
- name: Install dependencies
|
|
23
|
-
run: |
|
|
24
|
-
python -m pip install --upgrade pip
|
|
25
|
-
python -m pip install pytest
|
|
26
|
-
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
|
27
|
-
|
|
28
|
-
- name: Test with pyTest
|
|
29
|
-
run: |
|
|
30
|
-
python -m pytest -v
|
|
31
|
-
|
|
32
|
-
- name: Build package
|
|
33
|
-
run: |
|
|
34
|
-
bash ./scripts/compile_for_pypi.sh
|
|
35
|
-
|
|
36
|
-
- name: Publish package
|
|
37
|
-
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
|
|
38
|
-
with:
|
|
39
|
-
user: __token__
|
|
40
|
-
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
name: Test with pyTest
|
|
2
|
-
|
|
3
|
-
on: [workflow_dispatch, push, pull_request]
|
|
4
|
-
|
|
5
|
-
jobs:
|
|
6
|
-
deploy:
|
|
7
|
-
runs-on: ubuntu-latest
|
|
8
|
-
strategy:
|
|
9
|
-
matrix:
|
|
10
|
-
python-version: ['3.10']
|
|
11
|
-
fail-fast: false
|
|
12
|
-
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/checkout@v2
|
|
15
|
-
|
|
16
|
-
- name: Set up Python
|
|
17
|
-
uses: actions/setup-python@v2
|
|
18
|
-
with:
|
|
19
|
-
python-version: ${{ matrix.python-version }}
|
|
20
|
-
cache: 'pip'
|
|
21
|
-
|
|
22
|
-
- name: Install dependencies
|
|
23
|
-
run: |
|
|
24
|
-
python -m pip install --upgrade pip
|
|
25
|
-
python -m pip install pytest
|
|
26
|
-
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
|
27
|
-
|
|
28
|
-
- name: Test with pyTest
|
|
29
|
-
run: |
|
|
30
|
-
python -m pytest -v
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.3.2"
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
5
|
-
<title>Coverage report</title>
|
|
6
|
-
<link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
|
|
7
|
-
<link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
|
|
8
|
-
<script src="coverage_html_cb_6fb7b396.js" defer></script>
|
|
9
|
-
</head>
|
|
10
|
-
<body class="indexfile">
|
|
11
|
-
<header>
|
|
12
|
-
<div class="content">
|
|
13
|
-
<h1>Coverage report:
|
|
14
|
-
<span class="pc_cov">76%</span>
|
|
15
|
-
</h1>
|
|
16
|
-
<aside id="help_panel_wrapper">
|
|
17
|
-
<input id="help_panel_state" type="checkbox">
|
|
18
|
-
<label for="help_panel_state">
|
|
19
|
-
<img id="keyboard_icon" src="keybd_closed_cb_ce680311.png" alt="Show/hide keyboard shortcuts">
|
|
20
|
-
</label>
|
|
21
|
-
<div id="help_panel">
|
|
22
|
-
<p class="legend">Shortcuts on this page</p>
|
|
23
|
-
<div class="keyhelp">
|
|
24
|
-
<p>
|
|
25
|
-
<kbd>f</kbd>
|
|
26
|
-
<kbd>n</kbd>
|
|
27
|
-
<kbd>s</kbd>
|
|
28
|
-
<kbd>m</kbd>
|
|
29
|
-
<kbd>x</kbd>
|
|
30
|
-
<kbd>c</kbd>
|
|
31
|
-
change column sorting
|
|
32
|
-
</p>
|
|
33
|
-
<p>
|
|
34
|
-
<kbd>[</kbd>
|
|
35
|
-
<kbd>]</kbd>
|
|
36
|
-
prev/next file
|
|
37
|
-
</p>
|
|
38
|
-
<p>
|
|
39
|
-
<kbd>?</kbd> show/hide this help
|
|
40
|
-
</p>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
</aside>
|
|
44
|
-
<form id="filter_container">
|
|
45
|
-
<input id="filter" type="text" value="" placeholder="filter...">
|
|
46
|
-
<div>
|
|
47
|
-
<input id="hide100" type="checkbox" >
|
|
48
|
-
<label for="hide100">hide covered</label>
|
|
49
|
-
</div>
|
|
50
|
-
</form>
|
|
51
|
-
<h2>
|
|
52
|
-
<a class="button" href="index.html">Files</a>
|
|
53
|
-
<a class="button" href="function_index.html">Functions</a>
|
|
54
|
-
<a class="button current">Classes</a>
|
|
55
|
-
</h2>
|
|
56
|
-
<p class="text">
|
|
57
|
-
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.4">coverage.py v7.6.4</a>,
|
|
58
|
-
created at 2024-10-31 13:29 +0100
|
|
59
|
-
</p>
|
|
60
|
-
</div>
|
|
61
|
-
</header>
|
|
62
|
-
<main id="index">
|
|
63
|
-
<table class="index" data-sortable>
|
|
64
|
-
<thead>
|
|
65
|
-
<tr class="tablehead" title="Click to sort">
|
|
66
|
-
<th id="file" class="name left" aria-sort="none" data-shortcut="f">File<span class="arrows"></span></th>
|
|
67
|
-
<th id="region" class="name left" aria-sort="none" data-default-sort-order="ascending" data-shortcut="n">class<span class="arrows"></span></th>
|
|
68
|
-
<th id="statements" aria-sort="none" data-default-sort-order="descending" data-shortcut="s">statements<span class="arrows"></span></th>
|
|
69
|
-
<th id="missing" aria-sort="none" data-default-sort-order="descending" data-shortcut="m">missing<span class="arrows"></span></th>
|
|
70
|
-
<th id="excluded" aria-sort="none" data-default-sort-order="descending" data-shortcut="x">excluded<span class="arrows"></span></th>
|
|
71
|
-
<th id="coverage" class="right" aria-sort="none" data-shortcut="c">coverage<span class="arrows"></span></th>
|
|
72
|
-
</tr>
|
|
73
|
-
</thead>
|
|
74
|
-
<tbody>
|
|
75
|
-
<tr class="region">
|
|
76
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9___init___py.html">pyeditorjs/__init__.py</a></td>
|
|
77
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
|
|
78
|
-
<td>14</td>
|
|
79
|
-
<td>3</td>
|
|
80
|
-
<td>0</td>
|
|
81
|
-
<td class="right" data-ratio="11 14">79%</td>
|
|
82
|
-
</tr>
|
|
83
|
-
<tr class="region">
|
|
84
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t42">pyeditorjs/blocks.py</a></td>
|
|
85
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t42"><data value='EditorJsBlock'>EditorJsBlock</data></a></td>
|
|
86
|
-
<td>4</td>
|
|
87
|
-
<td>3</td>
|
|
88
|
-
<td>0</td>
|
|
89
|
-
<td class="right" data-ratio="1 4">25%</td>
|
|
90
|
-
</tr>
|
|
91
|
-
<tr class="region">
|
|
92
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t87">pyeditorjs/blocks.py</a></td>
|
|
93
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t87"><data value='HeaderBlock'>HeaderBlock</data></a></td>
|
|
94
|
-
<td>9</td>
|
|
95
|
-
<td>1</td>
|
|
96
|
-
<td>0</td>
|
|
97
|
-
<td class="right" data-ratio="8 9">89%</td>
|
|
98
|
-
</tr>
|
|
99
|
-
<tr class="region">
|
|
100
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t120">pyeditorjs/blocks.py</a></td>
|
|
101
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t120"><data value='ParagraphBlock'>ParagraphBlock</data></a></td>
|
|
102
|
-
<td>2</td>
|
|
103
|
-
<td>0</td>
|
|
104
|
-
<td>0</td>
|
|
105
|
-
<td class="right" data-ratio="2 2">100%</td>
|
|
106
|
-
</tr>
|
|
107
|
-
<tr class="region">
|
|
108
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t134">pyeditorjs/blocks.py</a></td>
|
|
109
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t134"><data value='ListBlock'>ListBlock</data></a></td>
|
|
110
|
-
<td>8</td>
|
|
111
|
-
<td>1</td>
|
|
112
|
-
<td>0</td>
|
|
113
|
-
<td class="right" data-ratio="7 8">88%</td>
|
|
114
|
-
</tr>
|
|
115
|
-
<tr class="region">
|
|
116
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t168">pyeditorjs/blocks.py</a></td>
|
|
117
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t168"><data value='DelimiterBlock'>DelimiterBlock</data></a></td>
|
|
118
|
-
<td>1</td>
|
|
119
|
-
<td>0</td>
|
|
120
|
-
<td>0</td>
|
|
121
|
-
<td class="right" data-ratio="1 1">100%</td>
|
|
122
|
-
</tr>
|
|
123
|
-
<tr class="region">
|
|
124
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t174">pyeditorjs/blocks.py</a></td>
|
|
125
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t174"><data value='ImageBlock'>ImageBlock</data></a></td>
|
|
126
|
-
<td>10</td>
|
|
127
|
-
<td>1</td>
|
|
128
|
-
<td>0</td>
|
|
129
|
-
<td class="right" data-ratio="9 10">90%</td>
|
|
130
|
-
</tr>
|
|
131
|
-
<tr class="region">
|
|
132
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t236">pyeditorjs/blocks.py</a></td>
|
|
133
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t236"><data value='QuoteBlock'>QuoteBlock</data></a></td>
|
|
134
|
-
<td>7</td>
|
|
135
|
-
<td>7</td>
|
|
136
|
-
<td>0</td>
|
|
137
|
-
<td class="right" data-ratio="0 7">0%</td>
|
|
138
|
-
</tr>
|
|
139
|
-
<tr class="region">
|
|
140
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t253">pyeditorjs/blocks.py</a></td>
|
|
141
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t253"><data value='TableBlock'>TableBlock</data></a></td>
|
|
142
|
-
<td>11</td>
|
|
143
|
-
<td>11</td>
|
|
144
|
-
<td>0</td>
|
|
145
|
-
<td class="right" data-ratio="0 11">0%</td>
|
|
146
|
-
</tr>
|
|
147
|
-
<tr class="region">
|
|
148
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t275">pyeditorjs/blocks.py</a></td>
|
|
149
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t275"><data value='CodeBlock'>CodeBlock</data></a></td>
|
|
150
|
-
<td>4</td>
|
|
151
|
-
<td>4</td>
|
|
152
|
-
<td>0</td>
|
|
153
|
-
<td class="right" data-ratio="0 4">0%</td>
|
|
154
|
-
</tr>
|
|
155
|
-
<tr class="region">
|
|
156
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t286">pyeditorjs/blocks.py</a></td>
|
|
157
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t286"><data value='WarningBlock'>WarningBlock</data></a></td>
|
|
158
|
-
<td>6</td>
|
|
159
|
-
<td>6</td>
|
|
160
|
-
<td>0</td>
|
|
161
|
-
<td class="right" data-ratio="0 6">0%</td>
|
|
162
|
-
</tr>
|
|
163
|
-
<tr class="region">
|
|
164
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t304">pyeditorjs/blocks.py</a></td>
|
|
165
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html#t304"><data value='RawBlock'>RawBlock</data></a></td>
|
|
166
|
-
<td>4</td>
|
|
167
|
-
<td>4</td>
|
|
168
|
-
<td>0</td>
|
|
169
|
-
<td class="right" data-ratio="0 4">0%</td>
|
|
170
|
-
</tr>
|
|
171
|
-
<tr class="region">
|
|
172
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html">pyeditorjs/blocks.py</a></td>
|
|
173
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_blocks_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
|
|
174
|
-
<td>80</td>
|
|
175
|
-
<td>0</td>
|
|
176
|
-
<td>0</td>
|
|
177
|
-
<td class="right" data-ratio="80 80">100%</td>
|
|
178
|
-
</tr>
|
|
179
|
-
<tr class="region">
|
|
180
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_exceptions_py.html#t8">pyeditorjs/exceptions.py</a></td>
|
|
181
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_exceptions_py.html#t8"><data value='EditorJsException'>EditorJsException</data></a></td>
|
|
182
|
-
<td>0</td>
|
|
183
|
-
<td>0</td>
|
|
184
|
-
<td>0</td>
|
|
185
|
-
<td class="right" data-ratio="0 0">100%</td>
|
|
186
|
-
</tr>
|
|
187
|
-
<tr class="region">
|
|
188
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_exceptions_py.html#t14">pyeditorjs/exceptions.py</a></td>
|
|
189
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_exceptions_py.html#t14"><data value='EditorJsParseError'>EditorJsParseError</data></a></td>
|
|
190
|
-
<td>0</td>
|
|
191
|
-
<td>0</td>
|
|
192
|
-
<td>0</td>
|
|
193
|
-
<td class="right" data-ratio="0 0">100%</td>
|
|
194
|
-
</tr>
|
|
195
|
-
<tr class="region">
|
|
196
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_exceptions_py.html#t18">pyeditorjs/exceptions.py</a></td>
|
|
197
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_exceptions_py.html#t18"><data value='EditorJSUnsupportedBlock'>EditorJSUnsupportedBlock</data></a></td>
|
|
198
|
-
<td>0</td>
|
|
199
|
-
<td>0</td>
|
|
200
|
-
<td>0</td>
|
|
201
|
-
<td class="right" data-ratio="0 0">100%</td>
|
|
202
|
-
</tr>
|
|
203
|
-
<tr class="region">
|
|
204
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_exceptions_py.html">pyeditorjs/exceptions.py</a></td>
|
|
205
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_exceptions_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
|
|
206
|
-
<td>4</td>
|
|
207
|
-
<td>0</td>
|
|
208
|
-
<td>0</td>
|
|
209
|
-
<td class="right" data-ratio="4 4">100%</td>
|
|
210
|
-
</tr>
|
|
211
|
-
<tr class="region">
|
|
212
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_parser_py.html#t10">pyeditorjs/parser.py</a></td>
|
|
213
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_parser_py.html#t10"><data value='EditorJsParser'>EditorJsParser</data></a></td>
|
|
214
|
-
<td>19</td>
|
|
215
|
-
<td>6</td>
|
|
216
|
-
<td>0</td>
|
|
217
|
-
<td class="right" data-ratio="13 19">68%</td>
|
|
218
|
-
</tr>
|
|
219
|
-
<tr class="region">
|
|
220
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_parser_py.html">pyeditorjs/parser.py</a></td>
|
|
221
|
-
<td class="name left"><a href="z_a93c8aeb4b8fa1f9_parser_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
|
|
222
|
-
<td>15</td>
|
|
223
|
-
<td>0</td>
|
|
224
|
-
<td>0</td>
|
|
225
|
-
<td class="right" data-ratio="15 15">100%</td>
|
|
226
|
-
</tr>
|
|
227
|
-
</tbody>
|
|
228
|
-
<tfoot>
|
|
229
|
-
<tr class="total">
|
|
230
|
-
<td class="name left">Total</td>
|
|
231
|
-
<td class="name left"> </td>
|
|
232
|
-
<td>198</td>
|
|
233
|
-
<td>47</td>
|
|
234
|
-
<td>0</td>
|
|
235
|
-
<td class="right" data-ratio="151 198">76%</td>
|
|
236
|
-
</tr>
|
|
237
|
-
</tfoot>
|
|
238
|
-
</table>
|
|
239
|
-
<p id="no_rows">
|
|
240
|
-
No items found using the specified filter.
|
|
241
|
-
</p>
|
|
242
|
-
</main>
|
|
243
|
-
<footer>
|
|
244
|
-
<div class="content">
|
|
245
|
-
<p>
|
|
246
|
-
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.4">coverage.py v7.6.4</a>,
|
|
247
|
-
created at 2024-10-31 13:29 +0100
|
|
248
|
-
</p>
|
|
249
|
-
</div>
|
|
250
|
-
<aside class="hidden">
|
|
251
|
-
<a id="prevFileLink" class="nav" href=""></a>
|
|
252
|
-
<a id="nextFileLink" class="nav" href=""></a>
|
|
253
|
-
<button type="button" class="button_prev_file" data-shortcut="["></button>
|
|
254
|
-
<button type="button" class="button_next_file" data-shortcut="]"></button>
|
|
255
|
-
<button type="button" class="button_show_hide_help" data-shortcut="?"></button>
|
|
256
|
-
</aside>
|
|
257
|
-
</footer>
|
|
258
|
-
</body>
|
|
259
|
-
</html>
|
|
Binary file
|