-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstorage.py
More file actions
88 lines (74 loc) · 2.54 KB
/
storage.py
File metadata and controls
88 lines (74 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# ----------------------------------------------------#
# *Python browser
# storage.py
# ----------------
# Does storaging
# ----------------------------------------------------#
import css
import html
import network
import io
canvases = []
resources = {}
#-----------------------------------------------------#
# *getResource
# Loads resource
def getResource( name ):
global resources
if name not in resources: return None
ext = name.split(".")[-1] # Get extension
if ext == "html" or ext == "htm" or ext == "js" or ext == "php" or ext == "css": # For thee we'll return StringIO
return io.StringIO( resources[name][0].decode('utf-8') )
else:
return io.BytesIO( resources[name][0] ) # For thee bytes will be enough!
#-----------------------------------------------------#
# *getResource
# Loads resource
def pushResource( path, data ):
global resources
global canvases
resources[ path ] = data
for canvas in canvases:
if path in canvas.dependencies:
canvas.onResourceLoad( path )
#---------------------------------------------------------------#
# *Canvas
# This class handles web resource content
class Canvas:
def __init__( self ):
self.html = None
self.css = []
self.js = []
self.dependencies = []
def loadURL( self, url ):
network.startConnection( url )
self.dependencies.append( url+"/index.html" )
network.downloadResource( "/" )
def onResourceLoad(self, name):
ext = name.split(".")[-1] # Get extension
if ext == "html" or ext == "htm":
self.html = html.processHTML( getResource(name).read() )
if "style" in self.html.types:
for tagid in self.html.types["style"]:
tag = self.html.tags[ tagid ]
data = css.parseCSS(tag.content[0])
tag.content[0] = len( self.css )
self.css.append(data)
if "script" in self.html.types:
for tagid in self.html.types[ "script" ]:
tag = self.html.tags[ tagid ]
data = tag.content[0]
tag.content[0] = len( self.js )
#self.js.append( data )
self.html.debug()
for css_file in self.css:
self.html.applyCSS( css_file )
#-----------------------------------------------------#
# *openURL
# Opens URL
def openURL( url ):
global canvases
canvas = Canvas()
canvases.append( canvas )
canvas.loadURL( url )
return canvas