Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
1import re
2
3
4def prefix(content):
5 content = re.sub(
6 b"@keyframes (.*? {.*?}\s*})", b"@keyframes \\1\n@-webkit-keyframes \\1\n@-moz-keyframes \\1\n",
7 content, flags=re.DOTALL
8 )
9 content = re.sub(
10 b'([^-\*])(border-radius|box-shadow|appearance|transition|animation|box-sizing|' +
11 b'backface-visibility|transform|filter|perspective|animation-[a-z-]+): (.*?)([;}])',
12 b'\\1-webkit-\\2: \\3; -moz-\\2: \\3; -o-\\2: \\3; -ms-\\2: \\3; \\2: \\3 \\4', content
13 )
14 content = re.sub(
15 b'(?<=[^a-zA-Z0-9-])([a-zA-Z0-9-]+): {0,1}(linear-gradient)\((.*?)(\)[;\n])',
16 b'\\1: -webkit-\\2(\\3);' +
17 b'\\1: -moz-\\2(\\3);' +
18 b'\\1: -o-\\2(\\3);' +
19 b'\\1: -ms-\\2(\\3);' +
20 b'\\1: \\2(\\3);', content
21 )
22 return content
23
24if __name__ == "__main__":
25 print(prefix(b"""
26 .test {
27 border-radius: 5px;
28 background: linear-gradient(red, blue);
29 }
30
31
32 @keyframes flip {
33 0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg); }
34 50% { transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg) }
35 100% { transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); }
36 }
37
38
39 """).decode("utf8"))