Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
06aa566
commit edc8cff
Showing
18 changed files
with
897 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
_site | ||
.sass-cache | ||
GEMFILE | ||
Gemfile.lock |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Site settings | ||
title: Josh Cartmell | ||
email: chat@joshc.io | ||
description: > # this means to ignore newlines until "baseurl:" | ||
Python, Django, Mezzanine, Javascript. | ||
baseurl: "" # the subpath of your site, e.g. /blog/ | ||
url: "https://joshc.io" # the base hostname & protocol for your site | ||
twitter_username: joshcartme | ||
github_username: joshcartme | ||
highlighter: pygments | ||
|
||
# Build settings | ||
markdown: kramdown |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
<footer class="site-footer"> | ||
|
||
<div class="wrapper"> | ||
|
||
<h2 class="footer-heading">{{ site.title }}</h2> | ||
|
||
<div class="footer-col-wrapper"> | ||
<div class="footer-col footer-col-1"> | ||
<ul class="contact-list"> | ||
<li>{{ site.title }}</li> | ||
<li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li> | ||
</ul> | ||
</div> | ||
|
||
<div class="footer-col footer-col-2"> | ||
<ul class="social-media-list"> | ||
{% if site.github_username %} | ||
<li> | ||
<a href="https://github.com/{{ site.github_username }}"> | ||
<span class="icon icon--github"> | ||
<svg viewBox="0 0 16 16"> | ||
<path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/> | ||
</svg> | ||
</span> | ||
|
||
<span class="username">{{ site.github_username }}</span> | ||
</a> | ||
</li> | ||
{% endif %} | ||
|
||
{% if site.twitter_username %} | ||
<li> | ||
<a href="https://twitter.com/{{ site.twitter_username }}"> | ||
<span class="icon icon--twitter"> | ||
<svg viewBox="0 0 16 16"> | ||
<path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809 | ||
c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/> | ||
</svg> | ||
</span> | ||
|
||
<span class="username">{{ site.twitter_username }}</span> | ||
</a> | ||
</li> | ||
{% endif %} | ||
</ul> | ||
</div> | ||
|
||
<div class="footer-col footer-col-3"> | ||
<p class="text">{{ site.description }}</p> | ||
</div> | ||
</div> | ||
|
||
</div> | ||
|
||
</footer> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
<head> | ||
<meta charset="utf-8"> | ||
<meta name="viewport" content="width=device-width initial-scale=1" /> | ||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
|
||
<title>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title> | ||
<meta name="description" content="{{ site.description }}"> | ||
|
||
<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}"> | ||
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}"> | ||
</head> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<header class="site-header"> | ||
|
||
<div class="wrapper"> | ||
|
||
<a class="site-title" href="{{ site.baseurl }}/">{{ site.title }}</a> | ||
|
||
<nav class="site-nav"> | ||
<a href="#" class="menu-icon"> | ||
<svg viewBox="0 0 18 15"> | ||
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/> | ||
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/> | ||
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/> | ||
</svg> | ||
</a> | ||
|
||
<div class="trigger"> | ||
{% for page in site.pages %} | ||
{% if page.title %} | ||
<a class="page-link" href="{{ page.url | prepend: site.baseurl }}">{{ page.title }}</a> | ||
{% endif %} | ||
{% endfor %} | ||
</div> | ||
</nav> | ||
|
||
</div> | ||
|
||
</header> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
|
||
{% include head.html %} | ||
|
||
<body> | ||
|
||
{% include header.html %} | ||
|
||
<div class="page-content"> | ||
<div class="wrapper"> | ||
{{ content }} | ||
</div> | ||
</div> | ||
|
||
{% include footer.html %} | ||
|
||
</body> | ||
|
||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
--- | ||
layout: default | ||
--- | ||
<div class="post"> | ||
|
||
<header class="post-header"> | ||
<h1 class="post-title">{{ page.title }}</h1> | ||
</header> | ||
|
||
<article class="post-content"> | ||
{{ content }} | ||
</article> | ||
|
||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
--- | ||
layout: default | ||
comments: true | ||
--- | ||
<div class="post"> | ||
|
||
<header class="post-header"> | ||
<h1 class="post-title">{{ page.title }}</h1> | ||
<p class="post-meta">{{ page.date | date: "%b %-d, %Y" }}{% if page.author %} • {{ page.author }}{% endif %}{% if page.meta %} • {{ page.meta }}{% endif %}</p> | ||
</header> | ||
|
||
<article class="post-content"> | ||
{{ content }} | ||
</article> | ||
|
||
{% if page.comments %} | ||
<div id="disqus_thread"></div> | ||
<script type="text/javascript"> | ||
/* * * CONFIGURATION VARIABLES * * */ | ||
var disqus_shortname = 'bitofpixels'; | ||
var disqus_identifier = 'joshc.io - {{ page.date | date_to_string }}'; | ||
var disqus_title = '{{ page.title }}'; | ||
|
||
/* * * DON'T EDIT BELOW THIS LINE * * */ | ||
(function() { | ||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; | ||
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; | ||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); | ||
})(); | ||
</script> | ||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript> | ||
{% endif %} | ||
|
||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
--- | ||
layout: post | ||
title: no-else-return can be harmful | ||
date: 2015-07-23 19:25:28 | ||
categories: javascript eslint | ||
--- | ||
|
||
### Consider: | ||
|
||
{% highlight js %} | ||
|
||
function elseAfterReturn(someCondition, otherCondition){ | ||
if(someCondition){ | ||
console.log('if'); | ||
} else if (otherCondition){ | ||
console.log('else if'); | ||
return; | ||
} else{ | ||
// eslint complains no else after return | ||
console.log('else'); | ||
} | ||
// do something after if or else, but not else if | ||
return; | ||
} | ||
|
||
function noElseAfterReturn(someCondition, otherCondition){ | ||
if(someCondition){ | ||
console.log('if'); | ||
} else if (otherCondition){ | ||
console.log('else if'); | ||
return; | ||
} | ||
console.log('else'); | ||
// do something after if or the supposedly implicit else, but not else if | ||
return; | ||
} | ||
|
||
console.log('else after return'); | ||
elseAfterReturn(true, false); | ||
|
||
console.log(); | ||
|
||
console.log('no else after return'); | ||
noElseAfterReturn(true, false); | ||
{% endhighlight %} | ||
|
||
The output from the two functions is not the same, but don't take my word for it. | ||
|
||
<button id="run-script">Run the script!</button> | ||
|
||
<pre><code id="script-output"></code></pre> | ||
|
||
*I modified the script slightly to print to this code block instead of the console* | ||
|
||
eslint might lead you to believe that the two functions above are identical, but they clearly are not. | ||
|
||
Obviously the above is very contrived, but this actually bit me while using expressjs. I had a situation where I accidentally called `next()` more than once in some cases which resulted in erratic and difficult to track down errors. | ||
|
||
This probably could be solved with better coding practices, but I think it's worth realizing that `no-else-return` can introduce unexpected errors. | ||
|
||
<script> | ||
(function() { | ||
var output = { | ||
element: document.getElementById('script-output'), | ||
log: function(text){ | ||
output.element.innerHTML += text + '\n'; | ||
} | ||
}; | ||
function elseAfterReturn(someCondition, otherCondition){ | ||
if(someCondition){ | ||
output.log('if'); | ||
} else if (otherCondition){ | ||
output.log('else if'); | ||
return; | ||
} else{ | ||
// eslint complains no else after return | ||
output.log('else'); | ||
} | ||
// do something after if or else, but not else if | ||
return; | ||
} | ||
|
||
function noElseAfterReturn(someCondition, otherCondition){ | ||
if(someCondition){ | ||
output.log('if'); | ||
} else if (otherCondition){ | ||
output.log('else if'); | ||
return; | ||
} | ||
output.log('else'); | ||
// do something after if or the supposedly implicit else, but not else if | ||
return; | ||
} | ||
|
||
|
||
document.getElementById('run-script').addEventListener('click', function(){ | ||
output.log('else after return'); | ||
elseAfterReturn(true, false); | ||
|
||
output.log(''); | ||
|
||
output.log('no else after return'); | ||
noElseAfterReturn(true, false); | ||
}); | ||
}()); | ||
|
||
</script> |
Oops, something went wrong.