mirror of
https://git.mirrors.martin98.com/https://github.com/luc-github/ESP3D.git
synced 2025-08-14 23:25:54 +08:00
Merge pull request #66 from j0hnlittle/master
A python webserver to help working on the template files Thanks @j0hnlittle
This commit is contained in:
commit
4073c10601
4
esp8266/data/tags.json
Normal file
4
esp8266/data/tags.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"WEB_ADDRESS":"localhost",
|
||||
"PAGE_TITLE":"Testing things..."
|
||||
}
|
98
tools/server.py
Normal file
98
tools/server.py
Normal file
@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import SimpleHTTPServer, SocketServer
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
import re
|
||||
|
||||
#Replace this with a different path if you need to...
|
||||
base_path = os.path.join(os.getcwd(),"..","esp8266","data")
|
||||
|
||||
class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
||||
def do_GET(self):
|
||||
is_tpl, s = self.process_path(self.path)
|
||||
if is_tpl:
|
||||
self.send_response(301)
|
||||
self.send_header("Content-type", "text/html")
|
||||
self.end_headers()
|
||||
|
||||
data = self.process_tpl(s)
|
||||
self.wfile.write(data)
|
||||
self.wfile.close()
|
||||
return
|
||||
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
|
||||
|
||||
def process_path(self,s):
|
||||
#A template link is all caps and is associated to a lower().tpl file in base_path
|
||||
if s == "/":
|
||||
return True,"home.tpl"
|
||||
|
||||
ret = False,""
|
||||
s = s.replace("/","")
|
||||
if s.endswith(".tpl"):
|
||||
return True,s
|
||||
|
||||
s = s.lower()+".tpl"
|
||||
|
||||
#these do not exactly match, so let's make them!
|
||||
s = s.replace("configsta","config_sta")
|
||||
s = s.replace("configap","config_ap")
|
||||
s = s.replace("configsys","system")
|
||||
|
||||
if os.path.exists(os.path.join(base_path,s)):
|
||||
ret = True,s
|
||||
|
||||
return ret
|
||||
|
||||
def process_tpl(self,fn):
|
||||
p = re.compile('\$(.*?)\$')
|
||||
if fn.startswith("/") or fn.startswith("\\"):
|
||||
fn = fn[1:]
|
||||
|
||||
fn = os.path.join(base_path,fn)
|
||||
data = open(fn).read()
|
||||
|
||||
fn_json = os.path.join(base_path,"tags.json")
|
||||
if os.path.exists(fn_json):
|
||||
json_dic = json.loads(open(fn_json).read())
|
||||
else:
|
||||
json_dic = {}
|
||||
|
||||
tags = p.findall(data)
|
||||
i = 0
|
||||
n_tags = len(tags)
|
||||
while i < n_tags:
|
||||
dd = self.process_tag(data,tags[i],json_dic)
|
||||
if dd != data:
|
||||
data = dd
|
||||
tags = p.findall(data)
|
||||
n_tags = len(tags)
|
||||
else:
|
||||
i = i+1
|
||||
return data
|
||||
|
||||
def process_tag(self, data, tag, json_dic={}):
|
||||
print " processing $%s$" % tag
|
||||
if tag in json_dic.keys():
|
||||
data = data.replace("$"+tag+"$",json_dic[tag])
|
||||
elif tag.startswith("INCLUDE[") and tag.endswith("]"):
|
||||
fn = tag[8:-1]
|
||||
fn = os.path.join(base_path,fn)
|
||||
d = open(fn).read()
|
||||
p0 = data.find("$"+tag)
|
||||
p1 = data.find("]",p0)+2
|
||||
data = data[:p0]+d+data[p1:]
|
||||
|
||||
return data
|
||||
|
||||
if __name__ == '__main__':
|
||||
print "="*60
|
||||
print "Serving files from:"
|
||||
print base_path
|
||||
os.chdir(base_path)
|
||||
print "="*60
|
||||
handler = MyHandler
|
||||
server = SocketServer.TCPServer(("",8080), handler)
|
||||
server.serve_forever()
|
||||
|
Loading…
x
Reference in New Issue
Block a user