diff options
-rw-r--r-- | server.py | 4 | ||||
-rw-r--r-- | templates/base.html | 4 | ||||
-rw-r--r-- | templates/site/tutorials/python/py-style.html | 31 |
3 files changed, 36 insertions, 3 deletions
@@ -119,8 +119,8 @@ def render_file(path): ) if os.path.isfile(abs_path): if abs_path.endswith('.html'): - with open(abs_path) as f: - content = f.read() + with open(abs_path, 'rb') as f: + content = f.read().decode("UTF-8") return render_template_string(CONTENT_BLOCK.replace('$', content), **context) elif abs_path.endswith('.html!'): return render_template("site/" + path, **context) diff --git a/templates/base.html b/templates/base.html index b2e8e74..5c4e189 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,6 +1,8 @@ -<html> +<!DOCTYPE html> +<html lang="en"> <title>{{ domain }}/{{ title }}</title> <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> {% block css%} <link rel="stylesheet" type="text/css" href="/static/main.css"> {% endblock %} diff --git a/templates/site/tutorials/python/py-style.html b/templates/site/tutorials/python/py-style.html new file mode 100644 index 0000000..d766e39 --- /dev/null +++ b/templates/site/tutorials/python/py-style.html @@ -0,0 +1,31 @@ +<h1 id="coding-style-guide">Coding Style Guide</h1> +<p>The purpose of this document is twofold: 1) To ensure that anyone who might like to make my code better understands why I write python the way I do 2) to ensure <em>I</em> adhere to my own style because I’m terribly inconsistent</p> +<p>Being terribly inconsistent, the guidelines are not set in stone and if you have a good argument for doing things a particular, I don’t really care.</p> +<p><em>BUT</em> first and foremost, <em>code must comply with PEP8 first</em>. This is easy to automate. I like coala since it’s friendly but there’ plenty of advanced linters out there.</p> +<p>That aside, I have the following idiosyncracies:</p> +<h2 id="strings-are-double-quoted.-keys-and-chars-are-single-quoted.">1) <em>Strings</em> are <em>double-quoted</em>. <em>Keys</em> and <em>chars</em> are <em>single-quoted</em>.</h2> +<p>This is really just because I like how C does it. And Cpython’s C-based so why not?</p> +<p>Like so: <code>string = "This is a phrase" word = "word" cur_char = 'a' newline = '\n' # note, two characters, but it's still ONE char in output # keys are single-quoted to avoid confusion dictionary = { 'key' : "1245dqw3w431", 'return': newline }</code></p> +<p>The only exception is for strings with quotes in them (anything to avoid escapes, really) <code>quoted_string = ( '"You miss 100% of the shots you don't take - Wayne Gretsky" - Michael Scott' )</code> That brings me to my next point.</p> +<h2 id="long-strings-belong-in-parentheses">2) Long strings belong in parentheses</h2> +<p>As in: ``` longboi = ( “This is a really long string usefull when making help menus. Be” “sure to leave s space at the end of each line, or add a new line” “when needed.”</p> +<pre><code> "Try your best to keep formatting accurate like this." +) +```</code></pre> +<h2 id="tabs-are-four-spaces-and-spaces-are-always-prefered-to-tabs">3) Tabs are four spaces and spaces are <em>ALWAYS</em> prefered to tabs</h2> +<p>Again, see PEP8.</p> +<h2 id="always-add-spaces-between-arithmetic-but-never-for-brackets">4) Always add spaces between arithmetic, but never for brackets</h2> +<p>It’s a pain to read: <code>1/(2*sqrt(pi))*exp(x**2)</code> Do this <code>1 / (2 * sqrt(pi)) * exp(x ** 2)</code> The same goes for logic operators <code>true & false ^ true</code></p> +<h2 id="everything-should-be-snake_case">5) EVERYTHING should be snake_case</h2> +<p>This is python. Unless there’s a compatibility thing (like a library’s code was written that way, or it matches an API variable), snake_case is preferred. ```</p> +<pre><code>user_input = int(input()) # variable +MAX_INPUT = 1000 # constant +def judge_input(_input, _max): # function + if _max > _input: + print("Too big!") + +judge_input(user_input, MAX_INPUT +class Input_Judger: # a class + # etc etc +```</code></pre> +<p>Example exception <code># this doesn't actually work, but you get the idea r = requests.get("www.debian.org") pageSize = r.json()['pageSize'] # camel case ok</code></p> |