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')) db = json.load(open('pi-pinout.db'))
def from_phys(phys, mode="bcm"): def from_phys(phys, mode="bcm"):
pin = db['pins'][str(phys)] pin = db['pins'][str(phys)]
if 'scheme' in pin: if 'scheme' in pin:
@ -9,6 +10,7 @@ def from_phys(phys, mode="bcm"):
return int(pin['scheme'][mode]) return int(pin['scheme'][mode])
return None return None
def to_phys(pin, mode="bcm"): def to_phys(pin, mode="bcm"):
for pin in db['pins']: for pin in db['pins']:
if 'scheme' in db['pins'][pin]: if 'scheme' in db['pins'][pin]:
@ -16,6 +18,7 @@ def to_phys(pin, mode="bcm"):
return int(pin) return int(pin)
return None return None
pin = int(sys.argv[1]) pin = int(sys.argv[1])
mode = 'bcm' mode = 'bcm'
@ -23,5 +26,5 @@ mode = 'bcm'
if len(sys.argv) > 2: if len(sys.argv) > 2:
mode = 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 = {} pages = {}
def cssify(value): def cssify(value):
value = slugify(value); value = slugify(value);
if value[0] == '3' or value[0] == '5': if value[0] == '3' or value[0] == '5':
@ -28,6 +29,7 @@ def cssify(value):
return value return value
def slugify(value): def slugify(value):
""" """
Normalizes string, converts to lowercase, removes non-alpha characters, Normalizes string, converts to lowercase, removes non-alpha characters,
@ -38,9 +40,10 @@ def slugify(value):
value = re.sub('[^\w\s-]', '', value).strip().lower() value = re.sub('[^\w\s-]', '', value).strip().lower()
return re.sub('[-\s]+', '_', value) return re.sub('[-\s]+', '_', value)
def load_overlay(overlay): def load_overlay(overlay):
try: try:
data = markjaml.load('src/{}/overlay/{}.md'.format(lang,overlay)) data = markjaml.load('src/{}/overlay/{}.md'.format(lang, overlay))
loaded = data['data'] loaded = data['data']
except IOError: except IOError:
@ -73,7 +76,7 @@ def load_overlay(overlay):
if pin in pinout.pins: if pin in pinout.pins:
actual_pin = pinout.pins[pin] 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': if actual_pin['type'] == '+3v3':
uses_3v = True uses_3v = True
if actual_pin['type'] == '+5v': if actual_pin['type'] == '+5v':
@ -106,6 +109,7 @@ def load_overlay(overlay):
pages[loaded['page_url']] = loaded pages[loaded['page_url']] = loaded
return loaded return loaded
def load_md(filename): def load_md(filename):
filename = 'src/{}/{}'.format(lang, filename) filename = 'src/{}/{}'.format(lang, filename)
try: try:
@ -116,6 +120,7 @@ def load_md(filename):
print('Unable to load markdown from {}'.format(filename)) print('Unable to load markdown from {}'.format(filename))
return '' return ''
overlays = map(load_overlay,overlays)
overlays = map(load_overlay, overlays)
print(json.dumps(overlays)) print(json.dumps(overlays))

View File

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

View File

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

View File

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

View File

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

View File

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