├── CNAME
├── robots.txt
├── .gitignore
├── screenshot.png
├── src
├── img
│ ├── blog-image.png
│ ├── blog-author.jpg
│ └── icons
│ │ ├── favicon.ico
│ │ ├── largetile.png
│ │ ├── smalltile.png
│ │ ├── widetile.png
│ │ ├── mediumtile.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon-64x64.png
│ │ ├── apple-touch-icon.png
│ │ ├── apple-touch-icon-114x114.png
│ │ ├── apple-touch-icon-120x120.png
│ │ ├── apple-touch-icon-144x144.png
│ │ ├── apple-touch-icon-152x152.png
│ │ ├── apple-touch-icon-57x57.png
│ │ ├── apple-touch-icon-60x60.png
│ │ ├── apple-touch-icon-72x72.png
│ │ └── apple-touch-icon-76x76.png
├── styl
│ ├── _variables.styl
│ ├── _animations.styl
│ ├── _footer.styl
│ ├── _elements.styl
│ ├── _typo.styl
│ ├── _icons.styl
│ ├── main.styl
│ ├── _home.styl
│ ├── _author.styl
│ ├── _header.styl
│ ├── _menu.styl
│ ├── _hightlight.styl
│ ├── _post.styl
│ └── _search.styl
└── js
│ ├── zmain.js
│ ├── simpleJekyllSearch.js
│ ├── scroll.js
│ └── azepto.js
├── assets
├── img
│ ├── blog-author.jpg
│ ├── blog-image.png
│ └── icons
│ │ ├── favicon.ico
│ │ ├── widetile.png
│ │ ├── 32_favicon.png
│ │ ├── 64_favicon.png
│ │ ├── largetile.png
│ │ ├── mediumtile.png
│ │ ├── smalltile.png
│ │ ├── favicon-16x16.ico
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon-64x64.png
│ │ ├── apple-touch-icon.png
│ │ ├── apple-touch-icon-57x57.png
│ │ ├── apple-touch-icon-60x60.png
│ │ ├── apple-touch-icon-72x72.png
│ │ ├── apple-touch-icon-76x76.png
│ │ ├── apple-touch-icon-114x114.png
│ │ ├── apple-touch-icon-120x120.png
│ │ ├── apple-touch-icon-144x144.png
│ │ └── apple-touch-icon-152x152.png
├── css
│ └── main.css
└── js
│ └── main.js
├── _includes
├── footer.html
├── header-post.html
├── author.html
├── comments.html
├── menu-search.html
├── share.html
├── header-default.html
├── head.html
└── svg-icons.html
├── _layouts
├── page.html
├── default.html
├── minimal.html
├── post.html
└── compress.html
├── sitemap.xml
├── search.json
├── package.json
├── series.html
├── _posts
├── 2015-08-04-welcome-to-jekyll.md
└── 2015-08-03-how-to-use.md
├── LICENSE
├── _config.yml
├── tags.html
├── feed.xml
├── index.html
├── about.html
├── gulpfile.js
├── Readme.md
└── initpost.sh
/CNAME:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/robots.txt:
--------------------------------------------------------------------------------
1 | # robotstxt.org/
2 |
3 | User-agent: *
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | _site
2 | .sass-cache
3 | node_modules
4 | _drafts
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/screenshot.png
--------------------------------------------------------------------------------
/src/img/blog-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/blog-image.png
--------------------------------------------------------------------------------
/src/img/blog-author.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/blog-author.jpg
--------------------------------------------------------------------------------
/assets/img/blog-author.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/blog-author.jpg
--------------------------------------------------------------------------------
/assets/img/blog-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/blog-image.png
--------------------------------------------------------------------------------
/src/img/icons/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/favicon.ico
--------------------------------------------------------------------------------
/src/img/icons/largetile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/largetile.png
--------------------------------------------------------------------------------
/src/img/icons/smalltile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/smalltile.png
--------------------------------------------------------------------------------
/src/img/icons/widetile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/widetile.png
--------------------------------------------------------------------------------
/assets/img/icons/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/favicon.ico
--------------------------------------------------------------------------------
/assets/img/icons/widetile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/widetile.png
--------------------------------------------------------------------------------
/src/img/icons/mediumtile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/mediumtile.png
--------------------------------------------------------------------------------
/assets/img/icons/32_favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/32_favicon.png
--------------------------------------------------------------------------------
/assets/img/icons/64_favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/64_favicon.png
--------------------------------------------------------------------------------
/assets/img/icons/largetile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/largetile.png
--------------------------------------------------------------------------------
/assets/img/icons/mediumtile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/mediumtile.png
--------------------------------------------------------------------------------
/assets/img/icons/smalltile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/smalltile.png
--------------------------------------------------------------------------------
/src/img/icons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/favicon-16x16.png
--------------------------------------------------------------------------------
/src/img/icons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/favicon-32x32.png
--------------------------------------------------------------------------------
/src/img/icons/favicon-64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/favicon-64x64.png
--------------------------------------------------------------------------------
/assets/img/icons/favicon-16x16.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/favicon-16x16.ico
--------------------------------------------------------------------------------
/assets/img/icons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/favicon-16x16.png
--------------------------------------------------------------------------------
/assets/img/icons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/favicon-32x32.png
--------------------------------------------------------------------------------
/assets/img/icons/favicon-64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/favicon-64x64.png
--------------------------------------------------------------------------------
/src/img/icons/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/apple-touch-icon.png
--------------------------------------------------------------------------------
/assets/img/icons/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/apple-touch-icon.png
--------------------------------------------------------------------------------
/src/img/icons/apple-touch-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/apple-touch-icon-114x114.png
--------------------------------------------------------------------------------
/src/img/icons/apple-touch-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/apple-touch-icon-120x120.png
--------------------------------------------------------------------------------
/src/img/icons/apple-touch-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/apple-touch-icon-144x144.png
--------------------------------------------------------------------------------
/src/img/icons/apple-touch-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/apple-touch-icon-152x152.png
--------------------------------------------------------------------------------
/src/img/icons/apple-touch-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/apple-touch-icon-57x57.png
--------------------------------------------------------------------------------
/src/img/icons/apple-touch-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/apple-touch-icon-60x60.png
--------------------------------------------------------------------------------
/src/img/icons/apple-touch-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/apple-touch-icon-72x72.png
--------------------------------------------------------------------------------
/src/img/icons/apple-touch-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/src/img/icons/apple-touch-icon-76x76.png
--------------------------------------------------------------------------------
/assets/img/icons/apple-touch-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/apple-touch-icon-57x57.png
--------------------------------------------------------------------------------
/assets/img/icons/apple-touch-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/apple-touch-icon-60x60.png
--------------------------------------------------------------------------------
/assets/img/icons/apple-touch-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/apple-touch-icon-72x72.png
--------------------------------------------------------------------------------
/assets/img/icons/apple-touch-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/apple-touch-icon-76x76.png
--------------------------------------------------------------------------------
/assets/img/icons/apple-touch-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/apple-touch-icon-114x114.png
--------------------------------------------------------------------------------
/assets/img/icons/apple-touch-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/apple-touch-icon-120x120.png
--------------------------------------------------------------------------------
/assets/img/icons/apple-touch-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/apple-touch-icon-144x144.png
--------------------------------------------------------------------------------
/assets/img/icons/apple-touch-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sdk/will-jekyll-template/gh-pages/assets/img/icons/apple-touch-icon-152x152.png
--------------------------------------------------------------------------------
/src/styl/_variables.styl:
--------------------------------------------------------------------------------
1 | // COLORS
2 | main = #0562DC
3 | hover = darken(main, 50%)
4 | sec = #FFFFFF
5 | lightGray = #F2F2F2
6 | texts = #333333
7 | colorcode = #3085F4
8 | // Resolution
9 | cut = 37.5rem
--------------------------------------------------------------------------------
/src/styl/_animations.styl:
--------------------------------------------------------------------------------
1 | @keyframes pulse
2 | from
3 | opacity .4
4 | top 0
5 | 50%
6 | opacity 1
7 | top -10px
8 | to
9 | opacity .4
10 | top 0
--------------------------------------------------------------------------------
/_includes/footer.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/_layouts/page.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
4 | http://willianjusten.com.br
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in
14 | all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | THE SOFTWARE.
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | # Site settings
2 | title: A blog about lorem ipsum dolor sit amet
3 | description: A blog about lorem ipsum dolor sit amet
4 | baseurl: "/will-jekyll-template" # the subpath of your site, e.g. /blog
5 | url: "https://willianjusten.com.br" # the base hostname & protocol for your site e.g. http://willianjusten.com.br
6 |
7 | # User settings
8 | username: Lorem Ipsum
9 | user_description: Anon Developer at Lorem Ipsum Dolor
10 | user_title: Anon Developer
11 | email: anon@anon.com
12 | twitter_username: lorem_ipsum
13 | github_username: lorem_ipsum
14 | gplus_username: lorem_ipsum
15 | disqus_username: lorem_ipsum
16 |
17 | # Build settings
18 | markdown: kramdown
19 | highlighter: rouge
20 | permalink: /:title/
21 |
22 |
23 | # html minify
24 | compress_html:
25 | clippings: all
26 | comments: all
27 | endings: []
28 | profile: false
29 |
30 | # Links to include in menu navigation
31 | # For external links add external: true
32 | links:
33 | - title: Home
34 | url: /
35 | - title: Series
36 | url: /series
37 | - title: Tags
38 | url: /tags
39 | - title: About Me
40 | url: /about
41 |
42 | # exclude my node related stuff
43 | exclude: ['package.json', 'src', 'node_modules']
44 |
--------------------------------------------------------------------------------
/_includes/menu-search.html:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/_includes/share.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/js/zmain.js:
--------------------------------------------------------------------------------
1 | (function( $, window, undefined ) {
2 | // Menu
3 | $("a#slide").click(function(){
4 | $("#sidebar,a#slide,#fade").addClass("slide");
5 | $("#open").hide();
6 | $("#search").hide();
7 | $("#close").show();
8 | });
9 |
10 | $("#fade").click(function(){
11 | $("#sidebar,a#slide,#fade").removeClass("slide");
12 | $("#open").show();
13 | $("#search").show();
14 | $("#close").hide();
15 | });
16 |
17 | // Search
18 | var bs = {
19 | close: $(".icon-remove-sign"),
20 | searchform: $(".search-form"),
21 | canvas: $("body"),
22 | dothis: $('.dosearch')
23 | };
24 |
25 | bs.dothis.on('click', function() {
26 | $('.search-wrapper').toggleClass('active');
27 | bs.searchform.toggleClass('active');
28 | bs.searchform.find('input').focus();
29 | bs.canvas.toggleClass('search-overlay');
30 | $('.search-field').simpleJekyllSearch();
31 | });
32 |
33 | bs.close.on('click', function() {
34 | $('.search-wrapper').toggleClass('active');
35 | bs.searchform.toggleClass('active');
36 | bs.canvas.removeClass('search-overlay');
37 | });
38 |
39 | // Scroll
40 | smoothScroll.init({
41 | updateURL: false
42 | })
43 | })( Zepto, window );
--------------------------------------------------------------------------------
/src/styl/_home.styl:
--------------------------------------------------------------------------------
1 | .post-item
2 | text-align left
3 | padding rem(40px) 0
4 | border-bottom 3px solid lightGray
5 | center(rem(1000px))
6 | +below(rem(1000px))
7 | padding-left rem(20px)
8 | padding-right rem(20px)
9 | .datetime
10 | col(1/6)
11 | text-align center
12 | text-decoration none
13 | +below(cut)
14 | stack()
15 | .day
16 | mainFont(800)
17 | color main
18 | font-size rem(80px)
19 | line-height 1.6
20 | +below(cut)
21 | stack()
22 | .month-year
23 | color black
24 | font-size rem(18px)
25 | .content
26 | col(5/6)
27 | +below(cut)
28 | stack()
29 | a
30 | text-decoration none
31 | .date
32 | color main
33 | .post-title
34 | color black
35 | font-size rem(32px)
36 | +below(cut)
37 | text-align center
38 | .description
39 | color texts
40 | mainFont(300)
41 | font-size rem(20px)
42 | a
43 | color main
44 | text-decoration underline
--------------------------------------------------------------------------------
/src/styl/_author.styl:
--------------------------------------------------------------------------------
1 | .author
2 | background lightGray
3 | display table
4 | width 100%
5 | padding rem(40px) 0
6 | margin rem(40px) 0
7 | +above(cut)
8 | padding rem(50px) 0
9 | .details
10 | margin auto
11 | max-width rem(800px)
12 | padding 0 rem(20px)
13 | +below(cut)
14 | text-align center
15 | img
16 | border-radius 50%
17 | display block
18 | margin auto
19 | +above(cut)
20 | float left
21 | margin-right 3.125rem
22 | .def
23 | color gray
24 | font-size 1.125rem
25 | mainFont(300)
26 | margin rem(10px)
27 | +above(cut)
28 | margin 0
29 | padding-top rem(25px)
30 | .name
31 | margin 0
32 | a
33 | mainFont()
34 | text-decoration none
35 | color black
36 | font-size rem(30px)
37 | &:hover
38 | color main
39 | +above(cut)
40 | font-size rem(45px)
41 | .desc
42 | mainFont(300)
43 | margin rem(10px)
44 | font-size rem(16px)
45 | +above(cut)
46 | font-size rem(20px)
47 | .email
48 | text-decoration none
49 | color main
50 |
51 |
--------------------------------------------------------------------------------
/src/styl/_header.styl:
--------------------------------------------------------------------------------
1 | html,
2 | body
3 | height 100%
4 |
5 |
6 | $bg
7 | background main
8 | height 100%
9 | .content
10 | width 95%
11 | align(both)
12 | text-align center
13 |
14 | // Header home
15 | .header-site
16 | @extends $bg
17 | h1,h2
18 | color: sec
19 | text-align center
20 | .site-title
21 | font-size rem(60px)
22 | line-height 1
23 | margin-top -80px
24 | display block
25 | +above(cut)
26 | margin-bottom 0
27 | font-size rem(100px)
28 | .site-description
29 | font-size rem(20px)
30 | display block
31 | margin rem(30px) 0
32 | +above(cut)
33 | font-size rem(40px)
34 |
35 | // Header Post
36 | .header-post
37 | @extends $bg
38 | .content
39 | +above(cut)
40 | center(1000px)
41 | .subheader
42 | display table
43 | padding 20px
44 | a
45 | border 2px solid sec
46 | border-radius 20px
47 | padding 0 10px
48 | +above(cut)
49 | padding 0 10px
50 |
51 | .date
52 | mainFont(300)
53 | font-size rem(16px)
54 | h1
55 | text-transform uppercase
56 | font-size rem(30px)
57 | margin 0 0 30px
58 | +above(cut)
59 | font-size rem(60px)
60 | .subtitle
61 | mainFont(300)
62 | font-size rem(20px)
63 | h1,.subtitle, .date
64 | color sec
65 | text-align center
66 | p
67 | color sec
68 | text-decoration none
69 | mainFont(300)
70 | font-size rem(18px)
--------------------------------------------------------------------------------
/tags.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: minimal
3 | title: "#Tags"
4 | permalink: /tags/index.html
5 | description: "Take a look at my beautiful tags."
6 | ---
7 |
8 |
21 |
22 | {% for tag in site.tags %}
23 | {{ tag[0] }}
24 |
25 | {% assign pages_list = tag[1] %}
26 | {% for post in pages_list reversed %}
27 | {% if post.title != null %}
28 | {% if group == null or group == post.group %}
29 | {{ post.title }}{{ post.date | date: "%B %d, %Y" }}
30 | {% endif %}
31 | {% endif %}
32 | {% endfor %}
33 | {% assign pages_list = nil %}
34 | {% assign group = nil %}
35 |
36 | {% endfor %}
--------------------------------------------------------------------------------
/feed.xml:
--------------------------------------------------------------------------------
1 | ---
2 | layout: null
3 | ---
4 |
5 |
6 |
7 | {{ site.title | xml_escape }}
8 | {{ site.description | xml_escape }}
9 | {{ site.url }}{{ site.baseurl }}/
10 |
11 | {{ site.time | date_to_rfc822 }}
12 | {{ site.time | date_to_rfc822 }}
13 | Jekyll v{{ jekyll.version }}
14 | {% for post in site.posts limit:10 %}
15 | -
16 |
{{ post.title | xml_escape }}
17 | {{ post.content | xml_escape | strip_html | truncatewords:100 }}
18 | {{ post.date | date_to_rfc822 }}
19 | {{ post.url | prepend: site.baseurl | prepend: site.url }}
20 | {{ post.url | prepend: site.baseurl | prepend: site.url }}
21 | {% for tag in post.tags %}
22 | {{ tag | xml_escape }}
23 | {% endfor %}
24 | {% for cat in post.categories %}
25 | {{ cat | xml_escape }}
26 | {% endfor %}
27 |
28 | {% endfor %}
29 |
30 |
31 |
--------------------------------------------------------------------------------
/_includes/header-default.html:
--------------------------------------------------------------------------------
1 |
18 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 |
6 | {% for post in site.posts %}
7 |
8 |
9 |
10 |
11 |
12 | {{ post.date | date: "%d" }}
13 |
14 |
15 | {{ post.date | date: "%B %Y" }}
16 |
17 |
18 |
19 |
20 |
{{ post.title }}
21 |
22 | {{ post.content | strip_html | truncatewords:40 }}
23 | Read more about {{post.title}}
24 |
25 |
26 |
31 |
32 |
33 | {% endfor %}
34 |
35 |
--------------------------------------------------------------------------------
/about.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: minimal
3 | title: "About me"
4 | permalink: /about/index.html
5 | description: "Some description about Lorem Ipsum..."
6 | ---
7 |
8 |
9 |
10 | About Me
11 |
12 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
13 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
14 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
15 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
16 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
17 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
18 |
19 |
20 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
21 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
22 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
23 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
24 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
25 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
26 |
27 |
28 | Skills
29 |
30 |
31 | HTML - Jade - Haml - Erb
32 | Design Responsivo (Mobile First)
33 | CSS (Stylus, Sass, Less)
34 | Css Frameworks (Bootstrap, Foundation)
35 | Javascript (Design Patterns, Testes)
36 | NodeJS
37 | AngularJS - ReactJS
38 | Grunt - Gulp - Yeoman
39 | Git
40 | PHP
41 | Python
42 | MySQL - MongoDB
43 | Scrum and Kanban
44 | TDD e Continuous Integration
45 |
46 |
47 | Projetos
48 |
49 |
--------------------------------------------------------------------------------
/src/styl/_menu.styl:
--------------------------------------------------------------------------------
1 | *, *:before, *:after
2 | -moz-box-sizing border-box
3 | -webkit-box-sizing border-box
4 | box-sizing border-box
5 |
6 | body
7 | left 0
8 | right 0
9 | margin auto
10 |
11 | a, aside, .overlay, body
12 | transition all .25s ease
13 | a.slideButton, .dosearch
14 | position absolute
15 | display block
16 | width 40px
17 | height 40px
18 | top 10px
19 | z-index 31
20 | .slideButton
21 | left 10px
22 | .dosearch
23 | right 10px
24 | background darken(main,10%)
25 | border-radius rem(3px)
26 | padding rem(2px) rem(3px)
27 | .icon-menu
28 | cursor pointer
29 | padding rem(5px)
30 | border-radius rem(3px)
31 | background darken(main,10%)
32 | width rem(40px)
33 | height rem(40px)
34 | fill sec
35 | .icon-search
36 | width rem(35px)
37 | height rem(35px)
38 |
39 | .overlay
40 | cursor pointer
41 |
42 | #close
43 | display none
44 |
45 | aside
46 | position fixed
47 | height 100%
48 | width rem(240px)
49 | padding rem(40px) 0 0
50 | top 0
51 | left rem(-240px)
52 | background #3F3F3F
53 | z-index 20
54 | box-shadow inset -10px -1px 15px -9px rgba(0,0,0,0.5)
55 | h2
56 | text-align center
57 | margin 0 0 rem(10px)
58 | mainFont(800)
59 | font-size rem(20px)
60 | color sec
61 | nav
62 | ul
63 | padding 0
64 | li
65 | margin 0
66 | list-style-type none
67 | a
68 | width 100%
69 | display block
70 | padding rem(20px)
71 | text-decoration none
72 | mainFont(300)
73 | color #b3b3b1
74 | border-top 1px solid darken(lightGray,50%)
75 | &:hover
76 | color #191918
77 | background sec
78 | .feed
79 | border-bottom 1px solid darken(lightGray,50%)
80 | &.slide
81 | left 0
82 |
83 |
84 | a.slideButton.slide
85 | left rem(250px)
86 | pointer-events none
87 |
88 | .overlay
89 | position fixed
90 | width 100%
91 | height 100%
92 | top 0
93 | left 0
94 | pointer-events none
95 | background transparent
96 | z-index 30
97 | &.slide
98 | pointer-events auto
99 | left 240px
100 | background rgba(0,0,0,.6)
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | var gulp = require('gulp'),
2 | plumber = require('gulp-plumber'),
3 | browserSync = require('browser-sync'),
4 | stylus = require('gulp-stylus'),
5 | uglify = require('gulp-uglify'),
6 | concat = require('gulp-concat'),
7 | jeet = require('jeet'),
8 | rupture = require('rupture'),
9 | koutoSwiss = require('kouto-swiss'),
10 | prefixer = require('autoprefixer-stylus'),
11 | imagemin = require('gulp-imagemin'),
12 | cp = require('child_process');
13 |
14 | var messages = {
15 | jekyllBuild: 'Running: $ jekyll build'
16 | };
17 |
18 | var jekyllCommand = (/^win/.test(process.platform)) ? 'jekyll.bat' : 'jekyll';
19 |
20 | /**
21 | * Build the Jekyll Site
22 | */
23 | gulp.task('jekyll-build', function (done) {
24 | browserSync.notify(messages.jekyllBuild);
25 | return cp.spawn(jekyllCommand, ['build'], {stdio: 'inherit'})
26 | .on('close', done);
27 | });
28 |
29 | /**
30 | * Rebuild Jekyll & do page reload
31 | */
32 | gulp.task('jekyll-rebuild', ['jekyll-build'], function () {
33 | browserSync.reload();
34 | });
35 |
36 | /**
37 | * Wait for jekyll-build, then launch the Server
38 | */
39 | gulp.task('browser-sync', ['jekyll-build'], function() {
40 | browserSync({
41 | server: {
42 | baseDir: '_site'
43 | }
44 | });
45 | });
46 |
47 | /**
48 | * Stylus task
49 | */
50 | gulp.task('stylus', function(){
51 | gulp.src('src/styl/main.styl')
52 | .pipe(plumber())
53 | .pipe(stylus({
54 | use:[koutoSwiss(), prefixer(), jeet(),rupture()],
55 | compress: true
56 | }))
57 | .pipe(gulp.dest('_site/assets/css/'))
58 | .pipe(browserSync.reload({stream:true}))
59 | .pipe(gulp.dest('assets/css'))
60 | });
61 |
62 | /**
63 | * Javascript Task
64 | */
65 | gulp.task('js', function(){
66 | return gulp.src('src/js/**/*.js')
67 | .pipe(plumber())
68 | .pipe(concat('main.js'))
69 | .pipe(uglify())
70 | .pipe(gulp.dest('assets/js/'))
71 | });
72 |
73 | /**
74 | * Imagemin Task
75 | */
76 | gulp.task('imagemin', function() {
77 | return gulp.src('src/img/**/*.{jpg,png,gif}')
78 | .pipe(plumber())
79 | .pipe(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true }))
80 | .pipe(gulp.dest('assets/img/'));
81 | });
82 |
83 | /**
84 | * Watch stylus files for changes & recompile
85 | * Watch html/md files, run jekyll & reload BrowserSync
86 | */
87 | gulp.task('watch', function () {
88 | gulp.watch('src/styl/**/*.styl', ['stylus']);
89 | gulp.watch('src/js/**/*.js', ['js']);
90 | gulp.watch('src/img/**/*.{jpg,png,gif}', ['imagemin']);
91 | gulp.watch(['*.html', '_includes/*.html', '_layouts/*.html', '_posts/*'], ['jekyll-rebuild']);
92 | });
93 |
94 | /**
95 | * Default task, running just `gulp` will compile the sass,
96 | * compile the jekyll site, launch BrowserSync & watch files.
97 | */
98 | gulp.task('default', ['js', 'stylus', 'browser-sync', 'watch']);
99 |
--------------------------------------------------------------------------------
/src/styl/_hightlight.styl:
--------------------------------------------------------------------------------
1 | pre
2 | background #222
3 | width 100%
4 | padding rem(20px) 0
5 | color sec
6 | margin rem(30px) 0
7 | font-size rem(14px)
8 | +above(cut)
9 | font-size rem(16px)
10 | padding rem(40px) 0
11 | margin rem(50px) 0
12 | code
13 | center(rem(800))
14 | padding 0 rem(20px)
15 | +below(cut)
16 | overflow-x: scroll;
17 | span
18 | line-height 1.5rem
19 | font-family 'Monaco','Consolas','Menlo',monospace
20 |
21 | .highlight
22 | margin 0
23 | +above(cut)
24 | word-wrap break-word
25 | .hll
26 | background-color #333
27 | .c, // Comment
28 | .cm, // Comment.Multiline
29 | .cp, // Comment.Preproc
30 | .c1, // Comment.Single
31 | .cs // Comment.Special
32 | color #75715e
33 |
34 | // Error
35 | .err
36 | color #960050
37 | background-color #1e0010
38 |
39 | .k, // Keyword
40 | .kc, // Keyword.Constant
41 | .kd, // Keyword.Declaration
42 | .kp, // Keyword.Pseudo
43 | .kr, // Keyword.Reserved
44 | .kt, // Keyword.Type
45 | .no // Name.Constant
46 | color #66d9ef
47 |
48 | .l, // Literal
49 | .mf, // Literal.Number.Float
50 | .mh, // Literal.Number.Hex
51 | .mi, // Literal.Number.Integer
52 | .mo, // Literal.Number.Oct
53 | .se, // Literal.String.Escape
54 | .il // Literal.Number.Integer.Long
55 | color #ae81ff
56 |
57 | .o, // Operator
58 | .p // Punctuation
59 | color #f7f7f2
60 |
61 | .m, // Literal.Number
62 | .n, // Name
63 | .nb, // Name.Builtin
64 | .ni, // Name.Entity
65 | .nl, // Name.Label
66 | .nn, // Name.Namespace
67 | .py, // Name.Property
68 | .nv, // Name.Variable
69 | .w, // Text.Whitespace
70 | .bp, // Name.Builtin.Pseudo
71 | .vc, // Name.Variable.Class
72 | .vg, // Name.Variable.Global
73 | .vi // Name.Variable.Instance
74 | color #a4d043
75 |
76 | .kn, // Keyword.Namespace
77 | .nt, // Name.Tag
78 | .ow // Operator.Word
79 | color #f92672
80 |
81 | .ge // Generic.Emph
82 | font-style italic
83 |
84 | .gs // Generic.Strong
85 | font-weight bold
86 |
87 | .ld, // Literal.Date
88 | .s, // Literal.String
89 | .sb, // Literal.String.Backtick
90 | .sc, // Literal.String.Char
91 | .sd, // Literal.String.Doc
92 | .s2, // Literal.String.Double
93 | .sh, // Literal.String.Heredoc
94 | .si, // Literal.String.Interpol
95 | .sx, // Literal.String.Other
96 | .sr, // Literal.String.Regex
97 | .s1, // Literal.String.Single
98 | .ss // Literal.String.Symbol
99 | color #e6db74
100 |
101 | .na, // Name.Attribute
102 | .nc, // Name.Class
103 | .nd, // Name.Decorator
104 | .ne, // Name.Exception
105 | .nf, // Name.Function
106 | .nx // Name.Other
107 | color #a6e22e
--------------------------------------------------------------------------------
/_layouts/compress.html:
--------------------------------------------------------------------------------
1 | ---
2 | # Jekyll layout that compresses HTML
3 | # v1.4.0
4 | # http://jch.penibelst.de/
5 | # © 2014–2015 Anatol Broder
6 | # MIT License
7 | ---
8 | {% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% case _pres.size %}{% when 2 %}{% capture _content %}{{ _content }}{{ _pres.last | split: " " | join: " " }}{% endcapture %}{% when 1 %}{% capture _content %}{{ _content }}{{ _pres.last | split: " " | join: " " }}{% endcapture %}{% endcase %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% assign _comment_befores = _content | split: _comments.first %}{% for _comment_before in _comment_befores %}{% assign _comment_content = _comment_before | split: _comments.last | first %}{% if _comment_content %}{% capture _comment %}{{ _comments.first }}{{ _comment_content }}{{ _comments.last }}{% endcapture %}{% assign _content = _content | remove: _comment %}{% endif %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ; ; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} Step Bytes raw {{ content | size }}{% if _profile_endings %} endings {{ _profile_endings }}{% endif %}{% if _profile_collapse %} collapse {{ _profile_collapse }}{% endif %}{% if _profile_comments %} comments {{ _profile_comments }}{% endif %}{% if _profile_clippings %} clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %}
--------------------------------------------------------------------------------
/src/styl/_post.styl:
--------------------------------------------------------------------------------
1 | .post-content
2 | padding rem(40px) 0
3 | img
4 | max-width 100%
5 | margin rem(30px) auto
6 | display block
7 | p, h1, h2, h3, h4,ul,ol, .tags, iframe
8 | center(rem(800px))
9 | padding 0 rem(20px)
10 | margin 0 auto rem(30px)
11 | mainFont(300)
12 | font-size rem(18px)
13 | line-height 2
14 | letter-spacing 0.01rem
15 | +above(cut)
16 | font-size rem(20px)
17 | p,li
18 | color texts
19 | code
20 | color colorcode
21 | a
22 | mainFont(300)
23 | color main
24 | text-decoration none
25 | border-bottom 2px solid main
26 | iframe
27 | margin-top rem(30px)
28 | width 100%
29 | #twitter-widget-0
30 | margin auto !important
31 | h1,h2,h3,h4,h5
32 | mainFont(800)
33 | h1
34 | font-size rem(30px)
35 | line-height 1.4
36 | +above(cut)
37 | font-size rem(45px)
38 | h2
39 | font-size rem(22px)
40 | line-height 1.4
41 | +above(cut)
42 | font-size rem(35px)
43 | h3
44 | font-size rem(18px)
45 | line-height 1.4
46 | +above(cut)
47 | font-size rem(25px)
48 | ul,ol
49 | padding-left rem(40px)
50 | ul.post-list
51 | padding 0
52 | +below(cut)
53 | padding 0 rem(20px)
54 | blockquote
55 | center(rem(730px))
56 | border-left rem(5px) solid main
57 | padding 0 rem(30px)
58 | margin rem(50px) auto
59 | +below(cut)
60 | width 70%
61 | p
62 | color rgba(0,0,0,0.6)
63 | margin 0
64 | +below(cut)
65 | font-size rem(18px)
66 | line-height 1.5
67 | padding 0
68 | hr
69 | center(rem(760px))
70 | border 1px solid lightGray
71 | margin 50px auto
72 |
73 | .share
74 | center(800px)
75 | text-align center
76 | border-top 1px solid lightGray
77 | padding-top rem(20px)
78 | svg
79 | margin rem(15px)
80 | size(35,35)
81 | a
82 | text-decoration none
83 | &:hover svg
84 | fill main
85 |
86 |
87 | table
88 | margin rem(50px) auto
89 | +below(cut)
90 | display none
91 | th, td
92 | border rem(2px) solid #ccc
93 | padding rem(5px)
94 |
95 | .tag-title
96 | mainFont(300)
97 | font-size rem(36px)
98 | margin-top rem(60px)
99 | center(rem(800px))
100 | +below(cut)
101 | font-size rem(28px)
102 | margin-top rem(20px)
103 | padding 0 rem(20px)
104 |
105 | .post-list
106 | list-style none
107 | margin rem(25px) auto
108 | +below(cut)
109 | padding 0 rem(20px)
110 | a
111 | display block
112 | border-bottom 1px solid darken(lightGray,10%)
113 | padding rem(10px) 0
114 | text-decoration none
115 | transition all .5s
116 | &:hover
117 | color hover
118 | border-bottom 1px solid hover
119 | .entry-date
120 | float right
121 | +below(cut)
122 | display none
123 |
--------------------------------------------------------------------------------
/src/js/simpleJekyllSearch.js:
--------------------------------------------------------------------------------
1 | (function($) {
2 | $.fn.simpleJekyllSearch = function(options) {
3 | var settings = $.extend({
4 | jsonFile : '/search.json',
5 | jsonFormat : 'title,category,desc,url,date,shortdate',
6 | template : '{title} {date} ',
7 | searchResults : '.search-results',
8 | searchResultsTitle : 'Search Results: ',
9 | limit : '5',
10 | noResults : 'Oh snap!Nothing found! :(
'
11 | }, options);
12 |
13 | var properties = settings.jsonFormat.split(',');
14 |
15 | var jsonData = [],
16 | origThis = this,
17 | searchResults = $(settings.searchResults);
18 |
19 | if(settings.jsonFile.length && searchResults.length){
20 | $.ajax({
21 | type: "GET",
22 | url: settings.jsonFile,
23 | dataType: 'json',
24 | success: function(data, textStatus, jqXHR) {
25 | jsonData = data;
26 | registerEvent();
27 | },
28 | error: function(x,y,z) {
29 | console.log("***ERROR in simpleJekyllSearch.js***");
30 | console.log(x);
31 | console.log(y);
32 | console.log(z);
33 | // x.responseText should have what's wrong
34 | }
35 | });
36 | }
37 |
38 |
39 | function registerEvent(){
40 | origThis.keyup(function(e){
41 | if($(this).val().length){
42 | writeMatches( performSearch($(this).val()) );
43 | }else{
44 | clearSearchResults();
45 | }
46 | });
47 | }
48 |
49 | function performSearch(str){
50 | var matches = [];
51 |
52 | $.each(jsonData,function(i,entry){
53 | for(var i=0;i
2 |
3 |
4 |
5 |
6 | {% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | {% if page.image %}
18 |
19 | {% else %}
20 |
21 | {% endif %}
22 |
23 |
24 |
25 |
26 | {% if page.image %}
27 |
28 | {% else %}
29 |
30 | {% endif %}
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/initpost.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # ------------------------------------------------------------------------------
4 | #
5 | # Program: initpost.sh
6 | # Author: Vitor Britto
7 | # Modified by: James Bowling
8 | # Author: Vitor Britto (edited by Will)
9 | # Description: script to create an initial structure for my posts.
10 | #
11 | # Usage: ./initpost.sh [options]
12 | #
13 | # Options:
14 | # -h, --help output instructions
15 | # -c, --create create post
16 | # -d, --draft create draft post
17 | #
18 | # Alias: alias ipost="bash ~/path/to/script/initpost.sh"
19 | #
20 | # Example:
21 | # ./initpost.sh -c How to replace strings with sed
22 | #
23 | # Important Notes:
24 | # - This script was created to generate new markdown files for my blog.
25 | #
26 | # ------------------------------------------------------------------------------
27 |
28 |
29 | # ------------------------------------------------------------------------------
30 | # | VARIABLES |
31 | # ------------------------------------------------------------------------------
32 |
33 | # CORE: Do not change these lines
34 | # ----------------------------------------------------------------
35 | POST_TITLE="${@:2:$(($#-1))}"
36 | POST_NAME="$(echo ${@:2:$(($#-1))} | sed -e 's/ /-/g' | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/")"
37 | CURRENT_DATE="$(date +'%Y-%m-%d')"
38 | TIME=$(date +"%T")
39 | # ----------------------------------------------------------------
40 |
41 |
42 | # SETTINGS: your configuration goes here
43 | # ----------------------------------------------------------------
44 |
45 | # Set your destination folder
46 | BINPATH=$(cd `dirname $0`; pwd)
47 | POSTPATH="${BINPATH}/_posts"
48 | DRAFTPATH="${BINPATH}/_drafts"
49 |
50 | if [[ "${1}" == "-c" || "${1}" == "--create" ]]; then
51 | DIST_FOLDER="$POSTPATH"
52 | FILE_NAME="${CURRENT_DATE}-${POST_NAME}.md"
53 | fi
54 |
55 | if [[ "${1}" == "-d" || "${1}" == "--draft" ]]; then
56 | DIST_FOLDER="$DRAFTPATH"
57 | FILE_NAME="${POST_NAME}.md"
58 | fi
59 |
60 | if [[ "${1}" == "-p" || "${1}" == "--publish" ]]; then
61 | DIST_FOLDER="$POSTPATH"
62 | FILE_NAME="${CURRENT_DATE}-${POST_NAME}.md"
63 | fi
64 |
65 | # Set your blog URL
66 | BLOG_URL="your_site"
67 |
68 | # Set your assets URL
69 | ASSETS_URL="assets/img/"
70 | # ----------------------------------------------------------------
71 |
72 |
73 |
74 | # ------------------------------------------------------------------------------
75 | # | UTILS |
76 | # ------------------------------------------------------------------------------
77 |
78 | # Header logging
79 | e_header() {
80 | printf "$(tput setaf 38)→ %s$(tput sgr0)\n" "$@"
81 | }
82 |
83 | # Success logging
84 | e_success() {
85 | printf "$(tput setaf 76)✔ %s$(tput sgr0)\n" "$@"
86 | }
87 |
88 | # Error logging
89 | e_error() {
90 | printf "$(tput setaf 1)✖ %s$(tput sgr0)\n" "$@"
91 | }
92 |
93 | # Warning logging
94 | e_warning() {
95 | printf "$(tput setaf 3)! %s$(tput sgr0)\n" "$@"
96 | }
97 |
98 |
99 |
100 | # ------------------------------------------------------------------------------
101 | # | MAIN FUNCTIONS |
102 | # ------------------------------------------------------------------------------
103 |
104 | # Everybody need some help
105 | initpost_help() {
106 |
107 | cat <
112 | Options:
113 | -h, --help output instructions
114 | -c, --create create post
115 | -d, --draft create draft post
116 | -p, --publish publish/promote a draft to a post
117 |
118 | Example:
119 | ./initpost.sh -c How to replace strings with sed
120 | Important Notes:
121 | - This script was created to generate new text files to my blog.
122 | Copyright (c) Vitor Britto
123 | Licensed under the MIT license.
124 | ------------------------------------------------------------------------------
125 | EOT
126 |
127 | }
128 |
129 | # Initial Content
130 | initpost_content() {
131 |
132 | echo "---"
133 | echo "layout: post"
134 | echo "title: \"${POST_TITLE}\""
135 | echo "date: ${CURRENT_DATE} ${TIME}"
136 | echo "image: '/assets/img/'"
137 | echo "description:"
138 | echo "tags:"
139 | echo "categories:"
140 | echo "twitter_text:"
141 | echo "---"
142 |
143 | }
144 |
145 | # Create post
146 | initpost_file() {
147 | if [ ! -f "$FILE_NAME" ]; then
148 | e_header "Creating template..."
149 | initpost_content > "${DIST_FOLDER}/${FILE_NAME}"
150 | e_success "Initial post successfully created!"
151 | else
152 | e_warning "File already exist."
153 | exit 1
154 | fi
155 |
156 | }
157 |
158 | # Create draft
159 | initdraft_file() {
160 | if [ ! -f "$FILE_NAME" ]; then
161 | e_header "Creating draft template..."
162 | initpost_content > "${DIST_FOLDER}/${FILE_NAME}"
163 | e_success "Initial draft successfully created!"
164 | else
165 | e_warning "File already exist."
166 | exit 1
167 | fi
168 |
169 | }
170 |
171 | # Promote draft
172 | promote_draft() {
173 | if [ ! -f "$FILE_NAME" ]; then
174 | e_header "Promoting draft..."
175 | if mv "${DRAFTPATH}/${POST_NAME}.md" "${POSTPATH}/${CURRENT_DATE}-${POST_NAME}.md"; then
176 | sed -i -e "s/date: .*/date: ${CURRENT_DATE} ${TIME}/" ${POSTPATH}/${CURRENT_DATE}-${POST_NAME}.md
177 | e_success "Draft promoted successfully!"
178 | else
179 | e_warning "File already exists or draft promotion failed."
180 | exit 1
181 | fi
182 | fi
183 | }
184 |
185 | # ------------------------------------------------------------------------------
186 | # | INITIALIZE PROGRAM |
187 | # ------------------------------------------------------------------------------
188 |
189 | main() {
190 |
191 | # Show help
192 | if [[ "${1}" == "-h" || "${1}" == "--help" ]]; then
193 | initpost_help ${1}
194 | exit
195 | fi
196 |
197 | # Create
198 | if [[ "${1}" == "-c" || "${1}" == "--create" ]]; then
199 | initpost_file $*
200 | exit
201 | fi
202 |
203 | # Draft
204 | if [[ "${1}" == "-d" || "${1}" == "--draft" ]]; then
205 | initdraft_file $*
206 | exit
207 | fi
208 |
209 | # Promote
210 | if [[ "${1}" == "-p" || "${1}" == "--promote" ]]; then
211 | promote_draft $*
212 | exit
213 | fi
214 |
215 | }
216 |
217 | # Initialize
218 | main $*
--------------------------------------------------------------------------------
/_includes/svg-icons.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/js/scroll.js:
--------------------------------------------------------------------------------
1 | /**
2 | * smooth-scroll v5.3.3
3 | * Animate scrolling to anchor links, by Chris Ferdinandi.
4 | * http://github.com/cferdinandi/smooth-scroll
5 | *
6 | * Free to use under the MIT License.
7 | * http://gomakethings.com/mit/
8 | */
9 |
10 | (function (root, factory) {
11 | if ( typeof define === 'function' && define.amd ) {
12 | define('smoothScroll', factory(root));
13 | } else if ( typeof exports === 'object' ) {
14 | module.exports = factory(root);
15 | } else {
16 | root.smoothScroll = factory(root);
17 | }
18 | })(window || this, function (root) {
19 |
20 | 'use strict';
21 |
22 | //
23 | // Variables
24 | //
25 |
26 | var smoothScroll = {}; // Object for public APIs
27 | var supports = !!document.querySelector && !!root.addEventListener; // Feature test
28 | var settings, eventTimeout, fixedHeader;
29 |
30 | // Default settings
31 | var defaults = {
32 | speed: 500,
33 | easing: 'easeInOutCubic',
34 | offset: 0,
35 | updateURL: true,
36 | callbackBefore: function () {},
37 | callbackAfter: function () {}
38 | };
39 |
40 |
41 | //
42 | // Methods
43 | //
44 |
45 | /**
46 | * A simple forEach() implementation for Arrays, Objects and NodeLists
47 | * @private
48 | * @param {Array|Object|NodeList} collection Collection of items to iterate
49 | * @param {Function} callback Callback function for each iteration
50 | * @param {Array|Object|NodeList} scope Object/NodeList/Array that forEach is iterating over (aka `this`)
51 | */
52 | var forEach = function (collection, callback, scope) {
53 | if (Object.prototype.toString.call(collection) === '[object Object]') {
54 | for (var prop in collection) {
55 | if (Object.prototype.hasOwnProperty.call(collection, prop)) {
56 | callback.call(scope, collection[prop], prop, collection);
57 | }
58 | }
59 | } else {
60 | for (var i = 0, len = collection.length; i < len; i++) {
61 | callback.call(scope, collection[i], i, collection);
62 | }
63 | }
64 | };
65 |
66 | /**
67 | * Merge defaults with user options
68 | * @private
69 | * @param {Object} defaults Default settings
70 | * @param {Object} options User options
71 | * @returns {Object} Merged values of defaults and options
72 | */
73 | var extend = function ( defaults, options ) {
74 | var extended = {};
75 | forEach(defaults, function (value, prop) {
76 | extended[prop] = defaults[prop];
77 | });
78 | forEach(options, function (value, prop) {
79 | extended[prop] = options[prop];
80 | });
81 | return extended;
82 | };
83 |
84 | /**
85 | * Get the closest matching element up the DOM tree
86 | * @param {Element} elem Starting element
87 | * @param {String} selector Selector to match against (class, ID, or data attribute)
88 | * @return {Boolean|Element} Returns false if not match found
89 | */
90 | var getClosest = function (elem, selector) {
91 | var firstChar = selector.charAt(0);
92 | for ( ; elem && elem !== document; elem = elem.parentNode ) {
93 | if ( firstChar === '.' ) {
94 | if ( elem.classList.contains( selector.substr(1) ) ) {
95 | return elem;
96 | }
97 | } else if ( firstChar === '#' ) {
98 | if ( elem.id === selector.substr(1) ) {
99 | return elem;
100 | }
101 | } else if ( firstChar === '[' ) {
102 | if ( elem.hasAttribute( selector.substr(1, selector.length - 2) ) ) {
103 | return elem;
104 | }
105 | }
106 | }
107 | return false;
108 | };
109 |
110 | /**
111 | * Get the height of an element
112 | * @private
113 | * @param {Node]} elem The element
114 | * @return {Number} The element's height
115 | */
116 | var getHeight = function (elem) {
117 | return Math.max( elem.scrollHeight, elem.offsetHeight, elem.clientHeight );
118 | };
119 |
120 | /**
121 | * Escape special characters for use with querySelector
122 | * @private
123 | * @param {String} id The anchor ID to escape
124 | * @author Mathias Bynens
125 | * @link https://github.com/mathiasbynens/CSS.escape
126 | */
127 | var escapeCharacters = function ( id ) {
128 | var string = String(id);
129 | var length = string.length;
130 | var index = -1;
131 | var codeUnit;
132 | var result = '';
133 | var firstCodeUnit = string.charCodeAt(0);
134 | while (++index < length) {
135 | codeUnit = string.charCodeAt(index);
136 | // Note: there’s no need to special-case astral symbols, surrogate
137 | // pairs, or lone surrogates.
138 |
139 | // If the character is NULL (U+0000), then throw an
140 | // `InvalidCharacterError` exception and terminate these steps.
141 | if (codeUnit === 0x0000) {
142 | throw new InvalidCharacterError(
143 | 'Invalid character: the input contains U+0000.'
144 | );
145 | }
146 |
147 | if (
148 | // If the character is in the range [\1-\1F] (U+0001 to U+001F) or is
149 | // U+007F, […]
150 | (codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||
151 | // If the character is the first character and is in the range [0-9]
152 | // (U+0030 to U+0039), […]
153 | (index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
154 | // If the character is the second character and is in the range [0-9]
155 | // (U+0030 to U+0039) and the first character is a `-` (U+002D), […]
156 | (
157 | index === 1 &&
158 | codeUnit >= 0x0030 && codeUnit <= 0x0039 &&
159 | firstCodeUnit === 0x002D
160 | )
161 | ) {
162 | // http://dev.w3.org/csswg/cssom/#escape-a-character-as-code-point
163 | result += '\\' + codeUnit.toString(16) + ' ';
164 | continue;
165 | }
166 |
167 | // If the character is not handled by one of the above rules and is
168 | // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or
169 | // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to
170 | // U+005A), or [a-z] (U+0061 to U+007A), […]
171 | if (
172 | codeUnit >= 0x0080 ||
173 | codeUnit === 0x002D ||
174 | codeUnit === 0x005F ||
175 | codeUnit >= 0x0030 && codeUnit <= 0x0039 ||
176 | codeUnit >= 0x0041 && codeUnit <= 0x005A ||
177 | codeUnit >= 0x0061 && codeUnit <= 0x007A
178 | ) {
179 | // the character itself
180 | result += string.charAt(index);
181 | continue;
182 | }
183 |
184 | // Otherwise, the escaped character.
185 | // http://dev.w3.org/csswg/cssom/#escape-a-character
186 | result += '\\' + string.charAt(index);
187 |
188 | }
189 | return result;
190 | };
191 |
192 | /**
193 | * Calculate the easing pattern
194 | * @private
195 | * @link https://gist.github.com/gre/1650294
196 | * @param {String} type Easing pattern
197 | * @param {Number} time Time animation should take to complete
198 | * @returns {Number}
199 | */
200 | var easingPattern = function ( type, time ) {
201 | var pattern;
202 | if ( type === 'easeInQuad' ) pattern = time * time; // accelerating from zero velocity
203 | if ( type === 'easeOutQuad' ) pattern = time * (2 - time); // decelerating to zero velocity
204 | if ( type === 'easeInOutQuad' ) pattern = time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration
205 | if ( type === 'easeInCubic' ) pattern = time * time * time; // accelerating from zero velocity
206 | if ( type === 'easeOutCubic' ) pattern = (--time) * time * time + 1; // decelerating to zero velocity
207 | if ( type === 'easeInOutCubic' ) pattern = time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration
208 | if ( type === 'easeInQuart' ) pattern = time * time * time * time; // accelerating from zero velocity
209 | if ( type === 'easeOutQuart' ) pattern = 1 - (--time) * time * time * time; // decelerating to zero velocity
210 | if ( type === 'easeInOutQuart' ) pattern = time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration
211 | if ( type === 'easeInQuint' ) pattern = time * time * time * time * time; // accelerating from zero velocity
212 | if ( type === 'easeOutQuint' ) pattern = 1 + (--time) * time * time * time * time; // decelerating to zero velocity
213 | if ( type === 'easeInOutQuint' ) pattern = time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration
214 | return pattern || time; // no easing, no acceleration
215 | };
216 |
217 | /**
218 | * Calculate how far to scroll
219 | * @private
220 | * @param {Element} anchor The anchor element to scroll to
221 | * @param {Number} headerHeight Height of a fixed header, if any
222 | * @param {Number} offset Number of pixels by which to offset scroll
223 | * @returns {Number}
224 | */
225 | var getEndLocation = function ( anchor, headerHeight, offset ) {
226 | var location = 0;
227 | if (anchor.offsetParent) {
228 | do {
229 | location += anchor.offsetTop;
230 | anchor = anchor.offsetParent;
231 | } while (anchor);
232 | }
233 | location = location - headerHeight - offset;
234 | return location >= 0 ? location : 0;
235 | };
236 |
237 | /**
238 | * Determine the document's height
239 | * @private
240 | * @returns {Number}
241 | */
242 | var getDocumentHeight = function () {
243 | return Math.max(
244 | document.body.scrollHeight, document.documentElement.scrollHeight,
245 | document.body.offsetHeight, document.documentElement.offsetHeight,
246 | document.body.clientHeight, document.documentElement.clientHeight
247 | );
248 | };
249 |
250 | /**
251 | * Convert data-options attribute into an object of key/value pairs
252 | * @private
253 | * @param {String} options Link-specific options as a data attribute string
254 | * @returns {Object}
255 | */
256 | var getDataOptions = function ( options ) {
257 | return !options || !(typeof JSON === 'object' && typeof JSON.parse === 'function') ? {} : JSON.parse( options );
258 | };
259 |
260 | /**
261 | * Update the URL
262 | * @private
263 | * @param {Element} anchor The element to scroll to
264 | * @param {Boolean} url Whether or not to update the URL history
265 | */
266 | var updateUrl = function ( anchor, url ) {
267 | if ( history.pushState && (url || url === 'true') ) {
268 | history.pushState( null, null, [root.location.protocol, '//', root.location.host, root.location.pathname, root.location.search, anchor].join('') );
269 | }
270 | };
271 |
272 | /**
273 | * Start/stop the scrolling animation
274 | * @public
275 | * @param {Element} toggle The element that toggled the scroll event
276 | * @param {Element} anchor The element to scroll to
277 | * @param {Object} options
278 | */
279 | smoothScroll.animateScroll = function ( toggle, anchor, options ) {
280 |
281 | // Options and overrides
282 | var settings = extend( settings || defaults, options || {} ); // Merge user options with defaults
283 | var overrides = getDataOptions( toggle ? toggle.getAttribute('data-options') : null );
284 | settings = extend( settings, overrides );
285 | anchor = '#' + escapeCharacters(anchor.substr(1)); // Escape special characters and leading numbers
286 |
287 | // Selectors and variables
288 | var anchorElem = anchor === '#' ? document.documentElement : document.querySelector(anchor);
289 | var startLocation = root.pageYOffset; // Current location on the page
290 | if ( !fixedHeader ) { fixedHeader = document.querySelector('[data-scroll-header]'); } // Get the fixed header if not already set
291 | var headerHeight = fixedHeader === null ? 0 : ( getHeight( fixedHeader ) + fixedHeader.offsetTop ); // Get the height of a fixed header if one exists
292 | var endLocation = getEndLocation( anchorElem, headerHeight, parseInt(settings.offset, 10) ); // Scroll to location
293 | var animationInterval; // interval timer
294 | var distance = endLocation - startLocation; // distance to travel
295 | var documentHeight = getDocumentHeight();
296 | var timeLapsed = 0;
297 | var percentage, position;
298 |
299 | // Update URL
300 | updateUrl(anchor, settings.updateURL);
301 |
302 | /**
303 | * Stop the scroll animation when it reaches its target (or the bottom/top of page)
304 | * @private
305 | * @param {Number} position Current position on the page
306 | * @param {Number} endLocation Scroll to location
307 | * @param {Number} animationInterval How much to scroll on this loop
308 | */
309 | var stopAnimateScroll = function (position, endLocation, animationInterval) {
310 | var currentLocation = root.pageYOffset;
311 | if ( position == endLocation || currentLocation == endLocation || ( (root.innerHeight + currentLocation) >= documentHeight ) ) {
312 | clearInterval(animationInterval);
313 | anchorElem.focus();
314 | settings.callbackAfter( toggle, anchor ); // Run callbacks after animation complete
315 | }
316 | };
317 |
318 | /**
319 | * Loop scrolling animation
320 | * @private
321 | */
322 | var loopAnimateScroll = function () {
323 | timeLapsed += 16;
324 | percentage = ( timeLapsed / parseInt(settings.speed, 10) );
325 | percentage = ( percentage > 1 ) ? 1 : percentage;
326 | position = startLocation + ( distance * easingPattern(settings.easing, percentage) );
327 | root.scrollTo( 0, Math.floor(position) );
328 | stopAnimateScroll(position, endLocation, animationInterval);
329 | };
330 |
331 | /**
332 | * Set interval timer
333 | * @private
334 | */
335 | var startAnimateScroll = function () {
336 | settings.callbackBefore( toggle, anchor ); // Run callbacks before animating scroll
337 | animationInterval = setInterval(loopAnimateScroll, 16);
338 | };
339 |
340 | /**
341 | * Reset position to fix weird iOS bug
342 | * @link https://github.com/cferdinandi/smooth-scroll/issues/45
343 | */
344 | if ( root.pageYOffset === 0 ) {
345 | root.scrollTo( 0, 0 );
346 | }
347 |
348 | // Start scrolling animation
349 | startAnimateScroll();
350 |
351 | };
352 |
353 | /**
354 | * If smooth scroll element clicked, animate scroll
355 | * @private
356 | */
357 | var eventHandler = function (event) {
358 | var toggle = getClosest(event.target, '[data-scroll]');
359 | if ( toggle && toggle.tagName.toLowerCase() === 'a' ) {
360 | event.preventDefault(); // Prevent default click event
361 | smoothScroll.animateScroll( toggle, toggle.hash, settings); // Animate scroll
362 | }
363 | };
364 |
365 | /**
366 | * On window scroll and resize, only run events at a rate of 15fps for better performance
367 | * @private
368 | * @param {Function} eventTimeout Timeout function
369 | * @param {Object} settings
370 | */
371 | var eventThrottler = function (event) {
372 | if ( !eventTimeout ) {
373 | eventTimeout = setTimeout(function() {
374 | eventTimeout = null; // Reset timeout
375 | headerHeight = fixedHeader === null ? 0 : ( getHeight( fixedHeader ) + fixedHeader.offsetTop ); // Get the height of a fixed header if one exists
376 | }, 66);
377 | }
378 | };
379 |
380 | /**
381 | * Destroy the current initialization.
382 | * @public
383 | */
384 | smoothScroll.destroy = function () {
385 |
386 | // If plugin isn't already initialized, stop
387 | if ( !settings ) return;
388 |
389 | // Remove event listeners
390 | document.removeEventListener( 'click', eventHandler, false );
391 | root.removeEventListener( 'resize', eventThrottler, false );
392 |
393 | // Reset varaibles
394 | settings = null;
395 | eventTimeout = null;
396 | fixedHeader = null;
397 | };
398 |
399 | /**
400 | * Initialize Smooth Scroll
401 | * @public
402 | * @param {Object} options User settings
403 | */
404 | smoothScroll.init = function ( options ) {
405 |
406 | // feature test
407 | if ( !supports ) return;
408 |
409 | // Destroy any existing initializations
410 | smoothScroll.destroy();
411 |
412 | // Selectors and variables
413 | settings = extend( defaults, options || {} ); // Merge user options with defaults
414 | fixedHeader = document.querySelector('[data-scroll-header]'); // Get the fixed header
415 |
416 | // When a toggle is clicked, run the click handler
417 | document.addEventListener('click', eventHandler, false );
418 | if ( fixedHeader ) { root.addEventListener( 'resize', eventThrottler, false ); }
419 |
420 | };
421 |
422 |
423 | //
424 | // Public APIs
425 | //
426 |
427 | return smoothScroll;
428 |
429 | });
--------------------------------------------------------------------------------
/assets/css/main.css:
--------------------------------------------------------------------------------
1 | html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}a{-webkit-tap-highlight-color:rgba(0,0,0,0)}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url("https://fonts.gstatic.com/s/opensans/v10/DXI1ORHCpsQm3Vp6mXoaTRampu5_7CjHW5spxoeN3Vs.woff2") format('woff2')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:local('Open Sans Extrabold'),local('OpenSans-Extrabold'),url("https://fonts.gstatic.com/s/opensans/v10/EInbV5DfGHOiMmvb1Xr-hiYtBUPDK3WL7KRKS_3q7OE.woff2") format('woff2')}h1,h2,h3,h4{font-family:'Open Sans',sans-serif;font-weight:800;font-style:normal}@-webkit-keyframes pulse{from{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40);opacity:.4;top:0}50%{-ms-filter:none;-webkit-filter:none;filter:none;opacity:1;top:-10px}to{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40);opacity:.4;top:0}}@keyframes pulse{from{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40);opacity:.4;top:0}50%{-ms-filter:none;-webkit-filter:none;filter:none;opacity:1;top:-10px}to{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40);opacity:.4;top:0}}.icons-home{text-align:center;}.icons-home a{display:inline-block;padding:.938rem;margin:.125rem;border-radius:50%;border:.125rem solid #fff;line-height:0;transition:all .7s;}.icons-home a .icon{fill:#fff;width:18px;height:18px;}@media only screen and (min-width:37.5rem){.icons-home a .icon{width:30px;height:30px}}.icons-home a:hover{background:#fff;}.icons-home a:hover .icon{fill:#0562dc}.down{position:absolute;bottom:50px;width:100%;display:block;text-align:center;}.down .icon{position:absolute;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100px;height:100px;fill:#fff;-webkit-animation:pulse 1.3s infinite;animation:pulse 1.3s infinite}*,*:before,*:after{box-sizing:border-box}body{left:0;right:0;margin:auto}a,aside,.overlay,body{transition:all .25s ease}a.slideButton,.dosearch{position:absolute;display:block;width:40px;height:40px;top:10px;z-index:31}.slideButton{left:10px}.dosearch{right:10px;background:#0558c6;border-radius:.188rem;padding:.125rem .188rem}.icon-menu{cursor:pointer;padding:.313rem;border-radius:.188rem;background:#0558c6;width:2.5rem;height:2.5rem;fill:#fff}.icon-search{width:2.188rem;height:2.188rem}.overlay{cursor:pointer}#close{display:none}aside{position:fixed;height:100%;width:15rem;padding:2.5rem 0 0;top:0;left:-15rem;background:#3f3f3f;z-index:20;box-shadow:inset -10px -1px 15px -9px rgba(0,0,0,0.5);}aside h2{text-align:center;margin:0 0 .625rem;font-family:'Open Sans',sans-serif;font-weight:800;font-style:normal;font-size:1.25rem;color:#fff}aside nav ul{padding:0}aside nav li{margin:0;list-style-type:none;}aside nav li a{width:100%;display:block;padding:1.25rem;text-decoration:none;font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;color:#b3b3b1;border-top:1px solid #797979;}aside nav li a:hover{color:#191918;background:#fff}aside nav .feed{border-bottom:1px solid #797979}aside.slide{left:0}a.slideButton.slide{left:15.625rem;pointer-events:none}.overlay{position:fixed;width:100%;height:100%;top:0;left:0;pointer-events:none;background:transparent;z-index:30;}.overlay.slide{pointer-events:auto;left:240px;background:rgba(0,0,0,0.6)}input[type="search"]{-ms-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}.search-wrapper{-webkit-transform:translateY(-400px);transform:translateY(-400px);z-index:9999;}.search-wrapper.active{-webkit-transform:translateY(0);transform:translateY(0)}.search-form{position:relative;top:0;-webkit-transform:translateX(-200px);transform:translateX(-200px);z-index:9999;width:100%;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;transition:all 200ms 100ms cubic-bezier(0,.6,.4,1);}.search-form h4{margin:.625rem 0}.search-form .search-field{width:100%;font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;font-size:1.625rem;color:#fff;background-color:transparent;border:0;border-bottom:1px solid #fff;border-radius:0;box-shadow:none;background-clip:padding-box;-webkit-appearance:none;}.search-form .search-field:focus{outline:0;box-shadow:none}.search-form.active{top:0;-webkit-transform:translateX(0);transform:translateX(0);-ms-filter:none;-webkit-filter:none;filter:none;opacity:1}.search-form.hidden{display:none}.search-form .icon-remove-sign{position:absolute;top:0;right:0;z-index:1;display:block;fill:#fff;width:30px;height:30px;text-align:center;cursor:pointer}.search-form::-webkit-input-placeholder{font-size:1.625rem}.search-form .search-field::-webkit-search-decoration,.search-form .search-field::-webkit-search-cancel-button,.search-form .search-field::-webkit-search-results-button,.search-form .search-field::-webkit-search-results-decoration{display:none}.search-form .search-list{position:absolute;width:100%;font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal}.search-form h4,.search-form li,.search-form p,.search-form a,.search-form a:hover{color:#fff}body.search-overlay{overflow:hidden;}body.search-overlay:after{position:absolute;top:0;left:0;z-index:9001;width:100%;height:100%;min-height:100%;background-color:rgba(0,0,0,0.6);content:'';}@media only screen and (max-width:37.5rem){body.search-overlay:after{background-color:#0562dc}}.search-wrapper{position:absolute;top:50px;width:100%;padding-right:10%;padding-left:10%;}.search-wrapper *zoom 1:after,.search-wrapper *zoom 1:before{display:table;line-height:0;content:""}.search-wrapper *zoom 1:after{clear:both}.search-wrapper:before,.search-wrapper:after{display:table;line-height:0;content:""}.search-list{padding:0;margin:0;list-style-type:none;}.search-list .entry-date{float:right;display:none;font-size:14px;text-transform:uppercase}.search-list a{text-decoration:none;display:block;padding:.938rem 0;width:100%;border-bottom:1px solid #fff;}.search-list a:hover{color:#b3b3b3;border-bottom:1px solid #b3b3b3}@media only screen and (min-width:48em){.search-wrapper{top:100px}.search-list .entry-date{display:inline}}.tags{margin-top:1.875rem;}.tags a{font-size:.875rem;color:#0562dc;display:inline-block;border:1px solid #0562dc;border-radius:.313rem;padding:.25rem .625rem;margin-right:.125rem;margin-bottom:.5rem;text-decoration:none;}.tags a:hover{color:#03316e;border:1px solid #03316e}.img-rounded{border-radius:50%}html,body{height:100%}.header-site,.header-post{background:#0562dc;height:100%;}.header-site .content,.header-post .content{width:95%;position:absolute;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center}.header-site h1,.header-site h2{color:#fff;text-align:center}.header-site .site-title{font-size:3.75rem;line-height:1;margin-top:-80px;display:block;}@media only screen and (min-width:37.5rem){.header-site .site-title{margin-bottom:0;font-size:6.25rem}}.header-site .site-description{font-size:1.25rem;display:block;margin:1.875rem 0;}@media only screen and (min-width:37.5rem){.header-site .site-description{font-size:2.5rem}}@media only screen and (min-width:37.5rem){.header-post .content{*zoom:1;width:auto;max-width:1000px;float:none;display:block;margin-right:auto;margin-left:auto;padding-left:0;padding-right:0}.header-post .content:before,.header-post .content:after{content:'';display:table}.header-post .content:after{clear:both}}.header-post .subheader{display:table;padding:20px;}.header-post .subheader a{border:2px solid #fff;border-radius:20px;padding:0 10px;}@media only screen and (min-width:37.5rem){.header-post .subheader a{padding:0 10px}}.header-post .date{font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;font-size:1rem}.header-post h1{text-transform:uppercase;font-size:1.875rem;margin:0 0 30px;}@media only screen and (min-width:37.5rem){.header-post h1{font-size:3.75rem}}.header-post .subtitle{font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;font-size:1.25rem}.header-post h1,.header-post .subtitle,.header-post .date{color:#fff;text-align:center}.header-post p{color:#fff;text-decoration:none;font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;font-size:1.125rem}.post-item{text-align:left;padding:2.5rem 0;border-bottom:3px solid #f2f2f2;*zoom:1;width:auto;max-width:62.5rem;float:none;display:block;margin-right:auto;margin-left:auto;padding-left:0;padding-right:0;}.post-item:before,.post-item:after{content:'';display:table}.post-item:after{clear:both}@media only screen and (max-width:62.5rem){.post-item{padding-left:1.25rem;padding-right:1.25rem}}.post-item .datetime{*zoom:1;float:left;clear:none;text-align:inherit;width:14.166666666666664%;margin-left:0%;margin-right:3%;text-align:center;text-decoration:none;}.post-item .datetime:before,.post-item .datetime:after{content:'';display:table}.post-item .datetime:after{clear:both}.post-item .datetime:last-child{margin-right:0%}@media only screen and (max-width:37.5rem){.post-item .datetime{display:block;clear:both;float:none;width:100%;margin-left:auto;margin-right:auto}.post-item .datetime:first-child{margin-left:auto}.post-item .datetime:last-child{margin-right:auto}}.post-item .datetime .day{font-family:'Open Sans',sans-serif;font-weight:800;font-style:normal;color:#0562dc;font-size:5rem;line-height:1.6;}@media only screen and (max-width:37.5rem){.post-item .datetime .day{display:block;clear:both;float:none;width:100%;margin-left:auto;margin-right:auto}.post-item .datetime .day:first-child{margin-left:auto}.post-item .datetime .day:last-child{margin-right:auto}}.post-item .datetime .month-year{color:#000;font-size:1.125rem}.post-item .content{*zoom:1;float:left;clear:none;text-align:inherit;width:82.83333333333334%;margin-left:0%;margin-right:3%;}.post-item .content:before,.post-item .content:after{content:'';display:table}.post-item .content:after{clear:both}.post-item .content:last-child{margin-right:0%}@media only screen and (max-width:37.5rem){.post-item .content{display:block;clear:both;float:none;width:100%;margin-left:auto;margin-right:auto}.post-item .content:first-child{margin-left:auto}.post-item .content:last-child{margin-right:auto}}.post-item .content a{text-decoration:none}.post-item .content .date{color:#0562dc}.post-item .content .post-title{color:#000;font-size:2rem;}@media only screen and (max-width:37.5rem){.post-item .content .post-title{text-align:center}}.post-item .content .description{color:#333;font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;font-size:1.25rem;}.post-item .content .description a{color:#0562dc;text-decoration:underline}.post-content{padding:2.5rem 0;}.post-content img{max-width:100%;margin:1.875rem auto;display:block}.post-content p,.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content ul,.post-content ol,.post-content .tags,.post-content iframe{*zoom:1;width:auto;max-width:50rem;float:none;display:block;margin-right:auto;margin-left:auto;padding-left:0;padding-right:0;padding:0 1.25rem;margin:0 auto 1.875rem;font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;font-size:1.125rem;line-height:2;letter-spacing:.01rem;}.post-content p:before,.post-content h1:before,.post-content h2:before,.post-content h3:before,.post-content h4:before,.post-content ul:before,.post-content ol:before,.post-content .tags:before,.post-content iframe:before,.post-content p:after,.post-content h1:after,.post-content h2:after,.post-content h3:after,.post-content h4:after,.post-content ul:after,.post-content ol:after,.post-content .tags:after,.post-content iframe:after{content:'';display:table}.post-content p:after,.post-content h1:after,.post-content h2:after,.post-content h3:after,.post-content h4:after,.post-content ul:after,.post-content ol:after,.post-content .tags:after,.post-content iframe:after{clear:both}@media only screen and (min-width:37.5rem){.post-content p,.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content ul,.post-content ol,.post-content .tags,.post-content iframe{font-size:1.25rem}}.post-content p,.post-content li{color:#333;}.post-content p code,.post-content li code{color:#3085f4}.post-content a{font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;color:#0562dc;text-decoration:none;border-bottom:2px solid #0562dc}.post-content iframe{margin-top:1.875rem;width:100%}.post-content #twitter-widget-0{margin:auto !important}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5{font-family:'Open Sans',sans-serif;font-weight:800;font-style:normal}.post-content h1{font-size:1.875rem;line-height:1.4;}@media only screen and (min-width:37.5rem){.post-content h1{font-size:2.813rem}}.post-content h2{font-size:1.375rem;line-height:1.4;}@media only screen and (min-width:37.5rem){.post-content h2{font-size:2.188rem}}.post-content h3{font-size:1.125rem;line-height:1.4;}@media only screen and (min-width:37.5rem){.post-content h3{font-size:1.563rem}}.post-content ul,.post-content ol{padding-left:2.5rem}.post-content ul.post-list{padding:0;}@media only screen and (max-width:37.5rem){.post-content ul.post-list{padding:0 1.25rem}}.post-content blockquote{*zoom:1;width:auto;max-width:45.625rem;float:none;display:block;margin-right:auto;margin-left:auto;padding-left:0;padding-right:0;border-left:.313rem solid #0562dc;padding:0 1.875rem;margin:3.125rem auto;}.post-content blockquote:before,.post-content blockquote:after{content:'';display:table}.post-content blockquote:after{clear:both}@media only screen and (max-width:37.5rem){.post-content blockquote{width:70%}}.post-content blockquote p{color:rgba(0,0,0,0.6);margin:0;}@media only screen and (max-width:37.5rem){.post-content blockquote p{font-size:1.125rem;line-height:1.5;padding:0}}.post-content hr{*zoom:1;width:auto;max-width:47.5rem;float:none;display:block;margin-right:auto;margin-left:auto;padding-left:0;padding-right:0;border:1px solid #f2f2f2;margin:50px auto}.post-content hr:before,.post-content hr:after{content:'';display:table}.post-content hr:after{clear:both}.share{*zoom:1;width:auto;max-width:800px;float:none;display:block;margin-right:auto;margin-left:auto;padding-left:0;padding-right:0;text-align:center;border-top:1px solid #f2f2f2;padding-top:1.25rem;}.share:before,.share:after{content:'';display:table}.share:after{clear:both}.share svg{margin:.938rem;width:35px;height:35px}.share a{text-decoration:none;}.share a:hover svg{fill:#0562dc}table{margin:3.125rem auto;}@media only screen and (max-width:37.5rem){table{display:none}}table th,table td{border:.125rem solid #ccc;padding:.313rem}.tag-title{font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;font-size:2.25rem;margin-top:3.75rem;*zoom:1;width:auto;max-width:50rem;float:none;display:block;margin-right:auto;margin-left:auto;padding-left:0;padding-right:0;}.tag-title:before,.tag-title:after{content:'';display:table}.tag-title:after{clear:both}@media only screen and (max-width:37.5rem){.tag-title{font-size:1.75rem;margin-top:1.25rem;padding:0 1.25rem}}.post-list{list-style:none;margin:1.563rem auto;}@media only screen and (max-width:37.5rem){.post-list{padding:0 1.25rem}}.post-list a{display:block;border-bottom:1px solid #dadada;padding:.625rem 0;text-decoration:none;transition:all .5s;}.post-list a:hover{color:#03316e;border-bottom:1px solid #03316e}.post-list .entry-date{float:right;}@media only screen and (max-width:37.5rem){.post-list .entry-date{display:none}}pre{background:#222;width:100%;padding:1.25rem 0;color:#fff;margin:1.875rem 0;font-size:.875rem;}@media only screen and (min-width:37.5rem){pre{font-size:1rem;padding:2.5rem 0;margin:3.125rem 0}}pre code{*zoom:1;width:auto;max-width:50rem;float:none;display:block;margin-right:auto;margin-left:auto;padding-left:0;padding-right:0;padding:0 1.25rem;}pre code:before,pre code:after{content:'';display:table}pre code:after{clear:both}@media only screen and (max-width:37.5rem){pre code{overflow-x:scroll}}pre span{line-height:1.5rem;font-family:'Monaco','Consolas','Menlo',monospace}.highlight{margin:0;}@media only screen and (min-width:37.5rem){.highlight{word-wrap:break-word}}.highlight .hll{background-color:#333}.highlight .c,.highlight .cm,.highlight .cp,.highlight .c1,.highlight .cs{color:#75715e}.highlight .err{color:#960050;background-color:#1e0010}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kp,.highlight .kr,.highlight .kt,.highlight .no{color:#66d9ef}.highlight .l,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo,.highlight .se,.highlight .il{color:#ae81ff}.highlight .o,.highlight .p{color:#f7f7f2}.highlight .m,.highlight .n,.highlight .nb,.highlight .ni,.highlight .nl,.highlight .nn,.highlight .py,.highlight .nv,.highlight .w,.highlight .bp,.highlight .vc,.highlight .vg,.highlight .vi{color:#a4d043}.highlight .kn,.highlight .nt,.highlight .ow{color:#f92672}.highlight .ge{font-style:italic}.highlight .gs{font-weight:bold}.highlight .ld,.highlight .s,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s2,.highlight .sh,.highlight .si,.highlight .sx,.highlight .sr,.highlight .s1,.highlight .ss{color:#e6db74}.highlight .na,.highlight .nc,.highlight .nd,.highlight .ne,.highlight .nf,.highlight .nx{color:#a6e22e}.author{background:#f2f2f2;display:table;width:100%;padding:2.5rem 0;margin:2.5rem 0;}@media only screen and (min-width:37.5rem){.author{padding:3.125rem 0}}.author .details{margin:auto;max-width:50rem;padding:0 1.25rem;}@media only screen and (max-width:37.5rem){.author .details{text-align:center}}.author img{border-radius:50%;display:block;margin:auto;}@media only screen and (min-width:37.5rem){.author img{float:left;margin-right:3.125rem}}.author .def{color:#808080;font-size:1.125rem;font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;margin:.625rem;}@media only screen and (min-width:37.5rem){.author .def{margin:0;padding-top:1.563rem}}.author .name{margin:0;}.author .name a{font-family:'Open Sans',sans-serif;font-weight:800;font-style:normal;text-decoration:none;color:#000;font-size:1.875rem;}.author .name a:hover{color:#0562dc}@media only screen and (min-width:37.5rem){.author .name a{font-size:2.813rem}}.author .desc{font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;margin:.625rem;font-size:1rem;}@media only screen and (min-width:37.5rem){.author .desc{font-size:1.25rem}}.author .email{text-decoration:none;color:#0562dc}.comments{*zoom:1;width:auto;max-width:50rem;float:none;display:block;margin-right:auto;margin-left:auto;padding-left:0;padding-right:0;padding:0 1.25rem;}.comments:before,.comments:after{content:'';display:table}.comments:after{clear:both}.comments h3{margin:0 0 1.875rem;font-size:1.875rem}footer{background:#0562dc;padding:1.563rem 0;margin-top:100px;}footer p,footer a{text-decoration:none;font-family:'Open Sans',sans-serif;font-weight:300;font-style:normal;color:#fff;text-align:center;margin:0}footer a:hover{color:#900}
--------------------------------------------------------------------------------
/src/js/azepto.js:
--------------------------------------------------------------------------------
1 | /* Zepto v1.1.6 - zepto event ajax form ie - zeptojs.com/license */
2 | var Zepto=function(){function L(t){return null==t?String(t):j[S.call(t)]||"object"}function Z(t){return"function"==L(t)}function _(t){return null!=t&&t==t.window}function $(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function D(t){return"object"==L(t)}function M(t){return D(t)&&!_(t)&&Object.getPrototypeOf(t)==Object.prototype}function R(t){return"number"==typeof t.length}function k(t){return s.call(t,function(t){return null!=t})}function z(t){return t.length>0?n.fn.concat.apply([],t):t}function F(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function q(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function H(t,e){return"number"!=typeof e||c[F(t)]?e:e+"px"}function I(t){var e,n;return u[t]||(e=a.createElement(t),a.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),u[t]=n),u[t]}function V(t){return"children"in t?o.call(t.children):n.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function B(n,i,r){for(e in i)r&&(M(i[e])||A(i[e]))?(M(i[e])&&!M(n[e])&&(n[e]={}),A(i[e])&&!A(n[e])&&(n[e]=[]),B(n[e],i[e],r)):i[e]!==t&&(n[e]=i[e])}function U(t,e){return null==e?n(t):n(t).filter(e)}function J(t,e,n,i){return Z(e)?e.call(t,n,i):e}function X(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function W(e,n){var i=e.className||"",r=i&&i.baseVal!==t;return n===t?r?i.baseVal:i:void(r?i.baseVal=n:e.className=n)}function Y(t){try{return t?"true"==t||("false"==t?!1:"null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?n.parseJSON(t):t):t}catch(e){return t}}function G(t,e){e(t);for(var n=0,i=t.childNodes.length;i>n;n++)G(t.childNodes[n],e)}var t,e,n,i,C,N,r=[],o=r.slice,s=r.filter,a=window.document,u={},f={},c={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},l=/^\s*<(\w+|!)[^>]*>/,h=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,p=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,d=/^(?:body|html)$/i,m=/([A-Z])/g,g=["val","css","html","text","data","width","height","offset"],v=["after","prepend","before","append"],y=a.createElement("table"),x=a.createElement("tr"),b={tr:a.createElement("tbody"),tbody:y,thead:y,tfoot:y,td:x,th:x,"*":a.createElement("div")},w=/complete|loaded|interactive/,E=/^[\w-]*$/,j={},S=j.toString,T={},O=a.createElement("div"),P={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},A=Array.isArray||function(t){return t instanceof Array};return T.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var i,r=t.parentNode,o=!r;return o&&(r=O).appendChild(t),i=~T.qsa(r,e).indexOf(t),o&&O.removeChild(t),i},C=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},N=function(t){return s.call(t,function(e,n){return t.indexOf(e)==n})},T.fragment=function(e,i,r){var s,u,f;return h.test(e)&&(s=n(a.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(p,"<$1>$2>")),i===t&&(i=l.test(e)&&RegExp.$1),i in b||(i="*"),f=b[i],f.innerHTML=""+e,s=n.each(o.call(f.childNodes),function(){f.removeChild(this)})),M(r)&&(u=n(s),n.each(r,function(t,e){g.indexOf(t)>-1?u[t](e):u.attr(t,e)})),s},T.Z=function(t,e){return t=t||[],t.__proto__=n.fn,t.selector=e||"",t},T.isZ=function(t){return t instanceof T.Z},T.init=function(e,i){var r;if(!e)return T.Z();if("string"==typeof e)if(e=e.trim(),"<"==e[0]&&l.test(e))r=T.fragment(e,RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=T.qsa(a,e)}else{if(Z(e))return n(a).ready(e);if(T.isZ(e))return e;if(A(e))r=k(e);else if(D(e))r=[e],e=null;else if(l.test(e))r=T.fragment(e.trim(),RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=T.qsa(a,e)}}return T.Z(r,e)},n=function(t,e){return T.init(t,e)},n.extend=function(t){var e,n=o.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){B(t,n,e)}),t},T.qsa=function(t,e){var n,i="#"==e[0],r=!i&&"."==e[0],s=i||r?e.slice(1):e,a=E.test(s);return $(t)&&a&&i?(n=t.getElementById(s))?[n]:[]:1!==t.nodeType&&9!==t.nodeType?[]:o.call(a&&!i?r?t.getElementsByClassName(s):t.getElementsByTagName(e):t.querySelectorAll(e))},n.contains=a.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},n.type=L,n.isFunction=Z,n.isWindow=_,n.isArray=A,n.isPlainObject=M,n.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},n.inArray=function(t,e,n){return r.indexOf.call(e,t,n)},n.camelCase=C,n.trim=function(t){return null==t?"":String.prototype.trim.call(t)},n.uuid=0,n.support={},n.expr={},n.map=function(t,e){var n,r,o,i=[];if(R(t))for(r=0;r=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return r.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return Z(t)?this.not(this.not(t)):n(s.call(this,function(e){return T.matches(e,t)}))},add:function(t,e){return n(N(this.concat(n(t,e))))},is:function(t){return this.length>0&&T.matches(this[0],t)},not:function(e){var i=[];if(Z(e)&&e.call!==t)this.each(function(t){e.call(this,t)||i.push(this)});else{var r="string"==typeof e?this.filter(e):R(e)&&Z(e.item)?o.call(e):n(e);this.forEach(function(t){r.indexOf(t)<0&&i.push(t)})}return n(i)},has:function(t){return this.filter(function(){return D(t)?n.contains(this,t):n(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!D(t)?t:n(t)},last:function(){var t=this[this.length-1];return t&&!D(t)?t:n(t)},find:function(t){var e,i=this;return e=t?"object"==typeof t?n(t).filter(function(){var t=this;return r.some.call(i,function(e){return n.contains(e,t)})}):1==this.length?n(T.qsa(this[0],t)):this.map(function(){return T.qsa(this,t)}):n()},closest:function(t,e){var i=this[0],r=!1;for("object"==typeof t&&(r=n(t));i&&!(r?r.indexOf(i)>=0:T.matches(i,t));)i=i!==e&&!$(i)&&i.parentNode;return n(i)},parents:function(t){for(var e=[],i=this;i.length>0;)i=n.map(i,function(t){return(t=t.parentNode)&&!$(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return U(e,t)},parent:function(t){return U(N(this.pluck("parentNode")),t)},children:function(t){return U(this.map(function(){return V(this)}),t)},contents:function(){return this.map(function(){return o.call(this.childNodes)})},siblings:function(t){return U(this.map(function(t,e){return s.call(V(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return n.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=I(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=Z(t);if(this[0]&&!e)var i=n(t).get(0),r=i.parentNode||this.length>1;return this.each(function(o){n(this).wrapAll(e?t.call(this,o):r?i.cloneNode(!0):i)})},wrapAll:function(t){if(this[0]){n(this[0]).before(t=n(t));for(var e;(e=t.children()).length;)t=e.first();n(t).append(this)}return this},wrapInner:function(t){var e=Z(t);return this.each(function(i){var r=n(this),o=r.contents(),s=e?t.call(this,i):t;o.length?o.wrapAll(s):r.append(s)})},unwrap:function(){return this.parent().each(function(){n(this).replaceWith(n(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(e){return this.each(function(){var i=n(this);(e===t?"none"==i.css("display"):e)?i.show():i.hide()})},prev:function(t){return n(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return n(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var i=this.innerHTML;n(this).empty().append(J(this,t,e,i))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=J(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this[0].textContent:null},attr:function(n,i){var r;return"string"!=typeof n||1 in arguments?this.each(function(t){if(1===this.nodeType)if(D(n))for(e in n)X(this,e,n[e]);else X(this,n,J(this,i,t,this.getAttribute(n)))}):this.length&&1===this[0].nodeType?!(r=this[0].getAttribute(n))&&n in this[0]?this[0][n]:r:t},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){X(this,t)},this)})},prop:function(t,e){return t=P[t]||t,1 in arguments?this.each(function(n){this[t]=J(this,e,n,this[t])}):this[0]&&this[0][t]},data:function(e,n){var i="data-"+e.replace(m,"-$1").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?Y(r):t},val:function(t){return 0 in arguments?this.each(function(e){this.value=J(this,t,e,this.value)}):this[0]&&(this[0].multiple?n(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var i=n(this),r=J(this,t,e,i.offset()),o=i.offsetParent().offset(),s={top:r.top-o.top,left:r.left-o.left};"static"==i.css("position")&&(s.position="relative"),i.css(s)});if(!this.length)return null;var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(t,i){if(arguments.length<2){var r,o=this[0];if(!o)return;if(r=getComputedStyle(o,""),"string"==typeof t)return o.style[C(t)]||r.getPropertyValue(t);if(A(t)){var s={};return n.each(t,function(t,e){s[e]=o.style[C(e)]||r.getPropertyValue(e)}),s}}var a="";if("string"==L(t))i||0===i?a=F(t)+":"+H(t,i):this.each(function(){this.style.removeProperty(F(t))});else for(e in t)t[e]||0===t[e]?a+=F(e)+":"+H(e,t[e])+";":this.each(function(){this.style.removeProperty(F(e))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(n(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?r.some.call(this,function(t){return this.test(W(t))},q(t)):!1},addClass:function(t){return t?this.each(function(e){if("className"in this){i=[];var r=W(this),o=J(this,t,e,r);o.split(/\s+/g).forEach(function(t){n(this).hasClass(t)||i.push(t)},this),i.length&&W(this,r+(r?" ":"")+i.join(" "))}}):this},removeClass:function(e){return this.each(function(n){if("className"in this){if(e===t)return W(this,"");i=W(this),J(this,e,n,i).split(/\s+/g).forEach(function(t){i=i.replace(q(t)," ")}),W(this,i.trim())}})},toggleClass:function(e,i){return e?this.each(function(r){var o=n(this),s=J(this,e,r,W(this));s.split(/\s+/g).forEach(function(e){(i===t?!o.hasClass(e):i)?o.addClass(e):o.removeClass(e)})}):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),i=this.offset(),r=d.test(e[0].nodeName)?{top:0,left:0}:e.offset();return i.top-=parseFloat(n(t).css("margin-top"))||0,i.left-=parseFloat(n(t).css("margin-left"))||0,r.top+=parseFloat(n(e[0]).css("border-top-width"))||0,r.left+=parseFloat(n(e[0]).css("border-left-width"))||0,{top:i.top-r.top,left:i.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||a.body;t&&!d.test(t.nodeName)&&"static"==n(t).css("position");)t=t.offsetParent;return t})}},n.fn.detach=n.fn.remove,["width","height"].forEach(function(e){var i=e.replace(/./,function(t){return t[0].toUpperCase()});n.fn[e]=function(r){var o,s=this[0];return r===t?_(s)?s["inner"+i]:$(s)?s.documentElement["scroll"+i]:(o=this.offset())&&o[e]:this.each(function(t){s=n(this),s.css(e,J(this,r,t,s[e]()))})}}),v.forEach(function(t,e){var i=e%2;n.fn[t]=function(){var t,o,r=n.map(arguments,function(e){return t=L(e),"object"==t||"array"==t||null==e?e:T.fragment(e)}),s=this.length>1;return r.length<1?this:this.each(function(t,u){o=i?u:u.parentNode,u=0==e?u.nextSibling:1==e?u.firstChild:2==e?u:null;var f=n.contains(a.documentElement,o);r.forEach(function(t){if(s)t=t.cloneNode(!0);else if(!o)return n(t).remove();o.insertBefore(t,u),f&&G(t,function(t){null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src||window.eval.call(window,t.innerHTML)})})})},n.fn[i?t+"To":"insert"+(e?"Before":"After")]=function(e){return n(e)[t](this),this}}),T.Z.prototype=n.fn,T.uniq=N,T.deserializeValue=Y,n.zepto=T,n}();window.Zepto=Zepto,void 0===window.$&&(window.$=Zepto),function(t){function l(t){return t._zid||(t._zid=e++)}function h(t,e,n,i){if(e=p(e),e.ns)var r=d(e.ns);return(s[l(t)]||[]).filter(function(t){return!(!t||e.e&&t.e!=e.e||e.ns&&!r.test(t.ns)||n&&l(t.fn)!==l(n)||i&&t.sel!=i)})}function p(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function d(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function m(t,e){return t.del&&!u&&t.e in f||!!e}function g(t){return c[t]||u&&f[t]||t}function v(e,i,r,o,a,u,f){var h=l(e),d=s[h]||(s[h]=[]);i.split(/\s/).forEach(function(i){if("ready"==i)return t(document).ready(r);var s=p(i);s.fn=r,s.sel=a,s.e in c&&(r=function(e){var n=e.relatedTarget;return!n||n!==this&&!t.contains(this,n)?s.fn.apply(this,arguments):void 0}),s.del=u;var l=u||r;s.proxy=function(t){if(t=j(t),!t.isImmediatePropagationStopped()){t.data=o;var i=l.apply(e,t._args==n?[t]:[t].concat(t._args));return i===!1&&(t.preventDefault(),t.stopPropagation()),i}},s.i=d.length,d.push(s),"addEventListener"in e&&e.addEventListener(g(s.e),s.proxy,m(s,f))})}function y(t,e,n,i,r){var o=l(t);(e||"").split(/\s/).forEach(function(e){h(t,e,n,i).forEach(function(e){delete s[o][e.i],"removeEventListener"in t&&t.removeEventListener(g(e.e),e.proxy,m(e,r))})})}function j(e,i){return(i||!e.isDefaultPrevented)&&(i||(i=e),t.each(E,function(t,n){var r=i[t];e[t]=function(){return this[n]=x,r&&r.apply(i,arguments)},e[n]=b}),(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?i.returnValue===!1:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=x)),e}function S(t){var e,i={originalEvent:t};for(e in t)w.test(e)||t[e]===n||(i[e]=t[e]);return j(i,t)}var n,e=1,i=Array.prototype.slice,r=t.isFunction,o=function(t){return"string"==typeof t},s={},a={},u="onfocusin"in window,f={focus:"focusin",blur:"focusout"},c={mouseenter:"mouseover",mouseleave:"mouseout"};a.click=a.mousedown=a.mouseup=a.mousemove="MouseEvents",t.event={add:v,remove:y},t.proxy=function(e,n){var s=2 in arguments&&i.call(arguments,2);if(r(e)){var a=function(){return e.apply(n,s?s.concat(i.call(arguments)):arguments)};return a._zid=l(e),a}if(o(n))return s?(s.unshift(e[n],e),t.proxy.apply(null,s)):t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var x=function(){return!0},b=function(){return!1},w=/^([A-Z]|returnValue$|layer[XY]$)/,E={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,s,a,u,f){var c,l,h=this;return e&&!o(e)?(t.each(e,function(t,e){h.on(t,s,a,e,f)}),h):(o(s)||r(u)||u===!1||(u=a,a=s,s=n),(r(a)||a===!1)&&(u=a,a=n),u===!1&&(u=b),h.each(function(n,r){f&&(c=function(t){return y(r,t.type,u),u.apply(this,arguments)}),s&&(l=function(e){var n,o=t(e.target).closest(s,r).get(0);return o&&o!==r?(n=t.extend(S(e),{currentTarget:o,liveFired:r}),(c||u).apply(o,[n].concat(i.call(arguments,1)))):void 0}),v(r,e,u,a,s,l||c)}))},t.fn.off=function(e,i,s){var a=this;return e&&!o(e)?(t.each(e,function(t,e){a.off(t,i,e)}),a):(o(i)||r(s)||s===!1||(s=i,i=n),s===!1&&(s=b),a.each(function(){y(this,e,s,i)}))},t.fn.trigger=function(e,n){return e=o(e)||t.isPlainObject(e)?t.Event(e):j(e),e._args=n,this.each(function(){e.type in f&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,n){var i,r;return this.each(function(s,a){i=S(o(e)?t.Event(e):e),i._args=n,i.target=a,t.each(h(a,e.type||e),function(t,e){return r=e.proxy(i),i.isImmediatePropagationStopped()?!1:void 0})}),r},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){o(t)||(e=t,t=e.type);var n=document.createEvent(a[t]||"Events"),i=!0;if(e)for(var r in e)"bubbles"==r?i=!!e[r]:n[r]=e[r];return n.initEvent(t,i,!0),j(n)}}(Zepto),function(t){function h(e,n,i){var r=t.Event(n);return t(e).trigger(r,i),!r.isDefaultPrevented()}function p(t,e,i,r){return t.global?h(e||n,i,r):void 0}function d(e){e.global&&0===t.active++&&p(e,null,"ajaxStart")}function m(e){e.global&&!--t.active&&p(e,null,"ajaxStop")}function g(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||p(e,n,"ajaxBeforeSend",[t,e])===!1?!1:void p(e,n,"ajaxSend",[t,e])}function v(t,e,n,i){var r=n.context,o="success";n.success.call(r,t,o,e),i&&i.resolveWith(r,[t,o,e]),p(n,r,"ajaxSuccess",[e,n,t]),x(o,e,n)}function y(t,e,n,i,r){var o=i.context;i.error.call(o,n,e,t),r&&r.rejectWith(o,[n,e,t]),p(i,o,"ajaxError",[n,i,t||e]),x(e,n,i)}function x(t,e,n){var i=n.context;n.complete.call(i,e,t),p(n,i,"ajaxComplete",[e,n]),m(n)}function b(){}function w(t){return t&&(t=t.split(";",2)[0]),t&&(t==f?"html":t==u?"json":s.test(t)?"script":a.test(t)&&"xml")||"text"}function E(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function j(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&"GET"!=e.type.toUpperCase()||(e.url=E(e.url,e.data),e.data=void 0)}function S(e,n,i,r){return t.isFunction(n)&&(r=i,i=n,n=void 0),t.isFunction(i)||(r=i,i=void 0),{url:e,data:n,success:i,dataType:r}}function C(e,n,i,r){var o,s=t.isArray(n),a=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),r&&(n=i?r:r+"["+(a||"object"==o||"array"==o?n:"")+"]"),!r&&s?e.add(u.name,u.value):"array"==o||!i&&"object"==o?C(e,u,i,n):e.add(n,u)})}var i,r,e=0,n=window.document,o=/
Comments
3 | 4 |