Skip to content

Instantly share code, notes, and snippets.

@talymo
Created July 23, 2015 23:25
Show Gist options
  • Save talymo/7fab587e15bb7ddcd7de to your computer and use it in GitHub Desktop.
Save talymo/7fab587e15bb7ddcd7de to your computer and use it in GitHub Desktop.
Quote Generator
div#wrap(ng-app="quoteApp")
div#hero
div.container(ng-controller="quoteCtrl")
section.row#logo
div.col-xs-12
div#headline Quote Me
section.row#category
div.col-xs.12
h4 Category:
div.col-xs-3.col-sm-1.cat(ng-click="category='love'", ng-class="{true: 'active'}[category == 'love']") Love
div.col-xs-3.col-sm-1.cat(ng-click="category='art'", ng-class="{true: 'active'}[category == 'art']") Art
div.col-xs-3.col-sm-2.col-md-1.cat(ng-click="category='science'", ng-class="{true: 'active'}[category == 'science']") Science
div.col-xs-3.col-sm-2.cat(ng-click="category='religion'", ng-class="{true: 'active'}[category == 'religion']") Religion
div.col-xs-3.col-sm-2.col-md-1.cat(ng-click="category='food'", ng-class="{true: 'active'}[category == 'food']") Food
div.col-xs-3.col-sm-2.col-md-1.cat(ng-click="category='beauty'", ng-class="{true: 'active'}[category == 'beauty']") Beauty
div.col-xs-3.col-sm-2.cat(ng-click="category='family'", ng-class="{true: 'active'}[category == 'family']") Family
div.col-xs-3.col-sm-2.col-md-1.cat(ng-click="category='history'", ng-class="{true: 'active'}[category == 'history']") History
div.col-xs-4.col-sm-2.cat(ng-click="category='technology'", ng-class="{true: 'active'}[category == 'technology']") Technology
section.row#quotes
div.col-xs-12
div#quote
p.saying(ng-if="!quote", ng-cloak) Nothing is here, try a different category!
p#highlight.saying(ng-bind="quote.text", ng-if="quote.text")
p.author(ng-bind="quote.author", ng-if="quote.author")
section.row#tweet
ul.rrssb-buttons.clearfix
li.rrssb-twitter
a.popup(ng-href='https://twitter.com/intent/tweet?text={{quote.text}} - {{quote.author}}', target="_blank")
span.rrssb-icon
svg(xmlns='http://www.w3.org/2000/svg', width='28', height='28', viewbox='0 0 28 28')
path(d='M24.253 8.756C24.69 17.08 18.297 24.182 9.97 24.62c-3.122.162-6.22-.646-8.86-2.32 2.702.18 5.375-.648 7.507-2.32-2.072-.248-3.818-1.662-4.49-3.64.802.13 1.62.077 2.4-.154-2.482-.466-4.312-2.586-4.412-5.11.688.276 1.426.408 2.168.387-2.135-1.65-2.73-4.62-1.394-6.965C5.574 7.816 9.54 9.84 13.802 10.07c-.842-2.738.694-5.64 3.434-6.48 2.018-.624 4.212.043 5.546 1.682 1.186-.213 2.318-.662 3.33-1.317-.386 1.256-1.248 2.312-2.4 2.942 1.048-.106 2.07-.394 3.02-.85-.458 1.182-1.343 2.15-2.48 2.71z')
span.rrssb-text twitter
section.row#cta
div.col-xs-12
div#generate.btn.btn-primary(ng-click="generateQuote()") Generate a new quote
div.push
footer
span Created by Tabetha Moe ©2015
var quoteApp = angular.module('quoteApp', []);
quoteApp.controller('quoteCtrl', ['$scope', '$http', '$sce', function($scope, $http, $sce){
var WikiquoteApi = (function() {
var wqa = {};
var API_URL = "http://en.wikiquote.org/w/api.php";
wqa.queryTitles = function(titles, success, error) {
$.ajax({
url: API_URL,
dataType: "jsonp",
data: {
format: "json",
action: "query",
redirects: "",
titles: titles
},
success: function(result, status) {
var pages = result.query.pages;
var pageId = -1;
for(var p in pages) {
var page = pages[p];
// api can return invalid recrods, these are marked as "missing"
if(!("missing" in page)) {
pageId = page.pageid;
break;
}
}
if(pageId > 0) {
success(pageId);
} else {
error("No results");
}
},
error: function(xhr, result, status){
error("Error processing your query");
}
});
};
wqa.getSectionsForPage = function(pageId, success, error) {
$.ajax({
url: API_URL,
dataType: "jsonp",
data: {
format: "json",
action: "parse",
prop: "sections",
pageid: pageId
},
success: function(result, status){
var sectionArray = [];
var sections = result.parse.sections;
for(var s in sections) {
var splitNum = sections[s].number.split('.');
if(splitNum.length > 1 && splitNum[0] === "1") {
sectionArray.push(sections[s].index);
}
}
// Use section 1 if there are no "1.x" sections
if(sectionArray.length === 0) {
sectionArray.push("1");
}
success({ titles: result.parse.title, sections: sectionArray });
},
error: function(xhr, result, status){
error("Error getting sections");
}
});
};
wqa.getQuotesForSection = function(pageId, sectionIndex, success, error) {
$.ajax({
url: API_URL,
dataType: "jsonp",
data: {
format: "json",
action: "parse",
noimages: "",
pageid: pageId,
section: sectionIndex
},
success: function(result, status){
var quotes = result.parse.text["*"];
var quoteArray = []
// Find top level <li> only
var $lis = $(quotes).find('li:not(li li)');
$lis.each(function() {
// Remove all children that aren't <b>
var $as = $(this).find('li a').html();
$(this).children().remove(':not(b)');
var $bolds = $(this).find('b');
// If the section has bold text, use it. Otherwise pull the plain text.
if($bolds.length > 0) {
quoteArray.push({
quote: $bolds.html(),
author: $as
});
} else {
quoteArray.push({
quote: $(this).html(),
author: $as
});
}
});
success({ titles: result.parse.title, quotes: quoteArray });
},
error: function(xhr, result, status){
error("Error getting quotes");
}
});
};
wqa.openSearch = function(titles, success, error) {
$.ajax({
url: API_URL,
dataType: "jsonp",
data: {
format: "json",
action: "opensearch",
namespace: 0,
suggest: "",
search: titles
},
success: function(result, status){
success(result[1]);
},
error: function(xhr, result, status){
error("Error with opensearch for " + titles);
}
});
};
wqa.getRandomQuote = function(titles, success, error) {
var errorFunction = function(msg) {
error(msg);
};
var chooseQuote = function(quotes) {
var randomNum = Math.floor(Math.random()*quotes.quotes.length);
success({ titles: quotes.titles, quote: quotes.quotes[randomNum] });
};
var getQuotes = function(pageId, sections) {
var randomNum = Math.floor(Math.random()*sections.sections.length);
wqa.getQuotesForSection(pageId, sections.sections[randomNum], chooseQuote, errorFunction);
};
var getSections = function(pageId) {
wqa.getSectionsForPage(pageId, function(sections) { getQuotes(pageId, sections); }, errorFunction);
};
wqa.queryTitles(titles, getSections, errorFunction);
};
wqa.capitalizeString = function(input) {
var inputArray = input.split(' ');
var output = [];
for(s in inputArray) {
output.push(inputArray[s].charAt(0).toUpperCase() + inputArray[s].slice(1));
}
return output.join(' ');
};
return wqa;
}());
$scope.quotes = [];
$scope.category = 'love';
$scope.generateQuote = function(){
WikiquoteApi.getRandomQuote($scope.category, function(results){
var empty = results.quote.quote.length < 10;
if(!empty){
var body = results.quote.quote;
var result = body.replace(/(<([^>]+)>)/ig, "");
$scope.quote = {
text: result,
author: results.quote.author
};
$scope.$apply();
} else {
$scope.generateQuote();
}
});
};
$scope.generateQuote();
$scope.$watch('category', function(){
$scope.generateQuote();
});
}]);
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.14/angular.min.js"></script>
html {
height: 100%;
body {
height: 100%;
#hero {
background-image: url('https://c2.staticflickr.com/8/7005/13414753665_eba9bf75b7_c.jpg');
background-size: cover;
background-position: center;
height:200px;
}
#wrap {
height: auto !important;
margin: 0 auto -40px;
min-height: 100%;
.container {
#logo {
#headline {
background-color: #E8566D;
width: 100px;
font-size: 32px;
height: 100px;
text-align: center;
margin: -50px auto 0;
color: #fff;
font-family: 'Bilbo Swash Caps', cursive;
line-height: 32px;
border-radius:50%;
padding-top: 17px;
}
}
#category {
font-family: 'Cutive Mono', serif ;
padding-top: 50px;
h4 {
color: #4B5E6D;
line-height: 9px;
padding-right: 10px;
}
.cat {
text-align: center;
background-color: #4B5E6D;
color: #fff;
padding: 10px 0;
border: 1px solid #fff;
cursor: pointer;
&.active, &:hover{
background-color: #6D7F8C;
}
}
}
#quotes {
margin-top:50px;
font-family: 'Cutive Mono', serif ;
border: 1px solid #5B6D7A;
#quote {
margin: 0 auto;
position: relative;
.saying {
font-size: 24px;
padding: 20px 20px 0;
line-height: 30px;
&:before, &:after {
content: "\"";
position: absolute;
font-size: 22px;
}
&:before {
left: 10px;
}
}
.author {
font-size: 18px;
text-align: right;
margin-right: 35px;
&:before {
content: '-';
}
}
}
}
#cta {
padding-top: 70px;
#generate {
margin: 0 auto;
display: block;
width: 200px;
background-color: #4B5E6D;
&:hover {
background-color: #fff;
color: #4B5E6D;
border: 1px solid #4B5E6D;
}
}
}
}
.push {
height: 60px;
}
}
footer {
width: 100%;
height: 40px;
background-color: #E8566D;
text-align: center;
color: #fff;
span {
font-family: 'Cutive Mono', serif ;
font-size: 14px;
line-height: 40px;
}
}
}
}
.rrssb-buttons{box-sizing:border-box;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;height:36px;margin:0;padding:0;width:100%}.rrssb-buttons:after{clear:both}.rrssb-buttons:after,.rrssb-buttons:before{content:' ';display:table}.rrssb-buttons li{box-sizing:border-box;float:left;height:100%;line-height:13px;list-style:none;margin:0;padding:0 2px}.rrssb-buttons li.rrssb-email a{background-color:#0a88ff}.rrssb-buttons li.rrssb-email a:hover{background-color:#006ed6}.rrssb-buttons li.rrssb-facebook a{background-color:#306199}.rrssb-buttons li.rrssb-facebook a:hover{background-color:#244872}.rrssb-buttons li.rrssb-tumblr a{background-color:#32506d}.rrssb-buttons li.rrssb-tumblr a:hover{background-color:#22364a}.rrssb-buttons li.rrssb-linkedin a{background-color:#007bb6}.rrssb-buttons li.rrssb-linkedin a:hover{background-color:#005983}.rrssb-buttons li.rrssb-twitter a{background-color:#26c4f1}.rrssb-buttons li.rrssb-twitter a:hover{background-color:#0eaad6}.rrssb-buttons li.rrssb-googleplus a{background-color:#e93f2e}.rrssb-buttons li.rrssb-googleplus a:hover{background-color:#ce2616}.rrssb-buttons li.rrssb-youtube a{background-color:#df1c31}.rrssb-buttons li.rrssb-youtube a:hover{background-color:#b21627}.rrssb-buttons li.rrssb-reddit a{background-color:#8bbbe3}.rrssb-buttons li.rrssb-reddit a:hover{background-color:#62a3d9}.rrssb-buttons li.rrssb-pinterest a{background-color:#b81621}.rrssb-buttons li.rrssb-pinterest a:hover{background-color:#8a1119}.rrssb-buttons li.rrssb-pocket a{background-color:#ed4054}.rrssb-buttons li.rrssb-pocket a:hover{background-color:#e4162d}.rrssb-buttons li.rrssb-github a{background-color:#444}.rrssb-buttons li.rrssb-github a:hover{background-color:#2b2b2b}.rrssb-buttons li.rrssb-instagram a{background-color:#517fa4}.rrssb-buttons li.rrssb-instagram a:hover{background-color:#406582}.rrssb-buttons li.rrssb-delicious a{background-color:#0B79E5}.rrssb-buttons li.rrssb-delicious a:hover{background-color:#095fb4}.rrssb-buttons li.rrssb-vk a{background-color:#4d71a9}.rrssb-buttons li.rrssb-vk a:hover{background-color:#3d5a86}.rrssb-buttons li.rrssb-hackernews a{background-color:#f60}.rrssb-buttons li.rrssb-hackernews a:hover{background-color:#cc5200}.rrssb-buttons li a{background-color:#ccc;border-radius:2px;box-sizing:border-box;display:block;font-size:11px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-weight:700;height:100%;padding:11px 7px 12px 27px;position:relative;text-align:center;text-decoration:none;text-transform:uppercase;-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out;width:100%}.rrssb-buttons li a .rrssb-icon{display:block;left:10px;padding-top:9px;position:absolute;top:0;width:10%}.rrssb-buttons li a .rrssb-icon svg{height:17px;width:17px}.rrssb-buttons li a .rrssb-icon svg path,.rrssb-buttons li a .rrssb-icon svg polygon{fill:#fff}.rrssb-buttons li a .rrssb-text{color:#fff}.rrssb-buttons li a:active{box-shadow:inset 1px 3px 15px 0 rgba(22,0,0,.25)}.rrssb-buttons li.small a{padding:0}.rrssb-buttons li.small a .rrssb-icon{left:auto;margin:0 auto;overflow:hidden;position:relative;top:auto;width:100%}.rrssb-buttons li.small a .rrssb-text{visibility:hidden}.rrssb-buttons.large-format,.rrssb-buttons.large-format li{height:auto}.rrssb-buttons.large-format li:first-child:nth-last-child(1) a{font-size:20px;font-size:4vw}.rrssb-buttons.large-format li:first-child:nth-last-child(2) a,.rrssb-buttons.large-format li:first-child:nth-last-child(2)~li a{font-size:16px;font-size:2vw}.rrssb-buttons.large-format li:first-child:nth-last-child(3) a,.rrssb-buttons.large-format li:first-child:nth-last-child(3)~li a{font-size:14px;font-size:1.7vw}.rrssb-buttons.large-format li:first-child:nth-last-child(4) a,.rrssb-buttons.large-format li:first-child:nth-last-child(4)~li a{font-size:13px;font-size:1.4vw}.rrssb-buttons.large-format li:first-child:nth-last-child(5) a,.rrssb-buttons.large-format li:first-child:nth-last-child(5)~li a{font-size:13px;font-size:1.2vw}.rrssb-buttons.large-format li:first-child:nth-last-child(6) a,.rrssb-buttons.large-format li:first-child:nth-last-child(6)~li a{font-size:12px;font-size:1.05vw}.rrssb-buttons.large-format li:first-child:nth-last-child(7) a,.rrssb-buttons.large-format li:first-child:nth-last-child(7)~li a{font-size:11px;font-size:.9vw}.rrssb-buttons.large-format li:first-child:nth-last-child(8) a,.rrssb-buttons.large-format li:first-child:nth-last-child(8)~li a{font-size:11px;font-size:.8vw}.rrssb-buttons.large-format li:first-child:nth-last-child(9) a,.rrssb-buttons.large-format li:first-child:nth-last-child(9)~li a{font-size:11px;font-size:.7vw}.rrssb-buttons.large-format li:first-child:nth-last-child(10) a,.rrssb-buttons.large-format li:first-child:nth-last-child(10)~li a{font-size:11px;font-size:.6vw}.rrssb-buttons.large-format li:first-child:nth-last-child(11) a,.rrssb-buttons.large-format li:first-child:nth-last-child(11)~li a{font-size:11px;font-size:.5vw}.rrssb-buttons.large-format li a{-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:.2em;padding:8.5% 0 8.5% 12%}.rrssb-buttons.large-format li a .rrssb-icon{height:100%;left:7%;padding-top:0;width:12%}.rrssb-buttons.large-format li a .rrssb-icon svg{height:100%;position:absolute;top:0;width:100%}.rrssb-buttons.large-format li a .rrssb-text{-webkit-backface-visibility:hidden;backface-visibility:hidden}.rrssb-buttons.small-format{padding-top:5px}.rrssb-buttons.small-format li{height:80%;padding:0 1px}.rrssb-buttons.small-format li a .rrssb-icon{height:100%;padding-top:0}.rrssb-buttons.small-format li a .rrssb-icon svg{height:48%;position:relative;top:6px;width:80%}.rrssb-buttons.tiny-format{height:22px;position:relative}.rrssb-buttons.tiny-format li{padding-right:7px}.rrssb-buttons.tiny-format li a{background-color:transparent;padding:0}.rrssb-buttons.tiny-format li a .rrssb-icon svg{height:70%;width:100%}.rrssb-buttons.tiny-format li a:active,.rrssb-buttons.tiny-format li a:hover{background-color:transparent}.rrssb-buttons.tiny-format li.rrssb-email a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-email a .rrssb-icon svg polygon{fill:#0a88ff}.rrssb-buttons.tiny-format li.rrssb-email a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-email a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#0054a3}.rrssb-buttons.tiny-format li.rrssb-facebook a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-facebook a .rrssb-icon svg polygon{fill:#306199}.rrssb-buttons.tiny-format li.rrssb-facebook a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-facebook a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#18304b}.rrssb-buttons.tiny-format li.rrssb-tumblr a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-tumblr a .rrssb-icon svg polygon{fill:#32506d}.rrssb-buttons.tiny-format li.rrssb-tumblr a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-tumblr a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#121d27}.rrssb-buttons.tiny-format li.rrssb-linkedin a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-linkedin a .rrssb-icon svg polygon{fill:#007bb6}.rrssb-buttons.tiny-format li.rrssb-linkedin a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-linkedin a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#003650}.rrssb-buttons.tiny-format li.rrssb-twitter a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-twitter a .rrssb-icon svg polygon{fill:#26c4f1}.rrssb-buttons.tiny-format li.rrssb-twitter a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-twitter a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#0b84a6}.rrssb-buttons.tiny-format li.rrssb-googleplus a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-googleplus a .rrssb-icon svg polygon{fill:#e93f2e}.rrssb-buttons.tiny-format li.rrssb-googleplus a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-googleplus a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#a01e11}.rrssb-buttons.tiny-format li.rrssb-youtube a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-youtube a .rrssb-icon svg polygon{fill:#df1c31}.rrssb-buttons.tiny-format li.rrssb-youtube a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-youtube a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#84111d}.rrssb-buttons.tiny-format li.rrssb-reddit a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-reddit a .rrssb-icon svg polygon{fill:#8bbbe3}.rrssb-buttons.tiny-format li.rrssb-reddit a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-reddit a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#398bcf}.rrssb-buttons.tiny-format li.rrssb-pinterest a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-pinterest a .rrssb-icon svg polygon{fill:#b81621}.rrssb-buttons.tiny-format li.rrssb-pinterest a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-pinterest a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#5d0b11}.rrssb-buttons.tiny-format li.rrssb-pocket a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-pocket a .rrssb-icon svg polygon{fill:#ed4054}.rrssb-buttons.tiny-format li.rrssb-pocket a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-pocket a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#b61124}.rrssb-buttons.tiny-format li.rrssb-github a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-github a .rrssb-icon svg polygon{fill:#444}.rrssb-buttons.tiny-format li.rrssb-github a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-github a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#111}.rrssb-buttons.tiny-format li.rrssb-instagram a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-instagram a .rrssb-icon svg polygon{fill:#517fa4}.rrssb-buttons.tiny-format li.rrssb-instagram a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-instagram a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#2f4a60}.rrssb-buttons.tiny-format li.rrssb-delicious a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-delicious a .rrssb-icon svg polygon{fill:#0B79E5}.rrssb-buttons.tiny-format li.rrssb-delicious a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-delicious a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#064684}.rrssb-buttons.tiny-format li.rrssb-vk a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-vk a .rrssb-icon svg polygon{fill:#4d71a9}.rrssb-buttons.tiny-format li.rrssb-vk a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-vk a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#2d4263}.rrssb-buttons.tiny-format li.rrssb-hackernews a .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-hackernews a .rrssb-icon svg polygon{fill:#f60}.rrssb-buttons.tiny-format li.rrssb-hackernews a .rrssb-icon:hover .rrssb-icon svg path,.rrssb-buttons.tiny-format li.rrssb-hackernews a .rrssb-icon:hover .rrssb-icon svg polygon{fill:#993d00}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" />
<link href="http://fonts.googleapis.com/css?family=Bilbo+Swash+Caps" rel="stylesheet" />
<link href="http://fonts.googleapis.com/css?family=Cutive+Mono" rel="stylesheet" />
<link href="http://fonts.googleapis.com/css?family=La+Belle+Aurore" rel="stylesheet" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment