Merge pull request #69 from lurch/small_code_tidyups

Minor code reformatting
This commit is contained in:
Philip Howard 2015-11-19 22:14:13 +00:00
commit 3606787df8
7 changed files with 203 additions and 170 deletions

View File

@ -2,6 +2,7 @@ import json, sys
db = json.load(open('pi-pinout.db'))
def from_phys(phys, mode="bcm"):
pin = db['pins'][str(phys)]
if 'scheme' in pin:
@ -9,6 +10,7 @@ def from_phys(phys, mode="bcm"):
return int(pin['scheme'][mode])
return None
def to_phys(pin, mode="bcm"):
for pin in db['pins']:
if 'scheme' in db['pins'][pin]:
@ -16,6 +18,7 @@ def to_phys(pin, mode="bcm"):
return int(pin)
return None
pin = int(sys.argv[1])
mode = 'bcm'
@ -23,5 +26,5 @@ mode = 'bcm'
if len(sys.argv) > 2:
mode = sys.argv[2]
print("Pin {} is {}: {}".format(pin,mode.upper(),from_phys(pin,mode)))
print("Pin {} is {}: {}".format(pin, mode.upper(), from_phys(pin, mode)))

View File

@ -21,6 +21,7 @@ overlays = pinout.settings['overlays']
pages = {}
def cssify(value):
value = slugify(value);
if value[0] == '3' or value[0] == '5':
@ -28,6 +29,7 @@ def cssify(value):
return value
def slugify(value):
"""
Normalizes string, converts to lowercase, removes non-alpha characters,
@ -38,9 +40,10 @@ def slugify(value):
value = re.sub('[^\w\s-]', '', value).strip().lower()
return re.sub('[-\s]+', '_', value)
def load_overlay(overlay):
try:
data = markjaml.load('src/{}/overlay/{}.md'.format(lang,overlay))
data = markjaml.load('src/{}/overlay/{}.md'.format(lang, overlay))
loaded = data['data']
except IOError:
@ -73,7 +76,7 @@ def load_overlay(overlay):
if pin in pinout.pins:
actual_pin = pinout.pins[pin]
if actual_pin['type'] in ['+3v3','+5v','GND']:
if actual_pin['type'] in ['+3v3', '+5v', 'GND']:
if actual_pin['type'] == '+3v3':
uses_3v = True
if actual_pin['type'] == '+5v':
@ -106,6 +109,7 @@ def load_overlay(overlay):
pages[loaded['page_url']] = loaded
return loaded
def load_md(filename):
filename = 'src/{}/{}'.format(lang, filename)
try:
@ -116,6 +120,7 @@ def load_md(filename):
print('Unable to load markdown from {}'.format(filename))
return ''
overlays = map(load_overlay,overlays)
overlays = map(load_overlay, overlays)
print(json.dumps(overlays))

View File

@ -4,6 +4,7 @@ import yaml
import re
import unicodedata
def slugify(value):
"""
Normalizes string, converts to lowercase, removes non-alpha characters,
@ -14,6 +15,7 @@ def slugify(value):
value = re.sub('[^\w\s-]', '-', value).strip().lower()
return re.sub('[-\s]+', '-', value)
def load(file):
'''
Loads and parses JSON-embedded Markdown file, chopping out and
@ -23,26 +25,26 @@ def load(file):
'''
markson = open(file).read()
_data = re.search(re.compile(r'<!--(JSON:|\n---\n)(.*)-->', re.DOTALL),markson)
_data = re.search(re.compile(r'<!--(JSON:|\n---\n)(.*)-->', re.DOTALL), markson)
_markdown = re.sub(re.compile(r'<!--(JSON:|\n---\n)(.*)-->', re.DOTALL),'',markson)
_markdown = re.sub(re.compile(r'<!--(JSON:|\n---\n)(.*)-->', re.DOTALL), '', markson)
_html = markdown.markdown(_markdown, extensions=['fenced_code'])
# Scan for the Title in the Markdown file, this is always assumed
# to be the first string starting with a single hash/pound ( # ) sign
_title = re.search(re.compile(r'^#[^\#](.*)$', re.MULTILINE),markson)
_title = re.search(re.compile(r'^#[^\#](.*)$', re.MULTILINE), markson)
if _title != None:
_title = _title.group(0).replace('#','').strip()
_title = _title.group(0).replace('#', '').strip()
if _data != None:
_type = _data.group(0)[4:8].upper().strip()
if _type == 'JSON':
_data = re.search('\{(.*)\}',_data.group(0),re.DOTALL).group(0)
_data = re.search('\{(.*)\}', _data.group(0), re.DOTALL).group(0)
_data = json.loads(_data)
elif _type == '---':
_data = re.search('\n(.*)\n',_data.group(0),re.DOTALL).group(0)
_data = re.search('\n(.*)\n', _data.group(0), re.DOTALL).group(0)
_data = yaml.load(_data)
else:
data = {}

View File

@ -8,11 +8,13 @@ SETTINGS_FILE = 'settings.yaml'
pins = None
settings = None
def get_setting(setting, default = None):
if setting in settings and settings[setting] != None:
return settings[setting]
return default
def render_html(*args, **kwargs):
html = args[0]
kwargs['v'] = str(int(time.time()))
@ -20,6 +22,7 @@ def render_html(*args, **kwargs):
html = html.replace('{{' + key + '}}', kwargs[key])
return html
def bcm_to_physical(pin):
for idx in pins:
compare_pin = pins[idx]
@ -29,6 +32,7 @@ def bcm_to_physical(pin):
#print("Mapping BCM{} to {}".format(pin, str(idx)))
return str(idx)
def physical_to_bcm(pin):
pin = pins[pin]
if 'scheme' in pin:
@ -36,6 +40,7 @@ def physical_to_bcm(pin):
return str(pin['scheme']['bcm'])
return None
def physical_to_wiringpi(pin):
pin = pins[pin]
if 'scheme' in pin:
@ -43,8 +48,9 @@ def physical_to_wiringpi(pin):
return str(pin['scheme']['wiringpi'])
return None
def physical_to(pin, scheme='bcm'):
if scheme in ['bcm','wiringpi']:
if scheme in ['bcm', 'wiringpi']:
pin = pins[pin]
if 'scheme' in pin:
if scheme in pin['scheme']:
@ -53,16 +59,17 @@ def physical_to(pin, scheme='bcm'):
return pin
return None
def load(lang='en'):
global pins, settings
if DB_FILE.endswith('.yaml'):
db = yaml.load(open('src/{}/{}'.format(lang,DB_FILE)).read())
db = yaml.load(open('src/{}/{}'.format(lang, DB_FILE)).read())
else:
db = json.load(open('src/{}/{}'.format(lang,DB_FILE)))
db = json.load(open('src/{}/{}'.format(lang, DB_FILE)))
if SETTINGS_FILE.endswith('.yaml'):
settings = yaml.load(open('src/{}/{}'.format(lang,SETTINGS_FILE)).read())
settings = yaml.load(open('src/{}/{}'.format(lang, SETTINGS_FILE)).read())
else:
settings = json.load(open('src/{}/{}'.format(lang,SETTINGS_FILE)))
settings = json.load(open('src/{}/{}'.format(lang, SETTINGS_FILE)))
pins = db['pins']

View File

@ -5,17 +5,21 @@ app = Flask(__name__)
lang = 'en'
@app.route('/')
def show_index():
return send_from_directory(basedir,'index.html')
return send_from_directory(basedir, 'index.html')
@app.route("/resources/<path:filename>")
def custom_static(filename):
return send_from_directory(basedir + 'resources/', filename)
@app.route("/<path:page>")
def show_page(page):
return send_from_directory(basedir,'{}.html'.format(page))
return send_from_directory(basedir, '{}.html'.format(page))
if __name__ == "__main__":

View File

