ProjectWeb/Html5ToCss3Converter.py

Sat, 26 Oct 2024 17:37:43 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Oct 2024 17:37:43 +0200
branch
eric7
changeset 54
1b47d2b39f7c
parent 52
815847f3d404
child 56
d91d613bba96
permissions
-rw-r--r--

- changed to new style header
- changed code to ensure proper parent relationship of modal dialogs
- included compiled form files

1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
52
815847f3d404 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
3 # Copyright (c) 2014 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the HTML5 to CSS3 converter.
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import datetime
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import getpass
48
17eb790b9a82 Sorted imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 43
diff changeset
12 import os
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import random
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 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
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 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 .Html5ToCss3ConverterParameterDialog import Html5ToCss3ConverterParameterDialog
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 class Html5ToCss3Converter(QObject):
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Class implementing the HTML5 to CSS3 converter.
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 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
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 CssTemplate7 = "{0}{1}{2}{3}{4}{5}{6}"
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 CssTemplate8 = "{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
29 Placeholders = (
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
30 "margin:0",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
31 "padding:0",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
32 "border:0",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
33 "font-size:100%",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
34 "font:inherit",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
35 "vertical-align:baseline",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
36 "line-height:1",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
37 "outline:0",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
38 "font-weight:inherit",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
39 "font-style:inherit",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
40 "font-family:inherit",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
41 "vertical-align:baseline",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
42 )
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
43 TagsToIgnore = (
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
44 "head",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
45 "meta",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
46 "noscript",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
47 "script",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
48 "style",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
49 "link",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
50 "no-js",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
51 "title",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
52 "object",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
53 "col",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
54 "colgroup",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
55 "option",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
56 "param",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
57 "audio",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
58 "basefont",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
59 "isindex",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
60 "svg",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
61 "area",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
62 "embed",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
63 "br",
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
64 )
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
65
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 def __init__(self, html, parent=None):
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 Constructor
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
69
38
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
70 @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
71 @type str
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
72 @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
73 @type QObject
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
35
a3f1dcf94fe4 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
75 super().__init__(parent)
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
76
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 self.__html = html
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
78
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 def getCss3(self):
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 Public method to get the converted CSS3 text.
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
82
38
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
83 @return CSS3 text
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
84 @rtype str
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
54
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
86 dlg = Html5ToCss3ConverterParameterDialog(parent=self.parent())
38
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
87 if dlg.exec() == QDialog.DialogCode.Accepted:
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 indentation, placeholders = dlg.getData()
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
89
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 self.__createSoup()
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
91
3
e478a359e1fb Added the HTML5 to JavaScript converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
92 alreadyDone = list(self.TagsToIgnore)
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
93
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 css = '@charset "utf-8";{0}'.format(os.linesep)
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 css += "/* {0} by {1}*/{2}".format(
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 datetime.datetime.now().isoformat().split(".")[0],
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 getpass.getuser(),
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
98 2 * os.linesep,
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 )
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
100
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 # step 1: tags
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 for tag in self.__getTags():
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 if tag not in alreadyDone:
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 css += self.CssTemplate7.format(
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 tag,
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 "{",
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 os.linesep,
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 indentation,
54
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
109 (
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
110 random.choice(self.Placeholders) + os.linesep # secok
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
111 if placeholders
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
112 else os.linesep
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
113 ),
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 "}",
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
115 os.linesep,
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 )
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 alreadyDone.append(tag)
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
118 css += "/*{0}*/{1}".format("-" * 75, os.linesep)
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
119
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 # step 2: IDs
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 for id_ in self.__getIds():
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 if id_ not in alreadyDone:
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
123 css += "/* {0} */{1}".format("_".join(id_).lower(), os.linesep)
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 css += self.CssTemplate8.format(
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 "#",
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 id_[1],
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 "{",
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 os.linesep,
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 indentation,
54
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
130 (
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
131 random.choice(self.Placeholders) + os.linesep # secok
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
132 if placeholders
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
133 else os.linesep
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
134 ),
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 "}",
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
136 os.linesep,
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 )
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 alreadyDone.append(id_)
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
139 css += "/*{0}*/{1}".format("-" * 75, os.linesep)
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
140
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 # step 3: classes
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 for class_ in self.__getClasses():
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 if class_ not in alreadyDone:
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
144 css += "/* {0} */{1}".format("_".join(class_).lower(), os.linesep)
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 css += self.CssTemplate8.format(
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 ".",
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 ", .".join(class_[1].split()),
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 "{",
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 os.linesep,
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 indentation,
54
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
151 (
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
152 random.choice(self.Placeholders) + os.linesep # secok
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
153 if placeholders
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
154 else os.linesep
1b47d2b39f7c - changed to new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
155 ),
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 "}",
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
157 os.linesep,
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 )
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 alreadyDone.append(class_)
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 else:
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 css = ""
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 return css.strip()
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
163
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 def __createSoup(self):
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 Private method to get a BeaitifulSoup object with our HTML text.
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 self.__soup = BeautifulSoup(BeautifulSoup(self.__html).prettify())
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
169
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 def __getTags(self):
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 Private method to extract all tags of the HTML text.
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
173
38
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
174 @return list of all tags
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
175 @rtype list of str
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 tags = [t.name for t in self.__soup.find_all(True)]
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 return list(set(tags))
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
179
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 def __getClasses(self):
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 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
183
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 @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
185 as a blank separated string
6a12561fc0b5 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
186 @rtype list of tuples of (str, str)
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 """
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
188 classes = [
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
189 (t.name, " ".join(t["class"]))
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
190 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
191 ]
41
836c696f9565 Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 40
diff changeset
192 return sorted(set(classes))
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
193
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 def __getIds(self):
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 """
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 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
197
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 @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
199 @rtype list of tuples of (str, str)
1
e3a92a671aa5 Added the 'Web' project type and the HTML5 to CSS3 converter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 """
43
2bed42620c99 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
201 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
202 return sorted(set(ids))

eric ide

mercurial