ProjectWeb/Html5ToJsConverter.py

Tue, 10 Dec 2024 15:49:01 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:49:01 +0100
branch
eric7
changeset 56
d91d613bba96
parent 54
1b47d2b39f7c
permissions
-rw-r--r--

Updated copyright for 2025.

3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
56
d91d613bba96 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
3 # Copyright (c) 2014 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the HTML5 to JavaScript converter.
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
48
17eb790b9a82 Sorted imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
10 import datetime
17eb790b9a82 Sorted imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
11 import getpass
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import os
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import re
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
50
19050d56699d Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
15 from bs4 import BeautifulSoup
38
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
16 from PyQt6.QtCore import QObject
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
17 from PyQt6.QtWidgets import QDialog
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
19 from .Html5ToJsConverterParameterDialog import Html5ToJsConverterParameterDialog
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 class Html5ToJsConverter(QObject):
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Class implementing the HTML5 to JavaScript converter.
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
26
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 JsTemplate8 = "{0}{1}{2}{3}{4}{5}{6}{7}"
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
28 TagsToIgnore = (
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
29 "head",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
30 "meta",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
31 "noscript",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
32 "script",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
33 "style",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
34 "link",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
35 "no-js",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
36 "title",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
37 "object",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
38 "col",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
39 "colgroup",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
40 "option",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
41 "param",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
42 "audio",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
43 "basefont",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
44 "isindex",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
45 "svg",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
46 "area",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
47 "embed",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
48 "br",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
49 )
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
50
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 def __init__(self, html, parent=None):
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 Constructor
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
54
38
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
55 @param html HTML text to be converted
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
56 @type str
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
57 @param parent reference to the parent object
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
58 @type QObject
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 """
35
a3f1dcf94fe4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
60 super().__init__(parent)
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
61
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.__html = html
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
63
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 def getJavaScript(self):
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 """
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 Public method to get the converted JavaScript text.
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
67
38
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
68 @return JavaScript text
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
69 @rtype str
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 """
54
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
71 dlg = Html5ToJsConverterParameterDialog(parent=self.parent())
38
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
72 if dlg.exec() == QDialog.DialogCode.Accepted:
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 indentation, scriptTags = dlg.getData()
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
74
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.__createSoup()
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
76
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 alreadyDone = list(self.TagsToIgnore)
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
78
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 js = "<script>{0}".format(os.linesep) if scriptTags else ""
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 js += "// {0} by {1}{2}".format(
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 datetime.datetime.now().isoformat().split(".")[0],
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 getpass.getuser(),
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
83 os.linesep,
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 )
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 js += "$(document).ready(function(){" + os.linesep
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
86
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 # step 1: IDs
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
88 js += "/*{0}*/{1}".format("-" * 75, os.linesep)
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 for id_ in self.__getIds():
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 if id_ not in alreadyDone:
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 js += "{0}// {1}{2}".format(
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
92 indentation, "#".join(id_).lower(), os.linesep
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 )
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 js += self.JsTemplate8.format(
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 indentation,
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 "var ",
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
97 re.sub(
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
98 "[^a-z0-9]",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
99 "",
54
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
100 (
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
101 id_[1].lower()
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
102 if len(id_[1]) < 11
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
103 else re.sub("[aeiou]", "", id_[1].lower())
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
104 ),
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
105 ),
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 " = ",
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 '$("#{0}").length'.format(id_[1]),
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 ";",
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 os.linesep,
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
110 os.linesep,
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 )
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 alreadyDone.append(id_)
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
113
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 # step 2: classes
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
115 js += "/*{0}*/{1}".format("-" * 75, os.linesep)
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 for class_ in self.__getClasses():
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 if class_ not in alreadyDone:
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 js += "{0}// {1}{2}".format(
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
119 indentation, ".".join(class_).lower(), os.linesep
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 )
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 js += self.JsTemplate8.format(
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 indentation,
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 "var ",
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
124 re.sub(
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
125 "[^a-z0-9]",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
126 "",
54
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
127 (
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
128 class_[1].lower()
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
129 if len(class_[1]) < 11
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
130 else re.sub("[aeiou]", "", class_[1].lower())
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
131 ),
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
132 ),
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 " = ",
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 '$(".{0}").length'.format(class_[1]),
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 ";",
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 os.linesep,
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
137 os.linesep,
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 )
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 alreadyDone.append(class_)
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
140
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 js += "})"
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 js += "{0}</script>".format(os.linesep) if scriptTags else ""
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 else:
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 js = ""
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 return js.strip()
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
146
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 def __createSoup(self):
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 Private method to get a BeaitifulSoup object with our HTML text.
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 self.__soup = BeautifulSoup(BeautifulSoup(self.__html).prettify())
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
152
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 def __getClasses(self):
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 """
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 Private method to extract all classes of the HTML text.
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
156
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 @return list of tuples containing the tag name and its classes
38
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
158 as a blank separated string
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
159 @rtype list of tuples of (str, str)
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 """
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
161 classes = [
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
162 (t.name, " ".join(t["class"]))
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
163 for t in self.__soup.find_all(True, {"class": True})
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
164 ]
41
836c696f9565 Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 40
diff changeset
165 return sorted(set(classes))
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
166
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 def __getIds(self):
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 """
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 Private method to extract all IDs of the HTML text.
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
170
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 @return list of tuples containing the tag name and its ID
38
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
172 @rtype list of tuples of (str, str)
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 """
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
174 ids = [(t.name, t["id"]) for t in self.__soup.find_all(True, {"id": True})]
41
836c696f9565 Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 40
diff changeset
175 return sorted(set(ids))

eric ide

mercurial