@ -32,6 +32,7 @@ comment_prefix = {
'c': '//'
}
def slugify(value):
"""
Normalizes string, converts to lowercase, removes non-alpha characters,
@ -39,11 +40,12 @@ def slugify(value):
"""
value = unicode(value)
value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore').decode('ascii')
value = value.replace('+','PLUS')
value = value.replace('-','MINUS')
value = value.replace('+', 'PLUS')
value = value.replace('-', 'MINUS')
value = re.sub('[^\w\s-]', '', value).strip().lower()
return re.sub('[-\s]+', '_', value)
def bcm_to_physical(pin):
pin = pin[3:]
for idx in pins:
@ -54,6 +56,7 @@ def bcm_to_physical(pin):
print("Mapping BCM{} to {}".format(pin, str(idx)))
return str(idx)
def physical_to_bcm(pin):
pin = pins[pin]
if 'scheme' in pin:
@ -61,6 +64,7 @@ def physical_to_bcm(pin):
return str(pin['scheme']['bcm'])
return None
def physical_to_wiringpi(pin):
pin = pins[pin]
if 'scheme' in pin:
@ -68,8 +72,9 @@ def physical_to_wiringpi(pin):
return str(pin['scheme']['wiringpi'])
return None
def physical_to(pin, scheme='bcm'):
if scheme in ['bcm','wiringpi']:
if scheme in ['bcm', 'wiringpi']:
pin = pins[pin]
if 'scheme' in pin:
if scheme in pin['scheme']:
@ -78,24 +83,26 @@ def physical_to(pin, scheme='bcm'):
return pin
return None
db = json.load(open('../src/{}/pi-pinout.json'.format(lang)))
pins = db['pins']
define = {}
keys = []
def add_define(key, value):
global keys, define
keys.append(key)
define[key] = value
db = json.load(open('../src/{}/pi-pinout.json'.format(lang)))
pins = db['pins']
define = {}
keys = []
if len(sys.argv) >= 3:
overlay_file = sys.argv[1]
pin_scheme = sys.argv[2]
output_lang = sys.argv[3]
overlay = json.load(open('../src/{}/overlay/{}.json'.format(lang,overlay_file)))
overlay = json.load(open('../src/{}/overlay/{}.json'.format(lang, overlay_file)))
if 'i2c' in overlay:
for addr in overlay['i2c']:
@ -129,7 +136,7 @@ if len(sys.argv) >= 3:
board_name = board_name,
name = name
)
row_length = max(len(key),row_length)
row_length = max(len(key), row_length)
for name in keys:
@ -140,6 +147,6 @@ if len(sys.argv) >= 3:
value = value_template[output_lang].format(value = define[name])
value = value.rjust(row_length - len(key) + len(value),' ')
value = value.rjust(row_length - len(key) + len(value), ' ')
print(key+value)

View File

@ -10,6 +10,7 @@ import os
reload(sys)
sys.setdefaultencoding('utf8')
def url_slugify(value):
"""
Normalizes string, converts to lowercase, removes non-alpha characters,
@ -20,9 +21,10 @@ def url_slugify(value):
value = re.sub('[^\w\s-]', '', value).strip().lower()
return re.sub('[-\s]+', '_', value)
def load_overlay_url(overlay, lang):
try:
data = markjaml.load('src/{}/overlay/{}.md'.format(lang,overlay))
data = markjaml.load('src/{}/overlay/{}.md'.format(lang, overlay))
loaded = data['data']
except IOError:
@ -33,7 +35,8 @@ def load_overlay_url(overlay, lang):
return overlay, loaded['page_url']
def get_pin_url(pin_num,pinout):
def get_pin_url(pin_num, pinout):
pin = pinout.pins[str(pin_num)]
pin_url = pin['name']
@ -45,7 +48,8 @@ def get_pin_url(pin_num,pinout):
bcm = pin['scheme']['bcm']
pin_url = 'gpio{}'.format(bcm)
return url_slugify('pin{}_{}'.format(pin_num,pin_url))
return url_slugify('pin{}_{}'.format(pin_num, pin_url))
def generate_for_lang(lang="en"):
url_lookup = {}
@ -54,34 +58,35 @@ def generate_for_lang(lang="en"):
overlays = pinout.settings['overlays']
base_url = pinout.get_setting('base_url','/pinout/')
base_url = pinout.get_setting('base_url', '/pinout/')
domain = pinout.get_setting('domain','pinout.xyz')
domain = pinout.get_setting('domain', 'pinout.xyz')
overlays_html = ''
overlays = map(lambda overlay: load_overlay_url(overlay, lang),overlays)
overlays = map(lambda overlay: load_overlay_url(overlay, lang), overlays)
for pin in range(1,len(pinout.pins)+1):
pin_url = get_pin_url(pin,pinout)
for pin in range(1, len(pinout.pins)+1):
pin_url = get_pin_url(pin, pinout)
if pin_url is None:
continue
url_lookup['pin{}'.format(pin)] = '//{domain}{base_url}{url}'.format(domain=domain,base_url=base_url,url=pin_url)
url_lookup['pin{}'.format(pin)] = '//{domain}{base_url}{url}'.format(domain=domain, base_url=base_url, url=pin_url)
for url in overlays:
if url is None:
continue
url_lookup['{}'.format(url[0])] = '//{domain}{base_url}{url}'.format(domain=domain,base_url=base_url,url=url[1])
url_lookup['{}'.format(url[0])] = '//{domain}{base_url}{url}'.format(domain=domain, base_url=base_url, url=url[1])
url_lookup['index'] = '//{}'.format(domain)
return url_lookup
def generate_urls(lang="en"):
languages = [l.replace('src/','') for l in glob.glob('src/??') if os.path.isdir(l)] # if not l == 'src/'+lang
languages = [l.replace('src/', '') for l in glob.glob('src/??') if os.path.isdir(l)] # if not l == 'src/'+lang
urls = {}
for lang in languages:
urls[lang] = generate_for_lang(lang)