From a8c0b4bd682be408b1dc36e5c671520d96f128d4 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 25 May 2015 20:32:54 +0800 Subject: [PATCH 001/118] =?UTF-8?q?=E4=B8=BB=E8=A6=81=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _config.yml | 4 +-- languages/zh-CN.yml | 6 ++++ layout/_partial/comments.jade | 11 +------ layout/_partial/totop.jade | 1 + layout/archive.jade | 10 ++++++- layout/base.jade | 53 +++++++++++++++++++++++++++++----- layout/index.jade | 19 ++++++------ layout/page.jade | 6 ++-- layout/post.jade | 3 +- source/css/style.scss | 52 +++++++++++++++++++++++++++++++++ source/img/apple.png | Bin 0 -> 1621 bytes 11 files changed, 132 insertions(+), 33 deletions(-) create mode 100644 layout/_partial/totop.jade create mode 100644 source/img/apple.png diff --git a/_config.yml b/_config.yml index 1c8d6d0c4..8d17e2716 100644 --- a/_config.yml +++ b/_config.yml @@ -1,2 +1,2 @@ -fancybox: true -duoshuo: # your duoshuo id +fancybox: false +duoshuo: haomwei diff --git a/languages/zh-CN.yml b/languages/zh-CN.yml index b12fd0448..3ac48c12c 100644 --- a/languages/zh-CN.yml +++ b/languages/zh-CN.yml @@ -9,3 +9,9 @@ recent: 最新文章 next: 下一页 previous: 上一页 no-title: 无题 +blogroll: 友情链接 +history: 历史 +rss: 订阅 +guestbook: 留言 +home: 首页 +recent_comments: 最近评论 diff --git a/layout/_partial/comments.jade b/layout/_partial/comments.jade index 19441e27a..2c75acde1 100644 --- a/layout/_partial/comments.jade +++ b/layout/_partial/comments.jade @@ -1,14 +1,5 @@ if theme.duoshuo .ds-thread(data-thread-key=page.path, date-title=page.title, data-url=url_for(page.path)) - script. - var duoshuoQuery = {short_name:"!{theme.duoshuo}"}; - (function() { - var ds = document.createElement('script'); - ds.type = 'text/javascript';ds.async = true; - ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js'; - ds.charset = 'UTF-8'; - (document.getElementsByTagName('head')[0] - || document.getElementsByTagName('body')[0]).appendChild(ds); - })(); + diff --git a/layout/_partial/totop.jade b/layout/_partial/totop.jade new file mode 100644 index 000000000..f22f33fc3 --- /dev/null +++ b/layout/_partial/totop.jade @@ -0,0 +1 @@ +a#rocket.show(href='#top') \ No newline at end of file diff --git a/layout/archive.jade b/layout/archive.jade index 24afad108..4f3bf0198 100644 --- a/layout/archive.jade +++ b/layout/archive.jade @@ -1,11 +1,19 @@ extends base + +block title + if page.category || page.tag || page.archive + title= page.category || page.tag || "归档" + " | " + config.title + block content + if page.category || page.tag + h1.label-title= __('reading_label', page.category || page.tag) .post .post-archive ul.listing for post in page.posts.toArray() li - span.date= post.date.format('l') + span.date= post.date.format('YYYY/MM/DD') a(href=url_for(post.path), title=post.title) +title(post) include _partial/paginator.jade + diff --git a/layout/base.jade b/layout/base.jade index b6b112518..d7fec7686 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -1,4 +1,6 @@ include _partial/helpers +include _partial/totop + if page.title - var current_title = page.title else @@ -17,7 +19,14 @@ html link(rel='stylesheet', type='text/css', href='/css/normalize.css') link(rel='stylesheet', type='text/css', href='/css/pure-min.css') link(rel='stylesheet', type='text/css', href='/css/grids-responsive-min.css') + link(rel='stylesheet', type='text/css', href='/css/font-awesome.min.css') link(rel='stylesheet', type='text/css', href='/css/style.css') + link(rel='Shortcut Icon', type='image/x-icon',href='/favicon.ico') + link(rel='apple-touch-icon', href='/img/apple.png') + link(rel='apple-touch-icon-precomposed', href='/img/apple.png') + link(rel='alternate', type='application/atom+xml', href='/atom.xml') + + body: .body_container #header .site-name @@ -25,26 +34,47 @@ html a#logo(href='/')= config.title p.description= config.subtitle #nav-menu - +a_with_current(config.root, __('blog'),'nav_blog') + +a_with_current(config.root, __('home')) +a_with_current(config.archive_dir, __('archive')) + +a_with_current(config.about_dir, __('about')) + +a_with_current(config.history_dir, __('history')) + +a_with_current(config.guestbook_dir, __('guestbook')) + +a_with_current('/atom.xml', __('rss')) + + + + #layout.pure-g .pure-u-1.pure-u-md-3-4: .content_container block content .pure-u-1-4: #sidebar .widget - #search - != search_form() + .widget-title= __('categories') + != list_categories({show_count: false}) .widget .widget-title= __('recent') - != list_posts() + != list_posts({amount: 10}) + .widget + .comments-title= __('recent_comments') + .ds-recent-comments(data-num-items='5' data-show-avatars='0' data-show-time='1' data-show-admin='0' data-excerpt-length='32' data-show-title='1') + .widget + .widget-title= __('blogroll') + ul: != link_to('http://www.yalanbooks.net/', '雅岚文艺博客', {external: true}) + ul: != link_to('http://www.jzwalk.com/', '羽中漫步', {external: true}) + ul: != link_to('http://bestcherish.com/', '灰常记忆', {external: true}) + ul: != link_to('http://imnerd.org/', '怡红院落', {external: true}) + ul: != link_to('http://louishan.com/', '生活志', {external: true}) + ul: != link_to('http://haozer.com/', '浩子', {external: true}) + ul: != link_to('http://wittyfox.me/', 'Sloger', {external: true}) + #footer= '© ' a(href='/', real="nofollow")= config.title + '.' i Powered by a(rel="nofollow", target="_blank", href="https://hexo.io") Hexo - a(rel="nofollow", target="_blank", href="http://chopstack.com") cho - + + if theme.fancybox != js(['/js/jquery.min.js', '/js/fancybox.pack.js']) != css('/css/jquery.fancybox.css') @@ -58,4 +88,13 @@ html $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox(); }); - + script. + var duoshuoQuery = {short_name:"!{theme.duoshuo}"}; + (function() { + var ds = document.createElement('script'); + ds.type = 'text/javascript';ds.async = true; + ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js'; + ds.charset = 'UTF-8'; + (document.getElementsByTagName('head')[0] + || document.getElementsByTagName('body')[0]).appendChild(ds); + })(); \ No newline at end of file diff --git a/layout/index.jade b/layout/index.jade index be632cec3..e3088dbf0 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -2,11 +2,9 @@ extends base - var current_title = page.title || tag.name || category.name || site.title block title - title= current_title + title= config.title + " | " + config.subtitle block content - if is_category() || is_tag() - h1.label-title= __('reading_label', current_title) - + for post in page.posts.toArray() .post h2.post-title @@ -14,10 +12,11 @@ block content a(href=url_for(post.path)) +title(post) .post-meta= post.date.format('MMMM DD, YYYY') - .post-content - != post.excerpt - if post.tags - .tags - for tag in post.tags.toArray() - a(href=url_for(tag.path))= tag.name + if post.description + .post-content= post.description + else if post.excerpt + .post-content= post.excerpt + else + .post-content= post.content.replace(/<(?:.|\n)*?>/gm, '').substr(0, 300) + include _partial/paginator diff --git a/layout/page.jade b/layout/page.jade index b040c6f19..61ac42c34 100644 --- a/layout/page.jade +++ b/layout/page.jade @@ -1,7 +1,9 @@ extends base block title - title= page.title + title= page.title + " | " + config.title block content .post.post-page h1.post-title= page.title - .post-content= page.content + .post-content + != page.content + diff --git a/layout/post.jade b/layout/post.jade index c08c52cf7..5bd4abde5 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -1,7 +1,7 @@ extends base block title - title= page.title + " - " + config.title + title= page.title + " | " + config.title block content .post.post-page @@ -13,5 +13,6 @@ block content .tags for tag in page.tags.toArray() a(href=url_for(tag.path))= tag.name + include _partial/comments include _partial/paginator diff --git a/source/css/style.scss b/source/css/style.scss index dd5f1fbf6..0cdf093d8 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -118,6 +118,15 @@ a:focus{ display: block; font-weight: normal; } + .comments-title { + color: #6E7173; + line-height: 2.7; + margin-top: 0; + font-size: 16px; + border-bottom: 0px solid #ddd; + display: block; + font-weight: normal; + } ul { list-style: none; padding: 0; @@ -386,3 +395,46 @@ pre{ .hidden1{ display: none; } + + + +#rocket { + position: fixed; + right: 50px; + bottom: 50px; + display: block; + visibility: hidden; + width: 26px; + height: 48px; + background: url("data:image/png;base64,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") no-repeat 50% 0; + opacity: 0; + -webkit-transition: visibility .6s cubic-bezier(0.6, 0.04, 0.98, 0.335), opacity .6s cubic-bezier(0.6, 0.04, 0.98, 0.335), -webkit-transform .6s cubic-bezier(0.6, 0.04, 0.98, 0.335); + -moz-transition: visibility .6s cubic-bezier(0.6, 0.04, 0.98, 0.335), opacity .6s cubic-bezier(0.6, 0.04, 0.98, 0.335), -moz-transform .6s cubic-bezier(0.6, 0.04, 0.98, 0.335); + transition: visibility .6s cubic-bezier(0.6, 0.04, 0.98, 0.335), opacity .6s cubic-bezier(0.6, 0.04, 0.98, 0.335), transform .6s cubic-bezier(0.6, 0.04, 0.98, 0.335); +} +#rocket i { + display: block; + margin-top: 48px; + height: 14px; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAB8CAYAAAB356CJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFlwG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR+mPHp9BP9z7nfP78L/eE8/sl0p8zAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAbdSURBVHja5NlbbBRVGAfw5VID+LAK8cEoxqTgmw8kPPhwipTGxJTDUAVBQBMNKtZboiDE2ES8pFEjGhNkkCrin3JbZo4YCqloUOoKJCDIRWyRAgW6R3dobU2bJtj6+eCMTqczs2d3Zh6Mm3xpdvc7++vMnHNmzvlSRJQqJgA8B8AC8EQx7YoBxgD4CAC54i0Ao2KDAIwCsNGDOPF6nNBLAYgTiyNDAKYDGCwA/Q7gtpIhAKMBHC+AOPF5FGiBIuLEXaVCR4uEzKIhAHcViRCAP4OuVRi0pgSIACwvFurw/ohhGJTP56m7u5vy+TwZhuEHHVKGANzmh3R3d48IH2wQwPWq0CIv5ByJN/L5vN9RzVKF3vQ29kOcULlOQZAZ8YjWq0JHI1wjAvClKnTJr+sq9joCcEoV6itxDDmRU4UoYvT8f6GeiFCXKpSLCJ1XhU5GhI6oQs0RoT2qUENESFeFlkeEXlCFZkeEqlWhWyNCtxSE7GdsPSL0AYAxgRCACQB2xzAzEAABYMIIyEYOxIQ4sR/AOC+UiRlxYvM/EID5CSFO1DjQoYShFmfFMJgwdC0FYHzCCAEYck5dZ8LQWQdCwpAe19xWKCocqAzA1YSQiwBGuwfs2yHJpwDcEBJHQtqu9s4MU0KSHy+wBF0c1NsATPabVL/ye6IBML4AVAbgik/bvUGz9zyf5HrFTY9VPm0XBkFlAH7xrN5uVYQmAuh3P0Q6M3fQje81V/LWIne+1gY9oPglTwLQai+Wby8SugnAj/Y2W7nqqnyUz2cagDb7P24DoAXshI2Nsl9XZXdXb/etintjMBswVrJxQ0H3rMG4oYEAaOA/e+rqAqC6uKHyAKg8VsjGDnqQg7Hve9tQrQeqTQpKuybOfgDpRCDParAhkZKBC5pmQ9MShWysvtg2RSOZTKYu0WqLYRhjTdMUQghqbGxMrtpimuYuIQQJIWj79u3JVFsMw3jHQYQQfhuC0asthmFUCiGG3JAQgjZv3hxftaW5uXmMEOJnLyKEoK1bt8ZXbTEMY5kfIoSgHTt2xFdtEUK0BkE7d+6Mp9piGMY9QYgQgkzTjKfaYprmJvcPn/vhOHV8+D511j5EuUWzqXPZEmpd9x59/102WrVFCPGrG7myopZkzUyS2ox/Ijf3bjq/8mkvpl5tMQzjDvfRdKx7l+TcmZR7bAH1nThGf167Rn0njlHn0gcoV1NJrWvXlFZtMQzjaTfU+eQSknMqqP+n0+R+9Z05RXJOBXUsW1xatcUwjAY3lLu/iuScCvJ7SW0GXVlUXVq1xTTN/cOghfcGH5E2w++I1Kot3vFzceP6vy++5xrlli6gXM1MOvOxXlq1RQiR946by6tXkpw7vNfJmko698qL1NzUVFq1RQgx4DdIL2z7lDqfephyD2l05dlH6ELjRj9EvdoSNiMozA7qtQlVSAjx34H6IkJdqlBXROi86oBtjwgdUYUOR4T2qEJmREhXnVTrI0IvqEJLIg7YalWoXAUKqSwXrrZIzsZIzvSfT5woCTr2zdckOftAchZcbZGcTZCc7ZacUfu+vQWhTCYzAjq9vZEkZyQ5E5KzkdUWGzlgJ9GFjetLgtrerXcgkpztl5yN80IZVwJdWvVMQcizqiAAdPHZR90QSc7+rbZIzuZ7vqTcfZXUdvp0KOR9/j78bQvlaiq9EEnOahzokM+X1P7FnlBoy5Ytw69P4yd+CEnOWlKSs9GSs0G/hI41bxQ1WNtffj4IupaSnI0P+JJyD1bT8aNHlbr24ZYWys2rCoKGnFPXGYS1N+1S6nFnPtaDEJKcnXUgBCVdfrHWF9q2bdswqGPZ4jBId6DZIUnUnm0J7Qgnd5lhCEnOKhyoTHJ2NSjx0qurQifTCytqw5CLkrPR7gH7dkhy6HaZ5OzbkLarvTPDlJDkRQWg+UG9TXI22W9S/conWUrOrisAjbVPkbft3qDZe55P8qsqmx6SsxU+bRcGQWWSs19ciX9Izm5WhG6UnPW52vY4M3fQje81V3JR1RbJ2Vr32Cl0h50kOWuVnHVIzm4vErpJcvaj5MySnKlVWyRnw7bHLF1L9WbTWm823dabTZP9V7N0bUQ7yVnp1RZL16p69k0eshHqzaapZ9/kIUvX4q22WLqW7cpMJzfUlZlOlq5l44YGrQ3VwyBrQzVZujYYNzRg6Rr1tkz8G2qZSJaukaVrA7GfOkvX6LemqdSbTdNvTVMdKPZTV2fpGl3dNIt6s2m6ummWA9XFDZXbP0zdn93pIGTpWnncUMrStYMugOz3qSSgWg9UmxSUtnSt30b67feJQClL1xpsqMH5LClomg1NSxpKWbpW736v0v6vAQCo4CbBrd8RBQAAAABJRU5ErkJggg==") no-repeat 50% -48px; + opacity: .5; + -webkit-transition: -webkit-transform .2s; + -moz-transition: -moz-transform .2s; + transition: transform .2s; + -webkit-transform-origin: 50% 0; + -moz-transform-origin: 50% 0; + transform-origin: 50% 0; +} +#rocket:hover { + background-position: 50% -62px; +} +#rocket:hover i { + background-position: 50% 100%; + -webkit-animation: flaming .7s infinite; + -moz-animation: flaming .7s infinite; + animation: flaming .7s infinite; +} +#rocket.show { + visibility: visible; + opacity: 1; +} diff --git a/source/img/apple.png b/source/img/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..cff5e357e7183f35e09dd06293d6caa5d696e717 GIT binary patch literal 1621 zcmah|4Nw$i7+yQQP&~Dq3V)`S1yQ2A{ee5Ujgx@AlM{~cI7b*uU3NcU<8F7|Tf74X zMJ9F9G&mD*9AYrjkt}o8A3>_IaN7 z{obE9iV7E)Ce56LAc)DG$9Una=x>YxevcTcUxw2R)mfqzOXX^aRREIBOJx9c2iOYW z1uS2)QUjR?Vz?&wO4Jfh0nJGP3#(%+;eZU;2$GoRhh=|P$*;xrCKDV0w?WuyRJb|W{5BcYeba|o5f(lr~(6moFd4oAc?51 z$d*afssn?bj$9!iM`gv}{V>6R;bB(BNeiK0X&A_JQJh?@_=k=291i>-07Nwiv1Akr zqvY{K;bY1M0#S5O^@0a?8xtM$)yM$%f}m8ba4^Z`3A$S{ovQ#=l@y;O`9~vOR4J)a zuu_uI++rI#&%<(ps2?Oh!~hJd0tW`;Z#5HEGfDVJ7<`H*?I}bCO%NkckHib*HUEJ^ z1eHOPssDn)p^@`RrMKeGVRsr6n zNC9*>8?-QnFLu&J5w3I>)PrLzUq-n67`}{fGl)lWap(-L*XKj^I(h_~Kwn0?4{oCU z3q;to3hd75=GJqtvyDXsKBviKg3IZK!}V}_O!XEP-$Sl^L@Y#*as6&4+ZXN|JfB}? zh@WgIy7qVLuU#F7IDf2N&2HIzY0iw_;@TSfV;lOs#?GBh_R=p~=I%XfJpcUUWv5?X zJL`6f+&JOX;FVn$mTvugeB9Q%%i`81<5P|wzkYPei4XqxHs+@r-pY-}w!81$Ha*!t z+vr$+@QDllXI_2hn-f)Uo!zs%D>U)#nmeZ!t!c|%IKQLbeR<|<8y8>wZYtGrtvlh* z=2zbBE}n-j>6)~DFM4uUx4q2iYOPOA_B3xwN*y?$jW69d#m|3=3QfO&X|wr;Gi8g1 z#_c!SH2LthMrP>4V_9o%G@slaEN$;$o?gGZqk!uD;jSFfp4ybZ(>#=d_Qtkhb=7B+ zCU&MB9hh?>??+_2xnx1!Z1m=fi#FcUoR;>4p3hPeozxMsH!{sFHuax5Uia0-#iy3$ zJ&VpT_BLm}M9tfhq+S1Bo8@LNt=8frkHbItb(Y`v?>6wt)b{wAhQStQcc90RIJIfB zBj)nz!O5B-af3FnBHX|$tA)8Yr-#yyW}e%D9_(SVO6zLBaJOtJs85`==a9v_X4TJ; z)=viJ;PwSW7b9w9U(>Bfulr+7ZU1^)B;~+qQ*!6F;+3&l!vLzyJ#c=4_26yaj&*;P mHsF literal 0 HcmV?d00001 From bee60e84d02303d0bb7fe7b323b074b40d73014e Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 25 May 2015 20:44:13 +0800 Subject: [PATCH 002/118] =?UTF-8?q?=E5=BD=92=E6=A1=A3=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=B9=B4=E4=BB=BD=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/archive.jade | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/layout/archive.jade b/layout/archive.jade index 4f3bf0198..c339988df 100644 --- a/layout/archive.jade +++ b/layout/archive.jade @@ -9,11 +9,14 @@ block content h1.label-title= __('reading_label', page.category || page.tag) .post .post-archive - ul.listing - for post in page.posts.toArray() - li - span.date= post.date.format('YYYY/MM/DD') - a(href=url_for(post.path), title=post.title) - +title(post) + //Use lodash to classify posts. See https://lodash.com/docs#groupBy + each posts, year in _.groupBy(page.posts.toArray(), function(p){return p.date.format('YYYY')}) + h2= year + ul.listing + for post in posts + li + span.date= post.date.format('YYYY/MM/DD') + a(href=url_for(post.path), title=post.title) + +title(post) include _partial/paginator.jade From 4f6c005db3e6d82caf93a88cb49ee9e76b736f81 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 25 May 2015 22:50:42 +0800 Subject: [PATCH 003/118] fix bug --- layout/base.jade | 1 - 1 file changed, 1 deletion(-) diff --git a/layout/base.jade b/layout/base.jade index d7fec7686..f62fcd1b0 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -19,7 +19,6 @@ html link(rel='stylesheet', type='text/css', href='/css/normalize.css') link(rel='stylesheet', type='text/css', href='/css/pure-min.css') link(rel='stylesheet', type='text/css', href='/css/grids-responsive-min.css') - link(rel='stylesheet', type='text/css', href='/css/font-awesome.min.css') link(rel='stylesheet', type='text/css', href='/css/style.css') link(rel='Shortcut Icon', type='image/x-icon',href='/favicon.ico') link(rel='apple-touch-icon', href='/img/apple.png') From 19554b5cd48af82c8b50a446e8b0ec18d20bd38a Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 26 May 2015 00:08:57 +0800 Subject: [PATCH 004/118] =?UTF-8?q?=E8=BF=9B=E4=B8=80=E6=AD=A5=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _config.yml | 5 +++++ layout/base.jade | 16 ++++++++++------ source/css/style.scss | 15 +++++++++++++++ source/js/totop.js | 12 ++++++++++++ 4 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 source/js/totop.js diff --git a/_config.yml b/_config.yml index 8d17e2716..b33234b54 100644 --- a/_config.yml +++ b/_config.yml @@ -1,2 +1,7 @@ fancybox: false duoshuo: haomwei + +favicon: favicon.ico ## size:32px*32px,`.ico` is recommended,please put image into the blog folder `/source`. +apple_icon: img/apple.jpg ## size:114px*114px, please put image into the theme folder `/maupassant/source/img`. + +##友情链接在/maupassant/layout/base.jade中添加 \ No newline at end of file diff --git a/layout/base.jade b/layout/base.jade index f62fcd1b0..0478d2eff 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -38,7 +38,7 @@ html +a_with_current(config.about_dir, __('about')) +a_with_current(config.history_dir, __('history')) +a_with_current(config.guestbook_dir, __('guestbook')) - +a_with_current('/atom.xml', __('rss')) + +a_with_current(config.feed.path, __('rss')) @@ -69,13 +69,17 @@ html #footer= '© ' - a(href='/', real="nofollow")= config.title + '.' - i Powered by - a(rel="nofollow", target="_blank", href="https://hexo.io") Hexo - + a(href='/', real="nofollow")= config.title + '. ' + | Powered by + a(rel="nofollow", target="_blank", href="https://hexo.io") Hexo. + | Theme by + a(rel="nofollow", target="_blank", href="https://chopstack.com") Cho + != js(['/js/jquery.min.js', '/js/totop.js']) + + if theme.fancybox - != js(['/js/jquery.min.js', '/js/fancybox.pack.js']) + != js(['/js/fancybox.pack.js']) != css('/css/jquery.fancybox.css') script. $(document).ready(function() { diff --git a/source/css/style.scss b/source/css/style.scss index 0cdf093d8..f9d1316a2 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -438,3 +438,18 @@ pre{ visibility: visible; opacity: 1; } +#rocket.launch { + background-position: 50% -62px; + opacity: 0; + -webkit-transform: translateY(-500px); + -moz-transform: translateY(-500px); + -ms-transform: translateY(-500px); + transform: translateY(-500px); + pointer-events: none; +} +#rocket.launch i { + background-position: 50% 100%; + -webkit-transform: scale(1.4, 3.2); + -moz-transform: scale(1.4, 3.2); + transform: scale(1.4, 3.2); +} diff --git a/source/js/totop.js b/source/js/totop.js new file mode 100644 index 000000000..97de8a93b --- /dev/null +++ b/source/js/totop.js @@ -0,0 +1,12 @@ +$(window).scroll(function() { + $(window).scrollTop() > 100 ? $("#rocket").addClass("show") : $("#rocket").removeClass("show"); + }); + $("#rocket").click(function() { + $("#rocket").addClass("launch"); + $("html, body").animate({ + scrollTop: 0 + }, 500, function() { + $("#rocket").removeClass("show launch"); + }); + return false; + }); \ No newline at end of file From 50c4b624e557019551402955758fb77f8075a918 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 26 May 2015 11:16:36 +0800 Subject: [PATCH 005/118] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=A4=9A=E8=AF=B4?= =?UTF-8?q?=E8=AF=84=E8=AE=BA=E6=96=87=E7=AB=A0url=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/_partial/comments.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/_partial/comments.jade b/layout/_partial/comments.jade index 2c75acde1..cf40c8096 100644 --- a/layout/_partial/comments.jade +++ b/layout/_partial/comments.jade @@ -1,5 +1,5 @@ if theme.duoshuo - .ds-thread(data-thread-key=page.path, date-title=page.title, data-url=url_for(page.path)) + .ds-thread(data-thread-key=page.path, date-title=page.title, data-url=url_for(page.permalink) data-author-key='1') From 9de1098bae0f8b65d21be68e9766a0a0756e4939 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 26 May 2015 13:21:55 +0800 Subject: [PATCH 006/118] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 +++++++++++- _config.yml | 7 +------ layout/base.jade | 10 +++------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 4f1e80578..b96d1a31b 100644 --- a/README.md +++ b/README.md @@ -19,9 +19,19 @@ npm install hexo-renderer-jade --save ## Probable solutions -- Check version of hexo and review ![Migrating from 2.x to 3.0](https://github.com/hexojs/hexo/wiki/Migrating-from-2.x-to-3.0) + - Check if your terminal's current directory is hexo's root directory which contains `source/`, `themes/`, etc. - Feel free to open an [issue](https://github.com/icylogic/maupassant-hexo/issues/new) + + +## Usage + +You can set your friendly links in `/maupassant/layout/base.jade`. + +You can add an **favicon.ico** for your website, please put it into the blog folder `/source`, recommended size: 32px*32px. + +You can add an website logo for apple devices, please put an image named **apple.jpg** into the theme folder `/maupassant/source/img`, recommended size: 114px*114px + ## Maupassant on different platform: diff --git a/_config.yml b/_config.yml index b33234b54..067c5b0d4 100644 --- a/_config.yml +++ b/_config.yml @@ -1,7 +1,2 @@ fancybox: false -duoshuo: haomwei - -favicon: favicon.ico ## size:32px*32px,`.ico` is recommended,please put image into the blog folder `/source`. -apple_icon: img/apple.jpg ## size:114px*114px, please put image into the theme folder `/maupassant/source/img`. - -##友情链接在/maupassant/layout/base.jade中添加 \ No newline at end of file +duoshuo: duoshuo_shortname \ No newline at end of file diff --git a/layout/base.jade b/layout/base.jade index 0478d2eff..cba0df5fe 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -59,13 +59,9 @@ html .ds-recent-comments(data-num-items='5' data-show-avatars='0' data-show-time='1' data-show-admin='0' data-excerpt-length='32' data-show-title='1') .widget .widget-title= __('blogroll') - ul: != link_to('http://www.yalanbooks.net/', '雅岚文艺博客', {external: true}) - ul: != link_to('http://www.jzwalk.com/', '羽中漫步', {external: true}) - ul: != link_to('http://bestcherish.com/', '灰常记忆', {external: true}) - ul: != link_to('http://imnerd.org/', '怡红院落', {external: true}) - ul: != link_to('http://louishan.com/', '生活志', {external: true}) - ul: != link_to('http://haozer.com/', '浩子', {external: true}) - ul: != link_to('http://wittyfox.me/', 'Sloger', {external: true}) + ul: != link_to('http://example1/', 'site-name 1', {external: true}) + ul: != link_to('http://example2.com/', 'site-name 2', {external: true}) + ul: != link_to('http://example3.com/', 'site-name 3', {external: true}) #footer= '© ' From 0068e92b7ffd864f34df635a6d2053f4b00ddd9c Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 28 May 2015 22:57:38 +0800 Subject: [PATCH 007/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=AB=98=E4=BA=AE=E4=B8=BB=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/base.jade | 9 ++- source/css/highlight.css | 154 ++++++++++++++++++++++++++++++++++++ source/js/highlight.pack.js | 1 + 3 files changed, 160 insertions(+), 4 deletions(-) create mode 100644 source/css/highlight.css create mode 100644 source/js/highlight.pack.js diff --git a/layout/base.jade b/layout/base.jade index cba0df5fe..c785b67fd 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -19,6 +19,7 @@ html link(rel='stylesheet', type='text/css', href='/css/normalize.css') link(rel='stylesheet', type='text/css', href='/css/pure-min.css') link(rel='stylesheet', type='text/css', href='/css/grids-responsive-min.css') + link(rel='stylesheet', type='text/css', href='/css/highlight.css') link(rel='stylesheet', type='text/css', href='/css/style.css') link(rel='Shortcut Icon', type='image/x-icon',href='/favicon.ico') link(rel='apple-touch-icon', href='/img/apple.png') @@ -40,9 +41,6 @@ html +a_with_current(config.guestbook_dir, __('guestbook')) +a_with_current(config.feed.path, __('rss')) - - - #layout.pure-g .pure-u-1.pure-u-md-3-4: .content_container block content @@ -62,7 +60,10 @@ html ul: != link_to('http://example1/', 'site-name 1', {external: true}) ul: != link_to('http://example2.com/', 'site-name 2', {external: true}) ul: != link_to('http://example3.com/', 'site-name 3', {external: true}) - + + != js(['/js/highlight.pack.js']) + script. + hljs.initHighlightingOnLoad(); #footer= '© ' a(href='/', real="nofollow")= config.title + '. ' diff --git a/source/css/highlight.css b/source/css/highlight.css new file mode 100644 index 000000000..fb616bd99 --- /dev/null +++ b/source/css/highlight.css @@ -0,0 +1,154 @@ +/* + +Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #23241f; + -webkit-text-size-adjust: none; +} + +.hljs, +.hljs-tag, +.css .hljs-rule, +.css .hljs-value, +.aspectj .hljs-function, +.css .hljs-function +.hljs-preprocessor, +.hljs-pragma { + color: #f8f8f2; +} + +.hljs-strongemphasis, +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-blockquote, +.hljs-horizontal_rule, +.hljs-number, +.hljs-regexp, +.alias .hljs-keyword, +.hljs-literal, +.hljs-hexcolor { + color: #ae81ff; +} + +.hljs-tag .hljs-value, +.hljs-code, +.hljs-title, +.css .hljs-class, +.hljs-class .hljs-title:last-child { + color: #a6e22e; +} + +.hljs-link_url { + font-size: 80%; +} + +.hljs-strong, +.hljs-strongemphasis { + font-weight: bold; +} + +.hljs-emphasis, +.hljs-strongemphasis, +.hljs-class .hljs-title:last-child, +.hljs-typename { + font-style: italic; +} + +.hljs-keyword, +.ruby .hljs-class .hljs-keyword:first-child, +.ruby .hljs-function .hljs-keyword, +.hljs-function, +.hljs-change, +.hljs-winutils, +.hljs-flow, +.nginx .hljs-title, +.tex .hljs-special, +.hljs-header, +.hljs-attribute, +.hljs-symbol, +.hljs-symbol .hljs-string, +.hljs-tag .hljs-title, +.hljs-value, +.alias .hljs-keyword:first-child, +.css .hljs-tag, +.css .unit, +.css .hljs-important { + color: #f92672; +} + +.hljs-function .hljs-keyword, +.hljs-class .hljs-keyword:first-child, +.hljs-aspect .hljs-keyword:first-child, +.hljs-constant, +.hljs-typename, +.hljs-name, +.css .hljs-attribute { + color: #66d9ef; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title, +.hljs-aspect .hljs-title { + color: #f8f8f2; +} + +.hljs-string, +.css .hljs-id, +.hljs-subst, +.hljs-type, +.ruby .hljs-class .hljs-parent, +.hljs-built_in, +.django .hljs-template_tag, +.django .hljs-variable, +.smalltalk .hljs-class, +.django .hljs-filter .hljs-argument, +.smalltalk .hljs-localvars, +.smalltalk .hljs-array, +.hljs-attr_selector, +.hljs-pseudo, +.hljs-addition, +.hljs-stream, +.hljs-envvar, +.apache .hljs-tag, +.apache .hljs-cbracket, +.tex .hljs-command, +.hljs-prompt, +.hljs-link_label, +.hljs-link_url { + color: #e6db74; +} + +.hljs-comment, +.hljs-annotation, +.hljs-decorator, +.hljs-pi, +.hljs-doctype, +.hljs-deletion, +.hljs-shebang, +.apache .hljs-sqbracket, +.tex .hljs-formula { + color: #75715e; +} + +.coffeescript .javascript, +.javascript .xml, +.tex .hljs-formula, +.xml .javascript, +.xml .vbscript, +.xml .css, +.xml .hljs-cdata, +.xml .php, +.php .xml { + opacity: 0.5; +} \ No newline at end of file diff --git a/source/js/highlight.pack.js b/source/js/highlight.pack.js new file mode 100644 index 000000000..4e7eba48d --- /dev/null +++ b/source/js/highlight.pack.js @@ -0,0 +1 @@ +!function(e){"undefined"!=typeof exports?e(exports):(window.hljs=e({}),"function"==typeof define&&define.amd&&define("hljs",[],function(){return window.hljs}))}(function(e){function n(e){return e.replace(/&/gm,"&").replace(//gm,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}function a(e){return/no-?highlight|plain|text/.test(e)}function i(e){var n,t,r,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=/\blang(?:uage)?-([\w-]+)\b/.exec(i))return E(t[1])?t[1]:"no-highlight";for(i=i.split(/\s+/),n=0,r=i.length;r>n;n++)if(E(i[n])||a(i[n]))return i[n]}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?a+=i.nodeValue.length:1==i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset"}function u(e){f+=""}function c(e){("start"==e.event?o:u)(e.node)}for(var s=0,f="",l=[];e.length||r.length;){var g=i();if(f+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g==e){l.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g==e&&g.length&&g[0].offset==s);l.reverse().forEach(o)}else"start"==g[0].event?l.push(g[0].node):l.pop(),c(g.splice(0,1)[0])}return f+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");u[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?c("keyword",a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\b\w+\b/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push("self"==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var f=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=f.length?t(f.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){for(var t=0;t";return i+=e+'">',i+n+o}function p(){if(!L.k)return n(B);var e="",t=0;L.lR.lastIndex=0;for(var r=L.lR.exec(B);r;){e+=n(B.substr(t,r.index-t));var a=g(L,r);a?(y+=a[1],e+=h(a[0],n(r[0]))):e+=n(r[0]),t=L.lR.lastIndex,r=L.lR.exec(B)}return e+n(B.substr(t))}function d(){if(L.sL&&!x[L.sL])return n(B);var e=L.sL?f(L.sL,B,!0,M[L.sL]):l(B);return L.r>0&&(y+=e.r),"continuous"==L.subLanguageMode&&(M[L.sL]=e.top),h(e.language,e.value,!1,!0)}function b(){return void 0!==L.sL?d():p()}function v(e,t){var r=e.cN?h(e.cN,"",!0):"";e.rB?(k+=r,B=""):e.eB?(k+=n(t)+r,B=""):(k+=r,B=t),L=Object.create(e,{parent:{value:L}})}function m(e,t){if(B+=e,void 0===t)return k+=b(),0;var r=o(t,L);if(r)return k+=b(),v(r,t),r.rB?0:t.length;var a=u(L,t);if(a){var i=L;i.rE||i.eE||(B+=t),k+=b();do L.cN&&(k+=""),y+=L.r,L=L.parent;while(L!=a.parent);return i.eE&&(k+=n(t)),B="",a.starts&&v(a.starts,""),i.rE?0:t.length}if(c(t,L))throw new Error('Illegal lexeme "'+t+'" for mode "'+(L.cN||"")+'"');return B+=t,t.length||1}var N=E(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,L=i||N,M={},k="";for(R=L;R!=N;R=R.parent)R.cN&&(k=h(R.cN,"",!0)+k);var B="",y=0;try{for(var C,j,I=0;;){if(L.t.lastIndex=I,C=L.t.exec(t),!C)break;j=m(t.substr(I,C.index-I),C[0]),I=C.index+j}for(m(t.substr(I)),R=L;R.parent;R=R.parent)R.cN&&(k+="");return{r:y,value:k,language:e,top:L}}catch(O){if(-1!=O.message.indexOf("Illegal"))return{r:0,value:n(t)};throw O}}function l(e,t){t=t||w.languages||Object.keys(x);var r={r:0,value:n(e)},a=r;return t.forEach(function(n){if(E(n)){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}}),a.language&&(r.second_best=a),r}function g(e){return w.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,n){return n.replace(/\t/g,w.tabReplace)})),w.useBR&&(e=e.replace(/\n/g,"
")),e}function h(e,n,t){var r=n?R[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function p(e){var n=i(e);if(!a(n)){var t;w.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e;var r=t.textContent,o=n?f(n,r,!0):l(r),s=u(t);if(s.length){var p=document.createElementNS("http://www.w3.org/1999/xhtml","div");p.innerHTML=o.value,o.value=c(s,u(p),r)}o.value=g(o.value),e.innerHTML=o.value,e.className=h(e.className,n,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function d(e){w=o(w,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,p)}}function v(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){R[e]=n})}function N(){return Object.keys(x)}function E(e){return x[e]||x[R[e]]}var w={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},x={},R={};return e.highlight=f,e.highlightAuto=l,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=E,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",bK:"TODO FIXME NOTE BUG XXX",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",reserved:"case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",t={cN:"subst",b:/#\{/,e:/}/,k:c},r=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,t]},{b:/"/,e:/"/,c:[e.BE,t]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[t,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{cN:"property",b:"@"+n},{b:"`",e:"`",eB:!0,eE:!0,sL:"javascript"}];t.c=r;var i=e.inherit(e.TM,{b:n}),s="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(r)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:r.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{cN:"attribute",b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"[a-z\\d_]*_t"},r={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf"};return{aliases:["c","cc","h","c++","h++","hpp"],k:r,i:""]',k:"include",i:"\\n"},t.CLCM]},{b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:r,c:["self",e]},{b:t.IR+"::",k:r},{bK:"new throw return else",r:0},{cN:"function",b:"("+t.IR+"\\s+)+"+t.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:t.IR+"\\s*\\(",rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[t.CBCM]},t.CLCM,t.CBCM]}]}});hljs.registerLanguage("python",function(e){var r={cN:"prompt",b:/^(>>>|\.\.\.) /},b={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[r],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},l={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},c={cN:"params",b:/\(/,e:/\)/,c:["self",r,l,b]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[r,l,b,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,c]},{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>]/,c:[{cN:"operator",bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate savepoint release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke",e:/;/,eW:!0,k:{keyword:"abs absolute acos action add adddate addtime aes_decrypt aes_encrypt after aggregate all allocate alter analyze and any are as asc ascii asin assertion at atan atan2 atn2 authorization authors avg backup before begin benchmark between bin binlog bit_and bit_count bit_length bit_or bit_xor both by cache call cascade cascaded case cast catalog ceil ceiling chain change changed char_length character_length charindex charset check checksum checksum_agg choose close coalesce coercibility collate collation collationproperty column columns columns_updated commit compress concat concat_ws concurrent connect connection connection_id consistent constraint constraints continue contributors conv convert convert_tz corresponding cos cot count count_big crc32 create cross cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime data database databases datalength date_add date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts datetimeoffsetfromparts day dayname dayofmonth dayofweek dayofyear deallocate declare decode default deferrable deferred degrees delayed delete des_decrypt des_encrypt des_key_file desc describe descriptor diagnostics difference disconnect distinct distinctrow div do domain double drop dumpfile each else elt enclosed encode encrypt end end-exec engine engines eomonth errors escape escaped event eventdata events except exception exec execute exists exp explain export_set extended external extract fast fetch field fields find_in_set first first_value floor flush for force foreign format found found_rows from from_base64 from_days from_unixtime full function get get_format get_lock getdate getutcdate global go goto grant grants greatest group group_concat grouping grouping_id gtid_subset gtid_subtract handler having help hex high_priority hosts hour ident_current ident_incr ident_seed identified identity if ifnull ignore iif ilike immediate in index indicator inet6_aton inet6_ntoa inet_aton inet_ntoa infile initially inner innodb input insert install instr intersect into is is_free_lock is_ipv4 is_ipv4_compat is_ipv4_mapped is_not is_not_null is_used_lock isdate isnull isolation join key kill language last last_day last_insert_id last_value lcase lead leading least leaves left len lenght level like limit lines ln load load_file local localtime localtimestamp locate lock log log10 log2 logfile logs low_priority lower lpad ltrim make_set makedate maketime master master_pos_wait match matched max md5 medium merge microsecond mid min minute mod mode module month monthname mutex name_const names national natural nchar next no no_write_to_binlog not now nullif nvarchar oct octet_length of old_password on only open optimize option optionally or ord order outer outfile output pad parse partial partition password patindex percent_rank percentile_cont percentile_disc period_add period_diff pi plugin position pow power pragma precision prepare preserve primary prior privileges procedure procedure_analyze processlist profile profiles public publishingservername purge quarter query quick quote quotename radians rand read references regexp relative relaylog release release_lock rename repair repeat replace replicate reset restore restrict return returns reverse revoke right rlike rollback rollup round row row_count rows rpad rtrim savepoint schema scroll sec_to_time second section select serializable server session session_user set sha sha1 sha2 share show sign sin size slave sleep smalldatetimefromparts snapshot some soname soundex sounds_like space sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sql_variant_property sqlstate sqrt square start starting status std stddev stddev_pop stddev_samp stdev stdevp stop str str_to_date straight_join strcmp string stuff subdate substr substring subtime subtring_index sum switchoffset sysdate sysdatetime sysdatetimeoffset system_user sysutcdatetime table tables tablespace tan temporary terminated tertiary_weights then time time_format time_to_sec timediff timefromparts timestamp timestampadd timestampdiff timezone_hour timezone_minute to to_base64 to_days to_seconds todatetimeoffset trailing transaction translation trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse ucase uncompress uncompressed_length unhex unicode uninstall union unique unix_timestamp unknown unlock update upgrade upped upper usage use user user_resources using utc_date utc_time utc_timestamp uuid uuid_short validate_password_strength value values var var_pop var_samp variables variance varp version view warnings week weekday weekofyear weight_string when whenever where with work write xml xor year yearweek zon",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int integer interval number numeric real serial smallint varchar varying int8 serial8 text"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("java",function(e){var a=e.UIR+"(<"+e.UIR+">)?",t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",c="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",r={cN:"number",b:c,r:0};return{aliases:["jsp"],k:t,i:/<\//,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+a+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},r,{cN:"annotation",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("ruby",function(e){var c="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",b={cN:"doctag",b:"@[A-Za-z]+"},a={cN:"value",b:"#<",e:">"},n=[e.C("#","$",{c:[b]}),e.C("^\\=begin","^\\=end",{c:[b],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]},i={cN:"params",b:"\\(",e:"\\)",k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]}].concat(n)},{cN:"function",bK:"def",e:" |$|;",r:0,c:[e.inherit(e.TM,{b:c}),i].concat(n)},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":",c:[t,{b:c}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[a,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(n),r:0}].concat(n);s.c=d,i.c=d;var o="[>?]>",l="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",N=[{b:/^\s*=>/,cN:"status",starts:{e:"$",c:d}},{cN:"prompt",b:"^("+o+"|"+l+"|"+u+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,c:n.concat(N).concat(d)}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"(AV|CA|CF|CG|CI|MK|MP|NS|UI)\\w+"},i={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},o=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:i,l:o,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:o,c:[e.UTM]},{cN:"variable",b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("javascript",function(e){return{aliases:["js"],k:{keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},c:[{cN:"pi",r:10,b:/^\s*['"]use (strict|asm)['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{b:/\s*[);\]]/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},{bK:"import",e:"[;$]",k:"import from as",c:[e.ASM,e.QSM]},{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]}]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"title",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:"^\\[.+\\]:",rB:!0,c:[{cN:"link_reference",b:"\\[",e:"\\]:",eB:!0,eE:!0,starts:{cN:"link_url",e:"$"}}]}]}});hljs.registerLanguage("json",function(e){var t={literal:"true false null"},i=[e.QSM,e.CNM],l={cN:"value",e:",",eW:!0,eE:!0,c:i,k:t},c={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:!0,eE:!0,c:[e.BE],i:"\\n",starts:l}],i:"\\S"},n={b:"\\[",e:"\\]",c:[e.inherit(l,{cN:null})],i:"\\S"};return i.splice(i.length,0,c,n),{c:i,k:t,i:"\\S"}});hljs.registerLanguage("php",function(e){var c={cN:"variable",b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},a={cN:"preprocessor",b:/<\?(php)?|\?>/},i={cN:"string",c:[e.BE,a],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.CLCM,e.HCM,e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"},a]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[e.BE]},a,c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,i,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},i,n]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"chunk",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"tag",b:""},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("http",function(t){return{aliases:["https"],i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:!0}}]}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",a={cN:"function",b:c+"\\(",rB:!0,eE:!0,e:"\\("},r={cN:"rule",b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{cN:"value",eW:!0,eE:!0,c:[a,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,r,{cN:"id",b:/\#[A-Za-z0-9_-]+/},{cN:"class",b:/\.[A-Za-z0-9_-]+/},{cN:"attr_selector",b:/\[/,e:/\]/,i:"$"},{cN:"pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"']+/},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[a,e.ASM,e.QSM,e.CSSNM]}]},{cN:"tag",b:c,r:0},{cN:"rules",b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}});hljs.registerLanguage("cs",function(e){var r="abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield",t=e.IR+"(<"+e.IR+">)?";return{aliases:["csharp"],k:r,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"xmlDocTag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},e.ASM,e.QSM,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[{cN:"title",b:"[a-zA-Z](\\.?\\w)*",r:0},e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("xml",function(t){var e="[A-Za-z0-9\\._:-]+",s={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"},c={eW:!0,i:/]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},t.C("",{r:10}),{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:"style"},c:[c],starts:{e:"",rE:!0,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:"script"},c:[c],starts:{e:"",rE:!0,sL:""}},s,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"",c:[{cN:"title",b:/[^ \/><\n\t]+/,r:0},c]}]}});hljs.registerLanguage("makefile",function(e){var a={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[a]}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,a]}]}});hljs.registerLanguage("ini",function(e){return{cI:!0,i:/\S/,c:[e.C(";","$"),{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:!0,k:"on off true false yes no",c:[e.QSM,e.NM],r:0}]}]}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,e.NM,s,a,t]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={cN:"variable",v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=e.C("^(__END__|__DATA__)","\\n$",{r:5}),o=[e.BE,r,n],a=[n,e.HCM,i,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:o,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,i,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0}];return r.c=a,s.c=a,{aliases:["pl"],k:t,c:a}}); \ No newline at end of file From 9f6712ae91c3bbd8dd9ca648ec909e0f2468678e Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 21 Jun 2015 19:02:01 +0800 Subject: [PATCH 008/118] =?UTF-8?q?=E4=BF=AE=E6=AD=A3BUG=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0disqus=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ _config.yml | 3 ++- layout/_partial/comments.jade | 19 ++++++++++++++++--- layout/archive.jade | 12 +++++++----- layout/base.jade | 22 ++++++++++++---------- 5 files changed, 39 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index b96d1a31b..8a5901571 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ You can add an **favicon.ico** for your website, please put it into the blog fol You can add an website logo for apple devices, please put an image named **apple.jpg** into the theme folder `/maupassant/source/img`, recommended size: 114px*114px +If you want to use the code highlight style of *monokai_sublime*, please set the `highlight/enable` in `blog/_config.yml` to "false". + ## Maupassant on different platform: diff --git a/_config.yml b/_config.yml index 067c5b0d4..bd77372b8 100644 --- a/_config.yml +++ b/_config.yml @@ -1,2 +1,3 @@ fancybox: false -duoshuo: duoshuo_shortname \ No newline at end of file +duoshuo: duoshuo_shortname +disqus: disqus_shortname \ No newline at end of file diff --git a/layout/_partial/comments.jade b/layout/_partial/comments.jade index cf40c8096..2e90f63b5 100644 --- a/layout/_partial/comments.jade +++ b/layout/_partial/comments.jade @@ -1,5 +1,18 @@ if theme.duoshuo - .ds-thread(data-thread-key=page.path, date-title=page.title, data-url=url_for(page.permalink) data-author-key='1') - - + .ds-thread(data-thread-key=page.path, date-title=page.title, data-url=page.permalink, data-author-key='1') +if theme.disqus + #disqus_thread + | + | + | Blog comments powered by Disqus \ No newline at end of file diff --git a/layout/archive.jade b/layout/archive.jade index c339988df..4800f4857 100644 --- a/layout/archive.jade +++ b/layout/archive.jade @@ -1,9 +1,12 @@ extends base block title - if page.category || page.tag || page.archive - title= page.category || page.tag || "归档" + " | " + config.title - + if page.category + title= page.category + " | " + config.title + if page.tag + title= page.tag + " | " + config.title + if page.archive + title= "归档" + " | " + config.title block content if page.category || page.tag h1.label-title= __('reading_label', page.category || page.tag) @@ -18,5 +21,4 @@ block content span.date= post.date.format('YYYY/MM/DD') a(href=url_for(post.path), title=post.title) +title(post) - include _partial/paginator.jade - + include _partial/paginator.jade \ No newline at end of file diff --git a/layout/base.jade b/layout/base.jade index c785b67fd..ebfeeb45a 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -55,6 +55,7 @@ html .widget .comments-title= __('recent_comments') .ds-recent-comments(data-num-items='5' data-show-avatars='0' data-show-time='1' data-show-admin='0' data-excerpt-length='32' data-show-title='1') + | .widget .widget-title= __('blogroll') ul: != link_to('http://example1/', 'site-name 1', {external: true}) @@ -88,13 +89,14 @@ html $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox(); }); - script. - var duoshuoQuery = {short_name:"!{theme.duoshuo}"}; - (function() { - var ds = document.createElement('script'); - ds.type = 'text/javascript';ds.async = true; - ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js'; - ds.charset = 'UTF-8'; - (document.getElementsByTagName('head')[0] - || document.getElementsByTagName('body')[0]).appendChild(ds); - })(); \ No newline at end of file + if theme.duoshuo + script. + var duoshuoQuery = {short_name:"!{theme.duoshuo}"}; + (function() { + var ds = document.createElement('script'); + ds.type = 'text/javascript';ds.async = true; + ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//dn-comment.qbox.me/embed.js'; + ds.charset = 'UTF-8'; + (document.getElementsByTagName('head')[0] + || document.getElementsByTagName('body')[0]).appendChild(ds); + })(); \ No newline at end of file From d54a4c80993d0906cb9bb78f812c4037326beb4e Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 22 Jun 2015 11:15:44 +0800 Subject: [PATCH 009/118] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=BD=92=E6=A1=A3?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=A1=BA=E5=BA=8F=E4=B8=BA=E5=B8=B8=E8=A7=81?= =?UTF-8?q?=E5=BD=A2=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/archive.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/layout/archive.jade b/layout/archive.jade index 4800f4857..d292cfe5e 100644 --- a/layout/archive.jade +++ b/layout/archive.jade @@ -13,8 +13,8 @@ block content .post .post-archive //Use lodash to classify posts. See https://lodash.com/docs#groupBy - each posts, year in _.groupBy(page.posts.toArray(), function(p){return p.date.format('YYYY')}) - h2= year + each posts, year in _.groupBy(page.posts.toArray(), function(p){return -p.date.format('YYYY')}) + h2= -year ul.listing for post in posts li From 0125870c63a8068d94a68854aded3988958be852 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 22 Jun 2015 11:29:24 +0800 Subject: [PATCH 010/118] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BE=A7=E8=BE=B9?= =?UTF-8?q?=E6=A0=8F=E6=9C=80=E8=BF=91=E8=AF=84=E8=AE=BA=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/base.jade | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index ebfeeb45a..321bd789e 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -52,10 +52,14 @@ html .widget .widget-title= __('recent') != list_posts({amount: 10}) - .widget - .comments-title= __('recent_comments') - .ds-recent-comments(data-num-items='5' data-show-avatars='0' data-show-time='1' data-show-admin='0' data-excerpt-length='32' data-show-title='1') - | + if theme.duoshuo + .widget + .comments-title= __('recent_comments') + .ds-recent-comments(data-num-items='5' data-show-avatars='0' data-show-time='1' data-show-admin='0' data-excerpt-length='32' data-show-title='1') + if theme.disqus + .widget + .widget-title= __('recent_comments') + | .widget .widget-title= __('blogroll') ul: != link_to('http://example1/', 'site-name 1', {external: true}) From 091afb446c670817972bade3f4e535846eec1963 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 7 Jul 2015 12:57:13 +0800 Subject: [PATCH 011/118] =?UTF-8?q?=E5=A2=9E=E5=8A=A0Swiftype=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _config.yml | 3 ++- layout/base.jade | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index bd77372b8..d69bd47d9 100644 --- a/_config.yml +++ b/_config.yml @@ -1,3 +1,4 @@ fancybox: false duoshuo: duoshuo_shortname -disqus: disqus_shortname \ No newline at end of file +disqus: disqus_shortname +swiftype: swiftype_key \ No newline at end of file diff --git a/layout/base.jade b/layout/base.jade index 321bd789e..c10ca0317 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -46,6 +46,9 @@ html block content .pure-u-1-4: #sidebar + .widget + #search + input.st-default-search-input(placeholder='Search' type='text') .widget .widget-title= __('categories') != list_categories({show_count: false}) @@ -99,8 +102,16 @@ html (function() { var ds = document.createElement('script'); ds.type = 'text/javascript';ds.async = true; - ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//dn-comment.qbox.me/embed.js'; + ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js'; ds.charset = 'UTF-8'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds); - })(); \ No newline at end of file + })(); + + script. + (function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){ + (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t); + e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e); + })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); + + _st('install','!{theme.swiftype}','2.0.0'); \ No newline at end of file From 8a521ec81cb6facccc99e3a3778a2196cc8891a3 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 7 Jul 2015 14:35:52 +0800 Subject: [PATCH 012/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E4=BA=91=E5=B0=8F=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- languages/zh-CN.yml | 1 + layout/base.jade | 7 +++++-- source/css/style.scss | 7 +++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/languages/zh-CN.yml b/languages/zh-CN.yml index 3ac48c12c..ba5c419fa 100644 --- a/languages/zh-CN.yml +++ b/languages/zh-CN.yml @@ -2,6 +2,7 @@ reading_label: 正在查看 %s 下的文章 blog: 博客 albums: 相册 categories: 分类 +tags: 标签 archive: 归档 links: 链接 about: 关于 diff --git a/layout/base.jade b/layout/base.jade index c10ca0317..62b1ef2ca 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -47,11 +47,14 @@ html .pure-u-1-4: #sidebar .widget - #search - input.st-default-search-input(placeholder='Search' type='text') + input.st-default-search-input(placeholder='Search' type='text') .widget .widget-title= __('categories') != list_categories({show_count: false}) + .widget + .widget-title= __('tags') + .tagcloud + != tagcloud({min_font: 15, max_font: 15, amount: 100, orderby: 'count'}) .widget .widget-title= __('recent') != list_posts({amount: 10}) diff --git a/source/css/style.scss b/source/css/style.scss index f9d1316a2..e5e1be080 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -127,6 +127,13 @@ a:focus{ display: block; font-weight: normal; } + .tagcloud { + margin-top: 10px; + a { + line-height: 1.5; + padding: 5px; + } + } ul { list-style: none; padding: 0; From b2464f380e27a562a37908c40a5b68aa6b494559 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 7 Jul 2015 16:07:42 +0800 Subject: [PATCH 013/118] =?UTF-8?q?=E6=96=87=E7=AB=A0=E6=9C=AB=E5=B0=BE?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=BE=E7=A4=BA=E5=88=86=E7=B1=BB=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/post.jade | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/layout/post.jade b/layout/post.jade index 5bd4abde5..c6364712e 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -13,6 +13,10 @@ block content .tags for tag in page.tags.toArray() a(href=url_for(tag.path))= tag.name + if page.categories + .categories 分类于 + for category in page.categories.toArray() + a(href=url_for(category.path))= category.name include _partial/comments include _partial/paginator From ca94cc6be6e0e8a093a37cf4f53a9abf5be197b1 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 7 Jul 2015 21:13:16 +0800 Subject: [PATCH 014/118] =?UTF-8?q?=E6=98=BE=E7=A4=BA=E8=AF=84=E8=AE=BA?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/index.jade | 1 + layout/post.jade | 1 + source/css/style.scss | 8 ++++++++ 3 files changed, 10 insertions(+) diff --git a/layout/index.jade b/layout/index.jade index e3088dbf0..09c3b8d98 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -12,6 +12,7 @@ block content a(href=url_for(post.path)) +title(post) .post-meta= post.date.format('MMMM DD, YYYY') + span.ds-thread-count(data-thread-key=post.path) if post.description .post-content= post.description else if post.excerpt diff --git a/layout/post.jade b/layout/post.jade index c6364712e..92c6cb6ec 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -7,6 +7,7 @@ block content .post.post-page h1.post-title= page.title .post-meta= page.date.format('MMMM DD, YYYY') + span.ds-thread-count(data-thread-key=page.path) .post-content != page.content if page.tags diff --git a/source/css/style.scss b/source/css/style.scss index e5e1be080..aa096f700 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -189,6 +189,14 @@ a:focus{ display: block; text-indent: .15em; } + .ds-thread-count { + padding: 0; + margin: -15px 0; + color: #999; + text-align: right; + display: block; + text-indent: .15em; + } .post-content { font-size: 15px; line-height: 1.77; From 625a315f46e9ca4684781cd51c00afce50af0306 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 8 Jul 2015 08:05:23 +0800 Subject: [PATCH 015/118] =?UTF-8?q?=E6=98=BE=E7=A4=BA=E8=AF=84=E8=AE=BA?= =?UTF-8?q?=E6=95=B0CSS=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/css/style.scss | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index aa096f700..8fc72a322 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -183,25 +183,26 @@ a:focus{ } .post-meta { padding: 0; - margin: 9px 0 0; + margin: 12px 0 0; color: #999; - text-align: left; - display: block; + float: left; + display: inline; text-indent: .15em; } - .ds-thread-count { + .ds-thread-count { padding: 0; - margin: -15px 0; + margin: 12px 0 0; color: #999; - text-align: right; - display: block; + float: right; + display: inline; text-indent: .15em; } .post-content { + clear: both; font-size: 15px; line-height: 1.77; color: #444; - padding-top: 27px; + padding-top: 20px; overflow: hidden; h2, h3 { margin: 1.4em 0 1.1em; @@ -467,4 +468,4 @@ pre{ -webkit-transform: scale(1.4, 3.2); -moz-transform: scale(1.4, 3.2); transform: scale(1.4, 3.2); -} +} \ No newline at end of file From d4397cc9840c196f630254d03576260e35857171 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 8 Jul 2015 11:17:01 +0800 Subject: [PATCH 016/118] =?UTF-8?q?=E4=BF=AE=E5=A4=8DFancybox=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/css/jquery.fancybox.css | 12 ++++++------ source/fancybox/blank.gif | Bin 0 -> 43 bytes source/fancybox/fancybox_overlay.png | Bin 0 -> 1003 bytes source/fancybox/fancybox_sprite.png | Bin 0 -> 1362 bytes source/fancybox/fancybox_sprite@2x.png | Bin 0 -> 6553 bytes 5 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 source/fancybox/blank.gif create mode 100644 source/fancybox/fancybox_overlay.png create mode 100644 source/fancybox/fancybox_sprite.png create mode 100644 source/fancybox/fancybox_sprite@2x.png diff --git a/source/css/jquery.fancybox.css b/source/css/jquery.fancybox.css index 367890a4a..17a62065b 100644 --- a/source/css/jquery.fancybox.css +++ b/source/css/jquery.fancybox.css @@ -76,7 +76,7 @@ } #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { - background-image: url('fancybox_sprite.png'); + background-image: url('/fancybox/fancybox_sprite.png'); } #fancybox-loading { @@ -104,7 +104,7 @@ width: 36px; height: 36px; cursor: pointer; - z-index: 8040; + z-index: 9999; } .fancybox-nav { @@ -114,7 +114,7 @@ height: 100%; cursor: pointer; text-decoration: none; - background: transparent url('blank.gif'); /* helps IE */ + background: transparent url('/fancybox/blank.gif'); /* helps IE */ -webkit-tap-highlight-color: rgba(0,0,0,0); z-index: 8040; } @@ -184,7 +184,7 @@ overflow: hidden; display: none; z-index: 8010; - background: url('fancybox_overlay.png'); + background: url('/fancybox/fancybox_overlay.png'); } .fancybox-overlay-fixed { @@ -263,12 +263,12 @@ only screen and (min-device-pixel-ratio: 1.5){ #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { - background-image: url('fancybox_sprite@2x.png'); + background-image: url('/fancybox/fancybox_sprite@2x.png'); background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/ } #fancybox-loading div { - background-image: url('fancybox_loading@2x.gif'); + background-image: url('/fancybox/fancybox_loading@2x.gif'); background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/ } } \ No newline at end of file diff --git a/source/fancybox/blank.gif b/source/fancybox/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ literal 0 HcmV?d00001 diff --git a/source/fancybox/fancybox_overlay.png b/source/fancybox/fancybox_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..a4391396a9d6b6d7ff3b781f16904732fea40bdd GIT binary patch literal 1003 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 S1P^~LSQ@H2DwWEJcmD(3qHSjY literal 0 HcmV?d00001 From 9d54b45201c73964d3a89dd0672eee718cc8fb6a Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 9 Jul 2015 23:31:59 +0800 Subject: [PATCH 017/118] =?UTF-8?q?=E5=A2=9E=E5=8A=A0tinysou=E7=AB=99?= =?UTF-8?q?=E5=86=85=E6=90=9C=E7=B4=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _config.yml | 9 +++++---- layout/base.jade | 39 +++++++++++++++++++++++++++++++-------- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/_config.yml b/_config.yml index d69bd47d9..4b5330840 100644 --- a/_config.yml +++ b/_config.yml @@ -1,4 +1,5 @@ -fancybox: false -duoshuo: duoshuo_shortname -disqus: disqus_shortname -swiftype: swiftype_key \ No newline at end of file +fancybox: true +duoshuo: #duoshuo_shortname +disqus: #disqus_shortname +swiftype: #swiftype_key +tinysou: #tinysou_key \ No newline at end of file diff --git a/layout/base.jade b/layout/base.jade index 62b1ef2ca..36d8d025c 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -46,8 +46,13 @@ html block content .pure-u-1-4: #sidebar - .widget - input.st-default-search-input(placeholder='Search' type='text') + if theme.tinysou + .widget + form + input#ts-search-input(class='ts-search-input' placeholder='Search' type='text') + if theme.swiftype + .widget + input.st-default-search-input(placeholder='Search' type='text') .widget .widget-title= __('categories') != list_categories({show_count: false}) @@ -111,10 +116,28 @@ html || document.getElementsByTagName('body')[0]).appendChild(ds); })(); - script. - (function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){ - (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t); - e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e); - })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); + if theme.tinysou + script. + var option = { + engineKey: '!{theme.tinysou}' + }; + (function(w,d,t,u,n,s,e){ + s = d.createElement(t); + s.src = u; + s.async = 1; + w[n] = function(r){ + w[n].opts = r; + }; + e = d.getElementsByTagName(t)[0]; + e.parentNode.insertBefore(s, e); + })(window,document,'script','//tinysou-cdn.b0.upaiyun.com/ts.js','_ts'); + _ts(option); + + if theme.swiftype + script. + (function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){ + (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t); + e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e); + })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); - _st('install','!{theme.swiftype}','2.0.0'); \ No newline at end of file + _st('install','!{theme.swiftype}','2.0.0'); \ No newline at end of file From d9b103184d11118874ba7b3a2cd5c7bf6ed584c7 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sat, 11 Jul 2015 00:22:18 +0800 Subject: [PATCH 018/118] bug fixed --- layout/base.jade | 2 -- 1 file changed, 2 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index 36d8d025c..eca96ed88 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -37,8 +37,6 @@ html +a_with_current(config.root, __('home')) +a_with_current(config.archive_dir, __('archive')) +a_with_current(config.about_dir, __('about')) - +a_with_current(config.history_dir, __('history')) - +a_with_current(config.guestbook_dir, __('guestbook')) +a_with_current(config.feed.path, __('rss')) #layout.pure-g From ac72728c98e6a3144fdce584a9c7945878fa9cf4 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 23 Jul 2015 21:04:03 +0800 Subject: [PATCH 019/118] bug fixed --- layout/index.jade | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/layout/index.jade b/layout/index.jade index 09c3b8d98..6e296a92f 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -12,12 +12,12 @@ block content a(href=url_for(post.path)) +title(post) .post-meta= post.date.format('MMMM DD, YYYY') - span.ds-thread-count(data-thread-key=post.path) + span.ds-thread-count(data-thread-key=post.path) if post.description .post-content= post.description - else if post.excerpt - .post-content= post.excerpt - else - .post-content= post.content.replace(/<(?:.|\n)*?>/gm, '').substr(0, 300) + else if page.excerpt + .post-content= page.excerpt + else if post.content + .post-content= strip_html(post.content).replace(/^\s*/, '').replace(/\s*$/, '').substring(0, 300) include _partial/paginator From 22368779bebf1aed5eff733e32019f12be3ffb4f Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 17 Aug 2015 11:09:06 +0800 Subject: [PATCH 020/118] duoshuo bug fixed --- layout/_partial/comments.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/_partial/comments.jade b/layout/_partial/comments.jade index 2e90f63b5..afc621100 100644 --- a/layout/_partial/comments.jade +++ b/layout/_partial/comments.jade @@ -1,5 +1,5 @@ if theme.duoshuo - .ds-thread(data-thread-key=page.path, date-title=page.title, data-url=page.permalink, data-author-key='1') + .ds-thread(data-thread-key=page.path, data-title=page.title, data-url=page.permalink, data-author-key='1') if theme.disqus #disqus_thread From e4d253d8a5a76ce3d4c2c94332a69e328a5c73fa Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 11 Oct 2015 13:01:34 +0800 Subject: [PATCH 021/118] =?UTF-8?q?=E5=AE=8C=E5=96=84fancy=20box=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E5=B9=B6=E5=8F=AF=E4=BB=A5=E5=9C=A8=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=9B=BE=E7=89=87=E4=B8=8A=E7=A6=81=E7=94=A8fancybox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/base.jade | 10 +++++++++- source/css/jquery.fancybox.css | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/layout/base.jade b/layout/base.jade index eca96ed88..3d08c6985 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -95,11 +95,19 @@ html script. $(document).ready(function() { $("img").wrap(function() { + if ($(this).hasClass('nofancybox')) return; return ''}); }); script. $(document).ready(function() { - $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox(); + $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox({ + helpers : { + title: { type: 'inside'} + }, + afterLoad: function(){ + this.title = this.title + ' ' + $(this.element).find('img').attr('alt'); + } + }); }); if theme.duoshuo diff --git a/source/css/jquery.fancybox.css b/source/css/jquery.fancybox.css index 17a62065b..bee4101ef 100644 --- a/source/css/jquery.fancybox.css +++ b/source/css/jquery.fancybox.css @@ -245,6 +245,7 @@ .fancybox-title-inside-wrap { padding-top: 10px; + text-align: center; } .fancybox-title-over-wrap { From 9adcae29a359ce296cc1d4117d82e599c8e5e9be Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 11 Oct 2015 16:37:57 +0800 Subject: [PATCH 022/118] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dapple-touch-icon?= =?UTF-8?q?=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 24 +++++++++++++----------- layout/base.jade | 4 ++-- source/img/apple.png | Bin 1621 -> 0 bytes 3 files changed, 15 insertions(+), 13 deletions(-) delete mode 100644 source/img/apple.png diff --git a/README.md b/README.md index 8a5901571..6b7364a87 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ -maupassant +Maupassant ========== -A simple Hexo template with great performance on different devices. +A simple Hexo template with great performance on different devices, ported from a Typecho theme by [Cho](https://github.com/pagecho), forked and modified from [icylogic](https://github.com/icylogic/maupassant-hexo/). ![template preview](https://ddydeg.by3302.livefilestore.com/y2p1ZgHER4eIFaEHhwaf96MvZH4_iLufEIDj7o8acDgI1GXFDtPI-eRAgvokFoR9irbz738gMmWc_N7yexG6uhB1Dcmelb0cXg8HexpiAdZ5HQ/m.png "Maupassant template preview") ## Install -- install renderers +- install theme and renderers ``` -git clone https://github.com/icylogic/maupassant-hexo.git themes/maupassant +git clone https://github.com/tufu9441/maupassant-hexo.git themes/maupassant npm install hexo-renderer-sass --save npm install hexo-renderer-jade --save ``` @@ -21,24 +21,26 @@ npm install hexo-renderer-jade --save - Check if your terminal's current directory is hexo's root directory which contains `source/`, `themes/`, etc. -- Feel free to open an [issue](https://github.com/icylogic/maupassant-hexo/issues/new) + +- Feel free to open an [issue](https://github.com/icylogic/maupassant-hexo/issues/new). ## Usage -You can set your friendly links in `/maupassant/layout/base.jade`. +- You can set your friendly links in `/themes/maupassant/layout/base.jade`. -You can add an **favicon.ico** for your website, please put it into the blog folder `/source`, recommended size: 32px*32px. +- You can add a **favicon.ico** for your website, please put it into `/source` folder of hexo directory, recommended size: 32px*32px. -You can add an website logo for apple devices, please put an image named **apple.jpg** into the theme folder `/maupassant/source/img`, recommended size: 114px*114px +- You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `/source` folder of hexo directory, recommended size: 114px*114px. -If you want to use the code highlight style of *monokai_sublime*, please set the `highlight/enable` in `blog/_config.yml` to "false". +- If you want to use the code highlight style of ***monokai_sublime***, please set the `highlight/enable` in `/_config.yml` to `false`. +- If you want to disable the fancybox effect on some images, please add a "nofancybox" class to them. -## Maupassant on different platform: +## Maupassant on other platforms: + Typecho:https://github.com/pagecho/maupassant/ + Octopress:https://github.com/pagecho/mewpassant/ + Farbox:https://github.com/pagecho/Maupassant-farbox/ + Wordpress:https://github.com/iMuFeng/maupassant/ -+ Hexo: https://github.com/icylogic/maupassant-hexo/ ++ Ghost: https://github.com/LjxPrime/maupassant/ diff --git a/layout/base.jade b/layout/base.jade index 3d08c6985..f287ac06f 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -22,8 +22,8 @@ html link(rel='stylesheet', type='text/css', href='/css/highlight.css') link(rel='stylesheet', type='text/css', href='/css/style.css') link(rel='Shortcut Icon', type='image/x-icon',href='/favicon.ico') - link(rel='apple-touch-icon', href='/img/apple.png') - link(rel='apple-touch-icon-precomposed', href='/img/apple.png') + link(rel='apple-touch-icon', href='/apple-touch-icon.png') + link(rel='apple-touch-icon-precomposed', href='/apple-touch-icon.png') link(rel='alternate', type='application/atom+xml', href='/atom.xml') diff --git a/source/img/apple.png b/source/img/apple.png deleted file mode 100644 index cff5e357e7183f35e09dd06293d6caa5d696e717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1621 zcmah|4Nw$i7+yQQP&~Dq3V)`S1yQ2A{ee5Ujgx@AlM{~cI7b*uU3NcU<8F7|Tf74X zMJ9F9G&mD*9AYrjkt}o8A3>_IaN7 z{obE9iV7E)Ce56LAc)DG$9Una=x>YxevcTcUxw2R)mfqzOXX^aRREIBOJx9c2iOYW z1uS2)QUjR?Vz?&wO4Jfh0nJGP3#(%+;eZU;2$GoRhh=|P$*;xrCKDV0w?WuyRJb|W{5BcYeba|o5f(lr~(6moFd4oAc?51 z$d*afssn?bj$9!iM`gv}{V>6R;bB(BNeiK0X&A_JQJh?@_=k=291i>-07Nwiv1Akr zqvY{K;bY1M0#S5O^@0a?8xtM$)yM$%f}m8ba4^Z`3A$S{ovQ#=l@y;O`9~vOR4J)a zuu_uI++rI#&%<(ps2?Oh!~hJd0tW`;Z#5HEGfDVJ7<`H*?I}bCO%NkckHib*HUEJ^ z1eHOPssDn)p^@`RrMKeGVRsr6n zNC9*>8?-QnFLu&J5w3I>)PrLzUq-n67`}{fGl)lWap(-L*XKj^I(h_~Kwn0?4{oCU z3q;to3hd75=GJqtvyDXsKBviKg3IZK!}V}_O!XEP-$Sl^L@Y#*as6&4+ZXN|JfB}? zh@WgIy7qVLuU#F7IDf2N&2HIzY0iw_;@TSfV;lOs#?GBh_R=p~=I%XfJpcUUWv5?X zJL`6f+&JOX;FVn$mTvugeB9Q%%i`81<5P|wzkYPei4XqxHs+@r-pY-}w!81$Ha*!t z+vr$+@QDllXI_2hn-f)Uo!zs%D>U)#nmeZ!t!c|%IKQLbeR<|<8y8>wZYtGrtvlh* z=2zbBE}n-j>6)~DFM4uUx4q2iYOPOA_B3xwN*y?$jW69d#m|3=3QfO&X|wr;Gi8g1 z#_c!SH2LthMrP>4V_9o%G@slaEN$;$o?gGZqk!uD;jSFfp4ybZ(>#=d_Qtkhb=7B+ zCU&MB9hh?>??+_2xnx1!Z1m=fi#FcUoR;>4p3hPeozxMsH!{sFHuax5Uia0-#iy3$ zJ&VpT_BLm}M9tfhq+S1Bo8@LNt=8frkHbItb(Y`v?>6wt)b{wAhQStQcc90RIJIfB zBj)nz!O5B-af3FnBHX|$tA)8Yr-#yyW}e%D9_(SVO6zLBaJOtJs85`==a9v_X4TJ; z)=viJ;PwSW7b9w9U(>Bfulr+7ZU1^)B;~+qQ*!6F;+3&l!vLzyJ#c=4_26yaj&*;P mHsF From 6d9cf2eff5c7ad6b0464661e0678affc749d6c32 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 12 Oct 2015 21:14:37 +0800 Subject: [PATCH 023/118] =?UTF-8?q?=E6=9B=B4=E6=96=B0README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6b7364a87..cef593b60 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ npm install hexo-renderer-jade --save - Check if your terminal's current directory is hexo's root directory which contains `source/`, `themes/`, etc. -- Feel free to open an [issue](https://github.com/icylogic/maupassant-hexo/issues/new). +- Feel free to open an [issue](https://github.com/tufu9441/maupassant-hexo/issues/new). ## Usage From 2b10b96d2f1563c104433e27fdd319ac6fbaf062 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 15 Oct 2015 09:11:13 +0800 Subject: [PATCH 024/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Read=20More=E6=8C=89?= =?UTF-8?q?=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/index.jade | 4 +++- source/css/style.scss | 26 ++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/layout/index.jade b/layout/index.jade index 6e296a92f..02e3c146d 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -4,7 +4,7 @@ extends base block title title= config.title + " | " + config.subtitle block content - + for post in page.posts.toArray() .post h2.post-title @@ -19,5 +19,7 @@ block content .post-content= page.excerpt else if post.content .post-content= strip_html(post.content).replace(/^\s*/, '').replace(/\s*$/, '').substring(0, 300) + p(class="readmore") + a(href=url_for(post.path)) 阅读全文 include _partial/paginator diff --git a/source/css/style.scss b/source/css/style.scss index 8fc72a322..34aa61d52 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -189,7 +189,7 @@ a:focus{ display: inline; text-indent: .15em; } - .ds-thread-count { + .ds-thread-count { padding: 0; margin: 12px 0 0; color: #999; @@ -412,8 +412,7 @@ pre{ display: none; } - - +/* back-to-top rocket*/ #rocket { position: fixed; right: 50px; @@ -468,4 +467,23 @@ pre{ -webkit-transform: scale(1.4, 3.2); -moz-transform: scale(1.4, 3.2); transform: scale(1.4, 3.2); -} \ No newline at end of file +} + +/* Read More*/ +.readmore a { + font-size: 12px; + color: #999; + margin-top: -10px; + margin-bottom: -10px; + padding-top: 2px; + padding-bottom: 2px; + padding-left: 10px; + padding-right: 10px; + border: 1px solid #999; + border-radius: 7px; + float: right; + &:hover { + color: #444; + border-color: #444; + } +} From bb5c6df61be169060db58ab0f0e1c91bfeb4205a Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 15 Oct 2015 10:34:42 +0800 Subject: [PATCH 025/118] optimized --- source/css/style.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/css/style.scss b/source/css/style.scss index 34aa61d52..8237cfb42 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -471,7 +471,7 @@ pre{ /* Read More*/ .readmore a { - font-size: 12px; + font-size: 13px; color: #999; margin-top: -10px; margin-bottom: -10px; From 054da54e1986932d8e17ad2511ff032c4057b9e0 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 15 Oct 2015 10:43:06 +0800 Subject: [PATCH 026/118] README updated --- README.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cef593b60..3e699d020 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ A simple Hexo template with great performance on different devices, ported from ![template preview](https://ddydeg.by3302.livefilestore.com/y2p1ZgHER4eIFaEHhwaf96MvZH4_iLufEIDj7o8acDgI1GXFDtPI-eRAgvokFoR9irbz738gMmWc_N7yexG6uhB1Dcmelb0cXg8HexpiAdZ5HQ/m.png "Maupassant template preview") -## Install +## Installation -- install theme and renderers +- Install theme and renderers ``` git clone https://github.com/tufu9441/maupassant-hexo.git themes/maupassant @@ -20,7 +20,7 @@ npm install hexo-renderer-jade --save ## Probable solutions -- Check if your terminal's current directory is hexo's root directory which contains `source/`, `themes/`, etc. +- Check if your Terminal's current directory is in hexo's root directory which contains `source/`, `themes/`, etc. - Feel free to open an [issue](https://github.com/tufu9441/maupassant-hexo/issues/new). @@ -29,11 +29,18 @@ npm install hexo-renderer-jade --save - You can set your friendly links in `/themes/maupassant/layout/base.jade`. -- You can add a **favicon.ico** for your website, please put it into `/source` folder of hexo directory, recommended size: 32px*32px. +- You can set a **favicon.ico** for your website, please put it into `/source` folder of hexo directory, recommended size: 32px*32px. - You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `/source` folder of hexo directory, recommended size: 114px*114px. -- If you want to use the code highlight style of ***monokai_sublime***, please set the `highlight/enable` in `/_config.yml` to `false`. +- If you want to use the code highlight style of ***monokai_sublime***, please set the `highlight` option in `/_config.yml` of hexo directory like this: + +``` +highlight: + enable: false + line_number: false + tab_replace: +``` - If you want to disable the fancybox effect on some images, please add a "nofancybox" class to them. From d211f62521956cc2af8c4cc77fd528f00638bbc2 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Fri, 16 Oct 2015 11:26:48 +0800 Subject: [PATCH 027/118] README updated --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3e699d020..ca62354d9 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ npm install hexo-renderer-jade --save - You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `/source` folder of hexo directory, recommended size: 114px*114px. -- If you want to use the code highlight style of ***monokai_sublime***, please set the `highlight` option in `/_config.yml` of hexo directory like this: +- If you want to use the theme's own highlighted code showcase, please set the `highlight` option in `/_config.yml` of hexo directory like this: ``` highlight: From 414e285f7d24f41c92e04b09107e32418c5c4e2c Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Fri, 16 Oct 2015 13:46:42 +0800 Subject: [PATCH 028/118] css optimized --- source/css/style.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/css/style.scss b/source/css/style.scss index 8237cfb42..7bd876fdc 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -103,7 +103,7 @@ a:focus{ #sidebar { border-left: 1px solid #ddd; padding-left: 35px; - margin-top: 45px; + margin-top: 40px; padding-bottom: 20px; word-wrap: break-word; From c969fe00aff480daa810a263e8fcaf49e4a4e7ae Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Fri, 16 Oct 2015 17:22:14 +0800 Subject: [PATCH 029/118] README updated --- README.md | 42 +++++++++++++++++++++++++++++++++++++----- layout/base.jade | 20 ++++++++++---------- 2 files changed, 47 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index ca62354d9..2286fadf0 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A simple Hexo template with great performance on different devices, ported from ## Installation -- Install theme and renderers +- Install theme and renderers: ``` git clone https://github.com/tufu9441/maupassant-hexo.git themes/maupassant @@ -15,7 +15,7 @@ npm install hexo-renderer-sass --save npm install hexo-renderer-jade --save ``` -- Edit _config.yml in hexo root, change `theme` to `maupassant` +- Edit `_config.yml` in hexo root, change `theme` to `maupassant`. ## Probable solutions @@ -27,12 +27,20 @@ npm install hexo-renderer-jade --save ## Usage -- You can set your friendly links in `/themes/maupassant/layout/base.jade`. - - You can set a **favicon.ico** for your website, please put it into `/source` folder of hexo directory, recommended size: 32px*32px. - You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `/source` folder of hexo directory, recommended size: 114px*114px. +- You can set your friendly links in `/themes/maupassant/layout/base.jade` like this: + +``` + .widget + .widget-title= __('blogroll') + ul: != link_to('http://example1.com/', 'site-name 1', {external: true}) + ul: != link_to('http://example2.com/', 'site-name 2', {external: true}) + ul: != link_to('http://example3.com/', 'site-name 3', {external: true}) +``` + - If you want to use the theme's own highlighted code showcase, please set the `highlight` option in `/_config.yml` of hexo directory like this: ``` @@ -42,7 +50,31 @@ highlight: tab_replace: ``` -- If you want to disable the fancybox effect on some images, please add a "nofancybox" class to them. +- To customize pages, after creating new folders including `index.md` in `/source`, don't forget to add corresponding contents in `/themes/maupassant/layout/base.jade`: + +``` +#nav-menu + +a_with_current(config.root, __('home')) + +a_with_current(config.archive_dir, __('archive')) + +a_with_current(config.about_dir, __('about')) + +a_with_current(config.feed.path, __('rss')) +``` + +and `/_config.yml` of hexo directory. Just follow the format of existing items. + +``` + # Directory + source_dir: source + public_dir: public + tag_dir: tags + category_dir: categories + archive_dir: archives/ + about_dir: about/ + code_dir: downloads/code + i18n_dir: :lang + skip_render: +``` +- If you want to disable the fancybox effect on certain images, please add a "nofancybox" class to them. ## Maupassant on other platforms: diff --git a/layout/base.jade b/layout/base.jade index f287ac06f..7be2e8e3d 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -27,7 +27,7 @@ html link(rel='alternate', type='application/atom+xml', href='/atom.xml') - body: .body_container + body: .body_container #header .site-name h1.hidden= current_title @@ -35,7 +35,7 @@ html p.description= config.subtitle #nav-menu +a_with_current(config.root, __('home')) - +a_with_current(config.archive_dir, __('archive')) + +a_with_current(config.archive_dir, __('archive')) +a_with_current(config.about_dir, __('about')) +a_with_current(config.feed.path, __('rss')) @@ -71,21 +71,21 @@ html | .widget .widget-title= __('blogroll') - ul: != link_to('http://example1/', 'site-name 1', {external: true}) + ul: != link_to('http://example1.com/', 'site-name 1', {external: true}) ul: != link_to('http://example2.com/', 'site-name 2', {external: true}) ul: != link_to('http://example3.com/', 'site-name 3', {external: true}) - + != js(['/js/highlight.pack.js']) script. hljs.initHighlightingOnLoad(); #footer= '© ' a(href='/', real="nofollow")= config.title + '. ' - | Powered by - a(rel="nofollow", target="_blank", href="https://hexo.io") Hexo. - | Theme by + | Powered by + a(rel="nofollow", target="_blank", href="https://hexo.io") Hexo. + | Theme by a(rel="nofollow", target="_blank", href="https://chopstack.com") Cho - + != js(['/js/jquery.min.js', '/js/totop.js']) @@ -118,7 +118,7 @@ html ds.type = 'text/javascript';ds.async = true; ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js'; ds.charset = 'UTF-8'; - (document.getElementsByTagName('head')[0] + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds); })(); @@ -146,4 +146,4 @@ html e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e); })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); - _st('install','!{theme.swiftype}','2.0.0'); \ No newline at end of file + _st('install','!{theme.swiftype}','2.0.0'); From 295d2918ace5c1df237e5c2b44156d0ccc1a783f Mon Sep 17 00:00:00 2001 From: WeiYuan Date: Fri, 23 Oct 2015 15:53:45 +0800 Subject: [PATCH 030/118] fix languages/en.yml html tags --- languages/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages/en.yml b/languages/en.yml index 1147bbf26..8dea332e7 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -1,4 +1,4 @@ -reading_label: currently reading articles under %s +reading_label: currently reading articles under %s blog: Blog albums: Albums categories: Categories From b8ae66bdbd2ebd5fe97838d759554195479e83ab Mon Sep 17 00:00:00 2001 From: WeiYuan Date: Fri, 23 Oct 2015 15:54:33 +0800 Subject: [PATCH 031/118] fix layout/post.jade condition --- layout/post.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/post.jade b/layout/post.jade index 92c6cb6ec..a2156b3ad 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -14,7 +14,7 @@ block content .tags for tag in page.tags.toArray() a(href=url_for(tag.path))= tag.name - if page.categories + if page.categories.length > 0 .categories 分类于 for category in page.categories.toArray() a(href=url_for(category.path))= category.name From b67c07b559df845a22b54606a346369148f58d82 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Fri, 23 Oct 2015 17:40:00 +0800 Subject: [PATCH 032/118] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=8B=B1=E6=96=87?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- languages/en.yml | 15 ++++++++++++--- languages/zh-CN.yml | 4 +++- layout/archive.jade | 4 ++-- layout/index.jade | 2 +- layout/post.jade | 2 +- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/languages/en.yml b/languages/en.yml index 8dea332e7..e0f282aae 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -1,11 +1,20 @@ -reading_label: currently reading articles under %s +reading_label: Reading articles in %s blog: Blog albums: Albums categories: Categories +tags: Tags archive: Archive links: Links about: About recent: Recent -previous: Previous next: Next -no-title: No Title +previous: Previous +notitle: No Title +blogroll: Blogroll +history: History +rss: RSS +guestbook: Guestbook +home: Home +recent_comments: Recent Comments +Readmore: Read More +belongsto: Categorized in diff --git a/languages/zh-CN.yml b/languages/zh-CN.yml index ba5c419fa..54e205404 100644 --- a/languages/zh-CN.yml +++ b/languages/zh-CN.yml @@ -9,10 +9,12 @@ about: 关于 recent: 最新文章 next: 下一页 previous: 上一页 -no-title: 无题 +notitle: 无题 blogroll: 友情链接 history: 历史 rss: 订阅 guestbook: 留言 home: 首页 recent_comments: 最近评论 +Readmore: 阅读更多 +belongsto: 分类于 diff --git a/layout/archive.jade b/layout/archive.jade index d292cfe5e..1dd2ac07a 100644 --- a/layout/archive.jade +++ b/layout/archive.jade @@ -6,7 +6,7 @@ block title if page.tag title= page.tag + " | " + config.title if page.archive - title= "归档" + " | " + config.title + title= __('archive') + " | " + config.title block content if page.category || page.tag h1.label-title= __('reading_label', page.category || page.tag) @@ -21,4 +21,4 @@ block content span.date= post.date.format('YYYY/MM/DD') a(href=url_for(post.path), title=post.title) +title(post) - include _partial/paginator.jade \ No newline at end of file + include _partial/paginator.jade diff --git a/layout/index.jade b/layout/index.jade index 02e3c146d..8d25abbe8 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -20,6 +20,6 @@ block content else if post.content .post-content= strip_html(post.content).replace(/^\s*/, '').replace(/\s*$/, '').substring(0, 300) p(class="readmore") - a(href=url_for(post.path)) 阅读全文 + a(href=url_for(post.path))= __('Readmore') include _partial/paginator diff --git a/layout/post.jade b/layout/post.jade index a2156b3ad..b56b38b75 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -15,7 +15,7 @@ block content for tag in page.tags.toArray() a(href=url_for(tag.path))= tag.name if page.categories.length > 0 - .categories 分类于 + .categories= __('belongsto') for category in page.categories.toArray() a(href=url_for(category.path))= category.name From c84d1a3fae8b24dd8b70b4408d0138e536b6d4e5 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sat, 24 Oct 2015 14:34:15 +0800 Subject: [PATCH 033/118] README updated --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2286fadf0..340f77ae9 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,8 @@ and `/_config.yml` of hexo directory. Just follow the format of existing items. ``` - If you want to disable the fancybox effect on certain images, please add a "nofancybox" class to them. +- Two languages are available for this theme currently, English (en) and Chinese (zh-CN). Translation works to other languages are welcome. + ## Maupassant on other platforms: + Typecho:https://github.com/pagecho/maupassant/ From 4f811100657fa4ac5001fd7eeeb5a2418b633451 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sat, 24 Oct 2015 18:24:16 +0800 Subject: [PATCH 034/118] Update preview image --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 340f77ae9..70a01b328 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,8 @@ Maupassant A simple Hexo template with great performance on different devices, ported from a Typecho theme by [Cho](https://github.com/pagecho), forked and modified from [icylogic](https://github.com/icylogic/maupassant-hexo/). -![template preview](https://ddydeg.by3302.livefilestore.com/y2p1ZgHER4eIFaEHhwaf96MvZH4_iLufEIDj7o8acDgI1GXFDtPI-eRAgvokFoR9irbz738gMmWc_N7yexG6uhB1Dcmelb0cXg8HexpiAdZ5HQ/m.png "Maupassant template preview") +![template preview](http://ooo.0o0.ooo/2015/10/24/562b5be12177e.jpg + "Maupassant template preview") ## Installation From 7f1eb11b2564085875ee0ce1f9c0fca011d5d3b2 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 25 Oct 2015 13:44:10 +0800 Subject: [PATCH 035/118] Footer information updated --- layout/base.jade | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index 7be2e8e3d..ce8725686 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -80,11 +80,12 @@ html hljs.initHighlightingOnLoad(); #footer= '© ' - a(href='/', real="nofollow")= config.title + '. ' - | Powered by - a(rel="nofollow", target="_blank", href="https://hexo.io") Hexo. - | Theme by - a(rel="nofollow", target="_blank", href="https://chopstack.com") Cho + a(href='/', real="nofollow")= config.title + '.' + | Powered by + a(rel="nofollow", target="_blank", href="https://hexo.io") Hexo. + a(rel="nofollow", target="_blank", href="https://github.com/tufu9441/maupassant-hexo") Theme + | by + a(rel="nofollow", target="_blank", href="https://github.com/pagecho") Cho. != js(['/js/jquery.min.js', '/js/totop.js']) From 90c475a80fda816ee2507fc5d88130e23b0464e1 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 25 Oct 2015 15:37:38 +0800 Subject: [PATCH 036/118] =?UTF-8?q?=E6=96=87=E7=AB=A0=E5=90=8E=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=A4=9A=E8=AF=B4=E5=88=86=E4=BA=AB=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/base.jade | 10 +++++----- layout/post.jade | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index ce8725686..2c8c1ad96 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -80,12 +80,12 @@ html hljs.initHighlightingOnLoad(); #footer= '© ' - a(href='/', real="nofollow")= config.title + '.' + a(href='/', rel='nofollow')= config.title + '.' | Powered by - a(rel="nofollow", target="_blank", href="https://hexo.io") Hexo. - a(rel="nofollow", target="_blank", href="https://github.com/tufu9441/maupassant-hexo") Theme + a(rel='nofollow', target='_blank', href='https://hexo.io') Hexo. + a(rel='nofollow', target='_blank', href='https://github.com/tufu9441/maupassant-hexo') Theme | by - a(rel="nofollow", target="_blank", href="https://github.com/pagecho") Cho. + a(rel='nofollow', target='_blank', href='https://github.com/pagecho') Cho. != js(['/js/jquery.min.js', '/js/totop.js']) @@ -113,7 +113,7 @@ html if theme.duoshuo script. - var duoshuoQuery = {short_name:"!{theme.duoshuo}"}; + var duoshuoQuery = {short_name:'!{theme.duoshuo}'}; (function() { var ds = document.createElement('script'); ds.type = 'text/javascript';ds.async = true; diff --git a/layout/post.jade b/layout/post.jade index b56b38b75..5914234f2 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -18,6 +18,20 @@ block content .categories= __('belongsto') for category in page.categories.toArray() a(href=url_for(category.path))= category.name - + br + div(class='ds-share flat' data-thread-key=page.path, data-title=page.title, data-url=page.permalink) + .ds-share-inline + ul.ds-share-icons-16 + li(data-toggle='ds-share-icons-more') + a(class='ds-more' href='javascript:void(0);') 分享到: + li + a(class='ds-weibo' href='javascript:void(0);' data-service='weibo') 微博 + li + a(class='ds-qzone' href='javascript:void(0);' data-service='qzone') QQ空间 + li + a(class='ds-qqt' href='javascript:void(0);' data-service='qqt') 腾讯微博 + li + a(class='ds-wechat' href='javascript:void(0);' data-service='wechat') 微信 + .ds-share-icons-more include _partial/comments include _partial/paginator From 95ac23af54a37605c0e9e7b9b3a2c8ffa70dce28 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 25 Oct 2015 16:19:43 +0800 Subject: [PATCH 037/118] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=9A=E8=AF=B4?= =?UTF-8?q?=E8=AF=84=E8=AE=BA=E6=A1=86=E6=A0=B7=E5=BC=8F=EF=BC=8C=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/index.jade | 2 +- layout/post.jade | 2 +- source/css/style.scss | 153 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 155 insertions(+), 2 deletions(-) diff --git a/layout/index.jade b/layout/index.jade index 8d25abbe8..930cf7b2c 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -11,7 +11,7 @@ block content include _partial/helpers a(href=url_for(post.path)) +title(post) - .post-meta= post.date.format('MMMM DD, YYYY') + .post-meta= post.date.format(config.date_format) span.ds-thread-count(data-thread-key=post.path) if post.description .post-content= post.description diff --git a/layout/post.jade b/layout/post.jade index 5914234f2..02ebec446 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -6,7 +6,7 @@ block title block content .post.post-page h1.post-title= page.title - .post-meta= page.date.format('MMMM DD, YYYY') + .post-meta= page.date.format(config.date_format) span.ds-thread-count(data-thread-key=page.path) .post-content != page.content diff --git a/source/css/style.scss b/source/css/style.scss index 7bd876fdc..9482dbb82 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -487,3 +487,156 @@ pre{ border-color: #444; } } + +/* Duoshuo Style*/ +#ds-thread #ds-reset { + color: #555; + } + + #ds-thread #ds-reset .ds-replybox { + margin-bottom: 30px; + } + + #ds-thread #ds-reset .ds-replybox .ds-avatar, #ds-reset .ds-avatar img { + box-shadow: none; + } + + #ds-thread #ds-reset .ds-textarea-wrapper { + border-color: #c7d4e1; + background: none; + border-top-right-radius: 3px; + border-top-left-radius: 3px; + } + + + #ds-thread #ds-reset .ds-textarea-wrapper textarea { + height: 60px; + } + + #ds-reset .ds-rounded-top { + border-radius: 0; + } + + #ds-thread #ds-reset .ds-post-toolbar { + box-sizing: border-box; + border: 1px solid #c7d4e1; + background: #fafafa; + } + + #ds-thread #ds-reset .ds-post-options { + height: 40px; + border: none; + background: none; + } + + #ds-thread #ds-reset .ds-toolbar-buttons { + top: 11px; + } + + #ds-thread #ds-reset .ds-sync { + top: 5px; + } + + #ds-thread #ds-reset .ds-post-button { + top: 4px; + right: 5px; + width: 90px; + height: 30px; + border: 1px solid #c5ced7; + border-radius: 3px; + background-image: linear-gradient(#fbfbfc, #f5f7f9); + color: #60676d; + } + + #ds-thread #ds-reset .ds-post-button:hover { + background-position: 0 -30px; + color: #60676d; + } + + #ds-thread #ds-reset .ds-comments-info { + padding: 10px 0; + } + + #ds-thread #ds-reset .ds-sort { + display: none; + } + + #ds-thread #ds-reset li.ds-tab a.ds-current { + border: none; + background: #fafafa; + color: #60676d; + + &:hover { + background-color: #e9f0f7; + color: #60676d; + } + } + + #ds-thread #ds-reset li.ds-tab a { + border-radius: 2px; + padding: 5px; + } + + #ds-thread #ds-reset .ds-login-buttons p { + color: #999; + line-height: 36px; + } + + #ds-thread #ds-reset .ds-login-buttons .ds-service-list li { + height: 28px; + } + + #ds-thread #ds-reset .ds-service-list a { + background: none; + padding: 5px; + border: 1px solid; + border-radius: 3px; + text-align: center; + + &:hover { + color: #fff; + background: #666; + } + } + + #ds-thread #ds-reset .ds-service-list .ds-weibo { + color: #fc9b00; + border-color: #fc9b00; + + &:hover { + background: #fc9b00; + } + } + + #ds-thread #ds-reset .ds-service-list .ds-qq { + color: #60a3ec; + border-color: #60a3ec; + + &:hover { + background: #60a3ec; + } + } + + #ds-thread #ds-reset .ds-service-list .ds-renren { + color: #2e7ac4; + border-color: #2e7ac4; + + &:hover { + background: #2e7ac4; + } + } + + #ds-thread #ds-reset .ds-service-list .ds-douban { + color: #37994c; + border-color: #37994c; + + &:hover { + background: #37994c; + } + } + #ds-thread #ds-reset .ds-service-list .ds-more-services { + border: none; + &:hover { + background: none; + } + } From 8b681c9297cb11c5b439a79b51ecbf032cdbd9d2 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 25 Oct 2015 17:02:35 +0800 Subject: [PATCH 038/118] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E7=AB=A0?= =?UTF-8?q?=E4=B8=AD=E5=88=86=E7=B1=BB=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/post.jade | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/layout/post.jade b/layout/post.jade index 02ebec446..1bf235d2d 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -6,7 +6,11 @@ block title block content .post.post-page h1.post-title= page.title - .post-meta= page.date.format(config.date_format) + .post-meta= page.date.format(config.date_format) + " | " + if page.categories.length > 0 + span.categories= __('belongsto') + for category in page.categories.toArray() + a(href=url_for(category.path))= category.name span.ds-thread-count(data-thread-key=page.path) .post-content != page.content @@ -14,11 +18,6 @@ block content .tags for tag in page.tags.toArray() a(href=url_for(tag.path))= tag.name - if page.categories.length > 0 - .categories= __('belongsto') - for category in page.categories.toArray() - a(href=url_for(category.path))= category.name - br div(class='ds-share flat' data-thread-key=page.path, data-title=page.title, data-url=page.permalink) .ds-share-inline ul.ds-share-icons-16 From 9dab4613f1dbf4dffd9d163ddb56783469cb93e2 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 26 Oct 2015 13:09:46 +0800 Subject: [PATCH 039/118] A bug fixed and README updated --- README.md | 62 +++++++++++++++++++++++++++++++----------------- layout/post.jade | 29 +++++++++++----------- 2 files changed, 55 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 70a01b328..a12b95d0e 100644 --- a/README.md +++ b/README.md @@ -18,21 +18,15 @@ npm install hexo-renderer-jade --save - Edit `_config.yml` in hexo root, change `theme` to `maupassant`. -## Probable solutions - - -- Check if your Terminal's current directory is in hexo's root directory which contains `source/`, `themes/`, etc. - -- Feel free to open an [issue](https://github.com/tufu9441/maupassant-hexo/issues/new). - - -## Usage +## Configuration +#### Logo - You can set a **favicon.ico** for your website, please put it into `/source` folder of hexo directory, recommended size: 32px*32px. - You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `/source` folder of hexo directory, recommended size: 114px*114px. -- You can set your friendly links in `/themes/maupassant/layout/base.jade` like this: +#### Blogroll +- You can manage your friendly links in `/themes/maupassant/layout/base.jade` like this: ``` .widget @@ -42,15 +36,7 @@ npm install hexo-renderer-jade --save ul: != link_to('http://example3.com/', 'site-name 3', {external: true}) ``` -- If you want to use the theme's own highlighted code showcase, please set the `highlight` option in `/_config.yml` of hexo directory like this: - -``` -highlight: - enable: false - line_number: false - tab_replace: -``` - +#### Pages - To customize pages, after creating new folders including `index.md` in `/source`, don't forget to add corresponding contents in `/themes/maupassant/layout/base.jade`: ``` @@ -61,7 +47,7 @@ highlight: +a_with_current(config.feed.path, __('rss')) ``` -and `/_config.yml` of hexo directory. Just follow the format of existing items. +and `_config.yml` of hexo directory. Just follow the format of existing items. ``` # Directory @@ -75,9 +61,41 @@ and `/_config.yml` of hexo directory. Just follow the format of existing items. i18n_dir: :lang skip_render: ``` + +#### Abstract +- You can control the abstract of a post shown at index, by either filling a `description` item in `front-matter` of the `post.md`, or just inserting a `` before your hidden content. + +#### Syntax Highlighting +- If you want to use the theme's own highlighted code showcase, please set the `highlight` option in `_config.yml` of hexo directory like this: + +``` +highlight: + enable: false + line_number: false + tab_replace: +``` + +#### Fancybox +- Fancybox can be enabled by setting the fancybox option in theme `_config.yml` to "true". + +``` +fancybox: true +duoshuo: #duoshuo_shortname +disqus: #disqus_shortname +swiftype: #swiftype_key +tinysou: #tinysou_key +``` + - If you want to disable the fancybox effect on certain images, please add a "nofancybox" class to them. -- Two languages are available for this theme currently, English (en) and Chinese (zh-CN). Translation works to other languages are welcome. +#### Languages +- Two languages are available for this theme currently, English (en) and Simplified Chinese (zh-CN). Contributions of translating to other languages will be highly appreciated. + +## Solutions + +- Check whether your Terminal's current directory is in hexo's root directory which contains `source/`, `themes/`, etc. + +- If you have any trouble in using this theme, please feel free to open an [issue](https://github.com/tufu9441/maupassant-hexo/issues). ## Maupassant on other platforms: @@ -85,4 +103,4 @@ and `/_config.yml` of hexo directory. Just follow the format of existing items. + Octopress:https://github.com/pagecho/mewpassant/ + Farbox:https://github.com/pagecho/Maupassant-farbox/ + Wordpress:https://github.com/iMuFeng/maupassant/ -+ Ghost: https://github.com/LjxPrime/maupassant/ ++ Ghost: https://github.com/LjxPrime/maupassant/ \ No newline at end of file diff --git a/layout/post.jade b/layout/post.jade index 1bf235d2d..fd688d42f 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -18,19 +18,20 @@ block content .tags for tag in page.tags.toArray() a(href=url_for(tag.path))= tag.name - div(class='ds-share flat' data-thread-key=page.path, data-title=page.title, data-url=page.permalink) - .ds-share-inline - ul.ds-share-icons-16 - li(data-toggle='ds-share-icons-more') - a(class='ds-more' href='javascript:void(0);') 分享到: - li - a(class='ds-weibo' href='javascript:void(0);' data-service='weibo') 微博 - li - a(class='ds-qzone' href='javascript:void(0);' data-service='qzone') QQ空间 - li - a(class='ds-qqt' href='javascript:void(0);' data-service='qqt') 腾讯微博 - li - a(class='ds-wechat' href='javascript:void(0);' data-service='wechat') 微信 - .ds-share-icons-more + if theme.duoshuo + div(class='ds-share flat' data-thread-key=page.path, data-title=page.title, data-url=page.permalink) + .ds-share-inline + ul.ds-share-icons-16 + li(data-toggle='ds-share-icons-more') + a(class='ds-more' href='javascript:void(0);') 分享到: + li + a(class='ds-weibo' href='javascript:void(0);' data-service='weibo') 微博 + li + a(class='ds-qzone' href='javascript:void(0);' data-service='qzone') QQ空间 + li + a(class='ds-qqt' href='javascript:void(0);' data-service='qqt') 腾讯微博 + li + a(class='ds-wechat' href='javascript:void(0);' data-service='wechat') 微信 + .ds-share-icons-more include _partial/comments include _partial/paginator From 0b3761c80dea3c3d8d8cbb18e6a67464d37bd8ec Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 26 Oct 2015 15:48:41 +0800 Subject: [PATCH 040/118] =?UTF-8?q?=E6=95=B4=E5=90=88highlight=20css?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=94=A8hexo=E8=87=AA=E5=B8=A6=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E9=AB=98=E4=BA=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +- layout/base.jade | 5 -- source/css/highlight.css | 154 -------------------------------- source/css/style.scss | 170 ++++++++++++++++++++++++++++++++++++ source/js/highlight.pack.js | 1 - 5 files changed, 174 insertions(+), 163 deletions(-) delete mode 100644 source/css/highlight.css delete mode 100644 source/js/highlight.pack.js diff --git a/README.md b/README.md index a12b95d0e..df6b90395 100644 --- a/README.md +++ b/README.md @@ -66,12 +66,13 @@ and `_config.yml` of hexo directory. Just follow the format of existing items. - You can control the abstract of a post shown at index, by either filling a `description` item in `front-matter` of the `post.md`, or just inserting a `` before your hidden content. #### Syntax Highlighting -- If you want to use the theme's own highlighted code showcase, please set the `highlight` option in `_config.yml` of hexo directory like this: +- Highlighted code showcase is supported, please set the `highlight` option in `_config.yml` of hexo directory like this: ``` highlight: - enable: false - line_number: false + enable: true + auto_detect: true + line_number: true tab_replace: ``` diff --git a/layout/base.jade b/layout/base.jade index 2c8c1ad96..19eda0b9f 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -19,7 +19,6 @@ html link(rel='stylesheet', type='text/css', href='/css/normalize.css') link(rel='stylesheet', type='text/css', href='/css/pure-min.css') link(rel='stylesheet', type='text/css', href='/css/grids-responsive-min.css') - link(rel='stylesheet', type='text/css', href='/css/highlight.css') link(rel='stylesheet', type='text/css', href='/css/style.css') link(rel='Shortcut Icon', type='image/x-icon',href='/favicon.ico') link(rel='apple-touch-icon', href='/apple-touch-icon.png') @@ -75,10 +74,6 @@ html ul: != link_to('http://example2.com/', 'site-name 2', {external: true}) ul: != link_to('http://example3.com/', 'site-name 3', {external: true}) - != js(['/js/highlight.pack.js']) - script. - hljs.initHighlightingOnLoad(); - #footer= '© ' a(href='/', rel='nofollow')= config.title + '.' | Powered by diff --git a/source/css/highlight.css b/source/css/highlight.css deleted file mode 100644 index fb616bd99..000000000 --- a/source/css/highlight.css +++ /dev/null @@ -1,154 +0,0 @@ -/* - -Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #23241f; - -webkit-text-size-adjust: none; -} - -.hljs, -.hljs-tag, -.css .hljs-rule, -.css .hljs-value, -.aspectj .hljs-function, -.css .hljs-function -.hljs-preprocessor, -.hljs-pragma { - color: #f8f8f2; -} - -.hljs-strongemphasis, -.hljs-strong, -.hljs-emphasis { - color: #a8a8a2; -} - -.hljs-bullet, -.hljs-blockquote, -.hljs-horizontal_rule, -.hljs-number, -.hljs-regexp, -.alias .hljs-keyword, -.hljs-literal, -.hljs-hexcolor { - color: #ae81ff; -} - -.hljs-tag .hljs-value, -.hljs-code, -.hljs-title, -.css .hljs-class, -.hljs-class .hljs-title:last-child { - color: #a6e22e; -} - -.hljs-link_url { - font-size: 80%; -} - -.hljs-strong, -.hljs-strongemphasis { - font-weight: bold; -} - -.hljs-emphasis, -.hljs-strongemphasis, -.hljs-class .hljs-title:last-child, -.hljs-typename { - font-style: italic; -} - -.hljs-keyword, -.ruby .hljs-class .hljs-keyword:first-child, -.ruby .hljs-function .hljs-keyword, -.hljs-function, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.nginx .hljs-title, -.tex .hljs-special, -.hljs-header, -.hljs-attribute, -.hljs-symbol, -.hljs-symbol .hljs-string, -.hljs-tag .hljs-title, -.hljs-value, -.alias .hljs-keyword:first-child, -.css .hljs-tag, -.css .unit, -.css .hljs-important { - color: #f92672; -} - -.hljs-function .hljs-keyword, -.hljs-class .hljs-keyword:first-child, -.hljs-aspect .hljs-keyword:first-child, -.hljs-constant, -.hljs-typename, -.hljs-name, -.css .hljs-attribute { - color: #66d9ef; -} - -.hljs-variable, -.hljs-params, -.hljs-class .hljs-title, -.hljs-aspect .hljs-title { - color: #f8f8f2; -} - -.hljs-string, -.css .hljs-id, -.hljs-subst, -.hljs-type, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.hljs-prompt, -.hljs-link_label, -.hljs-link_url { - color: #e6db74; -} - -.hljs-comment, -.hljs-annotation, -.hljs-decorator, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #75715e; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata, -.xml .php, -.php .xml { - opacity: 0.5; -} \ No newline at end of file diff --git a/source/css/style.scss b/source/css/style.scss index 9482dbb82..fdb547930 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -640,3 +640,173 @@ pre{ background: none; } } + +/* Syntax Highlight*/ +pre, +.highlight { + background: #2d2d2d; + margin: 20px 0; + padding: 15px; + overflow: auto; + font-size: 13px; + color: #ccc; + line-height: 1.6; +} +.highlight .gutter pre, +.gist .gist-file .gist-data .line-numbers { + color: #666; +} +pre, +code { + font-family: "Input Mono", "PT Mono", Consolas, Monaco, Menlo, monospace; +} +code { + word-break: break-all; + background: #eee; + text-shadow: 0 1px #fff; + padding: 0 0.3em; +} +pre code { + background: none; + text-shadow: none; + padding: 0; +} +.highlight pre { + border: none; + margin: 0; + padding: 1px; +} +.highlight table { + margin: 0; + width: auto; + border: none; +} +.highlight td { + border: none; + padding: 0; +} +.highlight figcaption { + font-size: 0.85em; + color: #999; + line-height: 1em; + margin-bottom: 1em; +} +.highlight figcaption:before, +.highlight figcaption:after { + content: " "; + display: table; +} +.highlight figcaption:after { + clear: both; +} +.highlight figcaption a { + float: right; +} +.highlight .gutter pre { + text-align: right; + padding-right: 20px; +} +.highlight .line { + height: 20px; +} +.gist { + margin: 20px 0; + border-style: solid; + border-color: #ccc; + border-width: 1px 0; + background: #2d2d2d; + padding: 15px 40px 15px 15px; +} +.gist .gist-file { + border: none; + font-family: "Input Mono", "PT Mono", Consolas, Monaco, Menlo, monospace; + margin: 0; +} +.gist .gist-file .gist-data { + background: none; + border: none; +} +.gist .gist-file .gist-data .line-numbers { + background: none; + border: none; + padding: 0 20px 0 0; +} +.gist .gist-file .gist-data .line-data { + padding: 0 !important; +} +.gist .gist-file .highlight { + margin: 0; + padding: 0; + border: none; +} +.gist .gist-file .gist-meta { + background: #2d2d2d; + color: #999; + font: 13px Lato, "PingFang SC", "Microsoft YaHei", sans-serif; + text-shadow: 0 0; + padding: 0; + margin-top: 1em; + margin-left: 40px; +} +.gist .gist-file .gist-meta a { + color: color-link; + font-weight: normal; +} +.gist .gist-file .gist-meta a:hover { + text-decoration: underline; +} +pre .comment { + color: #999; +} +pre .variable, +pre .attribute, +pre .tag, +pre .regexp, +pre .ruby .constant, +pre .xml .tag .title, +pre .xml .pi, +pre .xml .doctype, +pre .html .doctype, +pre .css .id, +pre .css .class, +pre .css .pseudo { + color: #f2777a; +} +pre .number, +pre .preprocessor, +pre .built_in, +pre .literal, +pre .params, +pre .constant { + color: #f99157; +} +pre .ruby .class .title, +pre .css .rules .attribute { + color: #9c9; +} +pre .string, +pre .value, +pre .inheritance, +pre .header, +pre .ruby .symbol, +pre .xml .cdata { + color: #9c9; +} +pre .title, +pre .css .hexcolor { + color: #6cc; +} +pre .function, +pre .python .decorator, +pre .python .title, +pre .ruby .function .title, +pre .ruby .title .keyword, +pre .perl .sub, +pre .javascript .title, +pre .coffeescript .title { + color: #69c; +} +pre .keyword, +pre .javascript .function { + color: #c9c; +} diff --git a/source/js/highlight.pack.js b/source/js/highlight.pack.js deleted file mode 100644 index 4e7eba48d..000000000 --- a/source/js/highlight.pack.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){"undefined"!=typeof exports?e(exports):(window.hljs=e({}),"function"==typeof define&&define.amd&&define("hljs",[],function(){return window.hljs}))}(function(e){function n(e){return e.replace(/&/gm,"&").replace(//gm,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}function a(e){return/no-?highlight|plain|text/.test(e)}function i(e){var n,t,r,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=/\blang(?:uage)?-([\w-]+)\b/.exec(i))return E(t[1])?t[1]:"no-highlight";for(i=i.split(/\s+/),n=0,r=i.length;r>n;n++)if(E(i[n])||a(i[n]))return i[n]}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?a+=i.nodeValue.length:1==i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset"}function u(e){f+=""}function c(e){("start"==e.event?o:u)(e.node)}for(var s=0,f="",l=[];e.length||r.length;){var g=i();if(f+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g==e){l.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g==e&&g.length&&g[0].offset==s);l.reverse().forEach(o)}else"start"==g[0].event?l.push(g[0].node):l.pop(),c(g.splice(0,1)[0])}return f+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");u[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?c("keyword",a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\b\w+\b/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push("self"==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var f=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=f.length?t(f.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){for(var t=0;t";return i+=e+'">',i+n+o}function p(){if(!L.k)return n(B);var e="",t=0;L.lR.lastIndex=0;for(var r=L.lR.exec(B);r;){e+=n(B.substr(t,r.index-t));var a=g(L,r);a?(y+=a[1],e+=h(a[0],n(r[0]))):e+=n(r[0]),t=L.lR.lastIndex,r=L.lR.exec(B)}return e+n(B.substr(t))}function d(){if(L.sL&&!x[L.sL])return n(B);var e=L.sL?f(L.sL,B,!0,M[L.sL]):l(B);return L.r>0&&(y+=e.r),"continuous"==L.subLanguageMode&&(M[L.sL]=e.top),h(e.language,e.value,!1,!0)}function b(){return void 0!==L.sL?d():p()}function v(e,t){var r=e.cN?h(e.cN,"",!0):"";e.rB?(k+=r,B=""):e.eB?(k+=n(t)+r,B=""):(k+=r,B=t),L=Object.create(e,{parent:{value:L}})}function m(e,t){if(B+=e,void 0===t)return k+=b(),0;var r=o(t,L);if(r)return k+=b(),v(r,t),r.rB?0:t.length;var a=u(L,t);if(a){var i=L;i.rE||i.eE||(B+=t),k+=b();do L.cN&&(k+=""),y+=L.r,L=L.parent;while(L!=a.parent);return i.eE&&(k+=n(t)),B="",a.starts&&v(a.starts,""),i.rE?0:t.length}if(c(t,L))throw new Error('Illegal lexeme "'+t+'" for mode "'+(L.cN||"")+'"');return B+=t,t.length||1}var N=E(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,L=i||N,M={},k="";for(R=L;R!=N;R=R.parent)R.cN&&(k=h(R.cN,"",!0)+k);var B="",y=0;try{for(var C,j,I=0;;){if(L.t.lastIndex=I,C=L.t.exec(t),!C)break;j=m(t.substr(I,C.index-I),C[0]),I=C.index+j}for(m(t.substr(I)),R=L;R.parent;R=R.parent)R.cN&&(k+="");return{r:y,value:k,language:e,top:L}}catch(O){if(-1!=O.message.indexOf("Illegal"))return{r:0,value:n(t)};throw O}}function l(e,t){t=t||w.languages||Object.keys(x);var r={r:0,value:n(e)},a=r;return t.forEach(function(n){if(E(n)){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}}),a.language&&(r.second_best=a),r}function g(e){return w.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,n){return n.replace(/\t/g,w.tabReplace)})),w.useBR&&(e=e.replace(/\n/g,"
")),e}function h(e,n,t){var r=n?R[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function p(e){var n=i(e);if(!a(n)){var t;w.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e;var r=t.textContent,o=n?f(n,r,!0):l(r),s=u(t);if(s.length){var p=document.createElementNS("http://www.w3.org/1999/xhtml","div");p.innerHTML=o.value,o.value=c(s,u(p),r)}o.value=g(o.value),e.innerHTML=o.value,e.className=h(e.className,n,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function d(e){w=o(w,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,p)}}function v(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){R[e]=n})}function N(){return Object.keys(x)}function E(e){return x[e]||x[R[e]]}var w={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},x={},R={};return e.highlight=f,e.highlightAuto=l,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=E,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",bK:"TODO FIXME NOTE BUG XXX",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",reserved:"case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",t={cN:"subst",b:/#\{/,e:/}/,k:c},r=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,t]},{b:/"/,e:/"/,c:[e.BE,t]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[t,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{cN:"property",b:"@"+n},{b:"`",e:"`",eB:!0,eE:!0,sL:"javascript"}];t.c=r;var i=e.inherit(e.TM,{b:n}),s="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(r)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:r.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{cN:"attribute",b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"[a-z\\d_]*_t"},r={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf"};return{aliases:["c","cc","h","c++","h++","hpp"],k:r,i:""]',k:"include",i:"\\n"},t.CLCM]},{b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:r,c:["self",e]},{b:t.IR+"::",k:r},{bK:"new throw return else",r:0},{cN:"function",b:"("+t.IR+"\\s+)+"+t.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:t.IR+"\\s*\\(",rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[t.CBCM]},t.CLCM,t.CBCM]}]}});hljs.registerLanguage("python",function(e){var r={cN:"prompt",b:/^(>>>|\.\.\.) /},b={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[r],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},l={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},c={cN:"params",b:/\(/,e:/\)/,c:["self",r,l,b]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[r,l,b,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,c]},{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>]/,c:[{cN:"operator",bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate savepoint release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke",e:/;/,eW:!0,k:{keyword:"abs absolute acos action add adddate addtime aes_decrypt aes_encrypt after aggregate all allocate alter analyze and any are as asc ascii asin assertion at atan atan2 atn2 authorization authors avg backup before begin benchmark between bin binlog bit_and bit_count bit_length bit_or bit_xor both by cache call cascade cascaded case cast catalog ceil ceiling chain change changed char_length character_length charindex charset check checksum checksum_agg choose close coalesce coercibility collate collation collationproperty column columns columns_updated commit compress concat concat_ws concurrent connect connection connection_id consistent constraint constraints continue contributors conv convert convert_tz corresponding cos cot count count_big crc32 create cross cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime data database databases datalength date_add date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts datetimeoffsetfromparts day dayname dayofmonth dayofweek dayofyear deallocate declare decode default deferrable deferred degrees delayed delete des_decrypt des_encrypt des_key_file desc describe descriptor diagnostics difference disconnect distinct distinctrow div do domain double drop dumpfile each else elt enclosed encode encrypt end end-exec engine engines eomonth errors escape escaped event eventdata events except exception exec execute exists exp explain export_set extended external extract fast fetch field fields find_in_set first first_value floor flush for force foreign format found found_rows from from_base64 from_days from_unixtime full function get get_format get_lock getdate getutcdate global go goto grant grants greatest group group_concat grouping grouping_id gtid_subset gtid_subtract handler having help hex high_priority hosts hour ident_current ident_incr ident_seed identified identity if ifnull ignore iif ilike immediate in index indicator inet6_aton inet6_ntoa inet_aton inet_ntoa infile initially inner innodb input insert install instr intersect into is is_free_lock is_ipv4 is_ipv4_compat is_ipv4_mapped is_not is_not_null is_used_lock isdate isnull isolation join key kill language last last_day last_insert_id last_value lcase lead leading least leaves left len lenght level like limit lines ln load load_file local localtime localtimestamp locate lock log log10 log2 logfile logs low_priority lower lpad ltrim make_set makedate maketime master master_pos_wait match matched max md5 medium merge microsecond mid min minute mod mode module month monthname mutex name_const names national natural nchar next no no_write_to_binlog not now nullif nvarchar oct octet_length of old_password on only open optimize option optionally or ord order outer outfile output pad parse partial partition password patindex percent_rank percentile_cont percentile_disc period_add period_diff pi plugin position pow power pragma precision prepare preserve primary prior privileges procedure procedure_analyze processlist profile profiles public publishingservername purge quarter query quick quote quotename radians rand read references regexp relative relaylog release release_lock rename repair repeat replace replicate reset restore restrict return returns reverse revoke right rlike rollback rollup round row row_count rows rpad rtrim savepoint schema scroll sec_to_time second section select serializable server session session_user set sha sha1 sha2 share show sign sin size slave sleep smalldatetimefromparts snapshot some soname soundex sounds_like space sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sql_variant_property sqlstate sqrt square start starting status std stddev stddev_pop stddev_samp stdev stdevp stop str str_to_date straight_join strcmp string stuff subdate substr substring subtime subtring_index sum switchoffset sysdate sysdatetime sysdatetimeoffset system_user sysutcdatetime table tables tablespace tan temporary terminated tertiary_weights then time time_format time_to_sec timediff timefromparts timestamp timestampadd timestampdiff timezone_hour timezone_minute to to_base64 to_days to_seconds todatetimeoffset trailing transaction translation trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse ucase uncompress uncompressed_length unhex unicode uninstall union unique unix_timestamp unknown unlock update upgrade upped upper usage use user user_resources using utc_date utc_time utc_timestamp uuid uuid_short validate_password_strength value values var var_pop var_samp variables variance varp version view warnings week weekday weekofyear weight_string when whenever where with work write xml xor year yearweek zon",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int integer interval number numeric real serial smallint varchar varying int8 serial8 text"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("java",function(e){var a=e.UIR+"(<"+e.UIR+">)?",t="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",c="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",r={cN:"number",b:c,r:0};return{aliases:["jsp"],k:t,i:/<\//,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+a+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},r,{cN:"annotation",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("ruby",function(e){var c="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",b={cN:"doctag",b:"@[A-Za-z]+"},a={cN:"value",b:"#<",e:">"},n=[e.C("#","$",{c:[b]}),e.C("^\\=begin","^\\=end",{c:[b],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]},i={cN:"params",b:"\\(",e:"\\)",k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]}].concat(n)},{cN:"function",bK:"def",e:" |$|;",r:0,c:[e.inherit(e.TM,{b:c}),i].concat(n)},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":",c:[t,{b:c}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[a,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(n),r:0}].concat(n);s.c=d,i.c=d;var o="[>?]>",l="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",N=[{b:/^\s*=>/,cN:"status",starts:{e:"$",c:d}},{cN:"prompt",b:"^("+o+"|"+l+"|"+u+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,c:n.concat(N).concat(d)}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"(AV|CA|CF|CG|CI|MK|MP|NS|UI)\\w+"},i={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},o=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:i,l:o,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:o,c:[e.UTM]},{cN:"variable",b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("javascript",function(e){return{aliases:["js"],k:{keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},c:[{cN:"pi",r:10,b:/^\s*['"]use (strict|asm)['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{b:/\s*[);\]]/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},{bK:"import",e:"[;$]",k:"import from as",c:[e.ASM,e.QSM]},{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]}]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"title",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:"^\\[.+\\]:",rB:!0,c:[{cN:"link_reference",b:"\\[",e:"\\]:",eB:!0,eE:!0,starts:{cN:"link_url",e:"$"}}]}]}});hljs.registerLanguage("json",function(e){var t={literal:"true false null"},i=[e.QSM,e.CNM],l={cN:"value",e:",",eW:!0,eE:!0,c:i,k:t},c={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:!0,eE:!0,c:[e.BE],i:"\\n",starts:l}],i:"\\S"},n={b:"\\[",e:"\\]",c:[e.inherit(l,{cN:null})],i:"\\S"};return i.splice(i.length,0,c,n),{c:i,k:t,i:"\\S"}});hljs.registerLanguage("php",function(e){var c={cN:"variable",b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},a={cN:"preprocessor",b:/<\?(php)?|\?>/},i={cN:"string",c:[e.BE,a],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.CLCM,e.HCM,e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"},a]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[e.BE]},a,c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,i,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},i,n]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"chunk",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"tag",b:""},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("http",function(t){return{aliases:["https"],i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:!0}}]}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",a={cN:"function",b:c+"\\(",rB:!0,eE:!0,e:"\\("},r={cN:"rule",b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{cN:"value",eW:!0,eE:!0,c:[a,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,r,{cN:"id",b:/\#[A-Za-z0-9_-]+/},{cN:"class",b:/\.[A-Za-z0-9_-]+/},{cN:"attr_selector",b:/\[/,e:/\]/,i:"$"},{cN:"pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"']+/},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[a,e.ASM,e.QSM,e.CSSNM]}]},{cN:"tag",b:c,r:0},{cN:"rules",b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}});hljs.registerLanguage("cs",function(e){var r="abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield",t=e.IR+"(<"+e.IR+">)?";return{aliases:["csharp"],k:r,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"xmlDocTag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},e.ASM,e.QSM,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[{cN:"title",b:"[a-zA-Z](\\.?\\w)*",r:0},e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("xml",function(t){var e="[A-Za-z0-9\\._:-]+",s={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"},c={eW:!0,i:/]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},t.C("",{r:10}),{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:"style"},c:[c],starts:{e:"",rE:!0,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:"script"},c:[c],starts:{e:"",rE:!0,sL:""}},s,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"",c:[{cN:"title",b:/[^ \/><\n\t]+/,r:0},c]}]}});hljs.registerLanguage("makefile",function(e){var a={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[a]}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,a]}]}});hljs.registerLanguage("ini",function(e){return{cI:!0,i:/\S/,c:[e.C(";","$"),{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:!0,k:"on off true false yes no",c:[e.QSM,e.NM],r:0}]}]}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,e.NM,s,a,t]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={cN:"variable",v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=e.C("^(__END__|__DATA__)","\\n$",{r:5}),o=[e.BE,r,n],a=[n,e.HCM,i,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:o,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,i,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0}];return r.c=a,s.c=a,{aliases:["pl"],k:t,c:a}}); \ No newline at end of file From 4c1c26cbb71873a424f77780e1dbcc07b363f6c3 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 26 Oct 2015 16:10:20 +0800 Subject: [PATCH 041/118] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=AB=98=E4=BA=AE=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/css/style.scss | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index fdb547930..21b49147d 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -250,7 +250,7 @@ a:focus{ } } table{ - margin: 2em 0; + margin: 0; } } .tags { @@ -646,11 +646,12 @@ pre, .highlight { background: #2d2d2d; margin: 20px 0; - padding: 15px; + padding: 5px; overflow: auto; font-size: 13px; color: #ccc; line-height: 1.6; + border-radius: 7px; } .highlight .gutter pre, .gist .gist-file .gist-data .line-numbers { From 3174f76fa5da47fbd60cac1afefbeee6cae4f42f Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 27 Oct 2015 20:52:56 +0800 Subject: [PATCH 042/118] =?UTF-8?q?=E6=B7=BB=E5=8A=A0IcoMoon=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layout/_partial/helpers.jade | 6 +++-- layout/base.jade | 9 ++++--- source/css/style.scss | 44 +++++++++++++++++++++++++++++++++++ source/fonts/icomoon.eot | Bin 0 -> 1888 bytes source/fonts/icomoon.svg | 16 +++++++++++++ source/fonts/icomoon.ttf | Bin 0 -> 1724 bytes source/fonts/icomoon.woff | Bin 0 -> 1800 bytes 7 files changed, 68 insertions(+), 7 deletions(-) create mode 100644 source/fonts/icomoon.eot create mode 100644 source/fonts/icomoon.svg create mode 100644 source/fonts/icomoon.ttf create mode 100644 source/fonts/icomoon.woff diff --git a/layout/_partial/helpers.jade b/layout/_partial/helpers.jade index 28c84f513..01023ca05 100644 --- a/layout/_partial/helpers.jade +++ b/layout/_partial/helpers.jade @@ -1,9 +1,11 @@ mixin a_with_current(href, content, id) - var url = url_for(href) if (href == '/' && (is_home() || is_post())) || is_current(href) - a.current(id=id, href=url)= content + a.current(href=url) + i(class=id)= ' ' + content else - a(id=id, href=url)= content + a(href=url) + i(class=id)= ' ' + content mixin title(page) if page diff --git a/layout/base.jade b/layout/base.jade index 19eda0b9f..40a72e3ca 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -33,10 +33,10 @@ html a#logo(href='/')= config.title p.description= config.subtitle #nav-menu - +a_with_current(config.root, __('home')) - +a_with_current(config.archive_dir, __('archive')) - +a_with_current(config.about_dir, __('about')) - +a_with_current(config.feed.path, __('rss')) + +a_with_current(config.root, __('home'), 'icon-home') + +a_with_current(config.archive_dir, __('archive'), 'icon-archives') + +a_with_current(config.about_dir, __('about'), 'icon-about') + +a_with_current(config.feed.path, __('rss'), 'icon-rss') #layout.pure-g .pure-u-1.pure-u-md-3-4: .content_container @@ -84,7 +84,6 @@ html != js(['/js/jquery.min.js', '/js/totop.js']) - if theme.fancybox != js(['/js/fancybox.pack.js']) != css('/css/jquery.fancybox.css') diff --git a/source/css/style.scss b/source/css/style.scss index 21b49147d..a5753ef32 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -811,3 +811,47 @@ pre .keyword, pre .javascript .function { color: #c9c; } + +/* IcoMoon*/ +@font-face { + font-family: 'icomoon'; + src:url('/fonts/icomoon.eot?hylqsr'); + src:url('/fonts/icomoon.eot?hylqsr#iefix') format('embedded-opentype'), + url('/fonts/icomoon.ttf?hylqsr') format('truetype'), + url('/fonts/icomoon.woff?hylqsr') format('woff'), + url('/fonts/icomoon.svg?hylqsr#icomoon') format('svg'); + font-weight: normal; + font-style: normal; +} + +i { + font-family: 'icomoon', "TIBch", "Classic Grotesque W01", "Helvetica Neue", Arial, "Hiragino Sans GB", "STHeiti", "Microsoft YaHei", "WenQuanYi Micro Hei", SimSun, sans-serif; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-home:before { + content: "\e900"; +} +.icon-history:before { + content: "\e901"; +} +.icon-guestbook:before { + content: "\e902"; +} +.icon-about:before { + content: "\e903"; +} +.icon-archives:before { + content: "\e904"; +} +.icon-rss:before { + content: "\e905"; +} diff --git a/source/fonts/icomoon.eot b/source/fonts/icomoon.eot new file mode 100644 index 0000000000000000000000000000000000000000..9934562bbec0dc968134deaa4cbc7086e8722e2c GIT binary patch literal 1888 zcmaJ?O-vg{6n?Y2w!sPJ$3HYFb=Nk*B#j*#STG7u3sM9)5JM28Qrg-W#~6W)j8UPg zlueOn)P@8pJrt>jQuP+8x%7}j4n8D@O1%{2RP{jBUec;PwNa%4?lkR*Zd59KE%*Pk%C$?`v zsR8nMD!#aYz6LVyD^hbS*Z%nY$3G!26A3#r$@p}|U^o1hu3)@<21G@#6oI?}xp8Jb zzwA`00QpZ47@5QRD)+!KR zis9WtsJS^LQbgG!B?9HJwW`V*Mqc1|u^_3i*GPk~7i@6~cAG`;xSPBd(WLY+rLD>9 z7nQaip_SPj^>#n=S{NU0=@B}57#?USPG+|mO%`TnJBjGI?iU*G~` zr+fV;I44LgXNK?e)yTC2H15yVgg<&a-Mzbc<}I5;XzCS&Q*xavAio|tefHg;siwmB{)Lf`{f6WCwy}?h z3^@$bYec8C5c~+pg23RvMYOxx{DM~qD-mPk$iTozqcNh4uBXn6>iN|A=$_(S8|q4r z_b!UJ3-V?UO99wV$ zdC}T+r!nzfb=Ti?OyVqUkMG`i(d(xH{}O&Sw1RosH%XGpWl7am;_#rDODmN`K8?$0 zVM*0{j=^cgOg7}9mp-6hSsgp8{kgbrW*S0Pc{#AG3Hr-I-{^K3GGB^@Ynmvg^L$6z zbu0ld>DYjMvg_CgKB8kYoup4-kx7+cEEp+a0XU^&5x85&67YvQHsGf&>(~f>Ovh$w zqp#D6?0hzxDZd#elDWlnHX{f9fupa3BWE2+jwMq|bMajHJ#(aHe>RhsQ^`y+7tbfB z<*5~UFp(XGZ+`06uA)4mNa1qIXcttR^600*P0 + + +Generated by IcoMoon + + + + + + + + + + + + \ No newline at end of file diff --git a/source/fonts/icomoon.ttf b/source/fonts/icomoon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b751ff7cb025f9f4c3b9ab939c84269484a01b9c GIT binary patch literal 1724 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 Vo2FHa!+HXv)dUbDzx6L|{{gS@E}#Ga literal 0 HcmV?d00001 From ad2e716dff470a1b6cb8152b856e63df0f1d055b Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 27 Oct 2015 23:12:54 +0800 Subject: [PATCH 043/118] README updated --- README.md | 10 ++++++---- layout/base.jade | 2 +- source/css/style.scss | 12 ++++++------ source/fonts/icomoon.eot | Bin 1888 -> 1888 bytes source/fonts/icomoon.svg | 2 +- source/fonts/icomoon.ttf | Bin 1724 -> 1724 bytes source/fonts/icomoon.woff | Bin 1800 -> 1800 bytes 7 files changed, 14 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index df6b90395..9b5a22f7c 100644 --- a/README.md +++ b/README.md @@ -41,10 +41,10 @@ npm install hexo-renderer-jade --save ``` #nav-menu - +a_with_current(config.root, __('home')) - +a_with_current(config.archive_dir, __('archive')) - +a_with_current(config.about_dir, __('about')) - +a_with_current(config.feed.path, __('rss')) + +a_with_current(config.root, __('home'), 'icon-home') + +a_with_current(config.archive_dir, __('archive'), 'icon-archive') + +a_with_current(config.about_dir, __('about'), 'icon-about') + +a_with_current(config.feed.path, __('rss'), 'icon-rss') ``` and `_config.yml` of hexo directory. Just follow the format of existing items. @@ -62,6 +62,8 @@ and `_config.yml` of hexo directory. Just follow the format of existing items. skip_render: ``` +- [IcoMoon](https://icomoon.io) icon fonts have been integrated to the nav-menu, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs). + #### Abstract - You can control the abstract of a post shown at index, by either filling a `description` item in `front-matter` of the `post.md`, or just inserting a `` before your hidden content. diff --git a/layout/base.jade b/layout/base.jade index 40a72e3ca..0df026df6 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -34,7 +34,7 @@ html p.description= config.subtitle #nav-menu +a_with_current(config.root, __('home'), 'icon-home') - +a_with_current(config.archive_dir, __('archive'), 'icon-archives') + +a_with_current(config.archive_dir, __('archive'), 'icon-archive') +a_with_current(config.about_dir, __('about'), 'icon-about') +a_with_current(config.feed.path, __('rss'), 'icon-rss') diff --git a/source/css/style.scss b/source/css/style.scss index a5753ef32..f1674ae55 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -815,11 +815,11 @@ pre .javascript .function { /* IcoMoon*/ @font-face { font-family: 'icomoon'; - src:url('/fonts/icomoon.eot?hylqsr'); - src:url('/fonts/icomoon.eot?hylqsr#iefix') format('embedded-opentype'), - url('/fonts/icomoon.ttf?hylqsr') format('truetype'), - url('/fonts/icomoon.woff?hylqsr') format('woff'), - url('/fonts/icomoon.svg?hylqsr#icomoon') format('svg'); + src:url('/fonts/icomoon.eot?g43wbc'); + src:url('/fonts/icomoon.eot?g43wbc#iefix') format('embedded-opentype'), + url('/fonts/icomoon.ttf?g43wbc') format('truetype'), + url('/fonts/icomoon.woff?g43wbc') format('woff'), + url('/fonts/icomoon.svg?g43wbc#icomoon') format('svg'); font-weight: normal; font-style: normal; } @@ -849,7 +849,7 @@ i { .icon-about:before { content: "\e903"; } -.icon-archives:before { +.icon-archive:before { content: "\e904"; } .icon-rss:before { diff --git a/source/fonts/icomoon.eot b/source/fonts/icomoon.eot index 9934562bbec0dc968134deaa4cbc7086e8722e2c..12a2db0a15038a8b1aa4677dec9139891d04a3ff 100644 GIT binary patch delta 53 zcmaFB_keGL4fE>{G865$Go7&B_=A^4TIR#+cz&C&4BRXXAaE(v@ji^+tibBP1OP2S B5>WsE delta 53 zcmaFB_keGL4RbP^+(i5BOt$qKfAF$M%dsWL^V@u7;AUX}flDEO8e#Ni1y% A;s5{u diff --git a/source/fonts/icomoon.svg b/source/fonts/icomoon.svg index 48cf91da6..8fcf16ee2 100644 --- a/source/fonts/icomoon.svg +++ b/source/fonts/icomoon.svg @@ -11,6 +11,6 @@ - + \ No newline at end of file diff --git a/source/fonts/icomoon.ttf b/source/fonts/icomoon.ttf index b751ff7cb025f9f4c3b9ab939c84269484a01b9c..0e372605160284a75811019a4d03d3859bf948c2 100644 GIT binary patch delta 46 tcmdnPyN7o|5Yq|kjUl`&(lQ@j$Mf5KW#DFE0D()Pj`v~o<{B0UCIDfs4pRUC delta 46 tcmdnPyN7o|5R+~F#t>c>X*ss!cz&C&4BRXXAaE()@Nv$8^Ga;{;h2X_*hN)@Nv$7EZ-ae^$1v>aP Date: Wed, 28 Oct 2015 03:08:13 +0100 Subject: [PATCH 044/118] Wrong file paths when the site is in a subdirectory bug fixed css, js and font files had a wrong path when the site was put in a subdirectory, e.g. If the main hexo "_config.yml" file contains: url: http://mysite.com/blog root: /blog/ The path was something like: http://mysite.com/css/normalize.css instead of: http://mysite.com/blog/css/normalize.css --- layout/base.jade | 19 ++++++++++++------- source/css/style.scss | 10 +++++----- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index 0df026df6..3a5b8d095 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -6,6 +6,11 @@ if page.title else - var current_title = config.title +if (config.root != '/') + - var root = config.root +else + - var root = '' + html head meta(http-equiv="content-type", content="text/html; charset=utf-8") @@ -16,10 +21,10 @@ html meta(name="description", content=config.description) block title //+get_resource("blog_basic.css") - link(rel='stylesheet', type='text/css', href='/css/normalize.css') - link(rel='stylesheet', type='text/css', href='/css/pure-min.css') - link(rel='stylesheet', type='text/css', href='/css/grids-responsive-min.css') - link(rel='stylesheet', type='text/css', href='/css/style.css') + link(rel='stylesheet', type='text/css', href=root + '/css/normalize.css') + link(rel='stylesheet', type='text/css', href=root + '/css/pure-min.css') + link(rel='stylesheet', type='text/css', href=root + '/css/grids-responsive-min.css') + link(rel='stylesheet', type='text/css', href=root + '/css/style.css') link(rel='Shortcut Icon', type='image/x-icon',href='/favicon.ico') link(rel='apple-touch-icon', href='/apple-touch-icon.png') link(rel='apple-touch-icon-precomposed', href='/apple-touch-icon.png') @@ -82,11 +87,11 @@ html | by a(rel='nofollow', target='_blank', href='https://github.com/pagecho') Cho. - != js(['/js/jquery.min.js', '/js/totop.js']) + != js([root + '/js/jquery.min.js', root + '/js/totop.js']) if theme.fancybox - != js(['/js/fancybox.pack.js']) - != css('/css/jquery.fancybox.css') + != js([root + '/js/fancybox.pack.js']) + != css(root + '/css/jquery.fancybox.css') script. $(document).ready(function() { $("img").wrap(function() { diff --git a/source/css/style.scss b/source/css/style.scss index f1674ae55..828fcca16 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -815,11 +815,11 @@ pre .javascript .function { /* IcoMoon*/ @font-face { font-family: 'icomoon'; - src:url('/fonts/icomoon.eot?g43wbc'); - src:url('/fonts/icomoon.eot?g43wbc#iefix') format('embedded-opentype'), - url('/fonts/icomoon.ttf?g43wbc') format('truetype'), - url('/fonts/icomoon.woff?g43wbc') format('woff'), - url('/fonts/icomoon.svg?g43wbc#icomoon') format('svg'); + src:url('../fonts/icomoon.eot?g43wbc'); + src:url('../fonts/icomoon.eot?g43wbc#iefix') format('embedded-opentype'), + url('../fonts/icomoon.ttf?g43wbc') format('truetype'), + url('../fonts/icomoon.woff?g43wbc') format('woff'), + url('../fonts/icomoon.svg?g43wbc#icomoon') format('svg'); font-weight: normal; font-style: normal; } From 7ffd458f8cfc378769acc0c9787c3a5e85e5821b Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 28 Oct 2015 11:41:22 +0800 Subject: [PATCH 045/118] README updated --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b5a22f7c..6467862fb 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ Maupassant ========== -A simple Hexo template with great performance on different devices, ported from a Typecho theme by [Cho](https://github.com/pagecho), forked and modified from [icylogic](https://github.com/icylogic/maupassant-hexo/). +- A simple Hexo template with great performance on different devices, ported from a Typecho theme by [Cho](https://github.com/pagecho/maupassant/), forked and modified from [icylogic](https://github.com/icylogic/maupassant-hexo/). ![template preview](http://ooo.0o0.ooo/2015/10/24/562b5be12177e.jpg "Maupassant template preview") + +- See [DEMO](https://www.haomwei.com). ## Installation From dfb144f03c7ece71eda24d5f3b9d2ec32348b50b Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 28 Oct 2015 16:09:23 +0800 Subject: [PATCH 046/118] Post-navigator added, instead of page-navigator in posts. --- layout/_partial/post-nav.jade | 8 ++++++ layout/base.jade | 1 - layout/post.jade | 2 +- source/css/style.scss | 45 ++++++++++++++++++++++++++++------ source/fonts/icomoon.eot | Bin 1888 -> 2152 bytes source/fonts/icomoon.svg | 4 ++- source/fonts/icomoon.ttf | Bin 1724 -> 1988 bytes source/fonts/icomoon.woff | Bin 1800 -> 2064 bytes 8 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 layout/_partial/post-nav.jade diff --git a/layout/_partial/post-nav.jade b/layout/_partial/post-nav.jade new file mode 100644 index 000000000..505cdd250 --- /dev/null +++ b/layout/_partial/post-nav.jade @@ -0,0 +1,8 @@ +if page.next || page.prev + .post-nav + if page.prev + a.pre(href=url_for(page.prev_link ? page.prev_link : page.prev.path)) + i(class='icon-previous')= page.prev.title + if page.next + a.next(href=url_for(page.next_link ? page.next_link : page.next.path))= page.next.title + i(class='icon-next') diff --git a/layout/base.jade b/layout/base.jade index 3a5b8d095..ec14a0ac4 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -20,7 +20,6 @@ html meta(content="telephone=no", name="format-detection") meta(name="description", content=config.description) block title - //+get_resource("blog_basic.css") link(rel='stylesheet', type='text/css', href=root + '/css/normalize.css') link(rel='stylesheet', type='text/css', href=root + '/css/pure-min.css') link(rel='stylesheet', type='text/css', href=root + '/css/grids-responsive-min.css') diff --git a/layout/post.jade b/layout/post.jade index fd688d42f..57f288e9c 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -18,6 +18,7 @@ block content .tags for tag in page.tags.toArray() a(href=url_for(tag.path))= tag.name + include _partial/post-nav if theme.duoshuo div(class='ds-share flat' data-thread-key=page.path, data-title=page.title, data-url=page.permalink) .ds-share-inline @@ -34,4 +35,3 @@ block content a(class='ds-wechat' href='javascript:void(0);' data-service='wechat') 微信 .ds-share-icons-more include _partial/comments - include _partial/paginator diff --git a/source/css/style.scss b/source/css/style.scss index 828fcca16..bec444c10 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -815,11 +815,11 @@ pre .javascript .function { /* IcoMoon*/ @font-face { font-family: 'icomoon'; - src:url('../fonts/icomoon.eot?g43wbc'); - src:url('../fonts/icomoon.eot?g43wbc#iefix') format('embedded-opentype'), - url('../fonts/icomoon.ttf?g43wbc') format('truetype'), - url('../fonts/icomoon.woff?g43wbc') format('woff'), - url('../fonts/icomoon.svg?g43wbc#icomoon') format('svg'); + src:url('../fonts/icomoon.eot?5xv1e3'); + src:url('../fonts/icomoon.eot?5xv1e3#iefix') format('embedded-opentype'), + url('../fonts/icomoon.ttf?5xv1e3') format('truetype'), + url('../fonts/icomoon.woff?5xv1e3') format('woff'), + url('../fonts/icomoon.svg?5xv1e3#icomoon') format('svg'); font-weight: normal; font-style: normal; } @@ -849,9 +849,40 @@ i { .icon-about:before { content: "\e903"; } +.icon-rss:before { + content: "\e905"; +} +.icon-previous:before { + content: "\e908"; +} +.icon-next:before { + content: "\e909"; +} .icon-archive:before { content: "\e904"; } -.icon-rss:before { - content: "\e905"; + +/* Post Navigator*/ +.post-nav { + overflow: hidden; + margin-top: 15px; + margin-bottom: 20px; + padding: 10px; + white-space: nowrap; + border-top: 1px solid #eee; + a { + display: inline-block; + line-height: 25px; + font-size: 15px; + color: #555; + border-bottom: none; + float: left; + &.next { + float: right; + } + &:hover { + border-bottom: none; + color: #222; + } + } } diff --git a/source/fonts/icomoon.eot b/source/fonts/icomoon.eot index 12a2db0a15038a8b1aa4677dec9139891d04a3ff..74fb7dac6d3270716405f50c45e134eb59b9f569 100644 GIT binary patch delta 660 zcmZ9JPizuF6vp41U6$cbVRyrVX)Lm~fuuAP1eO?0ZAj>W%Bc-C(L_mGN@5XWt3hjM zRtB;P2Jz|&%mc#n9ZRNkxwcZ3r08{+7CWw~IP5EH~_#G~axtqRjJ+$5n- zLf}E6y!s+*`w1Y?18}!m+1Lbu9I!S`9|YmFv4S_y)@b6j_$+Bo;J`oxgh0>IvkeEs zA*pn?2R(jHIQ-%heT;Gt;K0tVvfFWp3nxMm?4ZFYHPSCjW2h$+!Ey9>K0jKf=2 zXI=19xF6l<^Ga4J7>Wq72qqIoDmuebGw5S=1=Yht6%{om^Xx*J+iX0&kmYhrWnE>; z)9GkoMM0V8@^f5sI5eJF%5gW!fcTtxoc!$}#QdmvBx}^gtgibQiqMckK_g{&eR%p` z@;^OUm*2QkNFE3^I+CSz>-2| qOQ z#K**;yk4#ZYG@H(6VDWiDUAi|H30~A^0X*f0kw6rWyU2SV&D)UmPPf;2Js!FfBJG%S@m(X9(-dcUK2fLe!w7{HZLYkge j2QC>-_z*x0hj?KgHrM|^${{^Ico8^rQ}#A*r3>~CW29e$ diff --git a/source/fonts/icomoon.svg b/source/fonts/icomoon.svg index 8fcf16ee2..dcbfd044a 100644 --- a/source/fonts/icomoon.svg +++ b/source/fonts/icomoon.svg @@ -11,6 +11,8 @@ - + + + \ No newline at end of file diff --git a/source/fonts/icomoon.ttf b/source/fonts/icomoon.ttf index 0e372605160284a75811019a4d03d3859bf948c2..4c2bbe4323fa28365c10f186e82f21a8cd9a3ae5 100644 GIT binary patch delta 678 zcmZ9JO>7cT5XWcsE$}E%b~h}T#$u5MlG0G<@)4tHm4qHzNe>u$&_p-2ltU4c)q z;-RM=R8D%PS7Xv1IP^f&1Bcdwv3HGz1n*uH#90~><0LQhe*bxIX5PGG$9rcD5CCjY z2L_SV?A*LlF>_LmY28~d>g8U#M|-?Td}mYNE|ZstE9Cj+)}ws&$-xS79e{l*Z0Ps- z%0ml)=@!Kk1rm5l%nph~E%Lwo2 zz3w+13VWqE`mGtS(3}kQPY^Kn`-J5c`|hq?8K~YFid-6e!B##GjSpr9Xc*(ML^84%JN zO`*#(Yw7dMOSue}P?ke#r{kKHC3G4CGuA=r9o}_b`vEp_G~1843u$9>?uTu$&f0{= xM~tlTO!T9@aU}ZZG~)*S4tZ+WurYAaSW@s9zM+CC+`|@rC*7!JKl~}a#XoI}i3R`w delta 407 zcmX@YzlXP;fsuiMft#U$ftkU;KUm+0Ux@VwP-G7fCnV=47Kn#k>S17DlmYTX(i4jd zfV2RR5288Jb1Ku`&bajs$gf~vV0w^|nwY}jdBU23fh7VcZm){NZ400X7Xt?a6A&^oD7<9-|M&lYkXj&{ z0nBFn|5%&_sGo6j9-}3bz5{~;^8uh~%naU5QidW;T4S{a z8i&TgL1og(p{x$pfx&^q4h(cLHgRw<8WK9`;3SCmQ8mU(e!1`W`|jP{clRFJAFHlA zi|I5VkZ~2P!kZ5PYu^;tlYm}T_)00i0f0rixGvC5b>FPzH-&acod1TpwtlxjS{s19 z7pUB?&lgwoHvvp9C?+nz=Wm;fB$D=l_>=%o%GqLRYn!wl@sNOTmlfB`D|uK1B|yTM zfN4sOmh#(FSh-4kVh9x$Zskj>q)~&oC-5v|`LR*n+@gnk{Ts*V#Mp7ohL_P&TfmEv zE2P+{eFiog*O>80`{Vvz8v&y~+pM75c6Mxf-|)=P z&AI+3Y!nJm8PzRR6WiNmQMH052^Bq|m$wAx2`5^YaSld}==0WF6-^($-yoHUgr+=DNuV-okU XfhVMkQZ~rYmV`<4^PV|aG1c)G*6NNX delta 433 zcmbOr(7`8C?(gQtz{mgu>>Lc-AewE@L=mle)*s2ai3JP{j2S?o5D*p*yVR4OSPT-| z1LSi+u|RrGWg1ZI2m=Gt0}y^Y zi+4tDNd*G~E0D{e0m5<(3 Date: Wed, 28 Oct 2015 16:25:33 +0800 Subject: [PATCH 047/118] a minor bug fixed --- source/css/style.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/css/style.scss b/source/css/style.scss index bec444c10..d95623fbe 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -280,6 +280,9 @@ a:focus{ padding: 5px 20px; border: 1px solid #DDD; float: left; + &.pre { + float: left; + } &.next { float: right; } @@ -877,6 +880,9 @@ i { color: #555; border-bottom: none; float: left; + &.pre { + float: left; + } &.next { float: right; } From aa3424c108e78acdc5526aa7200886f258104ec9 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 28 Oct 2015 17:10:55 +0800 Subject: [PATCH 048/118] a font bug fixed --- source/css/style.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/source/css/style.scss b/source/css/style.scss index d95623fbe..8911ed830 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -876,6 +876,7 @@ i { a { display: inline-block; line-height: 25px; + font-family: "TIBch", "Classic Grotesque W01", "Helvetica Neue", Arial, "Hiragino Sans GB", "STHeiti", "Microsoft YaHei", "WenQuanYi Micro Hei", SimSun, sans-serif; font-size: 15px; color: #555; border-bottom: none; From 0706700cbb538d4d625fbc595323d90a4e32d047 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sat, 31 Oct 2015 12:28:57 +0800 Subject: [PATCH 049/118] TOC function is supported now. --- README.md | 3 +++ layout/index.jade | 14 +++++++++++--- layout/post.jade | 4 ++++ source/css/style.scss | 33 ++++++++++++++++++++++++++++++++- 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6467862fb..aa763f84d 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,9 @@ and `_config.yml` of hexo directory. Just follow the format of existing items. #### Abstract - You can control the abstract of a post shown at index, by either filling a `description` item in `front-matter` of the `post.md`, or just inserting a `` before your hidden content. +#### Table of Contents +- TOC in a post can be enabled by adding a `toc: true` item in `front-matter`. + #### Syntax Highlighting - Highlighted code showcase is supported, please set the `highlight` option in `_config.yml` of hexo directory like this: diff --git a/layout/index.jade b/layout/index.jade index 930cf7b2c..5f537f9e8 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -14,11 +14,19 @@ block content .post-meta= post.date.format(config.date_format) span.ds-thread-count(data-thread-key=post.path) if post.description - .post-content= post.description + .post-content + != post.description else if page.excerpt - .post-content= page.excerpt + .post-content + != post.excerpt else if post.content - .post-content= strip_html(post.content).replace(/^\s*/, '').replace(/\s*$/, '').substring(0, 300) + - var br = post.content.indexOf('\n') + if br < 0 + .post-abstract + != post.content + else + .post-abstract + != post.content.substring(0, br) p(class="readmore") a(href=url_for(post.path))= __('Readmore') diff --git a/layout/post.jade b/layout/post.jade index 57f288e9c..dabe229ee 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -12,6 +12,10 @@ block content for category in page.categories.toArray() a(href=url_for(category.path))= category.name span.ds-thread-count(data-thread-key=page.path) + if page.toc + div(class="clear") + div(id="toc" class="toc-article") + != toc(page.content) .post-content != page.content if page.tags diff --git a/source/css/style.scss b/source/css/style.scss index 8911ed830..e227d6b29 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -197,13 +197,19 @@ a:focus{ display: inline; text-indent: .15em; } - .post-content { + .post-abstract { clear: both; font-size: 15px; line-height: 1.77; color: #444; padding-top: 20px; overflow: hidden; + } + .post-content { + font-size: 15px; + line-height: 1.77; + color: #444; + padding-top: 20px; h2, h3 { margin: 1.4em 0 1.1em; } @@ -893,3 +899,28 @@ i { } } } + +/*toc*/ +.toc-article { + border: 1px solid #bbb; + border-radius: 7px; + margin: 2em 0 0 0.6em; + padding: 0.2em; + max-width: 40%; + } +#toc { + line-height: 1em; + float: right; + .toc { + padding: 0; + margin: 0.5em; + line-height: 1.8em; + li { + list-style-type: none; + } + } + .toc-child { + margin-left: 1em; + padding-left: 0; + } +} From 3b2b2ee0978fa743e6a61310c402a01afb39111e Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 1 Nov 2015 17:54:06 +0800 Subject: [PATCH 050/118] TOC optimized and README updated --- README.md | 10 +++++++--- languages/en.yml | 1 + languages/zh-CN.yml | 1 + layout/post.jade | 1 + source/css/style.scss | 9 ++++++--- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index aa763f84d..4d9ad8f99 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ Maupassant ========== +> 大道至简 + +[Preview](https://www.haomwei.com)|[中文文档](https://www.haomwei.com/technology/maupassant-hexo.html) + - A simple Hexo template with great performance on different devices, ported from a Typecho theme by [Cho](https://github.com/pagecho/maupassant/), forked and modified from [icylogic](https://github.com/icylogic/maupassant-hexo/). ![template preview](http://ooo.0o0.ooo/2015/10/24/562b5be12177e.jpg @@ -23,9 +27,9 @@ npm install hexo-renderer-jade --save ## Configuration #### Logo -- You can set a **favicon.ico** for your website, please put it into `/source` folder of hexo directory, recommended size: 32px*32px. +- You can set a **favicon.ico** for your website, please put it into `source` folder of hexo directory, recommended size: 32px*32px. -- You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `/source` folder of hexo directory, recommended size: 114px*114px. +- You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `source` folder of hexo directory, recommended size: 114px*114px. #### Blogroll - You can manage your friendly links in `/themes/maupassant/layout/base.jade` like this: @@ -67,7 +71,7 @@ and `_config.yml` of hexo directory. Just follow the format of existing items. - [IcoMoon](https://icomoon.io) icon fonts have been integrated to the nav-menu, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs). #### Abstract -- You can control the abstract of a post shown at index, by either filling a `description` item in `front-matter` of the `post.md`, or just inserting a `` before your hidden content. +- You can control the abstract of a post shown at index, by either filling a `description:` item in `front-matter` of the `post.md`, or just inserting a `` before your hidden content. #### Table of Contents - TOC in a post can be enabled by adding a `toc: true` item in `front-matter`. diff --git a/languages/en.yml b/languages/en.yml index e0f282aae..8bc8ec897 100644 --- a/languages/en.yml +++ b/languages/en.yml @@ -18,3 +18,4 @@ home: Home recent_comments: Recent Comments Readmore: Read More belongsto: Categorized in +contents: Contents diff --git a/languages/zh-CN.yml b/languages/zh-CN.yml index 54e205404..58fba83ca 100644 --- a/languages/zh-CN.yml +++ b/languages/zh-CN.yml @@ -18,3 +18,4 @@ home: 首页 recent_comments: 最近评论 Readmore: 阅读更多 belongsto: 分类于 +contents: 文章目录 diff --git a/layout/post.jade b/layout/post.jade index dabe229ee..5effb6e2b 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -15,6 +15,7 @@ block content if page.toc div(class="clear") div(id="toc" class="toc-article") + div(class="toc-title")= __('contents') != toc(page.content) .post-content != page.content diff --git a/source/css/style.scss b/source/css/style.scss index e227d6b29..6041075be 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -904,10 +904,13 @@ i { .toc-article { border: 1px solid #bbb; border-radius: 7px; - margin: 2em 0 0 0.6em; - padding: 0.2em; + margin: 2em 0 0 2em; + padding: 0.7em 0.7em 0 0.7em; max-width: 40%; - } +} +.toc-title { + font-size: 120%; +} #toc { line-height: 1em; float: right; From 35143ab805d9bbe01b78a495b9bef65ba463bb03 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 1 Nov 2015 17:55:59 +0800 Subject: [PATCH 051/118] README updated --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 4d9ad8f99..e85217844 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,11 @@ Maupassant [Preview](https://www.haomwei.com)|[中文文档](https://www.haomwei.com/technology/maupassant-hexo.html) -- A simple Hexo template with great performance on different devices, ported from a Typecho theme by [Cho](https://github.com/pagecho/maupassant/), forked and modified from [icylogic](https://github.com/icylogic/maupassant-hexo/). +A simple Hexo template with great performance on different devices, ported from a Typecho theme by [Cho](https://github.com/pagecho/maupassant/), forked and modified from [icylogic](https://github.com/icylogic/maupassant-hexo/). ![template preview](http://ooo.0o0.ooo/2015/10/24/562b5be12177e.jpg "Maupassant template preview") -- See [DEMO](https://www.haomwei.com). - ## Installation - Install theme and renderers: From b9d45c51c194dbdc118149c100d90f0ae76a8bb0 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 1 Nov 2015 18:04:49 +0800 Subject: [PATCH 052/118] A minor optimization. --- source/css/style.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/source/css/style.scss b/source/css/style.scss index 6041075be..0ea8da23a 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -411,7 +411,6 @@ blockquote:before,.stressed-quote:before { } strong,b,em{ padding: 1px 2px; - background-color: #fcfcf0; font-weight: normal; } pre{ From 14fdbf7c672bd8fddd2819b69a6d732e051e03b5 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 1 Nov 2015 22:35:22 +0800 Subject: [PATCH 053/118] bug fixed --- layout/index.jade | 4 +- source/css/style.scss | 106 ++++++++++++++++++++++++++++-------------- 2 files changed, 74 insertions(+), 36 deletions(-) diff --git a/layout/index.jade b/layout/index.jade index 5f537f9e8..74a608ede 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -22,10 +22,10 @@ block content else if post.content - var br = post.content.indexOf('\n') if br < 0 - .post-abstract + .post-content != post.content else - .post-abstract + .post-content != post.content.substring(0, br) p(class="readmore") a(href=url_for(post.path))= __('Readmore') diff --git a/source/css/style.scss b/source/css/style.scss index 0ea8da23a..2a799866e 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -13,19 +13,15 @@ body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-size: 14px; - } - .body_container { padding: 0 60px; max-width: 1150px; margin: 0 auto; } - .content_container { padding-right: 50px; padding-top: 20px; - } #fb_comments_container{ margin-top: 35px; @@ -40,7 +36,6 @@ a, button.submit { -o-transition: all .1s ease-in; transition: all .1s ease-in; } - a:hover, a:active { color: #444; } @@ -50,6 +45,7 @@ a:focus{ .clear { clear: both; } + #header { padding: 58px 0 0; text-align: left; @@ -99,14 +95,12 @@ a:focus{ } } - #sidebar { border-left: 1px solid #ddd; padding-left: 35px; margin-top: 40px; padding-bottom: 20px; word-wrap: break-word; - .widget { margin-bottom: 30px; .widget-title { @@ -143,7 +137,6 @@ a:focus{ } } } - .search-form{ position: relative; overflow: hidden; @@ -160,7 +153,6 @@ a:focus{ } } - /* title for search result or tagged posts*/ .label-title { margin-top: 1.1em; @@ -169,7 +161,6 @@ a:focus{ color: #888; } - .post { padding: 25px 0 15px; .post-title { @@ -197,15 +188,8 @@ a:focus{ display: inline; text-indent: .15em; } - .post-abstract { - clear: both; - font-size: 15px; - line-height: 1.77; - color: #444; - padding-top: 20px; - overflow: hidden; - } .post-content { + clear: left; font-size: 15px; line-height: 1.77; color: #444; @@ -271,8 +255,6 @@ a:focus{ } } - - .page-navigator { border-top: 1px solid #ddd; list-style: none; @@ -309,7 +291,6 @@ a:focus{ } /* for different pages starts*/ - .post-archive { font-size: 15px; line-height: 2; @@ -323,7 +304,6 @@ a:focus{ } } - #categories { padding: 0; margin: 0; @@ -346,10 +326,8 @@ a:focus{ } } } - /* for different pages ends*/ - /* Date: Mon, 2 Nov 2015 13:01:16 +0800 Subject: [PATCH 054/118] Some minor optimizations. --- README.md | 57 +++++++++++++++++++++++++----------------------- _config.yml | 3 ++- layout/base.jade | 2 +- 3 files changed, 33 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index e85217844..c60ffc97d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -Maupassant -========== +# Maupassant > 大道至简 @@ -12,7 +11,7 @@ A simple Hexo template with great performance on different devices, ported from ## Installation -- Install theme and renderers: +Install theme and renderers: ``` git clone https://github.com/tufu9441/maupassant-hexo.git themes/maupassant @@ -20,17 +19,34 @@ npm install hexo-renderer-sass --save npm install hexo-renderer-jade --save ``` -- Edit `_config.yml` in hexo root, change `theme` to `maupassant`. +Edit `_config.yml` in hexo root, change `theme` to `maupassant`. ## Configuration +Default config: +``` +fancybox: true +duoshuo: #duoshuo_shortname +disqus: #disqus_shortname +swiftype: #swiftype_key +tinysou: #tinysou_key +rss: atom.xml +``` +- fancybox - Enable [Fancybox](http://fancyapps.com/fancybox/) +- duoshuo - [Duoshuo](http://duoshuo.com) shortname +- disqus - [Disqus](https://disqus.com) shortname +- swiftype - [Swiftype Search](https://swiftype.com) key +- tinysou - [Tiny Search](http://tinysou.com) key +- rss - RSS subscription link, learn more in [hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed) + +##Features #### Logo -- You can set a **favicon.ico** for your website, please put it into `source` folder of hexo directory, recommended size: 32px*32px. +You can set a **favicon.ico** for your website, please put it into `source` folder of hexo directory, recommended size: 32px*32px. -- You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `source` folder of hexo directory, recommended size: 114px*114px. +You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `source` folder of hexo directory, recommended size: 114px*114px. #### Blogroll -- You can manage your friendly links in `/themes/maupassant/layout/base.jade` like this: +You can manage your friendly links in `/themes/maupassant/layout/base.jade` like this: ``` .widget @@ -41,14 +57,14 @@ npm install hexo-renderer-jade --save ``` #### Pages -- To customize pages, after creating new folders including `index.md` in `/source`, don't forget to add corresponding contents in `/themes/maupassant/layout/base.jade`: +To customize pages, after creating new folders including `index.md` in `/source`, don't forget to add corresponding contents in `/themes/maupassant/layout/base.jade`: ``` #nav-menu +a_with_current(config.root, __('home'), 'icon-home') +a_with_current(config.archive_dir, __('archive'), 'icon-archive') +a_with_current(config.about_dir, __('about'), 'icon-about') - +a_with_current(config.feed.path, __('rss'), 'icon-rss') + +a_with_current(theme.rss, __('rss'), 'icon-rss') ``` and `_config.yml` of hexo directory. Just follow the format of existing items. @@ -66,16 +82,16 @@ and `_config.yml` of hexo directory. Just follow the format of existing items. skip_render: ``` -- [IcoMoon](https://icomoon.io) icon fonts have been integrated to the nav-menu, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs). +[IcoMoon](https://icomoon.io) icon fonts have been integrated to the nav-menu, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs). #### Abstract -- You can control the abstract of a post shown at index, by either filling a `description:` item in `front-matter` of the `post.md`, or just inserting a `` before your hidden content. +You can control the abstract of a post shown at index, by either filling a `description:` item in `front-matter` of the `post.md`, or just inserting a `` before your hidden content. #### Table of Contents -- TOC in a post can be enabled by adding a `toc: true` item in `front-matter`. +TOC in a post can be enabled by adding a `toc: true` item in `front-matter`. #### Syntax Highlighting -- Highlighted code showcase is supported, please set the `highlight` option in `_config.yml` of hexo directory like this: +Highlighted code showcase is supported, please set the `highlight` option in `_config.yml` of hexo directory like this: ``` highlight: @@ -85,21 +101,8 @@ highlight: tab_replace: ``` -#### Fancybox -- Fancybox can be enabled by setting the fancybox option in theme `_config.yml` to "true". - -``` -fancybox: true -duoshuo: #duoshuo_shortname -disqus: #disqus_shortname -swiftype: #swiftype_key -tinysou: #tinysou_key -``` - -- If you want to disable the fancybox effect on certain images, please add a "nofancybox" class to them. - #### Languages -- Two languages are available for this theme currently, English (en) and Simplified Chinese (zh-CN). Contributions of translating to other languages will be highly appreciated. +Two languages are available for this theme currently, English (en) and Simplified Chinese (zh-CN). Contributions of translating to other languages will be highly appreciated. ## Solutions diff --git a/_config.yml b/_config.yml index 4b5330840..4679264f6 100644 --- a/_config.yml +++ b/_config.yml @@ -2,4 +2,5 @@ fancybox: true duoshuo: #duoshuo_shortname disqus: #disqus_shortname swiftype: #swiftype_key -tinysou: #tinysou_key \ No newline at end of file +tinysou: #tinysou_key +rss: atom.xml diff --git a/layout/base.jade b/layout/base.jade index ec14a0ac4..14790a0a1 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -40,7 +40,7 @@ html +a_with_current(config.root, __('home'), 'icon-home') +a_with_current(config.archive_dir, __('archive'), 'icon-archive') +a_with_current(config.about_dir, __('about'), 'icon-about') - +a_with_current(config.feed.path, __('rss'), 'icon-rss') + +a_with_current(theme.rss, __('rss'), 'icon-rss') #layout.pure-g .pure-u-1.pure-u-md-3-4: .content_container From e97c667e8754dde3be07225f6317b5c2bf4703b4 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 2 Nov 2015 19:28:57 +0800 Subject: [PATCH 055/118] Simplify the method of editing blogroll --- README.md | 19 ++++++++----------- _config.yml | 7 +++++++ layout/base.jade | 6 +++--- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index c60ffc97d..c22d184c0 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,13 @@ disqus: #disqus_shortname swiftype: #swiftype_key tinysou: #tinysou_key rss: atom.xml +links: + - title: site-name1 + url: http://www.example1.com/ + - title: site-name2 + url: http://www.example2.com/ + - title: site-name3 + url: http://www.example3.com/ ``` - fancybox - Enable [Fancybox](http://fancyapps.com/fancybox/) - duoshuo - [Duoshuo](http://duoshuo.com) shortname @@ -38,6 +45,7 @@ rss: atom.xml - swiftype - [Swiftype Search](https://swiftype.com) key - tinysou - [Tiny Search](http://tinysou.com) key - rss - RSS subscription link, learn more in [hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed) +- links - Edit your blogroll here ##Features #### Logo @@ -45,17 +53,6 @@ You can set a **favicon.ico** for your website, please put it into `source` fol You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `source` folder of hexo directory, recommended size: 114px*114px. -#### Blogroll -You can manage your friendly links in `/themes/maupassant/layout/base.jade` like this: - -``` - .widget - .widget-title= __('blogroll') - ul: != link_to('http://example1.com/', 'site-name 1', {external: true}) - ul: != link_to('http://example2.com/', 'site-name 2', {external: true}) - ul: != link_to('http://example3.com/', 'site-name 3', {external: true}) -``` - #### Pages To customize pages, after creating new folders including `index.md` in `/source`, don't forget to add corresponding contents in `/themes/maupassant/layout/base.jade`: diff --git a/_config.yml b/_config.yml index 4679264f6..2244c16b6 100644 --- a/_config.yml +++ b/_config.yml @@ -4,3 +4,10 @@ disqus: #disqus_shortname swiftype: #swiftype_key tinysou: #tinysou_key rss: atom.xml +links: + - title: site-name1 + url: http://www.example1.com/ + - title: site-name2 + url: http://www.example2.com/ + - title: site-name3 + url: http://www.example3.com/ diff --git a/layout/base.jade b/layout/base.jade index 14790a0a1..2a37d657c 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -74,9 +74,9 @@ html | .widget .widget-title= __('blogroll') - ul: != link_to('http://example1.com/', 'site-name 1', {external: true}) - ul: != link_to('http://example2.com/', 'site-name 2', {external: true}) - ul: != link_to('http://example3.com/', 'site-name 3', {external: true}) + - for (var i in theme.links) + ul + a(href='#{theme.links[i].url}' title='#{theme.links[i].title}' target='_blank') #{theme.links[i].title} #footer= '© ' a(href='/', rel='nofollow')= config.title + '.' From 484e91f75ba41b3a257a6e62fe6c99d20c7236bc Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 3 Nov 2015 11:53:30 +0800 Subject: [PATCH 056/118] improve disqus usage --- .travis.yml | 5 + README.md | 9 +- layout/_partial/comments.jade | 23 ++- layout/base.jade | 5 +- layout/index.jade | 5 +- layout/page.jade | 2 +- source/css/style.scss | 8 + test/helpers.js | 42 +++++ test/hexo/.gitignore | 7 + test/hexo/_config.yml | 70 ++++++++ test/hexo/package.json | 22 +++ test/hexo/source/404.md | 20 +++ test/hexo/source/_posts/categories.md | 9 ++ test/hexo/source/_posts/elements.md | 62 +++++++ test/hexo/source/_posts/excerpts.md | 12 ++ test/hexo/source/_posts/gallery-post.md | 19 +++ test/hexo/source/_posts/hello-world.md | 6 + test/hexo/source/_posts/images.md | 13 ++ .../source/_posts/link-post-without-title.md | 5 + test/hexo/source/_posts/link-post.md | 6 + test/hexo/source/_posts/long-title.md | 6 + test/hexo/source/_posts/no-title.md | 5 + test/hexo/source/_posts/tag-plugins.md | 77 +++++++++ test/hexo/source/_posts/tags.md | 9 ++ test/hexo/source/_posts/videos.md | 14 ++ ...55\346\226\207\346\270\254\350\251\246.md" | 18 +++ ...36\343\203\206\343\202\271\343\203\210.md" | 20 +++ test/hexo/source/about/index.md | 9 ++ test/hexo/source/apple-touch-icon.png | Bin 0 -> 1621 bytes test/hexo/source/favicon.ico | Bin 0 -> 1256 bytes .../themes/hexo-theme-maupassant/_config.yml | Bin 0 -> 199824 bytes .../themes/hexo-theme-maupassant/languages | 1 + test/hexo/themes/hexo-theme-maupassant/layout | 1 + test/hexo/themes/hexo-theme-maupassant/source | 1 + test/lib/HexoHelper.js | 14 ++ test/lib/getMeta.js | 26 +++ test/pre-test.sh | 3 + test/test.js | 152 ++++++++++++++++++ 38 files changed, 689 insertions(+), 17 deletions(-) create mode 100644 .travis.yml create mode 100644 test/helpers.js create mode 100644 test/hexo/.gitignore create mode 100644 test/hexo/_config.yml create mode 100644 test/hexo/package.json create mode 100644 test/hexo/source/404.md create mode 100644 test/hexo/source/_posts/categories.md create mode 100644 test/hexo/source/_posts/elements.md create mode 100644 test/hexo/source/_posts/excerpts.md create mode 100644 test/hexo/source/_posts/gallery-post.md create mode 100644 test/hexo/source/_posts/hello-world.md create mode 100644 test/hexo/source/_posts/images.md create mode 100644 test/hexo/source/_posts/link-post-without-title.md create mode 100644 test/hexo/source/_posts/link-post.md create mode 100644 test/hexo/source/_posts/long-title.md create mode 100644 test/hexo/source/_posts/no-title.md create mode 100644 test/hexo/source/_posts/tag-plugins.md create mode 100644 test/hexo/source/_posts/tags.md create mode 100644 test/hexo/source/_posts/videos.md create mode 100644 "test/hexo/source/_posts/\344\270\255\346\226\207\346\270\254\350\251\246.md" create mode 100644 "test/hexo/source/_posts/\346\227\245\346\234\254\350\252\236\343\203\206\343\202\271\343\203\210.md" create mode 100644 test/hexo/source/about/index.md create mode 100644 test/hexo/source/apple-touch-icon.png create mode 100644 test/hexo/source/favicon.ico create mode 100644 test/hexo/themes/hexo-theme-maupassant/_config.yml create mode 120000 test/hexo/themes/hexo-theme-maupassant/languages create mode 120000 test/hexo/themes/hexo-theme-maupassant/layout create mode 120000 test/hexo/themes/hexo-theme-maupassant/source create mode 100644 test/lib/HexoHelper.js create mode 100644 test/lib/getMeta.js create mode 100755 test/pre-test.sh create mode 100644 test/test.js diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..0aabd6c86 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "4.1" +install: + - ./test/pre-test.sh diff --git a/README.md b/README.md index c22d184c0..94b26dfc9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Maupassant +[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](http://choosealicense.com/licenses/mit) + > 大道至简 [Preview](https://www.haomwei.com)|[中文文档](https://www.haomwei.com/technology/maupassant-hexo.html) @@ -19,7 +21,7 @@ npm install hexo-renderer-sass --save npm install hexo-renderer-jade --save ``` -Edit `_config.yml` in hexo root, change `theme` to `maupassant`. +Then change your `theme` setting in `_config.yml` to `maupassant`. ## Configuration Default config: @@ -107,6 +109,11 @@ Two languages are available for this theme currently, English (en) and Simplifie - If you have any trouble in using this theme, please feel free to open an [issue](https://github.com/tufu9441/maupassant-hexo/issues). +## Contributing +All kinds of contributions (enhancements, new features, documentation & code improvements, issues & bugs reporting) are welcome. + +Looking forward to your pull request. + ## Maupassant on other platforms: + Typecho:https://github.com/pagecho/maupassant/ diff --git a/layout/_partial/comments.jade b/layout/_partial/comments.jade index afc621100..e51da834c 100644 --- a/layout/_partial/comments.jade +++ b/layout/_partial/comments.jade @@ -3,16 +3,13 @@ if theme.duoshuo if theme.disqus #disqus_thread - | - |
- | Blog comments powered by Disqus \ No newline at end of file + script. + var disqus_shortname = '#{theme.disqus}'; + var disqus_identifier = '#{page.path}'; + var disqus_title = '#{page.title}'; + var disqus_url = '#{config.url}/#{page.path}'; + (function() { + var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; + dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); + })(); diff --git a/layout/base.jade b/layout/base.jade index 2a37d657c..1e4b72f84 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -71,7 +71,7 @@ html if theme.disqus .widget .widget-title= __('recent_comments') - | + script(type='text/javascript' src='https://#{theme.disqus}.disqus.com/recent_comments_widget.js?num_items=5&hide_avatars=1&avatar_size=32&excerpt_length=20&hide_mods=1') .widget .widget-title= __('blogroll') - for (var i in theme.links) @@ -121,6 +121,9 @@ html || document.getElementsByTagName('body')[0]).appendChild(ds); })(); + if theme.disqus + script(id='dsq-count-scr' src='//haomwei.disqus.com/count.js' async) + if theme.tinysou script. var option = { diff --git a/layout/index.jade b/layout/index.jade index 74a608ede..4074347c6 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -12,7 +12,10 @@ block content a(href=url_for(post.path)) +title(post) .post-meta= post.date.format(config.date_format) - span.ds-thread-count(data-thread-key=post.path) + if theme.duoshuo + span.ds-thread-count(data-thread-key=post.path) + if theme.disqus + span.disqus-comment-count(data-disqus-identifier=post.path) if post.description .post-content != post.description diff --git a/layout/page.jade b/layout/page.jade index 61ac42c34..d29c8f591 100644 --- a/layout/page.jade +++ b/layout/page.jade @@ -2,7 +2,7 @@ extends base block title title= page.title + " | " + config.title block content - .post.post-page + .post h1.post-title= page.title .post-content != page.content diff --git a/source/css/style.scss b/source/css/style.scss index 2a799866e..06cba0ec9 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -188,6 +188,14 @@ a:focus{ display: inline; text-indent: .15em; } + .disqus-comment-count { + padding: 0; + margin: 12px 0 0; + color: #999; + float: right; + display: inline; + text-indent: .15em; + } .post-content { clear: left; font-size: 15px; diff --git a/test/helpers.js b/test/helpers.js new file mode 100644 index 000000000..508a1a59e --- /dev/null +++ b/test/helpers.js @@ -0,0 +1,42 @@ +var HexoHelper = require('./lib/HexoHelper'), + chai = require('chai'); + +var hexoInstallPath = process.cwd() + '/test/hexo/'; // slash required + +var helper = new HexoHelper(hexoInstallPath); + +before(function(done){ + helper.hexo.init() + .then(function(){ + return helper.hexo.load(); + }) + .then(function(){ + return done(); + }); +}); + +describe('Helpers', function(){ + it('plural.js', function(){ + var pluralData = ['заметка', 'заметки', 'заметок']; // testing via russian + + var p9r = helper.hexo.extend.helper.store.plural; // this a hexo helper, loaded from scripts/ directory + + p9r.should.be.a('function'); // helper is loaded ok + + p9r(1, pluralData).should.equal('заметка'); + p9r(2, pluralData).should.equal('заметки'); + p9r(8, pluralData).should.equal('заметок'); + }); + + it('tag_post_count.js', function(){ + var tag_post_count = helper.hexo.extend.helper.store.tag_post_count; + + tag_post_count.should.be.a('function'); // helper is loaded ok + + tag_post_count('hello').should.equal(2); + tag_post_count('world').should.equal(1); + + tag_post_count('empty-tag').should.equal(0); // should just return 0, no errors + }); +}); + diff --git a/test/hexo/.gitignore b/test/hexo/.gitignore new file mode 100644 index 000000000..063b0e4ce --- /dev/null +++ b/test/hexo/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +Thumbs.db +db.json +*.log +node_modules/ +public/ +.deploy*/ \ No newline at end of file diff --git a/test/hexo/_config.yml b/test/hexo/_config.yml new file mode 100644 index 000000000..7f947216b --- /dev/null +++ b/test/hexo/_config.yml @@ -0,0 +1,70 @@ +# Hexo Configuration +## Docs: http://hexo.io/docs/configuration.html +## Source: https://github.com/hexojs/hexo/ + +# Site +title: Hexo +subtitle: The test blog for testing maupassant-hexo +description: Test blog description herer +author: Butcher +language: zh-CN + +# URL +## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' +url: http://localhost +root: / +permalink: :category/:title.html +permalink_defaults: + +# Directory +source_dir: source +public_dir: public +tag_dir: tags +about_dir: about/ +archive_dir: archives/ +category_dir: categories +code_dir: downloads/code +i18n_dir: :lang +skip_render: + +# Writing +new_post_name: :title.md # File name of new posts +default_layout: post +titlecase: false # Transform title into titlecase +external_link: true # Open external links in new tab +filename_case: 0 +render_drafts: false +post_asset_folder: false +relative_link: false +future: true +highlight: + enable: true + line_number: true + tab_replace: + +# Category & Tag +default_category: uncategorized +category_map: +tag_map: + +# Date / Time format +## Hexo uses Moment.js to parse and display date +## You can customize the date format as defined in +## http://momentjs.com/docs/#/displaying/format/ +date_format: YYYY-MM-DD +time_format: HH:mm:ss + +# Pagination +## Set per_page to 0 to disable pagination +per_page: 8 +pagination_dir: page + +# Extensions +## Plugins: http://hexo.io/plugins/ +## Themes: http://hexo.io/themes/ +theme: hexo-theme-maupassant + +# Deployment +## Docs: http://hexo.io/docs/deployment.html +deploy: + type: diff --git a/test/hexo/package.json b/test/hexo/package.json new file mode 100644 index 000000000..c4423d4e0 --- /dev/null +++ b/test/hexo/package.json @@ -0,0 +1,22 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "private": true, + "hexo": { + "version": "3.1.1" + }, + "dependencies": { + "hexo": "^3.0.0", + "hexo-generator-archive": "^0.1.0", + "hexo-generator-category": "^0.1.0", + "hexo-generator-feed": "^1.0.1", + "hexo-generator-index": "^0.1.0", + "hexo-generator-tag": "^0.1.0", + "hexo-renderer-ejs": "^0.1.0", + "hexo-renderer-jade": "^0.1.0", + "hexo-renderer-marked": "^0.2.4", + "hexo-renderer-sass": "^0.1.2", + "hexo-renderer-stylus": "^0.2.3", + "hexo-server": "^0.1.2" + } +} diff --git a/test/hexo/source/404.md b/test/hexo/source/404.md new file mode 100644 index 000000000..03d20674d --- /dev/null +++ b/test/hexo/source/404.md @@ -0,0 +1,20 @@ +title: 404 +layout: page + +--- +###对不起,无法找到该页。 + +页面将在秒内自动跳转回[首页](https://www.haomwei.com) + + + diff --git a/test/hexo/source/_posts/categories.md b/test/hexo/source/_posts/categories.md new file mode 100644 index 000000000..6af796cc8 --- /dev/null +++ b/test/hexo/source/_posts/categories.md @@ -0,0 +1,9 @@ +title: Categories +date: 2013-12-24 23:30:09 +categories: +- Foo +- Bar +- Baz +--- + +This post contains 3 categories. Make sure your theme can display all of the categories. \ No newline at end of file diff --git a/test/hexo/source/_posts/elements.md b/test/hexo/source/_posts/elements.md new file mode 100644 index 000000000..428b27c5e --- /dev/null +++ b/test/hexo/source/_posts/elements.md @@ -0,0 +1,62 @@ +title: Elements +date: 2013-12-24 23:29:08 +tags: +--- + +The purpose of this post is to help you make sure all of HTML elements can display properly. If you use CSS reset, don't forget to redefine the style by yourself. + +--- + +# Heading 1 + +## Heading 2 + +### Heading 3 + +#### Heading 4 + +##### Heading 5 + +###### Heading 6 + +--- + +## Paragraph + +Lorem ipsum dolor sit amet, [test link]() consectetur adipiscing elit. **Strong text** pellentesque ligula commodo viverra vehicula. *Italic text* at ullamcorper enim. Morbi a euismod nibh. Underline text non elit nisl. ~~Deleted text~~ tristique, sem id condimentum tempus, metus lectus venenatis mauris, sit amet semper lorem felis a eros. Fusce egestas nibh at sagittis auctor. Sed ultricies ac arcu quis molestie. Donec dapibus nunc in nibh egestas, vitae volutpat sem iaculis. Curabitur sem tellus, elementum nec quam id, fermentum laoreet mi. Ut mollis ullamcorper turpis, vitae facilisis velit ultricies sit amet. Etiam laoreet dui odio, id tempus justo tincidunt id. Phasellus scelerisque nunc sed nunc ultricies accumsan. + +Interdum et malesuada fames ac ante ipsum primis in faucibus. `Sed erat diam`, blandit eget felis aliquam, rhoncus varius urna. Donec tellus sapien, sodales eget ante vitae, feugiat ullamcorper urna. Praesent auctor dui vitae dapibus eleifend. Proin viverra mollis neque, ut ullamcorper elit posuere eget. + +> Praesent diam elit, interdum ut pulvinar placerat, imperdiet at magna. + +Maecenas ornare arcu at mi suscipit, non molestie tortor ultrices. Aenean convallis, diam et congue ultricies, erat magna tincidunt orci, pulvinar posuere mi sapien ac magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent vitae placerat mauris. Nullam laoreet ante posuere tortor blandit auctor. Sed id ligula volutpat leo consequat placerat. Mauris fermentum dolor sed augue malesuada sollicitudin. Vivamus ultrices nunc felis, quis viverra orci eleifend ut. Donec et quam id urna cursus posuere. Donec elementum scelerisque laoreet. + +## List Types + +### Definition List (dl) + +

Definition List Title
This is a definition list division.
+ +### Ordered List (ol) + +1. List Item 1 +2. List Item 2 +3. List Item 3 + +### Unordered List (ul) + +- List Item 1 +- List Item 2 +- List Item 3 + +## Table + +| Table Header 1 | Table Header 2 | Table Header 3 | +| - | - | - | +| Division 1 | Division 2 | Division 3 | +| Division 1 | Division 2 | Division 3 | +| Division 1 | Division 2 | Division 3 | + +## Misc Stuff - abbr, acronym, sub, sup, etc. + +Lorem superscript dolor subscript amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. cite. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. NBA Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. AVE \ No newline at end of file diff --git a/test/hexo/source/_posts/excerpts.md b/test/hexo/source/_posts/excerpts.md new file mode 100644 index 000000000..0c2d95a1c --- /dev/null +++ b/test/hexo/source/_posts/excerpts.md @@ -0,0 +1,12 @@ +title: Excerpts +date: 2013-12-25 00:23:23 +tags: +--- + +The following contents should be invisible in home/archive page. + + + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce eget urna vitae velit eleifend interdum at ac nisi. In nec ligula lacus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed eu cursus erat, ut dapibus quam. Aliquam eleifend dolor vitae libero pharetra adipiscing. Etiam adipiscing dolor a quam tempor, eu convallis nulla varius. Aliquam sollicitudin risus a porta aliquam. Ut nec velit dolor. Proin eget leo lobortis, aliquam est sed, mollis mauris. Fusce vitae leo pretium massa accumsan condimentum. Fusce malesuada gravida lectus vel vulputate. Donec bibendum porta nibh ut aliquam. + +Sed lorem felis, congue non fringilla eu, aliquam eu eros. Curabitur orci libero, mollis sed semper vitae, adipiscing in lectus. Aenean non egestas odio. Donec sollicitudin nisi quis lorem gravida, in pharetra mauris fringilla. Duis sit amet faucibus dolor, id aliquam neque. In egestas, odio gravida tempor dictum, mauris felis faucibus purus, sit amet commodo lacus diam vitae est. Ut ut quam eget massa semper sodales. Aenean non ipsum cursus, blandit lectus in, ornare odio. Curabitur ultrices porttitor vulputate. \ No newline at end of file diff --git a/test/hexo/source/_posts/gallery-post.md b/test/hexo/source/_posts/gallery-post.md new file mode 100644 index 000000000..63a14687d --- /dev/null +++ b/test/hexo/source/_posts/gallery-post.md @@ -0,0 +1,19 @@ +title: Gallery Post +date: 2013-12-25 00:16:18 +photos: +- /gallery-post/wallpaper-2572384.jpg +- /gallery-post/wallpaper-2311325.jpg +- /gallery-post/wallpaper-878514.jpg +- http://placehold.it/350x150.jpg +--- + +This post contains 4 photos: + +- Widescreen wallpaper +- Portrait photo +- Dual widescreen wallpaper +- Small photo + +All photos should be displayed properly. + +*From [Wallbase.cc](http://wallbase.cc)* \ No newline at end of file diff --git a/test/hexo/source/_posts/hello-world.md b/test/hexo/source/_posts/hello-world.md new file mode 100644 index 000000000..172793099 --- /dev/null +++ b/test/hexo/source/_posts/hello-world.md @@ -0,0 +1,6 @@ +title: Hello World +date: 2013-12-24 17:49:32 +tags: +--- + +Welcome to [Hexo](http://zespia.tw/hexo)! This is your very first post. Check [documentation](http://zespia.tw/hexo/docs) to learn how to use. \ No newline at end of file diff --git a/test/hexo/source/_posts/images.md b/test/hexo/source/_posts/images.md new file mode 100644 index 000000000..3354bc686 --- /dev/null +++ b/test/hexo/source/_posts/images.md @@ -0,0 +1,13 @@ +title: Images +date: 2013-12-26 22:46:49 +--- + +This is a image test post. + +![](/gallery-post/wallpaper-2572384.jpg) + +![Caption](/gallery-post/wallpaper-2311325.jpg) + +![](/gallery-post/wallpaper-878514.jpg) + +![Small Picture](http://placehold.it/350x150.jpg) \ No newline at end of file diff --git a/test/hexo/source/_posts/link-post-without-title.md b/test/hexo/source/_posts/link-post-without-title.md new file mode 100644 index 000000000..4a11a1389 --- /dev/null +++ b/test/hexo/source/_posts/link-post-without-title.md @@ -0,0 +1,5 @@ +date: 2013-12-24 23:44:13 +link: http://www.google.com/ +--- + +This is a link post without a title. The title should be the link with or without protocol. Clicking on the link should open [Google](http://www.google.com/) in a new tab or window. \ No newline at end of file diff --git a/test/hexo/source/_posts/link-post.md b/test/hexo/source/_posts/link-post.md new file mode 100644 index 000000000..5a9a106b3 --- /dev/null +++ b/test/hexo/source/_posts/link-post.md @@ -0,0 +1,6 @@ +title: Link Post +date: 2013-12-24 23:30:04 +link: http://www.google.com/ +--- + +This is a link post. Clicking on the link should open [Google](http://www.google.com/) in a new tab or window. \ No newline at end of file diff --git a/test/hexo/source/_posts/long-title.md b/test/hexo/source/_posts/long-title.md new file mode 100644 index 000000000..396e717dc --- /dev/null +++ b/test/hexo/source/_posts/long-title.md @@ -0,0 +1,6 @@ +title: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam justo turpis, tincidunt ac convallis id. +date: 2013-12-24 23:31:06 +tags: +--- + +This post has a long title. Make sure the title displayed right. \ No newline at end of file diff --git a/test/hexo/source/_posts/no-title.md b/test/hexo/source/_posts/no-title.md new file mode 100644 index 000000000..86393c04a --- /dev/null +++ b/test/hexo/source/_posts/no-title.md @@ -0,0 +1,5 @@ +date: 2013-12-25 22:57:49 +tags: +--- + +This post doesn't have a title. Make sure it's accessible. \ No newline at end of file diff --git a/test/hexo/source/_posts/tag-plugins.md b/test/hexo/source/_posts/tag-plugins.md new file mode 100644 index 000000000..dd69524de --- /dev/null +++ b/test/hexo/source/_posts/tag-plugins.md @@ -0,0 +1,77 @@ +title: Tag Plugins +date: 2013-12-25 00:14:39 +tags: +--- + +This post is used for testing tag plugins. See [docs](http://zespia.tw/hexo/docs/tag-plugins.html) for more info. + +## Block Quote + +### Normal blockquote + +> Praesent diam elit, interdum ut pulvinar placerat, imperdiet at magna. + +### Quote from a book + +{% blockquote David Levithan, Wide Awake %} +Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy. +{% endblockquote %} + +### Quote from Twitter + +{% blockquote @DevDocs https://twitter.com/devdocs/status/356095192085962752 %} +NEW: DevDocs now comes with syntax highlighting. http://devdocs.io +{% endblockquote %} + +### Quote from an article on the web + +{% blockquote Seth Godin http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html Welcome to Island Marketing %} +Every interaction is both precious and an opportunity to delight. +{% endblockquote %} + +## Code Block + +### Normal code block + +``` +alert('Hello World!'); +``` + +### With caption + +{% codeblock Array.map %} +array.map(callback[, thisArg]) +{% endcodeblock %} + +### With caption and URL + +{% codeblock .compact http://underscorejs.org/#compact Underscore.js %} +.compact([0, 1, false, 2, ‘’, 3]); +=> [1, 2, 3] +{% endcodeblock %} + +### Gist + +{% gist 996818 %} + +### jsFiddle + +{% jsfiddle ccWP7 %} + +## Pullquote + +### Left + +{% pullquote left %} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +{% endpullquote %} + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus molestie arcu, et fringilla mauris placerat ac. Nullam luctus bibendum risus. Ut cursus sed ipsum feugiat egestas. Suspendisse elementum, velit eu consequat consequat, augue lorem dapibus libero, eget pulvinar dolor est sit amet nulla. Suspendisse a porta tortor, et posuere mi. Pellentesque ultricies, mi quis volutpat malesuada, erat felis vulputate nisl, ac congue ante tortor ut ante. Proin aliquam sem vel mauris tincidunt, eget scelerisque tortor euismod. Nulla tincidunt enim nec commodo dictum. Mauris id sapien et orci gravida luctus id ut dui. In vel vulputate odio. Duis vel turpis molestie, scelerisque enim eu, lobortis eros. Cras at ipsum gravida, sagittis ante vel, viverra tellus. Nunc mauris turpis, elementum ullamcorper nisl pretium, ultrices cursus justo. Mauris porttitor commodo eros, ac ornare orci interdum in. Cras fermentum cursus leo sed mattis. In dignissim lorem sem, sit amet elementum mauris venenatis ac. + +### Right + +{% pullquote right %} +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +{% endpullquote %} + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ligula justo, lobortis sit amet semper vel, dignissim sit amet libero. Praesent ac tempus ligula. Maecenas at gravida odio. Etiam tristique volutpat lacus eu faucibus. Donec non tempus arcu. Phasellus adipiscing, mauris nec mollis egestas, ipsum nunc auctor velit, et rhoncus lorem ipsum at ante. Praesent et sem in velit volutpat auctor. Duis vel mauris nulla. Maecenas mattis interdum ante, quis sagittis nibh cursus et. Nulla facilisi. Morbi convallis gravida tortor, ut fermentum enim gravida et. Nunc vel dictum nisl, non ultrices libero. Proin vestibulum felis eget orci consectetur lobortis. Vestibulum augue nulla, iaculis vitae augue vehicula, dignissim ultrices libero. Sed imperdiet urna et quam ultrices tincidunt nec ac magna. Etiam vel pharetra elit. \ No newline at end of file diff --git a/test/hexo/source/_posts/tags.md b/test/hexo/source/_posts/tags.md new file mode 100644 index 000000000..7ec8146ec --- /dev/null +++ b/test/hexo/source/_posts/tags.md @@ -0,0 +1,9 @@ +title: Tags +date: 2013-12-24 23:29:53 +tags: +- Foo +- Bar +- Baz +--- + +This post contains 3 tags. Make sure your theme can display all of the tags. \ No newline at end of file diff --git a/test/hexo/source/_posts/videos.md b/test/hexo/source/_posts/videos.md new file mode 100644 index 000000000..e1eefc15a --- /dev/null +++ b/test/hexo/source/_posts/videos.md @@ -0,0 +1,14 @@ +title: Videos +date: 2013-12-25 00:19:15 +tags: +--- + +This is a video test post. + +**Youtube** + +{% youtube TIbZDRXM-Tg %} + +**Vimeo** + +{% vimeo 82090131 %} \ No newline at end of file diff --git "a/test/hexo/source/_posts/\344\270\255\346\226\207\346\270\254\350\251\246.md" "b/test/hexo/source/_posts/\344\270\255\346\226\207\346\270\254\350\251\246.md" new file mode 100644 index 000000000..3d1c90fdc --- /dev/null +++ "b/test/hexo/source/_posts/\344\270\255\346\226\207\346\270\254\350\251\246.md" @@ -0,0 +1,18 @@ +title: 中文測試 +date: 2013-12-24 23:31:30 +tags: +--- + +This is a Chinese test post. + +善我王上魚、產生資西員合兒臉趣論。畫衣生這著爸毛親可時,安程幾?合學作。觀經而作建。都非子作這!法如言子你關!手師也。 + +以也座論頭室業放。要車時地變此親不老高小是統習直麼調未,行年香一? + +就竟在,是我童示讓利分和異種百路關母信過明驗有個歷洋中前合著區亮風值新底車有正結,進快保的行戰從:弟除文辦條國備當來際年每小腳識世可的的外的廣下歌洲保輪市果底天影;全氣具些回童但倒影發狀在示,數上學大法很,如要我……月品大供這起服滿老?應學傳者國:山式排只不之然清同關;細車是!停屋常間又,資畫領生,相們制在?公別的人寫教資夠。資再我我!只臉夫藝量不路政吃息緊回力之;兒足灣電空時局我怎初安。意今一子區首者微陸現際安除發連由子由而走學體區園我車當會,經時取頭,嚴了新科同?很夫營動通打,出和導一樂,查旅他。坐是收外子發物北看蘭戰坐車身做可來。道就學務。 + +國新故。 + +> 工步他始能詩的,裝進分星海演意學值例道……於財型目古香亮自和這乎?化經溫詩。只賽嚴大一主價世哥受的沒有中年即病行金拉麼河。主小路了種就小為廣不? + +*From [亂數假文產生器 - Chinese Lorem Ipsum](http://www.richyli.com/tool/loremipsum/)* \ No newline at end of file diff --git "a/test/hexo/source/_posts/\346\227\245\346\234\254\350\252\236\343\203\206\343\202\271\343\203\210.md" "b/test/hexo/source/_posts/\346\227\245\346\234\254\350\252\236\343\203\206\343\202\271\343\203\210.md" new file mode 100644 index 000000000..3383912e6 --- /dev/null +++ "b/test/hexo/source/_posts/\346\227\245\346\234\254\350\252\236\343\203\206\343\202\271\343\203\210.md" @@ -0,0 +1,20 @@ +title: 日本語テスト +date: 2013-12-24 23:33:26 +tags: +--- + +This is a Japanese test post. + +私は昨日ついにその助力家というのの上よりするたなけれ。 + +最も今をお話団はちょうどこの前後なかろでくらいに困りがいるたをは帰着考えたなかって、そうにもするでうたらない。 + +がたを知っないはずも同時に九月をいよいよたありた。 + +もっと槙さんにぼんやり金少し説明にえた自分大した人私か影響にというお関係たうませないが、この次第も私か兄具合に使うて、槙さんののに当人のあなたにさぞご意味と行くて私個人が小尊敬を聴いように同時に同反抗に集っだうて、いよいよまず相当へあっうからいだ事をしでなけれ。 + +> それでそれでもご時日をしはずはたったいやと突き抜けるますて、その元がは行ったてという獄を尽すていけですた。 + +この中道具の日その学校はあなたごろがすまなりかとネルソンさんの考えるですん、辺の事実ないというご盲従ありたですと、爺さんのためが薬缶が結果までの箸の当時してならて、多少の十月にためからそういう上からとにかくしましないと触れべきものたで、ないうですと多少お人達したのでたた。 + +*From [すぐ使えるダミーテキスト - 日本語 Lorem ipsum](http://lipsum.sugutsukaeru.jp/index.cgi)* \ No newline at end of file diff --git a/test/hexo/source/about/index.md b/test/hexo/source/about/index.md new file mode 100644 index 000000000..c036cc40d --- /dev/null +++ b/test/hexo/source/about/index.md @@ -0,0 +1,9 @@ +title: 关于 +layout: page + +--- +Nickname: Butcher + +Email: i@haomwei.com + + diff --git a/test/hexo/source/apple-touch-icon.png b/test/hexo/source/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cff5e357e7183f35e09dd06293d6caa5d696e717 GIT binary patch literal 1621 zcmah|4Nw$i7+yQQP&~Dq3V)`S1yQ2A{ee5Ujgx@AlM{~cI7b*uU3NcU<8F7|Tf74X zMJ9F9G&mD*9AYrjkt}o8A3>_IaN7 z{obE9iV7E)Ce56LAc)DG$9Una=x>YxevcTcUxw2R)mfqzOXX^aRREIBOJx9c2iOYW z1uS2)QUjR?Vz?&wO4Jfh0nJGP3#(%+;eZU;2$GoRhh=|P$*;xrCKDV0w?WuyRJb|W{5BcYeba|o5f(lr~(6moFd4oAc?51 z$d*afssn?bj$9!iM`gv}{V>6R;bB(BNeiK0X&A_JQJh?@_=k=291i>-07Nwiv1Akr zqvY{K;bY1M0#S5O^@0a?8xtM$)yM$%f}m8ba4^Z`3A$S{ovQ#=l@y;O`9~vOR4J)a zuu_uI++rI#&%<(ps2?Oh!~hJd0tW`;Z#5HEGfDVJ7<`H*?I}bCO%NkckHib*HUEJ^ z1eHOPssDn)p^@`RrMKeGVRsr6n zNC9*>8?-QnFLu&J5w3I>)PrLzUq-n67`}{fGl)lWap(-L*XKj^I(h_~Kwn0?4{oCU z3q;to3hd75=GJqtvyDXsKBviKg3IZK!}V}_O!XEP-$Sl^L@Y#*as6&4+ZXN|JfB}? zh@WgIy7qVLuU#F7IDf2N&2HIzY0iw_;@TSfV;lOs#?GBh_R=p~=I%XfJpcUUWv5?X zJL`6f+&JOX;FVn$mTvugeB9Q%%i`81<5P|wzkYPei4XqxHs+@r-pY-}w!81$Ha*!t z+vr$+@QDllXI_2hn-f)Uo!zs%D>U)#nmeZ!t!c|%IKQLbeR<|<8y8>wZYtGrtvlh* z=2zbBE}n-j>6)~DFM4uUx4q2iYOPOA_B3xwN*y?$jW69d#m|3=3QfO&X|wr;Gi8g1 z#_c!SH2LthMrP>4V_9o%G@slaEN$;$o?gGZqk!uD;jSFfp4ybZ(>#=d_Qtkhb=7B+ zCU&MB9hh?>??+_2xnx1!Z1m=fi#FcUoR;>4p3hPeozxMsH!{sFHuax5Uia0-#iy3$ zJ&VpT_BLm}M9tfhq+S1Bo8@LNt=8frkHbItb(Y`v?>6wt)b{wAhQStQcc90RIJIfB zBj)nz!O5B-af3FnBHX|$tA)8Yr-#yyW}e%D9_(SVO6zLBaJOtJs85`==a9v_X4TJ; z)=viJ;PwSW7b9w9U(>Bfulr+7ZU1^)B;~+qQ*!6F;+3&l!vLzyJ#c=4_26yaj&*;P mHsF literal 0 HcmV?d00001 diff --git a/test/hexo/source/favicon.ico b/test/hexo/source/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7c6f507a92bbd3ced5c6059d44bb5626d132ab65 GIT binary patch literal 1256 zcmeAS@N?(olHy`uVBq!ia0vp^(m<@h!3-p?Z2!y&q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffc1+hD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT zY?Xj6g?J&i0B&qvF*KNf0j6J(SfFpHX8`gNOrftYexnUy@&(kzb(T9Bihb5uTZsl3!k| z30CjxYvq|&T#}fVoa*Ufs{}MbFEca6%FV*q+0xL}+11d|)X>n?#L>;b$j#W?)zs0z z(bCew1*X>}Ke;qFHLnDwHwB^B1*cw6Qpha;+U$~Alv$RV;#QQOs{r=0RVHq?IN~%9 zsy79)~z+sR1flUfBfi?v!(gMIkOWZ!|E!^4(;FH-P)ooA^QLS|Fg>C z>wtO%N`m}?fm~$3@IX0Ml7WGd#nZ(xq~cc1<(u1D6*w3I=D0uj|Nq;fXGhygD>QF6 zCb6x#7`@K!rNp|`uV-Ys`0+PyYgoiu9<^U#MxCv{#OiV$59>u=>-ObcyWx;k!eU(= zx}596OxwPW%{dVQT~k;VZBjFwHP^L9VS-Rv)SaXyBH<@nH=Nn1oxH4}cx|U&x5nL& zmG6^hW@g!}>x`A|ZgjbQYeS&Hdsfz6PkFm*%&dKH)kNNNYtg*7Mr^C;(M>v&o$PzB zNElDg=ibDh^WEy~|K#{$(Rt&g5r54&MmNdn@su(}2O$P2<@K%^%L7vd7ca&t;uc GLK6TYDakVc literal 0 HcmV?d00001 diff --git a/test/hexo/themes/hexo-theme-maupassant/_config.yml b/test/hexo/themes/hexo-theme-maupassant/_config.yml new file mode 100644 index 0000000000000000000000000000000000000000..b8d2f40e566f0743dfafd9f4e71a988d61a1782e GIT binary patch literal 199824 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

    )RjwOv}gKKPb%mx>>loF4R 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 literal 0 HcmV?d00001 diff --git a/test/hexo/themes/hexo-theme-maupassant/languages b/test/hexo/themes/hexo-theme-maupassant/languages new file mode 120000 index 000000000..f9705ffb1 --- /dev/null +++ b/test/hexo/themes/hexo-theme-maupassant/languages @@ -0,0 +1 @@ +../../../../languages \ No newline at end of file diff --git a/test/hexo/themes/hexo-theme-maupassant/layout b/test/hexo/themes/hexo-theme-maupassant/layout new file mode 120000 index 000000000..ade2fe147 --- /dev/null +++ b/test/hexo/themes/hexo-theme-maupassant/layout @@ -0,0 +1 @@ +../../../../layout \ No newline at end of file diff --git a/test/hexo/themes/hexo-theme-maupassant/source b/test/hexo/themes/hexo-theme-maupassant/source new file mode 120000 index 000000000..17056a9b2 --- /dev/null +++ b/test/hexo/themes/hexo-theme-maupassant/source @@ -0,0 +1 @@ +../../../../source \ No newline at end of file diff --git a/test/lib/HexoHelper.js b/test/lib/HexoHelper.js new file mode 100644 index 000000000..e426213c5 --- /dev/null +++ b/test/lib/HexoHelper.js @@ -0,0 +1,14 @@ +var Hexo = require('hexo'), + del = require('del'); + + +function HexoHelper(hexoInstallPath){ + this.hexoInstallPath = hexoInstallPath; + this.hexo = new Hexo(hexoInstallPath, {}); +} + +HexoHelper.prototype.cleanPublic = function(){ + return del.sync(this.hexoInstallPath + '/public/*'); +}; + +module.exports = HexoHelper; diff --git a/test/lib/getMeta.js b/test/lib/getMeta.js new file mode 100644 index 000000000..18347f6fb --- /dev/null +++ b/test/lib/getMeta.js @@ -0,0 +1,26 @@ +module.exports = function ($page){ + var metas = {}; + + $page('meta').each(function(){ + var $this = $page(this); + + var findMetaKey = function(possibleKeys){ + var foundKey; + possibleKeys.forEach(function(i){ + if($this.attr(i) && $this.attr(i).length){ + foundKey = $this.attr(i); + return; + } + }); + return foundKey; + }; + var key = findMetaKey([ + 'http-equiv', + 'property', + 'name', + ]); + + metas[key] = $this.attr('content'); + }); + return metas; +}; diff --git a/test/pre-test.sh b/test/pre-test.sh new file mode 100755 index 000000000..6abeab5ae --- /dev/null +++ b/test/pre-test.sh @@ -0,0 +1,3 @@ +#/usr/bin/env sh +cd test/hexo +npm install \ No newline at end of file diff --git a/test/test.js b/test/test.js new file mode 100644 index 000000000..abc7a41d2 --- /dev/null +++ b/test/test.js @@ -0,0 +1,152 @@ +var HexoHelper = require('./lib/HexoHelper'), + chai = require('chai'), + should = chai.should(), + w3c = require('w3cjs'), + fs = require('fs'), + getMeta = require('./lib/getMeta'), + cheerio = require('cheerio'); + +var skipW3c = false; +var skipGenerate = false; + +var w3cTimeout = 10000; // ms + +var hexoInstallPath = process.cwd() + '/test/hexo/'; // slash required + +var path = function(name){ + return hexoInstallPath + 'public/' + name; +}; +var $load = function(file){ + return cheerio.load(fs.readFileSync(path(file)), {xmlMode: true}); +}; + +var $pages = {}; + +var load$pages = function(){ + $pages.home = $load('index.html'); + $pages.firstPost = $load('default/hello-world/index.html'); + $pages.secondPost = $load('default/hello/index.html'); + $pages.firstTagPage = $load('tags/big-ammount-of-similar-posts/index.html'); + $pages.secondTagPage = $load('tags/big-ammount-of-similar-posts/page/2/index.html'); + + Object.keys($pages).forEach(function(i){ // loading meta (cheerio can not select meta tags) + $pages[i].meta = getMeta($pages[i]); + }); +}; + +var helper = new HexoHelper(hexoInstallPath); + +before(function(done){ + + if(!skipGenerate){ + + // setup a hexo dir may be sloow + this.timeout(15000); + helper.hexo.init().then(function(){ + return helper.hexo.load(); + }) + .then(function(){ + helper.cleanPublic(); + return helper.hexo.call('clean', {}); + }) + .then(function(){ + return helper.hexo.call('generate', {}); + }) + .then(function(){ + load$pages(); + return done(); + }); + } + else{ + load$pages(); + done(); + } +}); + +describe('Home page', function(){ + if(!skipW3c){ + it('is w3c valid', function(done){ + + this.timeout(w3cTimeout); + + w3c.validate({ + file: path('index.html'), + callback: function (result){ + console.log(result.messages); + result.messages.should.not.have.length.above(2); // By default, w3c gives two warning messages + done(); + } + }); + }); + } + it('has valid RSS link', function(){ + $pages.home('link[rel="alternate"]').attr('href').should.be.eql('/rss/index.xml'); // тесты на HTML ебашить так. + }); + it('has no
    tags (scripts/strip-br.js)', function(){ + $pages.home('br').length.should.equal(0); + }); +}); + +describe('Post page', function(){ + if(!skipW3c){ + it('is w3c valid', function(done){ + + this.timeout(w3cTimeout); + + w3c.validate({ + file: path('default/hello-world/index.html'), + callback: function(result){ + console.log(result.messages); + result.messages.should.not.have.length.above(2); // By default, w3c gives two warning messages + done(); + } + }); + }); + } +}); +describe('Tag page', function(){ + it('Next tag page post count', function(){ + var nextPageCaption = $pages.firstTagPage('section.bottom.pagination>a').text(); + var nextPageCount = nextPageCaption.match(/\d+/)[0]; + nextPageCount.should.be.equal('2'); + }); + it('Previous tag page post count', function(){ + var prevPageCaption = $pages.secondTagPage('section.top.pagination>a').text(); + var prevPageCount = prevPageCaption.match(/\d+/)[0]; + prevPageCount.should.be.equal(helper.hexo.config.per_page.toString()); + }); + it('Next archive page post count', function(){ + var nextPageCaption = $pages.home('section.bottom.pagination>a').text(); + var nextPageCount = nextPageCaption.match(/\d+/)[0]; + nextPageCount.should.be.equal('4'); + }); +}); + +describe('opengraph', function(){ + it('og:url', function(){ + $pages.home.meta['og:url'].should.be.equal('http://localhost/index.html'); + $pages.firstPost.meta['og:url'].should.be.equal('http://localhost/default/hello-world/index.html'); + }); + it('fb:admin_id', function(){ + $pages.home.meta['fb:admin_id'].should.be.equal('100500'); + $pages.firstPost.meta.should.not.have.property('fb:admin_id'); // fb:admin_id is intended to be at home page only + }); + it('og:image', function(){ + $pages.secondPost.meta['og:image'].should.be.equal('http://localhost/default/hello/test.png'); + }); + it('og:type === "article"', function(){ + $pages.home.meta.should.not.have.property('og:type'); + $pages.firstTagPage.should.not.have.property('og:type'); // og_type inteded to be only at post page + $pages.firstPost.meta['og:type'].should.be.equal('article'); + $pages.firstPost.meta['article:author'].should.be.equal('https://facebook.com/zukerman'); + }); + it('og:description', function(){ + $pages.home.meta['og:description'].should.be.equal('Test blog description herer'); // default blog description + $pages.firstPost.meta['og:description'].should.be.equal('First post custom description'); // custom description via front-matter + $pages.secondPost.meta['og:description'].should.be.equal('Second post og:description'); // custom og:description via front-matter + }); + it('og:title', function(){ + $pages.home.meta['og:title'].should.be.equal('Hexo'); // default title in _config.xml + $pages.secondPost.meta['og:title'].should.be.equal('og:Hello world'); // custom og:title configured via front-matter + }); +}); From 2db7289e4d4f1777fa4518d8ecae91736ed193f8 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 3 Nov 2015 12:10:45 +0800 Subject: [PATCH 057/118] README and LICENSE updated --- LICENSE | 7 +++++++ README.md | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..93ca5c054 --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2015 tufu9441 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 94b26dfc9..45f1e36ec 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Maupassant -[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](http://choosealicense.com/licenses/mit) +[![Build Status](https://travis-ci.org/tufu9441/maupassant-hexo.svg?branch=master)](https://travis-ci.org/tufu9441/maupassant-hexo) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](http://choosealicense.com/licenses/mit) > 大道至简 From ade0ae7b61297020eb2fc86f5d592b8fbd155f71 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 3 Nov 2015 12:31:50 +0800 Subject: [PATCH 058/118] README updated --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 45f1e36ec..4be4aa158 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Maupassant -[![Build Status](https://travis-ci.org/tufu9441/maupassant-hexo.svg?branch=master)](https://travis-ci.org/tufu9441/maupassant-hexo) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](http://choosealicense.com/licenses/mit) +[![Build Status](https://travis-ci.org/tufu9441/maupassant-hexo.svg?branch=master)](https://travis-ci.org/tufu9441/maupassant-hexo) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/tufu9441/maupassant-hexo/blob/master/LICENSE) > 大道至简 From a32d21e160bccf462db2f146beb2e9905e62e807 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 3 Nov 2015 23:40:21 +0800 Subject: [PATCH 059/118] a bug fixed --- layout/base.jade | 9 +++++++-- layout/post.jade | 7 +++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index 1e4b72f84..0253174fc 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -71,7 +71,7 @@ html if theme.disqus .widget .widget-title= __('recent_comments') - script(type='text/javascript' src='https://#{theme.disqus}.disqus.com/recent_comments_widget.js?num_items=5&hide_avatars=1&avatar_size=32&excerpt_length=20&hide_mods=1') + script(type='text/javascript' src='//#{theme.disqus}.disqus.com/recent_comments_widget.js?num_items=5&hide_avatars=1&avatar_size=32&excerpt_length=20&hide_mods=1') .widget .widget-title= __('blogroll') - for (var i in theme.links) @@ -122,7 +122,12 @@ html })(); if theme.disqus - script(id='dsq-count-scr' src='//haomwei.disqus.com/count.js' async) + script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async) + script. + var switchTo5x=true; + script(src='//ws.sharethis.com/button/buttons.js') + script. + stLight.options({publisher: "1b379049-c412-4a2d-8d2e-69d5ef6bd922", doNotHash: true, doNotCopy: true, hashAddressBar: false}); if theme.tinysou script. diff --git a/layout/post.jade b/layout/post.jade index 5effb6e2b..aacc3dd06 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -39,4 +39,11 @@ block content li a(class='ds-wechat' href='javascript:void(0);' data-service='wechat') 微信 .ds-share-icons-more + if theme.disqus + span(class='st_sina_large' displayText='Sina') + span(class='st_facebook_large' displayText='Facebook') + span(class='st_twitter_large' displayText='Tweet') + span(class='st_googleplus_large' displayText='Google +') + span(class='st_evernote_large' displayText='Evernote') + span(class='st_email_large' displayText='Email') include _partial/comments From 3a681bd846c5bae0dc7588cf51ad1d7ac59a640b Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 3 Nov 2015 23:56:09 +0800 Subject: [PATCH 060/118] a bug fixed --- layout/base.jade | 8 -------- layout/index.jade | 1 + layout/post.jade | 11 ++++++++++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index 0253174fc..d3278b951 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -121,14 +121,6 @@ html || document.getElementsByTagName('body')[0]).appendChild(ds); })(); - if theme.disqus - script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async) - script. - var switchTo5x=true; - script(src='//ws.sharethis.com/button/buttons.js') - script. - stLight.options({publisher: "1b379049-c412-4a2d-8d2e-69d5ef6bd922", doNotHash: true, doNotCopy: true, hashAddressBar: false}); - if theme.tinysou script. var option = { diff --git a/layout/index.jade b/layout/index.jade index 4074347c6..faafa1db8 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -16,6 +16,7 @@ block content span.ds-thread-count(data-thread-key=post.path) if theme.disqus span.disqus-comment-count(data-disqus-identifier=post.path) + script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async) if post.description .post-content != post.description diff --git a/layout/post.jade b/layout/post.jade index aacc3dd06..7112c56df 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -11,7 +11,11 @@ block content span.categories= __('belongsto') for category in page.categories.toArray() a(href=url_for(category.path))= category.name - span.ds-thread-count(data-thread-key=page.path) + if theme.duoshuo + span.ds-thread-count(data-thread-key=page.path) + if theme.disqus + span.disqus-comment-count(data-disqus-identifier=page.path) + script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async) if page.toc div(class="clear") div(id="toc" class="toc-article") @@ -46,4 +50,9 @@ block content span(class='st_googleplus_large' displayText='Google +') span(class='st_evernote_large' displayText='Evernote') span(class='st_email_large' displayText='Email') + script. + var switchTo5x=true; + script(src='//ws.sharethis.com/button/buttons.js') + script. + stLight.options({publisher: "1b379049-c412-4a2d-8d2e-69d5ef6bd922", doNotHash: true, doNotCopy: true, hashAddressBar: false}); include _partial/comments From 378bf1185a00e8282ba6e1e661412ab81a8ad2da Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 4 Nov 2015 01:10:21 +0800 Subject: [PATCH 061/118] fix a bug --- layout/index.jade | 3 ++- layout/post.jade | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/layout/index.jade b/layout/index.jade index faafa1db8..5492bb13f 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -16,7 +16,6 @@ block content span.ds-thread-count(data-thread-key=post.path) if theme.disqus span.disqus-comment-count(data-disqus-identifier=post.path) - script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async) if post.description .post-content != post.description @@ -35,3 +34,5 @@ block content a(href=url_for(post.path))= __('Readmore') include _partial/paginator + if theme.disqus + script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async) diff --git a/layout/post.jade b/layout/post.jade index 7112c56df..3f3ef07ec 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -15,7 +15,6 @@ block content span.ds-thread-count(data-thread-key=page.path) if theme.disqus span.disqus-comment-count(data-disqus-identifier=page.path) - script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async) if page.toc div(class="clear") div(id="toc" class="toc-article") @@ -50,6 +49,7 @@ block content span(class='st_googleplus_large' displayText='Google +') span(class='st_evernote_large' displayText='Evernote') span(class='st_email_large' displayText='Email') + script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async) script. var switchTo5x=true; script(src='//ws.sharethis.com/button/buttons.js') From 7e660df7b5ab09f3b573e4cfe2b8b6ad1ecf469f Mon Sep 17 00:00:00 2001 From: artinhuang Date: Wed, 4 Nov 2015 01:33:34 +0800 Subject: [PATCH 062/118] Modify the style.css and fix some bugs. --- source/css/style.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 06cba0ec9..5f1476caf 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -377,7 +377,6 @@ blockquote,.stressed { box-sizing: border-box; margin: 2.5em 0; padding: 0 0 0 50px; - font-style: italic; color: #555; border-left: none; } @@ -395,7 +394,7 @@ blockquote:before,.stressed-quote:before { } strong,b,em{ padding: 1px 2px; - font-weight: normal; + font-weight: bold; } pre{ margin:2em 0; From 2d7238b4b7e0ddde4a4e7284f08a6af81b98e290 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 4 Nov 2015 11:53:24 +0800 Subject: [PATCH 063/118] remove sharethis because of too many unnecessary js, and improve the disqus js. --- layout/_partial/comments.jade | 1 + layout/post.jade | 14 +------------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/layout/_partial/comments.jade b/layout/_partial/comments.jade index e51da834c..e8d6557b3 100644 --- a/layout/_partial/comments.jade +++ b/layout/_partial/comments.jade @@ -13,3 +13,4 @@ if theme.disqus dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); + script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async) diff --git a/layout/post.jade b/layout/post.jade index 3f3ef07ec..2f36f7122 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -42,17 +42,5 @@ block content li a(class='ds-wechat' href='javascript:void(0);' data-service='wechat') 微信 .ds-share-icons-more - if theme.disqus - span(class='st_sina_large' displayText='Sina') - span(class='st_facebook_large' displayText='Facebook') - span(class='st_twitter_large' displayText='Tweet') - span(class='st_googleplus_large' displayText='Google +') - span(class='st_evernote_large' displayText='Evernote') - span(class='st_email_large' displayText='Email') - script(id='dsq-count-scr' src='//#{theme.disqus}.disqus.com/count.js' async) - script. - var switchTo5x=true; - script(src='//ws.sharethis.com/button/buttons.js') - script. - stLight.options({publisher: "1b379049-c412-4a2d-8d2e-69d5ef6bd922", doNotHash: true, doNotCopy: true, hashAddressBar: false}); + include _partial/comments From f1ec634adc8ddd917efa0b80024bb78520a5dd99 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 5 Nov 2015 23:29:41 +0800 Subject: [PATCH 064/118] Add other search engines and optimize search-form css --- README.md | 4 ++++ _config.yml | 2 ++ layout/base.jade | 19 ++++++++++++++++--- source/css/style.scss | 29 +++++++++++++++++++++-------- 4 files changed, 43 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 4be4aa158..c0c6c6ca5 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,8 @@ Default config: fancybox: true duoshuo: #duoshuo_shortname disqus: #disqus_shortname +google_search: true +baidu_search: #baidu_search swiftype: #swiftype_key tinysou: #tinysou_key rss: atom.xml @@ -44,6 +46,8 @@ links: - fancybox - Enable [Fancybox](http://fancyapps.com/fancybox/) - duoshuo - [Duoshuo](http://duoshuo.com) shortname - disqus - [Disqus](https://disqus.com) shortname +- google_search - Default search engine +- baidu_search - Search engine for users in China - swiftype - [Swiftype Search](https://swiftype.com) key - tinysou - [Tiny Search](http://tinysou.com) key - rss - RSS subscription link, learn more in [hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed) diff --git a/_config.yml b/_config.yml index 2244c16b6..ec7e4472d 100644 --- a/_config.yml +++ b/_config.yml @@ -1,6 +1,8 @@ fancybox: true duoshuo: #duoshuo_shortname disqus: #disqus_shortname +google_search: true +baidu_search: #baidu_search swiftype: #swiftype_key tinysou: #tinysou_key rss: atom.xml diff --git a/layout/base.jade b/layout/base.jade index d3278b951..d8b3049c0 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -47,13 +47,26 @@ html block content .pure-u-1-4: #sidebar - if theme.tinysou + if theme.google_search .widget - form - input#ts-search-input(class='ts-search-input' placeholder='Search' type='text') + #search + != search_form() + if theme.baidu_search + .widget + form(action="https://www.baidu.com/baidu" method="get" accept-charset="utf-8" class="search-form") + input(type="search" name="word" maxlength="20" class="search-form-input" placeholder="Search") + input(type="hidden" name="si" value="#{config.url.replace(/^https?:\/\//, '')}") + input(name="tn" type="hidden" value="bds") + input(name="cl" type="hidden" value="3") + input(name="ct" type="hidden" value="2097152") + input(name="s" type="hidden" value="on") if theme.swiftype .widget input.st-default-search-input(placeholder='Search' type='text') + if theme.tinysou + .widget + form + input#ts-search-input(class='ts-search-input' placeholder='Search' type='text') .widget .widget-title= __('categories') != list_categories({show_count: false}) diff --git a/source/css/style.scss b/source/css/style.scss index 5f1476caf..ffbbea0af 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -141,14 +141,27 @@ a:focus{ position: relative; overflow: hidden; input { - padding: 12px 30px 11px 15px; - line-height: 1.5; - border:1px solid #ddd; - width:100%; - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - outline:none; + background: #fff 8px 8px no-repeat + url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6%2BR8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG11AABzoAAA%2FN0AAINkAABw6AAA7GgAADA%2BAAAQkOTsmeoAAAESSURBVHjajNCxS9VRGMbxz71E4OwgoXPQxVEpXCI47%2BZqGP0LCoJO7UVD3QZzb3SwcHB7F3Uw3Zpd%2FAPCcJKG7Dj4u%2FK7Pwp94HDg5Xyf5z1Pr9YKImKANTzFXxzjU2ae6qhXaxURr%2FAFl9hHDy%2FwEK8z89sYVEp5gh84wMvMvGiSJ%2FEV85jNzLMR1McqfmN5BEBmnmMJFSvtpH7jdJiZv7q7Z%2BZPfMdcF6rN%2FT%2F1m2LGBkd4HhFT3dcRMY2FpskxaLNpayciHrWAGeziD7b%2BVfkithuTk8bkGa4wgWFmbrSTZOYeBvjc%2BucQj%2FEe6xHx4Taq1nrnKaW8K6XUUsrHWuvNevdRRLzFGwzvDbXAB9cDAHvhedDruuxSAAAAAElFTkSuQmCC); + display: inline-block; + height: 16px; + padding: 7px 11px 7px 28px; + border: 1px solid #bbb; + border: 1px solid rgba(0,0,0,0.25); + font-weight: 400; + color: #444; + font-size: 14px; + line-height: 16px; + box-sizing: content-box; + background-clip: padding-box; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } } } From bb1be8cb5e448e0c68d8e91fdecb92e0b7b05839 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 5 Nov 2015 23:47:54 +0800 Subject: [PATCH 065/118] no message --- .travis.yml | 2 +- test/helpers.js | 42 ----- test/hexo/.gitignore | 7 - test/hexo/_config.yml | 70 -------- test/hexo/package.json | 22 --- test/hexo/source/404.md | 20 --- test/hexo/source/_posts/categories.md | 9 -- test/hexo/source/_posts/elements.md | 62 ------- test/hexo/source/_posts/excerpts.md | 12 -- test/hexo/source/_posts/gallery-post.md | 19 --- test/hexo/source/_posts/hello-world.md | 6 - test/hexo/source/_posts/images.md | 13 -- .../source/_posts/link-post-without-title.md | 5 - test/hexo/source/_posts/link-post.md | 6 - test/hexo/source/_posts/long-title.md | 6 - test/hexo/source/_posts/no-title.md | 5 - test/hexo/source/_posts/tag-plugins.md | 77 --------- test/hexo/source/_posts/tags.md | 9 -- test/hexo/source/_posts/videos.md | 14 -- ...55\346\226\207\346\270\254\350\251\246.md" | 18 --- ...36\343\203\206\343\202\271\343\203\210.md" | 20 --- test/hexo/source/about/index.md | 9 -- test/hexo/source/apple-touch-icon.png | Bin 1621 -> 0 bytes test/hexo/source/favicon.ico | Bin 1256 -> 0 bytes .../themes/hexo-theme-maupassant/_config.yml | Bin 199824 -> 0 bytes .../themes/hexo-theme-maupassant/languages | 1 - test/hexo/themes/hexo-theme-maupassant/layout | 1 - test/hexo/themes/hexo-theme-maupassant/source | 1 - test/lib/HexoHelper.js | 14 -- test/lib/getMeta.js | 26 --- test/pre-test.sh | 3 - test/test.js | 152 ------------------ 32 files changed, 1 insertion(+), 650 deletions(-) delete mode 100644 test/helpers.js delete mode 100644 test/hexo/.gitignore delete mode 100644 test/hexo/_config.yml delete mode 100644 test/hexo/package.json delete mode 100644 test/hexo/source/404.md delete mode 100644 test/hexo/source/_posts/categories.md delete mode 100644 test/hexo/source/_posts/elements.md delete mode 100644 test/hexo/source/_posts/excerpts.md delete mode 100644 test/hexo/source/_posts/gallery-post.md delete mode 100644 test/hexo/source/_posts/hello-world.md delete mode 100644 test/hexo/source/_posts/images.md delete mode 100644 test/hexo/source/_posts/link-post-without-title.md delete mode 100644 test/hexo/source/_posts/link-post.md delete mode 100644 test/hexo/source/_posts/long-title.md delete mode 100644 test/hexo/source/_posts/no-title.md delete mode 100644 test/hexo/source/_posts/tag-plugins.md delete mode 100644 test/hexo/source/_posts/tags.md delete mode 100644 test/hexo/source/_posts/videos.md delete mode 100644 "test/hexo/source/_posts/\344\270\255\346\226\207\346\270\254\350\251\246.md" delete mode 100644 "test/hexo/source/_posts/\346\227\245\346\234\254\350\252\236\343\203\206\343\202\271\343\203\210.md" delete mode 100644 test/hexo/source/about/index.md delete mode 100644 test/hexo/source/apple-touch-icon.png delete mode 100644 test/hexo/source/favicon.ico delete mode 100644 test/hexo/themes/hexo-theme-maupassant/_config.yml delete mode 120000 test/hexo/themes/hexo-theme-maupassant/languages delete mode 120000 test/hexo/themes/hexo-theme-maupassant/layout delete mode 120000 test/hexo/themes/hexo-theme-maupassant/source delete mode 100644 test/lib/HexoHelper.js delete mode 100644 test/lib/getMeta.js delete mode 100755 test/pre-test.sh delete mode 100644 test/test.js diff --git a/.travis.yml b/.travis.yml index 0aabd6c86..06e45d6dc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,4 +2,4 @@ language: node_js node_js: - "4.1" install: - - ./test/pre-test.sh + npm install diff --git a/test/helpers.js b/test/helpers.js deleted file mode 100644 index 508a1a59e..000000000 --- a/test/helpers.js +++ /dev/null @@ -1,42 +0,0 @@ -var HexoHelper = require('./lib/HexoHelper'), - chai = require('chai'); - -var hexoInstallPath = process.cwd() + '/test/hexo/'; // slash required - -var helper = new HexoHelper(hexoInstallPath); - -before(function(done){ - helper.hexo.init() - .then(function(){ - return helper.hexo.load(); - }) - .then(function(){ - return done(); - }); -}); - -describe('Helpers', function(){ - it('plural.js', function(){ - var pluralData = ['заметка', 'заметки', 'заметок']; // testing via russian - - var p9r = helper.hexo.extend.helper.store.plural; // this a hexo helper, loaded from scripts/ directory - - p9r.should.be.a('function'); // helper is loaded ok - - p9r(1, pluralData).should.equal('заметка'); - p9r(2, pluralData).should.equal('заметки'); - p9r(8, pluralData).should.equal('заметок'); - }); - - it('tag_post_count.js', function(){ - var tag_post_count = helper.hexo.extend.helper.store.tag_post_count; - - tag_post_count.should.be.a('function'); // helper is loaded ok - - tag_post_count('hello').should.equal(2); - tag_post_count('world').should.equal(1); - - tag_post_count('empty-tag').should.equal(0); // should just return 0, no errors - }); -}); - diff --git a/test/hexo/.gitignore b/test/hexo/.gitignore deleted file mode 100644 index 063b0e4ce..000000000 --- a/test/hexo/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -.DS_Store -Thumbs.db -db.json -*.log -node_modules/ -public/ -.deploy*/ \ No newline at end of file diff --git a/test/hexo/_config.yml b/test/hexo/_config.yml deleted file mode 100644 index 7f947216b..000000000 --- a/test/hexo/_config.yml +++ /dev/null @@ -1,70 +0,0 @@ -# Hexo Configuration -## Docs: http://hexo.io/docs/configuration.html -## Source: https://github.com/hexojs/hexo/ - -# Site -title: Hexo -subtitle: The test blog for testing maupassant-hexo -description: Test blog description herer -author: Butcher -language: zh-CN - -# URL -## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' -url: http://localhost -root: / -permalink: :category/:title.html -permalink_defaults: - -# Directory -source_dir: source -public_dir: public -tag_dir: tags -about_dir: about/ -archive_dir: archives/ -category_dir: categories -code_dir: downloads/code -i18n_dir: :lang -skip_render: - -# Writing -new_post_name: :title.md # File name of new posts -default_layout: post -titlecase: false # Transform title into titlecase -external_link: true # Open external links in new tab -filename_case: 0 -render_drafts: false -post_asset_folder: false -relative_link: false -future: true -highlight: - enable: true - line_number: true - tab_replace: - -# Category & Tag -default_category: uncategorized -category_map: -tag_map: - -# Date / Time format -## Hexo uses Moment.js to parse and display date -## You can customize the date format as defined in -## http://momentjs.com/docs/#/displaying/format/ -date_format: YYYY-MM-DD -time_format: HH:mm:ss - -# Pagination -## Set per_page to 0 to disable pagination -per_page: 8 -pagination_dir: page - -# Extensions -## Plugins: http://hexo.io/plugins/ -## Themes: http://hexo.io/themes/ -theme: hexo-theme-maupassant - -# Deployment -## Docs: http://hexo.io/docs/deployment.html -deploy: - type: diff --git a/test/hexo/package.json b/test/hexo/package.json deleted file mode 100644 index c4423d4e0..000000000 --- a/test/hexo/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "hexo-site", - "version": "0.0.0", - "private": true, - "hexo": { - "version": "3.1.1" - }, - "dependencies": { - "hexo": "^3.0.0", - "hexo-generator-archive": "^0.1.0", - "hexo-generator-category": "^0.1.0", - "hexo-generator-feed": "^1.0.1", - "hexo-generator-index": "^0.1.0", - "hexo-generator-tag": "^0.1.0", - "hexo-renderer-ejs": "^0.1.0", - "hexo-renderer-jade": "^0.1.0", - "hexo-renderer-marked": "^0.2.4", - "hexo-renderer-sass": "^0.1.2", - "hexo-renderer-stylus": "^0.2.3", - "hexo-server": "^0.1.2" - } -} diff --git a/test/hexo/source/404.md b/test/hexo/source/404.md deleted file mode 100644 index 03d20674d..000000000 --- a/test/hexo/source/404.md +++ /dev/null @@ -1,20 +0,0 @@ -title: 404 -layout: page - ---- -###对不起,无法找到该页。 - -页面将在秒内自动跳转回[首页](https://www.haomwei.com) - - - diff --git a/test/hexo/source/_posts/categories.md b/test/hexo/source/_posts/categories.md deleted file mode 100644 index 6af796cc8..000000000 --- a/test/hexo/source/_posts/categories.md +++ /dev/null @@ -1,9 +0,0 @@ -title: Categories -date: 2013-12-24 23:30:09 -categories: -- Foo -- Bar -- Baz ---- - -This post contains 3 categories. Make sure your theme can display all of the categories. \ No newline at end of file diff --git a/test/hexo/source/_posts/elements.md b/test/hexo/source/_posts/elements.md deleted file mode 100644 index 428b27c5e..000000000 --- a/test/hexo/source/_posts/elements.md +++ /dev/null @@ -1,62 +0,0 @@ -title: Elements -date: 2013-12-24 23:29:08 -tags: ---- - -The purpose of this post is to help you make sure all of HTML elements can display properly. If you use CSS reset, don't forget to redefine the style by yourself. - ---- - -# Heading 1 - -## Heading 2 - -### Heading 3 - -#### Heading 4 - -##### Heading 5 - -###### Heading 6 - ---- - -## Paragraph - -Lorem ipsum dolor sit amet, [test link]() consectetur adipiscing elit. **Strong text** pellentesque ligula commodo viverra vehicula. *Italic text* at ullamcorper enim. Morbi a euismod nibh. Underline text non elit nisl. ~~Deleted text~~ tristique, sem id condimentum tempus, metus lectus venenatis mauris, sit amet semper lorem felis a eros. Fusce egestas nibh at sagittis auctor. Sed ultricies ac arcu quis molestie. Donec dapibus nunc in nibh egestas, vitae volutpat sem iaculis. Curabitur sem tellus, elementum nec quam id, fermentum laoreet mi. Ut mollis ullamcorper turpis, vitae facilisis velit ultricies sit amet. Etiam laoreet dui odio, id tempus justo tincidunt id. Phasellus scelerisque nunc sed nunc ultricies accumsan. - -Interdum et malesuada fames ac ante ipsum primis in faucibus. `Sed erat diam`, blandit eget felis aliquam, rhoncus varius urna. Donec tellus sapien, sodales eget ante vitae, feugiat ullamcorper urna. Praesent auctor dui vitae dapibus eleifend. Proin viverra mollis neque, ut ullamcorper elit posuere eget. - -> Praesent diam elit, interdum ut pulvinar placerat, imperdiet at magna. - -Maecenas ornare arcu at mi suscipit, non molestie tortor ultrices. Aenean convallis, diam et congue ultricies, erat magna tincidunt orci, pulvinar posuere mi sapien ac magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent vitae placerat mauris. Nullam laoreet ante posuere tortor blandit auctor. Sed id ligula volutpat leo consequat placerat. Mauris fermentum dolor sed augue malesuada sollicitudin. Vivamus ultrices nunc felis, quis viverra orci eleifend ut. Donec et quam id urna cursus posuere. Donec elementum scelerisque laoreet. - -## List Types - -### Definition List (dl) - -
    Definition List Title
    This is a definition list division.
    - -### Ordered List (ol) - -1. List Item 1 -2. List Item 2 -3. List Item 3 - -### Unordered List (ul) - -- List Item 1 -- List Item 2 -- List Item 3 - -## Table - -| Table Header 1 | Table Header 2 | Table Header 3 | -| - | - | - | -| Division 1 | Division 2 | Division 3 | -| Division 1 | Division 2 | Division 3 | -| Division 1 | Division 2 | Division 3 | - -## Misc Stuff - abbr, acronym, sub, sup, etc. - -Lorem superscript dolor subscript amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. cite. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. NBA Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. AVE \ No newline at end of file diff --git a/test/hexo/source/_posts/excerpts.md b/test/hexo/source/_posts/excerpts.md deleted file mode 100644 index 0c2d95a1c..000000000 --- a/test/hexo/source/_posts/excerpts.md +++ /dev/null @@ -1,12 +0,0 @@ -title: Excerpts -date: 2013-12-25 00:23:23 -tags: ---- - -The following contents should be invisible in home/archive page. - - - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce eget urna vitae velit eleifend interdum at ac nisi. In nec ligula lacus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed eu cursus erat, ut dapibus quam. Aliquam eleifend dolor vitae libero pharetra adipiscing. Etiam adipiscing dolor a quam tempor, eu convallis nulla varius. Aliquam sollicitudin risus a porta aliquam. Ut nec velit dolor. Proin eget leo lobortis, aliquam est sed, mollis mauris. Fusce vitae leo pretium massa accumsan condimentum. Fusce malesuada gravida lectus vel vulputate. Donec bibendum porta nibh ut aliquam. - -Sed lorem felis, congue non fringilla eu, aliquam eu eros. Curabitur orci libero, mollis sed semper vitae, adipiscing in lectus. Aenean non egestas odio. Donec sollicitudin nisi quis lorem gravida, in pharetra mauris fringilla. Duis sit amet faucibus dolor, id aliquam neque. In egestas, odio gravida tempor dictum, mauris felis faucibus purus, sit amet commodo lacus diam vitae est. Ut ut quam eget massa semper sodales. Aenean non ipsum cursus, blandit lectus in, ornare odio. Curabitur ultrices porttitor vulputate. \ No newline at end of file diff --git a/test/hexo/source/_posts/gallery-post.md b/test/hexo/source/_posts/gallery-post.md deleted file mode 100644 index 63a14687d..000000000 --- a/test/hexo/source/_posts/gallery-post.md +++ /dev/null @@ -1,19 +0,0 @@ -title: Gallery Post -date: 2013-12-25 00:16:18 -photos: -- /gallery-post/wallpaper-2572384.jpg -- /gallery-post/wallpaper-2311325.jpg -- /gallery-post/wallpaper-878514.jpg -- http://placehold.it/350x150.jpg ---- - -This post contains 4 photos: - -- Widescreen wallpaper -- Portrait photo -- Dual widescreen wallpaper -- Small photo - -All photos should be displayed properly. - -*From [Wallbase.cc](http://wallbase.cc)* \ No newline at end of file diff --git a/test/hexo/source/_posts/hello-world.md b/test/hexo/source/_posts/hello-world.md deleted file mode 100644 index 172793099..000000000 --- a/test/hexo/source/_posts/hello-world.md +++ /dev/null @@ -1,6 +0,0 @@ -title: Hello World -date: 2013-12-24 17:49:32 -tags: ---- - -Welcome to [Hexo](http://zespia.tw/hexo)! This is your very first post. Check [documentation](http://zespia.tw/hexo/docs) to learn how to use. \ No newline at end of file diff --git a/test/hexo/source/_posts/images.md b/test/hexo/source/_posts/images.md deleted file mode 100644 index 3354bc686..000000000 --- a/test/hexo/source/_posts/images.md +++ /dev/null @@ -1,13 +0,0 @@ -title: Images -date: 2013-12-26 22:46:49 ---- - -This is a image test post. - -![](/gallery-post/wallpaper-2572384.jpg) - -![Caption](/gallery-post/wallpaper-2311325.jpg) - -![](/gallery-post/wallpaper-878514.jpg) - -![Small Picture](http://placehold.it/350x150.jpg) \ No newline at end of file diff --git a/test/hexo/source/_posts/link-post-without-title.md b/test/hexo/source/_posts/link-post-without-title.md deleted file mode 100644 index 4a11a1389..000000000 --- a/test/hexo/source/_posts/link-post-without-title.md +++ /dev/null @@ -1,5 +0,0 @@ -date: 2013-12-24 23:44:13 -link: http://www.google.com/ ---- - -This is a link post without a title. The title should be the link with or without protocol. Clicking on the link should open [Google](http://www.google.com/) in a new tab or window. \ No newline at end of file diff --git a/test/hexo/source/_posts/link-post.md b/test/hexo/source/_posts/link-post.md deleted file mode 100644 index 5a9a106b3..000000000 --- a/test/hexo/source/_posts/link-post.md +++ /dev/null @@ -1,6 +0,0 @@ -title: Link Post -date: 2013-12-24 23:30:04 -link: http://www.google.com/ ---- - -This is a link post. Clicking on the link should open [Google](http://www.google.com/) in a new tab or window. \ No newline at end of file diff --git a/test/hexo/source/_posts/long-title.md b/test/hexo/source/_posts/long-title.md deleted file mode 100644 index 396e717dc..000000000 --- a/test/hexo/source/_posts/long-title.md +++ /dev/null @@ -1,6 +0,0 @@ -title: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam justo turpis, tincidunt ac convallis id. -date: 2013-12-24 23:31:06 -tags: ---- - -This post has a long title. Make sure the title displayed right. \ No newline at end of file diff --git a/test/hexo/source/_posts/no-title.md b/test/hexo/source/_posts/no-title.md deleted file mode 100644 index 86393c04a..000000000 --- a/test/hexo/source/_posts/no-title.md +++ /dev/null @@ -1,5 +0,0 @@ -date: 2013-12-25 22:57:49 -tags: ---- - -This post doesn't have a title. Make sure it's accessible. \ No newline at end of file diff --git a/test/hexo/source/_posts/tag-plugins.md b/test/hexo/source/_posts/tag-plugins.md deleted file mode 100644 index dd69524de..000000000 --- a/test/hexo/source/_posts/tag-plugins.md +++ /dev/null @@ -1,77 +0,0 @@ -title: Tag Plugins -date: 2013-12-25 00:14:39 -tags: ---- - -This post is used for testing tag plugins. See [docs](http://zespia.tw/hexo/docs/tag-plugins.html) for more info. - -## Block Quote - -### Normal blockquote - -> Praesent diam elit, interdum ut pulvinar placerat, imperdiet at magna. - -### Quote from a book - -{% blockquote David Levithan, Wide Awake %} -Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy. -{% endblockquote %} - -### Quote from Twitter - -{% blockquote @DevDocs https://twitter.com/devdocs/status/356095192085962752 %} -NEW: DevDocs now comes with syntax highlighting. http://devdocs.io -{% endblockquote %} - -### Quote from an article on the web - -{% blockquote Seth Godin http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html Welcome to Island Marketing %} -Every interaction is both precious and an opportunity to delight. -{% endblockquote %} - -## Code Block - -### Normal code block - -``` -alert('Hello World!'); -``` - -### With caption - -{% codeblock Array.map %} -array.map(callback[, thisArg]) -{% endcodeblock %} - -### With caption and URL - -{% codeblock .compact http://underscorejs.org/#compact Underscore.js %} -.compact([0, 1, false, 2, ‘’, 3]); -=> [1, 2, 3] -{% endcodeblock %} - -### Gist - -{% gist 996818 %} - -### jsFiddle - -{% jsfiddle ccWP7 %} - -## Pullquote - -### Left - -{% pullquote left %} -Lorem ipsum dolor sit amet, consectetur adipiscing elit. -{% endpullquote %} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus molestie arcu, et fringilla mauris placerat ac. Nullam luctus bibendum risus. Ut cursus sed ipsum feugiat egestas. Suspendisse elementum, velit eu consequat consequat, augue lorem dapibus libero, eget pulvinar dolor est sit amet nulla. Suspendisse a porta tortor, et posuere mi. Pellentesque ultricies, mi quis volutpat malesuada, erat felis vulputate nisl, ac congue ante tortor ut ante. Proin aliquam sem vel mauris tincidunt, eget scelerisque tortor euismod. Nulla tincidunt enim nec commodo dictum. Mauris id sapien et orci gravida luctus id ut dui. In vel vulputate odio. Duis vel turpis molestie, scelerisque enim eu, lobortis eros. Cras at ipsum gravida, sagittis ante vel, viverra tellus. Nunc mauris turpis, elementum ullamcorper nisl pretium, ultrices cursus justo. Mauris porttitor commodo eros, ac ornare orci interdum in. Cras fermentum cursus leo sed mattis. In dignissim lorem sem, sit amet elementum mauris venenatis ac. - -### Right - -{% pullquote right %} -Lorem ipsum dolor sit amet, consectetur adipiscing elit. -{% endpullquote %} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ligula justo, lobortis sit amet semper vel, dignissim sit amet libero. Praesent ac tempus ligula. Maecenas at gravida odio. Etiam tristique volutpat lacus eu faucibus. Donec non tempus arcu. Phasellus adipiscing, mauris nec mollis egestas, ipsum nunc auctor velit, et rhoncus lorem ipsum at ante. Praesent et sem in velit volutpat auctor. Duis vel mauris nulla. Maecenas mattis interdum ante, quis sagittis nibh cursus et. Nulla facilisi. Morbi convallis gravida tortor, ut fermentum enim gravida et. Nunc vel dictum nisl, non ultrices libero. Proin vestibulum felis eget orci consectetur lobortis. Vestibulum augue nulla, iaculis vitae augue vehicula, dignissim ultrices libero. Sed imperdiet urna et quam ultrices tincidunt nec ac magna. Etiam vel pharetra elit. \ No newline at end of file diff --git a/test/hexo/source/_posts/tags.md b/test/hexo/source/_posts/tags.md deleted file mode 100644 index 7ec8146ec..000000000 --- a/test/hexo/source/_posts/tags.md +++ /dev/null @@ -1,9 +0,0 @@ -title: Tags -date: 2013-12-24 23:29:53 -tags: -- Foo -- Bar -- Baz ---- - -This post contains 3 tags. Make sure your theme can display all of the tags. \ No newline at end of file diff --git a/test/hexo/source/_posts/videos.md b/test/hexo/source/_posts/videos.md deleted file mode 100644 index e1eefc15a..000000000 --- a/test/hexo/source/_posts/videos.md +++ /dev/null @@ -1,14 +0,0 @@ -title: Videos -date: 2013-12-25 00:19:15 -tags: ---- - -This is a video test post. - -**Youtube** - -{% youtube TIbZDRXM-Tg %} - -**Vimeo** - -{% vimeo 82090131 %} \ No newline at end of file diff --git "a/test/hexo/source/_posts/\344\270\255\346\226\207\346\270\254\350\251\246.md" "b/test/hexo/source/_posts/\344\270\255\346\226\207\346\270\254\350\251\246.md" deleted file mode 100644 index 3d1c90fdc..000000000 --- "a/test/hexo/source/_posts/\344\270\255\346\226\207\346\270\254\350\251\246.md" +++ /dev/null @@ -1,18 +0,0 @@ -title: 中文測試 -date: 2013-12-24 23:31:30 -tags: ---- - -This is a Chinese test post. - -善我王上魚、產生資西員合兒臉趣論。畫衣生這著爸毛親可時,安程幾?合學作。觀經而作建。都非子作這!法如言子你關!手師也。 - -以也座論頭室業放。要車時地變此親不老高小是統習直麼調未,行年香一? - -就竟在,是我童示讓利分和異種百路關母信過明驗有個歷洋中前合著區亮風值新底車有正結,進快保的行戰從:弟除文辦條國備當來際年每小腳識世可的的外的廣下歌洲保輪市果底天影;全氣具些回童但倒影發狀在示,數上學大法很,如要我……月品大供這起服滿老?應學傳者國:山式排只不之然清同關;細車是!停屋常間又,資畫領生,相們制在?公別的人寫教資夠。資再我我!只臉夫藝量不路政吃息緊回力之;兒足灣電空時局我怎初安。意今一子區首者微陸現際安除發連由子由而走學體區園我車當會,經時取頭,嚴了新科同?很夫營動通打,出和導一樂,查旅他。坐是收外子發物北看蘭戰坐車身做可來。道就學務。 - -國新故。 - -> 工步他始能詩的,裝進分星海演意學值例道……於財型目古香亮自和這乎?化經溫詩。只賽嚴大一主價世哥受的沒有中年即病行金拉麼河。主小路了種就小為廣不? - -*From [亂數假文產生器 - Chinese Lorem Ipsum](http://www.richyli.com/tool/loremipsum/)* \ No newline at end of file diff --git "a/test/hexo/source/_posts/\346\227\245\346\234\254\350\252\236\343\203\206\343\202\271\343\203\210.md" "b/test/hexo/source/_posts/\346\227\245\346\234\254\350\252\236\343\203\206\343\202\271\343\203\210.md" deleted file mode 100644 index 3383912e6..000000000 --- "a/test/hexo/source/_posts/\346\227\245\346\234\254\350\252\236\343\203\206\343\202\271\343\203\210.md" +++ /dev/null @@ -1,20 +0,0 @@ -title: 日本語テスト -date: 2013-12-24 23:33:26 -tags: ---- - -This is a Japanese test post. - -私は昨日ついにその助力家というのの上よりするたなけれ。 - -最も今をお話団はちょうどこの前後なかろでくらいに困りがいるたをは帰着考えたなかって、そうにもするでうたらない。 - -がたを知っないはずも同時に九月をいよいよたありた。 - -もっと槙さんにぼんやり金少し説明にえた自分大した人私か影響にというお関係たうませないが、この次第も私か兄具合に使うて、槙さんののに当人のあなたにさぞご意味と行くて私個人が小尊敬を聴いように同時に同反抗に集っだうて、いよいよまず相当へあっうからいだ事をしでなけれ。 - -> それでそれでもご時日をしはずはたったいやと突き抜けるますて、その元がは行ったてという獄を尽すていけですた。 - -この中道具の日その学校はあなたごろがすまなりかとネルソンさんの考えるですん、辺の事実ないというご盲従ありたですと、爺さんのためが薬缶が結果までの箸の当時してならて、多少の十月にためからそういう上からとにかくしましないと触れべきものたで、ないうですと多少お人達したのでたた。 - -*From [すぐ使えるダミーテキスト - 日本語 Lorem ipsum](http://lipsum.sugutsukaeru.jp/index.cgi)* \ No newline at end of file diff --git a/test/hexo/source/about/index.md b/test/hexo/source/about/index.md deleted file mode 100644 index c036cc40d..000000000 --- a/test/hexo/source/about/index.md +++ /dev/null @@ -1,9 +0,0 @@ -title: 关于 -layout: page - ---- -Nickname: Butcher - -Email: i@haomwei.com - - diff --git a/test/hexo/source/apple-touch-icon.png b/test/hexo/source/apple-touch-icon.png deleted file mode 100644 index cff5e357e7183f35e09dd06293d6caa5d696e717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1621 zcmah|4Nw$i7+yQQP&~Dq3V)`S1yQ2A{ee5Ujgx@AlM{~cI7b*uU3NcU<8F7|Tf74X zMJ9F9G&mD*9AYrjkt}o8A3>_IaN7 z{obE9iV7E)Ce56LAc)DG$9Una=x>YxevcTcUxw2R)mfqzOXX^aRREIBOJx9c2iOYW z1uS2)QUjR?Vz?&wO4Jfh0nJGP3#(%+;eZU;2$GoRhh=|P$*;xrCKDV0w?WuyRJb|W{5BcYeba|o5f(lr~(6moFd4oAc?51 z$d*afssn?bj$9!iM`gv}{V>6R;bB(BNeiK0X&A_JQJh?@_=k=291i>-07Nwiv1Akr zqvY{K;bY1M0#S5O^@0a?8xtM$)yM$%f}m8ba4^Z`3A$S{ovQ#=l@y;O`9~vOR4J)a zuu_uI++rI#&%<(ps2?Oh!~hJd0tW`;Z#5HEGfDVJ7<`H*?I}bCO%NkckHib*HUEJ^ z1eHOPssDn)p^@`RrMKeGVRsr6n zNC9*>8?-QnFLu&J5w3I>)PrLzUq-n67`}{fGl)lWap(-L*XKj^I(h_~Kwn0?4{oCU z3q;to3hd75=GJqtvyDXsKBviKg3IZK!}V}_O!XEP-$Sl^L@Y#*as6&4+ZXN|JfB}? zh@WgIy7qVLuU#F7IDf2N&2HIzY0iw_;@TSfV;lOs#?GBh_R=p~=I%XfJpcUUWv5?X zJL`6f+&JOX;FVn$mTvugeB9Q%%i`81<5P|wzkYPei4XqxHs+@r-pY-}w!81$Ha*!t z+vr$+@QDllXI_2hn-f)Uo!zs%D>U)#nmeZ!t!c|%IKQLbeR<|<8y8>wZYtGrtvlh* z=2zbBE}n-j>6)~DFM4uUx4q2iYOPOA_B3xwN*y?$jW69d#m|3=3QfO&X|wr;Gi8g1 z#_c!SH2LthMrP>4V_9o%G@slaEN$;$o?gGZqk!uD;jSFfp4ybZ(>#=d_Qtkhb=7B+ zCU&MB9hh?>??+_2xnx1!Z1m=fi#FcUoR;>4p3hPeozxMsH!{sFHuax5Uia0-#iy3$ zJ&VpT_BLm}M9tfhq+S1Bo8@LNt=8frkHbItb(Y`v?>6wt)b{wAhQStQcc90RIJIfB zBj)nz!O5B-af3FnBHX|$tA)8Yr-#yyW}e%D9_(SVO6zLBaJOtJs85`==a9v_X4TJ; z)=viJ;PwSW7b9w9U(>Bfulr+7ZU1^)B;~+qQ*!6F;+3&l!vLzyJ#c=4_26yaj&*;P mHsF diff --git a/test/hexo/source/favicon.ico b/test/hexo/source/favicon.ico deleted file mode 100644 index 7c6f507a92bbd3ced5c6059d44bb5626d132ab65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256 zcmeAS@N?(olHy`uVBq!ia0vp^(m<@h!3-p?Z2!y&q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffc1+hD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT zY?Xj6g?J&i0B&qvF*KNf0j6J(SfFpHX8`gNOrftYexnUy@&(kzb(T9Bihb5uTZsl3!k| z30CjxYvq|&T#}fVoa*Ufs{}MbFEca6%FV*q+0xL}+11d|)X>n?#L>;b$j#W?)zs0z z(bCew1*X>}Ke;qFHLnDwHwB^B1*cw6Qpha;+U$~Alv$RV;#QQOs{r=0RVHq?IN~%9 zsy79)~z+sR1flUfBfi?v!(gMIkOWZ!|E!^4(;FH-P)ooA^QLS|Fg>C z>wtO%N`m}?fm~$3@IX0Ml7WGd#nZ(xq~cc1<(u1D6*w3I=D0uj|Nq;fXGhygD>QF6 zCb6x#7`@K!rNp|`uV-Ys`0+PyYgoiu9<^U#MxCv{#OiV$59>u=>-ObcyWx;k!eU(= zx}596OxwPW%{dVQT~k;VZBjFwHP^L9VS-Rv)SaXyBH<@nH=Nn1oxH4}cx|U&x5nL& zmG6^hW@g!}>x`A|ZgjbQYeS&Hdsfz6PkFm*%&dKH)kNNNYtg*7Mr^C;(M>v&o$PzB zNElDg=ibDh^WEy~|K#{$(Rt&g5r54&MmNdn@su(}2O$P2<@K%^%L7vd7ca&t;uc GLK6TYDakVc diff --git a/test/hexo/themes/hexo-theme-maupassant/_config.yml b/test/hexo/themes/hexo-theme-maupassant/_config.yml deleted file mode 100644 index b8d2f40e566f0743dfafd9f4e71a988d61a1782e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199824 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

      )RjwOv}gKKPb%mx>>loF4R z3$NVB#iP`jV;Jrd!5xC;odPk5TG4(5H~_Ij_tO2uO%_M8y0kneK9t!3%|_X-F98X{ zK8yW1*_{yj`Zn3ylfb^4Gl(pk%pW*^GTWWUz12ggHLZZ^w3Bh?Y=rm=`SfcNJ;9-| zSFdIGd=KZ|XSKmz1X7;LTJAjM0eG2!i+du|mhShtk_)qWd0Ox1&she()3JSGkT$I& z?-X@xQO~~ZBtRKR(NR=Sqqqj+Ee0 zgNiMHwdj_`b`|& z%YhBbY181`MkE9w9RZHT{f>Q+Ov%Z8pS5nef-Z|hTe`3I)wIu7Qe9-+aiZ6_+2RVb z;YTMy7$N_eTP*cxoY~gs1&aDf0=QdvvW9Zbj932rJ}R*ovJ(YFAkW4EZI&hPTMGbg zF3>JH^oN+f5oS_nHC)Z=)F0ewuZjH7O#$^BiS~mPBiX3Fh;UY=n-#2bPoiRr*9p8~ z&b$MmDG#+;rsmrP$`N^PDSU^T<&(A932PE;-nw7I_{6*PtD-Y_B=%~}Ka94tec}g{ z|7`PthMXke?`f6{*;?g8z%W|t!L2Mze#5i-E;?-D8O?mL>CM|D0H9S zKr8$%jjF$Fo8%*eII zshb&KkKOb8MwkhTHjhWHZNAnVAIg>#XRK^zka0kBrx37_jFON9=im^R*e_xGqP~cA zeQApcitjU$#O1f4X<1Ic+1Gcq-d3CTU9OTK=u4K%v;5Ndlerc28&Eo#h{w|q*~TfelKv+RZYncAP`7T!B+T*=i4(+;kK2SucfH6WKUl4=5+GipK@?(P+$p*}rP~@;Z zzE-I)NeUhiIp=RDx304D71RYjp)+;(H$S6;b)P8b zdl*kZTc?OGB4dEHO~(ts^(4CPEZ$U~HW2*Yi9aYH92(EjuGM*Rhm{a^Q%>6GM~F4R z^fw+C;?L|doMncWpU`jI6d9BiSW&zvh6Svqoc|e@Cy$G@?Ed+swQc(Ac=tX0EovMj zG(k|pb-C5?F%tTu-FrLk%7aOLak*?+h?7)-W+ll54O)k)1_1y6WWi*fr zqYOvRXqI^8`}t!dU)@d9_OM(&BH}01MnmlCF4xj*^|>dDfz$~2{0!|b{=lfUX3&CZ zr%zneRMn1nWhwD#CU&+@cOf(HhRzy*c(s=tEk5i|cvfr-=2%MmiL7XBunb~M_t^k^ zqAI|>e@IFz?@3<`psfB5@iKa!HJO3r%DnruFq_Hx9tM&UF_BsQzDR(MT{r*8?&3!E z!DM)+qVlG!@3bH~y(`m%f`-|f+=YPtNnI5x;2WfCjEP2nkfVPWX4`?T(tonW;uv3) zg`~BS`70BvB?6i_^VUrv@1pmLf_w+^IBNl;Hk}~|Y?VCQZ!qt8(sgD^?8?Qqti+`A zPr?&IihBh{szx-$nvK%DV_wqIBapY|vA_3hE!YPlgZW{hlM$TaMek{FKIt-dYKIgD z3B$9;F9?@ue|K(9l7H4GWZqcRt>$YiyOtH2>Q8e{{%~Sv9`JIQ!o76p#BC-i`3~Su z)1_PvC(#}Ud~0z5vVrvym>niJ-JH$6$iSo0gHV(TSVLu)A>oJ;^Np@u$8y%AJSf69 zB;{cdekZ}u?wW?#PtO06=;tbu88Uj9>oTh{&hcNmO@?$97PIBvUZz(qhB^R*nw^po z^|<8S^(rRzjBGurs&A@8v{PS}3vd*r0twShWPG5K;NgcdP49(2$tjDvZ=q(khKW{j zjjCVfwflr1kHuBeC^%O2MU}VZ;Bj_R^ce9nP`!|uz1}5|_WN?{-KcW+)B-d^3^Jzz zrlIFs@@kp`M(j3nU<{JY z!$l0PhB7aD^YvQpTsEbuj$Z-x=xa$2sij|7v+BGjxZe6F>5Iuz zB^E2(NV<9LUcd$^Bqk>><^$3nKN0xyo3}aSflajfYcfYQh{+x6Ehw)wjdIf~sCBn# zx%83IjRN|*l92P`_{bC~@gRb))9FnoC-MlYdGE_N#j=us+H&R#A%NGah5V}v)3RWo zF&M19WrX|Jndc%;D_gscUm`qms(Y3php?Z&wA^yH+oj3{%ReW3)(>=c=hJ&(DWq<= zjIYQoO4v+(_ny9;d;zOH-y?;dgkLION|_*4?G?!vdR+pKAh6ZlXtmxgKD1WC2Es-F z5Y84@V^K}BX;e0N2MDzQA^;i?Ns*^55{e+)eA?diW!dR$bD;OJ3-B!iK@sR(f6LWc zd+BL^Fh{$Eu`xY%v)ad3EW~97PqJfUn4>3g3ELA1siup@Oaar* zeu2kuW$pAUl5Ki2w?5?xHJE49TY;jnQDW+~U*0}_Ft8WRW@z2aUeQ~!27m=+qzw|e zwusDeh$+_wru%lOoPt4Zt|Ef~(;1L!p3ejCNZMc$iTu{NWFEAM9oY%YUexwT0@)KO zAEFeZn&}ya+0Y$%e){W$dos_40cRp%M<{|eq6^T#oSYMB({e#0n!QMX0f7gNW>rAPxNIxn z7d}JnE`i5~Osf99qj3yZ&a4pyp#6m9W72weNNNAgXm z?M(5XBL1->Fg|e;pIjsnh!z4$_=YBq%*WE(zlmvtamvD_9rR2ut%%LM_@mP367ZLf zG~2Y`s2FWF$z~Yvbludbk?gu3b#h3aM-ni(jOb4Xl0{SkFq5-xux|3-DJ+71sH@=PU>AhnB8O(1Yl>;gDzu0PH)qD zwS5473Fa{D(ok;QxCh{dCG!Ae-jMmV*WDZ?>Gmy4wj_`Z@~7Q7e2@wbC}Pp{C|@AA zO2`(yMl-2^LKZ(j9s0Tq{=>tZUz>FA4+m^jx2M@IDgL@SuJHYXsN%zwhuhr5VRmTB zNDceW3+A6`e&81ugMiv~)t!{mF|_^iO!fYBuS?uC-!g?!glA>4f=3r6lm3aaaZHTa zmkWhFsdlrHM?A6`Rt7UFl$5Pdbf6Q!QRNM84FjF5t^Oi$f_^u(0@iqyR<30Bk%k1; z%|T{%sa&Oqfs%=@$cFMk?X7n5Zk1t_Y`}91FBx9Ex>S(#>&Y*1C783C{ru z2YRnJG@HJEGWmPdUz~eNII_dsH4w-pNmpVlOV_5e2%5gf#1T(p>Mu6pbd=E|?89rT zUEI3`h~KhXSg)_FKj*rb4lDTBn$NJJww_qY^NJKH-y*6_iI1`IK25`tssK5hapXzt zSs{Jj8)-PiHEi03huek~NW;(Fd?wqAbk-QN!C(z5GJjUz$NN+k^Ry%UM)=Gu&98i~ z`D<@oAQUR1G9rA9((66QgMOw&(VtE~)(mSitBa(xtlO>AJjAEm?AwfB5Z6j0IgCnm zv*Gh(iFJB-bw_)B*oK`;!>2w7eL5lMm~IT&_oZzAtc26q1oG&=0krub0O<0B3Q+~b z19Xr3#*R#81K;a?TDYtzRnguiUR_=_R@k`HpG|q3@q5rIwphy(o<1ZcU%w{EqKT!Z zA#!z1-@!9X8w4|?q29gU|5|)L<0Nt$5fUeG zGgUS6$dD)0iFm=y81kTvs@s+wVU$|`WCU*isrv56GCC{yAL(%}E4UE4a-E(isZPJr3QSinmCer?}j?KiiLWu+Ydco2D&6jk355nkWn zw$cYYsB5dFNcIgmO#Cb`2%42s2HuR#SBlVH&CCN}cg33YlKuoPFO ze#RvYXJ}n?;@b%@b?qO={Ph0&|F2ZE5L(MPE}WzA{fw9gu-Vw!Nt4=^5KA>442|I~ z5PE8-&#Ii_9re-&Kys1iZsIfjk0F#;q_^dbxG~VCXrnDQTg1M4USdp+r!LQspdys~ z?-Y4;fat)1j)~De$BY7pwkZ3a=@jIYX65e`BBpyH<=S>k(y8%`fBUp0)-Ahi6XyRf z`Bf4Wx%pe{N{(^lRccmAyK&%59yRRQg7#YQwZGFWT{u1hy=VlxSw4MS0VYMuG@O$t z^y+|ci5%N7YdFJ7uH3ErDxxBl)itgCnhQE_Nt@IAoFrvFm7kRKHvB5(EF|7|_j`M| zKB+5EB^{Mf$J4n9l)iENl|NADq}-O;En>(Wu&Ak|mWD=KXW1%qF)9V?-B4aMl~pMY z8o|@jtKlVZof`G-CO>+RC9sGy!>xb?ifWylT3=a=(oNt{Ggii&+_|psJ{P=_@f5%r zUf9)Ite=11s7U+Y7A!F8=NxV``fFwchPq#>&d+PobQ1CgVkZqkn_aSzV5YMv?s!*| zL`8&_CqWJsVM$YF)I7l?7L(E5y6x1cF&_sO0*&gQC`nhE-0GsXJEQc2m{tWSHE@mL z#5k zaQ8ddJ!1^n;JB!)j3Y2Rec+Jm1?_&Nfmx2pf(%TZVhX#xX=pVMdSPyH_a z%)2`Occ3K9it{~nm;F0wUwa6tI%8AOVu2)-v3v3&P0IXfQ&+>C9%yfO38#kpFa3s@ z5ZzuN#Yefi`W(vQ=yoylo<^fuX^!M*(yR5v^zh0bQccz zCnDQm=<+}v;O~Kc;D?lj0ZhLDXPkEgWpbG;!TyEw4dgqbuY1a~<+Fi{( z><{(-!71@#rj7*65BocAgl`%Wgb^qVE@z6sXVAr^tyHmxzqopww4UZeW3CGN%17ts z3jiov!K3dj+#!P7o$$I9lp|~LJh;>G`rLH|1AotH2&1f$JyX3!W;k=A6^AlJJw9o#;D z8#_5rKcdglF3J;^Z`eFLcs$^FTh5!R^kna_U*FArYQFw(2p9oUy4j1x!Tu~Q!fOLa7gzvB6f>;o z0-2S8bOS36y;sMh0N~E4ycTPRYDK`i17$eIk4^owP-QVc2zrK%L|}##Fa#qh{1(xG zHSiiJHLt`2i6_6c@o%Qd*S#sF@!yIpY8B= z>~*JOHVs?0HZxTbBh~q^7C9zS%nO(am;mV2$4y&uJvf9mlY22{D23U@b@>R8-}d+; zncPihmL;mol1+;HEY2ThtK328Er$oTWENUV+G_IWG469+g#Sy)0b_PJ|Y-AJrA-r1J+@adOMH>m2Y^^B~2|?KrfX2C`v0W;9{NG7Y3)caU zrrL+q2MlgWs#{OpOB+5&od4(5A>++E(RSX*R=_TTlP~a9L;foW^!Zi{kj#OjO1Lv| zc!$8hbX=t)5xeQ``VrI(22mp&xZ1ykz>XV#ZUMBfXCu4)P|0)<%+4W^7&XT3_UEYq zV<(z(Bey`C$F^FwK#>5L`msC_CA7zwxTKP?s2BnX?jlu#-3|TtqZDVLXr*8K-x0c6 z<@i-BXZ4fH01|&8(2}+I*VqTv?>By^4RSYnP(HjaYJvwIXh~}qa7+PgEd$sW^=AUL zNHWli*rXN$D>^tUSB_RRP~R1>_|cWx{)9BYr60s=Q*;Te-gM?g3YryF2VA8gWOlua zBFTP?E^Rh&5LLdXs;~$IO!dF-nDZy!a6lmRnCIFJs@3nRX9-H@t(KZVC)};xss^kl zE3`{L6-5!*OT(AV06aFVQQK8CiETGLRXf(44-0aQUXh+5^>CI(;sEe_V-XoRGxJyy zuyX^a#BH+P4w!?}Nn&yG4=)e*&D59&4 zX314X`znPEus^B;6IyP?)CV9u29|(;&d2>;RD4AXccM1{?JlPSGvE6)t{azrJNoQ0 zgrhXc@FL+@W{vt-|Cx3q8SuAbE15;`tiTY5WHp!=`WrDd#_ z9 zM@nj*8Hz@b(8VpJBu|e(wu(sui8+p+Csgm!%N6RRnEhnlQx}LcoR?*17T6i_R^{XN z(-#)Ypd?a)z6GmHkZ@jp_D@A=D7ZGLnXllv(zK%QbNSCKi`at&Z82(my>vk0vvm$o z+H_oB?tBpNDNXpcf$0Hjo0jwUX@wB0jXLKRLet08rFk5y;R(D+N$dIKngRpa@ZLW0 z@s1&LaH9gRQAhEAPv(u4aL?g)eC*efISGvZuOi}m9eG8D_TE``LO7-J7mGRK%{6JW zS<#G}8HYj+LGD8Pm$ml)r*h|bz;FLPJRp1Fk%~J`3EB98+DKq9bU1f3O&Z_#G<)|$ zs{-K|s5j;Q@XTvYw^>s9vrcPnGJgDhVU!ikL}lEnA$Oz(?ww-xDs*z+=<^`vlpkLU zT6cLM1k<^{jiqp?WSkbvOIq3iDi^4&7H58k+W#!_qj?6Xj6 z=U_`VvMDEK>ZlU*2))kREh-5Rpf}!4iJdIxkmzpU@;FzUphO#to&Mrxj#S=jc+}Jg zE^)v=8RDCQqK%dnqk+A==RXY~Ha$0G6o%Ke8~TT3ULe7Yk6}~$Y{mQK+W)6;Ds*OA zEci&hWXi%@zq4Bp#y#57-uRs_Oz$rD%l@?$KaS-UEe>rVn4BT_1J9zV?&uWuQ{3Q| z9h{lD)-N{X(m+W27&ucimZidJuMd2A6IW!C+XhI499#IS^>+jDzm`>$|5AF6Vukw} zK0YuPX|UUJl;J~a^O-UQ#9rO!uw%CfRHsu6>BXWn%F_c>GqkLjBsU2C2AN=Wzg#BU}+MjVfgV7IQ`MfRjNC+b(3f)AJypNIUv=yi(GPg!pBP|3`Nv zGS|R&-Ti4zsvy$SD}CNYpT6cZgs0sfAGda3j-Ua>%u>137f$iDqeOJ711#g|p~fv> zB-5nnIh??2Uemy`D$5}vXY=U;hF{=Isd*8aUyt&J4r2fLFs!U#wxMpfvAnhMP4BFQ z_G=z*pL^?fkc2Ei}n*GM;#wg`}gO)y2HG082qEaoj|b}SKohZA8#sngsm%JK`@8@Qh83z zO$)lXz5WXie$#7D0tu`)|58lDIy`g2F1?iSAl9eGa1c;lmW9^v(A3Q`X^(8YM;ne_ z1_$knJhnYpk-ppE?Gfl)QLLA^VT6QmrLdje=P(^6#wY4*lhULT+&AFOM)n=IA5=cJ z3Y_tN7Vjyi5?yeu{C!f-t=KsCPi1nmP_6wbe+QcjXfArXm#UyLzuvw4%&KmpYSm1m zgeeu`VPNok&ij=9+pU`4zJleH09)3!-F<=H`0!_bx>&fTz^72tqLJrWz&|r#t7V{+ zSQ5G?-FYE~{c-mmuCk!@Uiq`2B<$3G4P?!R*Iv+k3)R|VDDUqGuDwgzVo9O7MjP~4fgbxzLj zEZo;3YRsr%x0740(qsuytHO0Eh|N~US+(RZ4U$g6*Ty`TlVswX-QhetbMO8L?>ZIw zXLCKuXJh--TBo4+0e_9uL6wv~vzgmww1Uf!bJ7<93!W`E?Swm1-adD(8BRR14QK?r zmPy@_mJSn( ztjbUB05_cyU^rU=_Hf@|RpcImbI&CoH^*h?UGpx3^^1w>C##iCWq3um zWHz!@lkbwHm-|m`b^Ij>Xk;Hu!*#~zCIKPinw0u@7xSY-b+%tF-~i4|y_hHh@tUtP z+$O$}J;st6DOvC3DJuG7vCUgqbg~C4CutmrIPbfy*Qh2c>pm@%ER7~j-G%S)xLD>H zYuqhkrk+qB`}XkQZ-Ylybpzx^-Nlz!z4sfT$jpEteRaExi~WZwwJowa`-!zs0L zbHU+NvrPeYhUn^i6Ue%TF}pBrc2H&So=#_XG^HH$kdYKv4Cf|`B#da6$Bk3FJv~Qe z&VeX4W^2h$1D9^t*QK!s6Pqc(ZATzBs~**Dp9LKJ_9TWp@t@0o90^#X&}5+6vi}k5 zsXthag%Z@t(mu04$KM8a-t4k1E0&G-?@uy+I$&N*J+=w7n4uAYjqEmr%uwb6 z$|CQE?h)DqglY^ckn`w1?@dj5?iW(SSWltLZ69#F|6-B?KPENnq|AI&TPjKW z4ZcF_U(P-++A`eU=o3^R%Ze?g)Y8QhQk(hh&H5RInEI`(a*z(o$c<+Q^IkLY7(2$K zc9-ODc=fW!|W?>fHOTl02F;Yocb+TnHN= z(>l!Vg4ZhmI_dk1on{^rQtTVsatm78YF0-h)_K{PaQM0nc&1qjP78lrH<6gSR0vrgdJvRIV4VZ;CKA*0xkfplOU*MxGE*t9dd9~- zu&)Hy8UA>CDQ4ydz?;;tWmhshtey4V%KqxQkG(hcBG*IngM5A-5~< z`9-Sa1Z!9I~%S&jkpQcgBqNdq<7rbAp&doZUr3bu?^ZqNKbagfi}%jwa;)e$jW!dmYXxJ zJH6L*!|PlRyah6f3;#IH<(|%f}8g5gd^;R%_2BrRb#}V;>FTvS<}}rQLP|^V*;mrw0{?=K+D+smK12yGUJ!9ytcbN z!ACM-MxZZ#;Erc(bDHqniNiyNxO_7>Ua1DdPl1{+^YD0XF*FYyh25vy_wVBP4i{Bagce0<{6|p`YBKz7@eCs2infG=H%p|o(6XM zvQ0egF72!t`%T9QIQS0T?{P^YKTC{VvbJu11R2hgBKy^d14;NeW<{jU=kjAKWu-{e z_H5G15AW{F7=YhqGv$SV86J#1z0S_K35a?7A23+uBmSg6|I*U1hw?P^S?ph^BH1zZ zG+`ilnnU41X-J3XPS|f5qmTAA{d_I`5gK`_R#mgu?ZEIW0X)1!!8p2zcfb+qv!Oj6 z6D$_YYzY$vhf1W{M`tz1FB%BN*3>;206xW*@N{m$Fww85?S40_T;xix1tX2}`1oHSwErR`9z za&5STJ^u>0Ucir)sFcfxY{sbxJKpwUpIJjH6u_cXbb)=F-f|uky;gYMhW28y05YJA zv4b(2(HeD9LHXED(VQxl+pfEOU30lzO`$B4gicD|nGXa0*~X1p=tU_eshBt zD`{uN7#nWJH=3;9johbek$+o~+Rtrd{JJypE4F$&rq82-(Hy{!!*ZJe{dOdy3&RaU zMi0bQwlCH#^!v0N8-09Wk090KZPrt=Cxm8)4xd4Ue84}4X7EA6+wrp1tI?J z33~qH0Cn6K$gCPUpS(AE5Pjdwy`4nqxnBtq+0Mp?AuYi-4e1@Ol1`RBO^6D z#zzGo`*3dmp9k*zGyYzX9o~Cf$-JIllcpW*u@64@cZ4{nay9rCu*aKvL9gq3TH*}( zDgM{FFH&&ttVr|NMhad2P7a1oj|&{__IQ}Gg&G`6*!4RXu2nWmN3_*QwC*7P zzx?C2Vsd}E3*N7}|Fk3W}`wm*71asX{9&LcSPDi2+Rbb z=RbnP;n(h5xq>7ugPm!{Uth>iZ<@m@F(e9VhBfQFoM21-L0N>Y$QRAW$*9&ysRHwp zzF0mO-Tu^UeC!PM`%(%J{@Wg8by=ux#pk@nJ2Z|csP=d6Je~M9plp46A+^4s%_96a zGD^aR&(jOJq-K*GN(!aOR}*P=Bu$Bf7eq==08aTt-+diom%C1{jDwbsu71F1@EraOh6|U}`8taE#Ha@`C;dHG$b^3PQt5mQh^zdRz=T1NU zu2hZm>BrYAN54JExtfTZcmn+t2+w%iCYvQg=gGm#jNNL|YA4QM69rr&HNv|SL~$)~ zT-|X{g;}4@CCl8eGL{M|8*DEX$dgF|C63~2-obNfq7#Frsa6(EZCsD*M?OgXmhV$i z!)6Mlj;qXrWoO6Q?}ZX~(RRto*PNZN#vh*P#)#g!h4=@U-E3v;*Dm!Q(Szq&Yc}UR zgak~^yplN+I!*qxA)wUhK(5J}CRe)poz$!%kM!IQUGxF#)U4OHrGCEA35Cz*WQA=Y z&Y9`EPHp~>yqfHxAh3~f2+T? z$Zl&?cJi9#otD%PcmH`O^$w>ni@LLBJF8}k=hl=LN>%`kxOZPq6}WGaSC&C;P2Kr^ zK=aqP5kN?;L4o}9#u{6NQZ?5sNkAM_{pG&`beiE}pzM^~Pn|ZZwtJB6jQ1X+YctEx z*JQbHLD&ItYyK5)mqE7fo?~0wJ(nt~JMK!1%^8F)ETmqqG|Xr$7!;G_L)}h!-B)l{ zy(%x8q;HqA(4U$hv9log&D+Mkv(Xu!6!6i)=Ea-Tb?+SeT8W^Ql=^^*Jk+;3l7sla z^Nty}{6pPukrW!+5_d@ag);poQg>c&e6+}M?sk8z`Ki_&p#{W4DnG!D&IfqwC>0T= zz81dRu(fFeZ-H*>`U`qJIR5ROMHyeMkCo;>sjM)%YEsLQ=O$n2%b6>;?hg6cOD4|Oa>N1_7VBIc27_PIyV4RcQ!+~( z*(ek|#Pik)>->GXMZ3aN|L{h2Ku6e2s*k-Hsm8iYI6UudKsz>QphSw0Ah=^t;_+a) zee1P|#i~f6jOz2b0zH+n{QgXNjXA@yYu2|9seXD)d1BKazxc29roBy&LbyZT(Gn`B zzTwog*Yl7Hfo;@AK^{4IT0wl}rAXt*f|3Fp1zP2->ogO3;%NP1&r*&PH4`dbbMiWJ zkZ@CejV(4mJQqoznMK&d?O&e7OpU_ci%x1~ZQ}Uo(!>2)fs9#}z0A$mdni{g-oy>U zzfK1lvtGAqvEOrD?bCjnizn=jQaBwgH;H#^;T`O*BFRQ&TjHi~)YW?T{viGR8$e%yNGWvx$ncY)2D z&TP`j$JRt$&8E3_!Sey{9?fu)?F5GB%;@BZ1XDxjrqI|l%{HBHFGn5Ce>^aMc>5uX z=lSR7T%N`4wS8^ldDav)?C5rnh- z;Ge(lCx3r+IMH6-eb}AJY5vnu)VERmW6A@HL#lNpww2gE-+$$m0R)&j(c2u@HKsmE zmVB=xEfi)L!ZHy*xzKM`(^XeLy!qiuX$1C!ica?@J&WmK_j5MtMnV_uYrYRC>u&dt zp1PKSHP>|YyA?7F6oEp`f5HN86*jR=6KS=-ibw0fM*{J2u7Z3|p8l0YQ`5zoY0Zp+ z--F4ERa@7?wx=DpmS^vs)pijRDLsHN8etREsQ3S3qNEU~+EEwJQ9w7n-0kYx#;Xk( zm&PjxtHAmLR`5p*GI4tXc1gv`Uo@6@h3Rd({3H=1oZ zgb5EJ!ifjDJ@IH(YKB)5J{s6_a$B+tp;Vi&z_su+TBj-ejPui3x@Y1D98Z0W5W=|M zypTiV5x0HCktPgB1RdVfg6p9<@Q9ex&BsiSpRQfe8`=<5xoy8(IqL2TrxjI=kKn1H zaM?AsnEa+bBq2OC{);MSL}795Em{V|w^*H}$_{YNkHlxF7aZV_Fh+;DKf)~|Y|EFk z8ZwmNq^8b!0oCyL&%nAUg46ux5r^04uHk`&?#W?sUrjr9JHe=LkOquo|Cszb6yd_r zYnn6GL|ryjeO}}t50;h6?In{rRYThT^Nduc=1Lcl(wm4!NM)uga;2({pP4X;W4)Km zuzTCzaJ*Ol?cZ<|!uf+VqZ&hd|7fnVa94dG{$2aAX}jxyP}~D(Im1g3;7#_oS0ds) zU4$+243^z}CL;pO!tQFe%@4axzQzHD;BvKk+U_&mbg9zuJ7e&TU3XLwnDSR7zaQ?} zeFn4zVJp8B)$pepm`LemfU&pS?re^`&&bn9_8|EFa#!!aA_;muz+A;B|JPwsdJw#J zD1mG%lRy{WKquaEgZ8^dk4Ei^r$a2@wQg;pr98V`9JmMC5Azf}?c;1iN;xY%TvB)Q zPnC>OT2}E>heBn?-3AL{syfG_Ha6GizwjutYXeTdGNCm|b==env-rm|pl_h-yiu^x^{qba> zIe6)V#DTl|Z5Q8_^kK9F+n6c-#hol1U`hm2{$_X3P;^?T99JQucHfGCQ|+`sk%a)n z=S-Dy?8fG(htetPjimIAvoZ}n%Wn#cN1_gEs8L0_(m);|Q+X;7=r(IZZ0Q@o)gPpl zbxIf31cJc5Mxd`Y%yxKW+IY2ccPkqv9UhBs3JiO&5|O|qZh8t>hW*|?)BOteTzepL z-^Sv4;Iu>&aY|~1%C-?jF6q%_5?m7B^bH@y+s&rC7Q5ij`^&-W5-~*ZITFVz<)|(? zdV6Eg#-mt}M#Pev-=VY)1Rj`Q4%@2xt>lkORedj0+GIo5lb7m(n@HbE4rx+XlEU#> zYJp|l(MKi1!QT6>ZB4V;!J8ye7{Y3X)T_&;P~pnLFGSQNVD@w?=a9e82HpR%K&&xs z3nR_v^J#{G9kfq1ze~!tH!`5_ve;JQ5i-RWEDGz~A4vTn$nohmjVR(9n=1jhRthS33Stj zdZcervYQp%$e~NcORO~m0kokiCbUhb36-5-X1fE-3WJCv6st=QG;K|w!-oQl129>^ za&0mc-1XbbD^bCxUnIv`1uwqup3VKqxLH$`5D{u>Gr}Cl!BbhgWRfAUbua>@O(&P{ zuLag0+FkZrL3{(Lq{^8R!?!za(i!SdwI>$XG%223ciih1D`%8zO&SNVI%d7X%9M?g za1>k~mRm`jl7YowC?HqEt>wFX?n5F-Uv4)IGQOPLoTGJ-Ph{kXO8`iZkO7hlPK0*H zY2j@uKM!?fiQdWcDi)5`yZexnlX0ff?M8^-oT&cLp#?^}slBkqyZJL`Qu-Wng0GgB z<<#++_&PuP zRw9<3kL74UDWBjW{$Uj=*xmS6+spAw%A~fQ43EYdV>qc1-EKt%8L<}|RzFD=t$mu} z+HV6=XBos?V2(T?epGk%>0%;^%g7iL@Q>NQd!$A6bss`ATOei5scLgDNepZoki<)a z81eXVb+1r|JXz0GXf2;R)0xF)roI;-ew=?&LRk)v3)$t*oJy?%GR>GiBL*}#^S zZXss%5BxZ51ad&=1`c$aZnK3Gb-C6@ti+iDem*cvclufXXu#jlwDbspa3b4@7J8jB zbtghjgFM``v~pLuZld^uGQz#BPZdIRKZ_P3|9ohs7{?rzEQHdzAq^%=c)H%bmiq`7 zBVjq69C8uDEw<4Ca7A9a5y*>pHCP|%oN9u$Qz}^Y=h9nS`WN+csDUei$)JMFpOn|* zey#3S3T*g<31ddcMsi8qzQD~Sla&2NdR(tA?T2C3|fH(^S+du>bX&Z=tTXPc;@FWCC`HK0FDBQZ|F;hVj$ZR$aQs-3C zd@D6zDd>+?`+#U&ycoLYl@Si)p=cVh!Z&)O-!!AG{g$i}hOt#CQg~UjVriSRB)b6o zf~#t<-=f;b*+XSf;zLoY;v%A+YIi$^D(9gIB5ts{?42EM!gJuLfCVZ|ncGy#8iuLGKKD?6JITXdN4Y_* z8V_<6+3X3Yu01#8Jq?4t2#Z5O{%9xKOZ&TCAPXlOkYQ+)weD)`#@Y#BANc{+N8ZGz z3P%ml){3g`k$YgNN=s|f96S}SqQn+|7%tT>k>Gn1;{scT+6`RJ5S#gERzaIKDUvG$ zo+cy3>N8Wgyby=%uTQ<7yu2?(B4lu-oVc)hgIjI!Lk;7$1}@4Jx=W0DYkKNT5Dq^6 zs6W)IwchO`sJTHMD1Q6h_~DuG5Ym?%_r$sIt-1*XV@MU(@6IthY`vza=`p{?w}V*f zC+}%r;m@j~8uJ=KBlog*yy3a%uSZKXA~iP;#@N(OsZ!nxoUF5+AwOdaEnr$0ap}DL zVpT9W^IWc~gD`QDZ|Xa+MVqX)*l~?9O4J1~!vwm>naR2NRWt|5&ry21;!uy;+By8~ zG0-mVBeILkWjcnaTN+6AfPkgXd;Rf^Od*J`*ZNE!p+C2>9<+uVpFqqI8)*GYT!C%k z$sFr}{Lh-$c~I}az5m$ClZZX5Z92tn`&4oYXEU0Z8fMCs#<$_SpCbJ1gW)zm_FH+# zOuK$ruOg#Qv>A01z0S*qf50U}*Ewb3h1wVySn)rGmRIHACn$*1e(P4&s-BT-uvDAP zsUt42(Y7DF6qcDi->Z|wiEC9%#CU&@PtLGhRj_Q-(XC-8XD3!e?lV2pf+K&J4GyH2 zvER5KypF6iQ(MvVzLBb8V$B*;Vl!Di)GzPP$?K`@v=AvHYHKdd{e#s(Dam8f z_?6y+KDFm+l{Hu^Q7hEYV|=<3h$fN+avjUZ&VE-tv=)XnQ!4~G929yo>arh{lV`1= z#ws(AaKZ(5^<>Y_Ku435-UC+3fdRM(#zU%KV-CQ*b0(-xVIg(stR-=cmAIJz8)Ge& zghPUdnOIKJNP|u3LZk;tA@=?LFihNwJO2BPPM;AM#&y=Qie9CQ8eEuZ?^m|EWthqA zIGkOa;U(0``sm$cIjwrCd+PBBLKn_s=lz&-->|)OCgdr1)Q;=>({lSsUSfiJn{Ald zs>E>8>B54kz0~>rLZdAu{fUjDG0PufgE`I)DxV+l1tM=7-LbmDJMy6gQ07oydDLtP z#OZb`8rRvUIfF@uqE;A~N$AMGXEn3WApKiHevW)4D=z$~H1=`6^-Z{-%z5*qMd3AD_% zR_qya6^9{0#~Fmu*6``*j>PmAxd$E@A5gwWTTN~Hj&BDIkP;OO+B9pp%p31C-4%Do zKs6wRwJ}ty?4#=5_g|R(dNS`2jG}DMU|MD_GElZhSrX!#M3v=WdoF+-$qB7WDM!Y+ z+k2?fO5VMy5Xw)~185N#WyC8>g|=-6l!zw`ju3{w2op}ul8DZ_Iquu<$YY|_C#Tl@ z2)cNDB#`qvvQZS?iPw5B@8oaVaJk}(Q&ms>sV79lM)9_bxQWnFSwq$LURc6Awqj99 ztAy8ZLCtEP)rb)3_8&?-zT9KFV~i;>OF8iX1z+e&$+ZwvXf%?Ym&gZG(+#5wd_otQ z7Z5y=650z+n&hioZX?nOL$q-Ok-j@tXKwG{!a>ge~lugYz77xHlwXCC0PcY*O zlP0lR$5a9kmNPBJFd5~WW~Wmu6~qe4bz^?ZmHEfgRjCBYXvA$(mfM_|h9HoHROU3S zmw$>0w4 zp<6}vME3ULl0sAVMV{2~>R=>YtoYK}IKvJy(c9nAi?L0V=@K6OH$!6_rPX*!^M2j& zd*KPKV)#<2a6-hGdR%gVms@~XNGSvBcScj5SElyQ&4Axsg>Jt6>>u7aW18E$LJ8d( z8^ntWh7o@(c*((Ha=%|jD%bl`TV=w$=ACGGw?HiVA(P(}{?1t#yC%{np=0@w=ZIFa z#f>mgMNzK$IxQi4EPv9d*j@+sOl3k^l!r{R+PSNQOW{$t`TU&5IROSv&YiSc*&-TLi*PhX2h3h!u=*VOMS?a$LkP`zW$0b`lxTpn zQhJoTyOUw5K1O&h<%)S~(TUN4Ha62E0h?wg%}4LsW#G)vQ_r)pUrc#zYAH9uRuE{v z%E6hfUJbWYQ^?*>9Lj{-vmlAKy8R!xm-qQaGp*&^W?lV8k58m2Xode%$qtKb1xZRq z)jY!J0;Fw!<*#BB4pls5xM%?+ZQ=?6xp@pUJ*qC0aC7oB&h`X|3MAMZO3G?#+=r2& zesjBhl7OGQsust{glw*Pbnz?Y;3x6nekN$cs^TNIr21q2XB+RIJJ8Yvs$Ud7@@$9u zVJr%;smoF5a3)U$<&jT^IBZjmO6_90EXfG)W!PSAoPo(UTRuAs6D=xd=gge}nFF1?VeCb3XFp*9l%tpvB2vT-^XtKnEH}}pj4-=3mrqKZOu*^YfoqFpP4ufYov%aGCt8+3W?Zt6=VB+Rc59}u{g zo@6AHE4iSY3nhs-6t-5j4EOs{;TkQ3RVFRcDzh3m`P^1aU~t#b zdLx~66l8iTZQ^3Iil>!KQ(7J2=$tpR_DwCF$P>l~c22{R-PYN*1K{QpWd;yQ{19lgN1g6CG>tCHG z#-x%ZtTj$5CJ6_KN8*g@&gRQn$sEwIRn*CaM*Z`2S!&K;|XnoJ18g%nj_P^{FB0Q zJ#p|R7)JHr1uNCxSCWfKRp8Pb;I^yB55LW4@=Zp^^ z@8IWR_OIXUb^G$I4hosgwmBneWOg3;mGtt%zr6!YkT@^pn=U7eQ}A#PI)b?t2C)&=faz3)$ z6grbO#ipIZBhq{~{sr3p=o4wxKcdHFdbGngyIb+9iI6r0WDs)mql!X^@qdM^lvs!x z#Hl2urfTf6$hk}F0~(JcdEn|j6k{krDFPwH817?_ouKs~Yf*@SC@^1w2jzSD@vUS=@kpxNgDlOP4&JhEqEs!t<|G7Sp-;g~kB*JM6`xz`nt9s6r$?zN0 zCA7+gqs|c#*Esk4O&}a7)~!Q*YztlSP;nJ;cm*4oLm*1+q1+RPa4@z{9y~2gQtYT| zcOVl~fN7d`z{YYy7=gSQ(v#hE3tNto=+G)+7ouCWjvB3UVG#8Wd+oS}azI+ryOqOn z%W%R@5GCz-GGcBEQf7#~f|Frt2O9AJA~+<8;RNB=6H9lOuuGoz47t732EhcW220E3 zyYW~#EYeLKj=#3yr>b4)^R`>`{YOBe9BLk2521wNILX}A*$AeJik19}b9S@cpVLVf zqXSPGj5l}6{AeXkcJPF~HJYG_bMQXo@0huAFG=)d<`Qo7qA`rZGhMB+wMAbQFfsn8=$|rK(LVlSU!BvLQkS)~W_3 zMKN02D)Rej7%nT8!V8f(#P1v0PTNPu8$$Kxs+ppHE&;L2;;gtd0n%$l5*JZ}u?{x23 zwBG;>?f9zz7A@IdBz5Qqr>N{UObd_0Z&)oI+{Q2vPkD*GtYrq;HTjiu^SA*PGs7|3l;IlErr0v3(549)eR8cKfCT)C>WPGK{RiW6EiERnD z-#mOlsDf3Ga2@~wMhPak*(1X98F*aPxWJWf^X=vnQXXI~OwLyCiv$wuB62-+Q$`Y@ zX6rU*c z2wpoJj{Hmy7|N)kZ5L54g>00ZGRu-BaO);+xvIK{%-(?l!ye|41pL3BKdEvLTfaT9 zXNr)mC)Fo3kkr=V=K0!__vUh<~NSsm#8;le%{%ZGiy_ui!{^K3};*{$4*!yF4NBPjK(}Z994Q6 z&A9(?;Sr{Oh1mtc?a%&=-lIuj>v^=QfG0tnH@#j=5T&$~=bi&${eiXg; zSD3`Fn-<}us?B-<0S10Nr;m%-`7}Wpu}Pku&C!`oA~BDLlN-^eYvXq&Y_bXNJL=NL z9T?NuGYXg#~9WoPOy|1it`_=a-fgGg{7f7N|VCP(j*|7YHSrCq0xBi+I|Ja*e` zXxF1N>@?Qa{PzS%8V5m;Y})X?Eg!&Df4joaXf7z6b=NW0#SR#eeEocO*`K?-;FQX; z>sbSSPgBS-;ETEgSaN?q0zShyxa*pe)df7Ji|{J=({5{kA6foyK?B>n^mXEg$=0LY znw4P$ClI&v+rfol0j??8j~PqHc3o4Ra9q#dCh|rcq-%h8mBudYx}|^vm@H4A>fGsU z{qu&(J+P8d^`(bg=)*!+TXx@CO!pMi1bhvK1trh^cBKs@V#HFdCVhjT1yiWDxfZu) zgGyeu`S7jCk?BvTt}w!{r>5#|6K>y9eXXCHFM-qTIh9#X%WPclKik8v5fYHJTPbjZ z4*UdhlBJ3{*8^HwN4mKO*RI(3)F`L;hX1qvOhp%7+I}jd%sk3QYOin(=fys+7&=;W zHQ}>~o36~==^-;+Pq%tHTJKx_I&Cel%+tt)j$d96!`S$6w3ub(VOa%EuP?=MiRUg$ zm6`mMp59}@yt$Y9eDrUp+m4i8v6DH;F)%KlZ<-a9^gdA7|F&>@x>R%sr{{w#75Pla zXChP#k$*t2bP5C&1v5MbF-+Ghg;J%2oEos18PLKv@ zSAjFz+CI}lTH{fwG-pI!Z!04~*5?5`|Fzz;2Od=txUJK?fVY7jtaccQXC&+AYU=me z^nTeJ*69j&+sQ^vWxUZv4V z%-1Z)s*&iE3|ZAw8?hEMp@?VpD|5s$A$+C9c;nyD%?6+z7A>Krnb(qN$K|WsdEoiivPA=UQ54-#O zRkp^6E5RGQ2R_wGp2^{a&NGA*jkdSA_PL$$uFY+;dd-Di%^Hl^^QJa2A(w!pnn!A; zMyjhVtY6UUsic(rY0SF5P)Qy03^UP0Z8>AikDoQrZ-frmzr% z&;QWXvyJ)p)ksz=}G}i!-4)gcjes z08VthDa)xh_}A*L3kclgXpW}Pt+nR7*yD2M7z;Q?1Y+LVeef`>=p*x7Ma^V~mKu|J zlf+?jey$pVfb3cCRoNk()5DO1O z4F2JVAdY%}ul}&@`3hk!8xV-0pQjc?aIy)3_fk1Ec(8PXM!RCfP znCgv2!~Ix(PHMLflHP7uoV4C_8kR|RRM|e|a^rkn&`b{_^FfB7zVz#d+D!h84R0(O z9{7rxVqVm3uITvaM9!$wOGi?P8AO^0&``EwUJsm=3466;So-1*B|TzqkFZ?iCH7s= zF)zDuT}P|=_&cYuuCxNFbbku`>`ujNtiAS0y6Od}hdyvGnMuyrAU8>vc~gNw7iz`H zc*E7VJTt_hUoKhXd8M=dB3x0hOn8+?qV8|_0*_Gg9)Alm+(GFRQrYOS*D){GE8mD> ze7oP~F0i-9p-&7F7nH1pa;My)c0)LJ8Tu~k{>|P051d@&AkyqjJPHJjVu=tqjP*_R zigj!wAt((7K`=P|8u(3v0K{T)!_LLs$HUuM$Vl(cjsN`b?r?cyBne7(?3>n>$uR_Cx?FVpGRO2XbY3jf6o5^Y^WQ)o;SR`Z@BwNIXeV+KoC2G zgrM&B?c<;T2OaK{V;2Q53}UCZ3u3?&g1h#Rz=nMQ-4696Yv8jS{i zejmKxKY|?sRsT5{06g>;W(P3hZ$T{pum8P%5y15K(2q<11z!fR=-=ybAqe{U7iIwP z#lJ8+fbIXn8~~=%3;o~}f}nuEFc*Mh|H485Zutw#0(kfRFbo7K|GmxuU~udA!HIz& tqrcZ-z5l;FJAe^?%kU5&=*nMM2*4-)((4fb6aGF6Q6cCK)1Kd@{vU2nGztI! diff --git a/test/hexo/themes/hexo-theme-maupassant/languages b/test/hexo/themes/hexo-theme-maupassant/languages deleted file mode 120000 index f9705ffb1..000000000 --- a/test/hexo/themes/hexo-theme-maupassant/languages +++ /dev/null @@ -1 +0,0 @@ -../../../../languages \ No newline at end of file diff --git a/test/hexo/themes/hexo-theme-maupassant/layout b/test/hexo/themes/hexo-theme-maupassant/layout deleted file mode 120000 index ade2fe147..000000000 --- a/test/hexo/themes/hexo-theme-maupassant/layout +++ /dev/null @@ -1 +0,0 @@ -../../../../layout \ No newline at end of file diff --git a/test/hexo/themes/hexo-theme-maupassant/source b/test/hexo/themes/hexo-theme-maupassant/source deleted file mode 120000 index 17056a9b2..000000000 --- a/test/hexo/themes/hexo-theme-maupassant/source +++ /dev/null @@ -1 +0,0 @@ -../../../../source \ No newline at end of file diff --git a/test/lib/HexoHelper.js b/test/lib/HexoHelper.js deleted file mode 100644 index e426213c5..000000000 --- a/test/lib/HexoHelper.js +++ /dev/null @@ -1,14 +0,0 @@ -var Hexo = require('hexo'), - del = require('del'); - - -function HexoHelper(hexoInstallPath){ - this.hexoInstallPath = hexoInstallPath; - this.hexo = new Hexo(hexoInstallPath, {}); -} - -HexoHelper.prototype.cleanPublic = function(){ - return del.sync(this.hexoInstallPath + '/public/*'); -}; - -module.exports = HexoHelper; diff --git a/test/lib/getMeta.js b/test/lib/getMeta.js deleted file mode 100644 index 18347f6fb..000000000 --- a/test/lib/getMeta.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = function ($page){ - var metas = {}; - - $page('meta').each(function(){ - var $this = $page(this); - - var findMetaKey = function(possibleKeys){ - var foundKey; - possibleKeys.forEach(function(i){ - if($this.attr(i) && $this.attr(i).length){ - foundKey = $this.attr(i); - return; - } - }); - return foundKey; - }; - var key = findMetaKey([ - 'http-equiv', - 'property', - 'name', - ]); - - metas[key] = $this.attr('content'); - }); - return metas; -}; diff --git a/test/pre-test.sh b/test/pre-test.sh deleted file mode 100755 index 6abeab5ae..000000000 --- a/test/pre-test.sh +++ /dev/null @@ -1,3 +0,0 @@ -#/usr/bin/env sh -cd test/hexo -npm install \ No newline at end of file diff --git a/test/test.js b/test/test.js deleted file mode 100644 index abc7a41d2..000000000 --- a/test/test.js +++ /dev/null @@ -1,152 +0,0 @@ -var HexoHelper = require('./lib/HexoHelper'), - chai = require('chai'), - should = chai.should(), - w3c = require('w3cjs'), - fs = require('fs'), - getMeta = require('./lib/getMeta'), - cheerio = require('cheerio'); - -var skipW3c = false; -var skipGenerate = false; - -var w3cTimeout = 10000; // ms - -var hexoInstallPath = process.cwd() + '/test/hexo/'; // slash required - -var path = function(name){ - return hexoInstallPath + 'public/' + name; -}; -var $load = function(file){ - return cheerio.load(fs.readFileSync(path(file)), {xmlMode: true}); -}; - -var $pages = {}; - -var load$pages = function(){ - $pages.home = $load('index.html'); - $pages.firstPost = $load('default/hello-world/index.html'); - $pages.secondPost = $load('default/hello/index.html'); - $pages.firstTagPage = $load('tags/big-ammount-of-similar-posts/index.html'); - $pages.secondTagPage = $load('tags/big-ammount-of-similar-posts/page/2/index.html'); - - Object.keys($pages).forEach(function(i){ // loading meta (cheerio can not select meta tags) - $pages[i].meta = getMeta($pages[i]); - }); -}; - -var helper = new HexoHelper(hexoInstallPath); - -before(function(done){ - - if(!skipGenerate){ - - // setup a hexo dir may be sloow - this.timeout(15000); - helper.hexo.init().then(function(){ - return helper.hexo.load(); - }) - .then(function(){ - helper.cleanPublic(); - return helper.hexo.call('clean', {}); - }) - .then(function(){ - return helper.hexo.call('generate', {}); - }) - .then(function(){ - load$pages(); - return done(); - }); - } - else{ - load$pages(); - done(); - } -}); - -describe('Home page', function(){ - if(!skipW3c){ - it('is w3c valid', function(done){ - - this.timeout(w3cTimeout); - - w3c.validate({ - file: path('index.html'), - callback: function (result){ - console.log(result.messages); - result.messages.should.not.have.length.above(2); // By default, w3c gives two warning messages - done(); - } - }); - }); - } - it('has valid RSS link', function(){ - $pages.home('link[rel="alternate"]').attr('href').should.be.eql('/rss/index.xml'); // тесты на HTML ебашить так. - }); - it('has no
      tags (scripts/strip-br.js)', function(){ - $pages.home('br').length.should.equal(0); - }); -}); - -describe('Post page', function(){ - if(!skipW3c){ - it('is w3c valid', function(done){ - - this.timeout(w3cTimeout); - - w3c.validate({ - file: path('default/hello-world/index.html'), - callback: function(result){ - console.log(result.messages); - result.messages.should.not.have.length.above(2); // By default, w3c gives two warning messages - done(); - } - }); - }); - } -}); -describe('Tag page', function(){ - it('Next tag page post count', function(){ - var nextPageCaption = $pages.firstTagPage('section.bottom.pagination>a').text(); - var nextPageCount = nextPageCaption.match(/\d+/)[0]; - nextPageCount.should.be.equal('2'); - }); - it('Previous tag page post count', function(){ - var prevPageCaption = $pages.secondTagPage('section.top.pagination>a').text(); - var prevPageCount = prevPageCaption.match(/\d+/)[0]; - prevPageCount.should.be.equal(helper.hexo.config.per_page.toString()); - }); - it('Next archive page post count', function(){ - var nextPageCaption = $pages.home('section.bottom.pagination>a').text(); - var nextPageCount = nextPageCaption.match(/\d+/)[0]; - nextPageCount.should.be.equal('4'); - }); -}); - -describe('opengraph', function(){ - it('og:url', function(){ - $pages.home.meta['og:url'].should.be.equal('http://localhost/index.html'); - $pages.firstPost.meta['og:url'].should.be.equal('http://localhost/default/hello-world/index.html'); - }); - it('fb:admin_id', function(){ - $pages.home.meta['fb:admin_id'].should.be.equal('100500'); - $pages.firstPost.meta.should.not.have.property('fb:admin_id'); // fb:admin_id is intended to be at home page only - }); - it('og:image', function(){ - $pages.secondPost.meta['og:image'].should.be.equal('http://localhost/default/hello/test.png'); - }); - it('og:type === "article"', function(){ - $pages.home.meta.should.not.have.property('og:type'); - $pages.firstTagPage.should.not.have.property('og:type'); // og_type inteded to be only at post page - $pages.firstPost.meta['og:type'].should.be.equal('article'); - $pages.firstPost.meta['article:author'].should.be.equal('https://facebook.com/zukerman'); - }); - it('og:description', function(){ - $pages.home.meta['og:description'].should.be.equal('Test blog description herer'); // default blog description - $pages.firstPost.meta['og:description'].should.be.equal('First post custom description'); // custom description via front-matter - $pages.secondPost.meta['og:description'].should.be.equal('Second post og:description'); // custom og:description via front-matter - }); - it('og:title', function(){ - $pages.home.meta['og:title'].should.be.equal('Hexo'); // default title in _config.xml - $pages.secondPost.meta['og:title'].should.be.equal('og:Hello world'); // custom og:title configured via front-matter - }); -}); From 39e6f729f2aa98b686754ae70a2f6f2815777a39 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 5 Nov 2015 23:49:39 +0800 Subject: [PATCH 066/118] no message --- package.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 package.json diff --git a/package.json b/package.json new file mode 100644 index 000000000..c4423d4e0 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "private": true, + "hexo": { + "version": "3.1.1" + }, + "dependencies": { + "hexo": "^3.0.0", + "hexo-generator-archive": "^0.1.0", + "hexo-generator-category": "^0.1.0", + "hexo-generator-feed": "^1.0.1", + "hexo-generator-index": "^0.1.0", + "hexo-generator-tag": "^0.1.0", + "hexo-renderer-ejs": "^0.1.0", + "hexo-renderer-jade": "^0.1.0", + "hexo-renderer-marked": "^0.2.4", + "hexo-renderer-sass": "^0.1.2", + "hexo-renderer-stylus": "^0.2.3", + "hexo-server": "^0.1.2" + } +} From e63eb7ed0c62ca8bb6c7efe7ccc9959fbc9fe4f1 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Fri, 6 Nov 2015 17:40:58 +0800 Subject: [PATCH 067/118] integrate menu settings to _config.yml --- README.md | 42 ++++++++++++++---------------------------- _config.yml | 13 +++++++++++++ layout/base.jade | 6 ++---- 3 files changed, 29 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index c0c6c6ca5..090f6b8a7 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,19 @@ baidu_search: #baidu_search swiftype: #swiftype_key tinysou: #tinysou_key rss: atom.xml +menu: + - page: home + directory: / + icon: icon-home + - page: archive + directory: archives/ + icon: icon-archive + - page: about + directory: about/ + icon: icon-about + - page: rss + directory: atom.xml + icon: icon-rss links: - title: site-name1 url: http://www.example1.com/ @@ -51,6 +64,7 @@ links: - swiftype - [Swiftype Search](https://swiftype.com) key - tinysou - [Tiny Search](http://tinysou.com) key - rss - RSS subscription link, learn more in [hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed) +- menu - Customize your menu of pages here, just follow the format of existied items. [IcoMoon](https://icomoon.io) icon fonts have been integrated, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs) - links - Edit your blogroll here ##Features @@ -59,34 +73,6 @@ You can set a **favicon.ico** for your website, please put it into `source` fol You can add a website logo for apple devices, please put an image named **apple-touch-icon.png** into `source` folder of hexo directory, recommended size: 114px*114px. -#### Pages -To customize pages, after creating new folders including `index.md` in `/source`, don't forget to add corresponding contents in `/themes/maupassant/layout/base.jade`: - -``` -#nav-menu - +a_with_current(config.root, __('home'), 'icon-home') - +a_with_current(config.archive_dir, __('archive'), 'icon-archive') - +a_with_current(config.about_dir, __('about'), 'icon-about') - +a_with_current(theme.rss, __('rss'), 'icon-rss') -``` - -and `_config.yml` of hexo directory. Just follow the format of existing items. - -``` - # Directory - source_dir: source - public_dir: public - tag_dir: tags - category_dir: categories - archive_dir: archives/ - about_dir: about/ - code_dir: downloads/code - i18n_dir: :lang - skip_render: -``` - -[IcoMoon](https://icomoon.io) icon fonts have been integrated to the nav-menu, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs). - #### Abstract You can control the abstract of a post shown at index, by either filling a `description:` item in `front-matter` of the `post.md`, or just inserting a `` before your hidden content. diff --git a/_config.yml b/_config.yml index ec7e4472d..51b212675 100644 --- a/_config.yml +++ b/_config.yml @@ -6,6 +6,19 @@ baidu_search: #baidu_search swiftype: #swiftype_key tinysou: #tinysou_key rss: atom.xml +menu: + - page: home + directory: / + icon: icon-home + - page: archive + directory: archives/ + icon: icon-archive + - page: about + directory: about/ + icon: icon-about + - page: rss + directory: atom.xml + icon: icon-rss links: - title: site-name1 url: http://www.example1.com/ diff --git a/layout/base.jade b/layout/base.jade index d8b3049c0..ff0e78cec 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -37,10 +37,8 @@ html a#logo(href='/')= config.title p.description= config.subtitle #nav-menu - +a_with_current(config.root, __('home'), 'icon-home') - +a_with_current(config.archive_dir, __('archive'), 'icon-archive') - +a_with_current(config.about_dir, __('about'), 'icon-about') - +a_with_current(theme.rss, __('rss'), 'icon-rss') + - for (i in theme.menu) + +a_with_current(theme.menu[i].directory, __(theme.menu[i].page), theme.menu[i].icon) #layout.pure-g .pure-u-1.pure-u-md-3-4: .content_container From 806dd4cb126a8d21cd24c5cb809702649d29fe71 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Fri, 6 Nov 2015 17:46:31 +0800 Subject: [PATCH 068/118] fix a bug --- README.md | 2 -- _config.yml | 1 - 2 files changed, 3 deletions(-) diff --git a/README.md b/README.md index 090f6b8a7..cdccf480a 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,6 @@ google_search: true baidu_search: #baidu_search swiftype: #swiftype_key tinysou: #tinysou_key -rss: atom.xml menu: - page: home directory: / @@ -63,7 +62,6 @@ links: - baidu_search - Search engine for users in China - swiftype - [Swiftype Search](https://swiftype.com) key - tinysou - [Tiny Search](http://tinysou.com) key -- rss - RSS subscription link, learn more in [hexo-generator-feed](https://github.com/hexojs/hexo-generator-feed) - menu - Customize your menu of pages here, just follow the format of existied items. [IcoMoon](https://icomoon.io) icon fonts have been integrated, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs) - links - Edit your blogroll here diff --git a/_config.yml b/_config.yml index 51b212675..309d6e40c 100644 --- a/_config.yml +++ b/_config.yml @@ -5,7 +5,6 @@ google_search: true baidu_search: #baidu_search swiftype: #swiftype_key tinysou: #tinysou_key -rss: atom.xml menu: - page: home directory: / From ccbde5cbd2c155130f0a200257bfb58b2794338f Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sat, 7 Nov 2015 19:08:43 +0800 Subject: [PATCH 069/118] Optimization of fancybox and css --- README.md | 6 +++--- layout/base.jade | 14 +++++++++----- source/css/style.scss | 14 ++++++++++++-- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index cdccf480a..285275b48 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ A simple Hexo template with great performance on different devices, ported from "Maupassant template preview") ## Installation - Install theme and renderers: ``` @@ -92,7 +91,6 @@ highlight: Two languages are available for this theme currently, English (en) and Simplified Chinese (zh-CN). Contributions of translating to other languages will be highly appreciated. ## Solutions - - Check whether your Terminal's current directory is in hexo's root directory which contains `source/`, `themes/`, etc. - If you have any trouble in using this theme, please feel free to open an [issue](https://github.com/tufu9441/maupassant-hexo/issues). @@ -102,8 +100,10 @@ All kinds of contributions (enhancements, new features, documentation & code imp Looking forward to your pull request. +## Acknowledgements +Thank [JamesPan](http://blog.jamespan.me) for his help to improve this theme +. ## Maupassant on other platforms: - + Typecho:https://github.com/pagecho/maupassant/ + Octopress:https://github.com/pagecho/mewpassant/ + Farbox:https://github.com/pagecho/Maupassant-farbox/ diff --git a/layout/base.jade b/layout/base.jade index ff0e78cec..b9e407160 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -104,18 +104,22 @@ html != css(root + '/css/jquery.fancybox.css') script. $(document).ready(function() { - $("img").wrap(function() { + $('img').each(function() { + if ($(this).parent().hasClass('fancybox')) return; if ($(this).hasClass('nofancybox')) return; - return ''}); + var alt = this.alt; + if (alt) $(this).after('' + alt + ''); + $(this).wrap(''); + }); + $(this).find('.fancybox').each(function(){ + $(this).attr('rel', 'article'); + }); }); script. $(document).ready(function() { $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox({ helpers : { title: { type: 'inside'} - }, - afterLoad: function(){ - this.title = this.title + ' ' + $(this.element).find('img').attr('alt'); } }); }); diff --git a/source/css/style.scss b/source/css/style.scss index ffbbea0af..ff3213e4b 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -230,13 +230,21 @@ a:focus{ border: 1px solid #ddd; } a { + color: #01579f; padding-bottom: 2px; - border-bottom: 1px solid #aaa; word-break: break-all; &:hover { border-bottom-color: #444; } } + .caption { + color: #444; + display: block; + font-size: 0.9em; + margin-top: 0.1em; + position: relative; + text-align: center; + } } hr { margin: 2.4em auto; @@ -246,7 +254,9 @@ a:focus{ } img { max-width: 100%; - padding: 1em 0; + padding: 0.5em 0; + margin: auto; + display: block; } ul, ol { overflow: auto; From 582405d78e9f828b03fb5912c57fcc39ece2e877 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 9 Nov 2015 11:48:55 +0800 Subject: [PATCH 070/118] fancybox coding optimized --- layout/base.jade | 23 +---------------------- source/js/jquery.fancybox.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 22 deletions(-) create mode 100644 source/js/jquery.fancybox.js diff --git a/layout/base.jade b/layout/base.jade index b9e407160..75e660d04 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -100,29 +100,8 @@ html != js([root + '/js/jquery.min.js', root + '/js/totop.js']) if theme.fancybox - != js([root + '/js/fancybox.pack.js']) + != js([root + '/js/fancybox.pack.js', root + '/js/jquery.fancybox.js']) != css(root + '/css/jquery.fancybox.css') - script. - $(document).ready(function() { - $('img').each(function() { - if ($(this).parent().hasClass('fancybox')) return; - if ($(this).hasClass('nofancybox')) return; - var alt = this.alt; - if (alt) $(this).after('' + alt + ''); - $(this).wrap(''); - }); - $(this).find('.fancybox').each(function(){ - $(this).attr('rel', 'article'); - }); - }); - script. - $(document).ready(function() { - $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox({ - helpers : { - title: { type: 'inside'} - } - }); - }); if theme.duoshuo script. diff --git a/source/js/jquery.fancybox.js b/source/js/jquery.fancybox.js new file mode 100644 index 000000000..8460d5990 --- /dev/null +++ b/source/js/jquery.fancybox.js @@ -0,0 +1,19 @@ +$(document).ready(function() { + $('img').each(function() { + if ($(this).parent().hasClass('fancybox')) return; + if ($(this).hasClass('nofancybox')) return; + var alt = this.alt; + if (alt) $(this).after('' + alt + ''); + $(this).wrap(''); + }); + $(this).find('.fancybox').each(function(){ + $(this).attr('rel', 'article'); + }); +}); +$(document).ready(function() { + $("a[href$='.jpg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox({ + helpers : { + title: { type: 'inside'} + } + }); +}); From 4742c77b71b428c816bb7e7b9ec28f29e0966a86 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Mon, 9 Nov 2015 16:12:15 +0800 Subject: [PATCH 071/118] html coding optimized --- layout/base.jade | 14 +++++++------- source/js/totop.js | 20 ++++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index 75e660d04..ba549a7a9 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -1,5 +1,4 @@ include _partial/helpers -include _partial/totop if page.title - var current_title = page.title @@ -11,7 +10,8 @@ if (config.root != '/') else - var root = '' -html + +html(lang="#{config.language}") head meta(http-equiv="content-type", content="text/html; charset=utf-8") meta(content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0", name="viewport") @@ -29,7 +29,6 @@ html link(rel='apple-touch-icon-precomposed', href='/apple-touch-icon.png') link(rel='alternate', type='application/atom+xml', href='/atom.xml') - body: .body_container #header .site-name @@ -97,7 +96,8 @@ html | by a(rel='nofollow', target='_blank', href='https://github.com/pagecho') Cho. - != js([root + '/js/jquery.min.js', root + '/js/totop.js']) + include _partial/totop + != js([root + '/js/jquery.min.js', root + '/js/totop.js']) if theme.fancybox != js([root + '/js/fancybox.pack.js', root + '/js/jquery.fancybox.js']) @@ -105,7 +105,7 @@ html if theme.duoshuo script. - var duoshuoQuery = {short_name:'!{theme.duoshuo}'}; + var duoshuoQuery = {short_name:'#{theme.duoshuo}'}; (function() { var ds = document.createElement('script'); ds.type = 'text/javascript';ds.async = true; @@ -118,7 +118,7 @@ html if theme.tinysou script. var option = { - engineKey: '!{theme.tinysou}' + engineKey: '#{theme.tinysou}' }; (function(w,d,t,u,n,s,e){ s = d.createElement(t); @@ -139,4 +139,4 @@ html e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e); })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); - _st('install','!{theme.swiftype}','2.0.0'); + _st('install','#{theme.swiftype}','2.0.0'); diff --git a/source/js/totop.js b/source/js/totop.js index 97de8a93b..afa66d9a3 100644 --- a/source/js/totop.js +++ b/source/js/totop.js @@ -1,12 +1,12 @@ $(window).scroll(function() { - $(window).scrollTop() > 100 ? $("#rocket").addClass("show") : $("#rocket").removeClass("show"); + $(window).scrollTop() > 500 ? $("#rocket").addClass("show") : $("#rocket").removeClass("show"); +}); +$("#rocket").click(function() { + $("#rocket").addClass("launch"); + $("html, body").animate({ + scrollTop: 0 + }, 500, function() { + $("#rocket").removeClass("show launch"); }); - $("#rocket").click(function() { - $("#rocket").addClass("launch"); - $("html, body").animate({ - scrollTop: 0 - }, 500, function() { - $("#rocket").removeClass("show launch"); - }); - return false; - }); \ No newline at end of file + return false; +}); From 8930240c4d63c556a664cc86af5a2270e04f4e97 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 11 Nov 2015 21:50:48 +0800 Subject: [PATCH 072/118] A bug fixed --- layout/base.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index ba549a7a9..c852b8083 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -105,7 +105,7 @@ html(lang="#{config.language}") if theme.duoshuo script. - var duoshuoQuery = {short_name:'#{theme.duoshuo}'}; + var duoshuoQuery = {short_name:'#{theme.duoshuo}'}; (function() { var ds = document.createElement('script'); ds.type = 'text/javascript';ds.async = true; @@ -118,7 +118,7 @@ html(lang="#{config.language}") if theme.tinysou script. var option = { - engineKey: '#{theme.tinysou}' + engineKey: '#{theme.tinysou}' }; (function(w,d,t,u,n,s,e){ s = d.createElement(t); From 59861c7b1e6861ab98a07a108a4d4a360916c637 Mon Sep 17 00:00:00 2001 From: WeiYuan Date: Sat, 14 Nov 2015 04:39:37 +0800 Subject: [PATCH 073/118] fix table invisible --- source/css/style.scss | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/css/style.scss b/source/css/style.scss index ff3213e4b..54fc5ace2 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -994,3 +994,21 @@ i { padding-left: 0; } } + + +table { + border: 1px solid #666; + border-collapse: collapse; + tr, td { + border: 1px solid #666; + } + tr:nth-child(even) { + background: #CCC + } + tr:nth-child(odd) { + background-color: #FAFAFA; + } + td:hover { + background-color: #E6FBFF; + } +} From d7658f8629a6da84d025f27c5d03bcc3cc0a907d Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sat, 14 Nov 2015 18:45:43 +0800 Subject: [PATCH 074/118] post.excerpt bug fixed --- layout/index.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/index.jade b/layout/index.jade index 5492bb13f..8653eeb83 100644 --- a/layout/index.jade +++ b/layout/index.jade @@ -19,7 +19,7 @@ block content if post.description .post-content != post.description - else if page.excerpt + else if post.excerpt .post-content != post.excerpt else if post.content From ac72a102ca16d52a2f2b8225f7068347b2f6338d Mon Sep 17 00:00:00 2001 From: WeiYuan Date: Wed, 25 Nov 2015 04:09:17 +0800 Subject: [PATCH 075/118] fix code section error --- source/css/style.scss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/css/style.scss b/source/css/style.scss index 54fc5ace2..1f6156850 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -1012,3 +1012,12 @@ table { background-color: #E6FBFF; } } + +.highlight.bash{ + table tr:nth-child(odd) { + background-color: #2D2D2D; + } + table tr, table td { + border: #2D2D2D; + } +} From fb9dee69a96a06b340b3684998ca5b8ca66a2334 Mon Sep 17 00:00:00 2001 From: WeiYuan Date: Wed, 25 Nov 2015 11:40:07 +0800 Subject: [PATCH 076/118] Update style.scss --- source/css/style.scss | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 1f6156850..32f3592a9 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -1008,16 +1008,17 @@ table { tr:nth-child(odd) { background-color: #FAFAFA; } - td:hover { + td:hover:not(.code):not(.gutter) { background-color: #E6FBFF; } + } -.highlight.bash{ +.highlight{ table tr:nth-child(odd) { background-color: #2D2D2D; } - table tr, table td { + table tr { border: #2D2D2D; } } From e4257a325422468ef0b65e223b51a9c81b27ad7b Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 25 Nov 2015 13:36:05 +0800 Subject: [PATCH 077/118] table style optimized --- source/css/style.scss | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 32f3592a9..ebb1e6d6a 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -995,12 +995,13 @@ i { } } - +/* table*/ table { border: 1px solid #666; border-collapse: collapse; - tr, td { + th, tr, td { border: 1px solid #666; + padding: 7px; } tr:nth-child(even) { background: #CCC @@ -1014,11 +1015,11 @@ table { } -.highlight{ +.highlight{ table tr:nth-child(odd) { background-color: #2D2D2D; } - table tr { + table tr { border: #2D2D2D; } } From 5df89f2896c02d6109f34543689942834c559939 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 26 Nov 2015 12:32:52 +0800 Subject: [PATCH 078/118] minor improvements --- README.md | 14 +++++++------- _config.yml | 14 +++++++------- layout/base.jade | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 285275b48..dd9ee2dbb 100644 --- a/README.md +++ b/README.md @@ -26,13 +26,13 @@ Then change your `theme` setting in `_config.yml` to `maupassant`. Default config: ``` -fancybox: true -duoshuo: #duoshuo_shortname -disqus: #disqus_shortname -google_search: true -baidu_search: #baidu_search -swiftype: #swiftype_key -tinysou: #tinysou_key +fancybox: true ## If you want to use fancybox please set the value to true +duoshuo: ## Your duoshuo_shortname, e.g. haomwei +disqus: ## Your disqus_shortname, e.g. haomwei +google_search: true ## Use Google search, true/false +baidu_search: ## Use Baidu search, true/false +swiftype: ## Your swiftype_key, e.g. m7b11ZrsT8Me7gzApciT +tinysou: ## Your tinysou_key, e.g. 4ac092ad8d749fdc6293 menu: - page: home directory: / diff --git a/_config.yml b/_config.yml index 309d6e40c..0dec575cd 100644 --- a/_config.yml +++ b/_config.yml @@ -1,10 +1,10 @@ -fancybox: true -duoshuo: #duoshuo_shortname -disqus: #disqus_shortname -google_search: true -baidu_search: #baidu_search -swiftype: #swiftype_key -tinysou: #tinysou_key +fancybox: true ## If you want to use fancybox please set the value to true +duoshuo: ## Your duoshuo_shortname, e.g. haomwei +disqus: ## Your disqus_shortname, e.g. haomwei +google_search: true ## Use Google search, true/false +baidu_search: ## Use Baidu search, true/false +swiftype: ## Your swiftype_key, e.g. m7b11ZrsT8Me7gzApciT +tinysou: ## Your tinysou_key, e.g. 4ac092ad8d749fdc6293 menu: - page: home directory: / diff --git a/layout/base.jade b/layout/base.jade index c852b8083..6a1481b76 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -44,11 +44,11 @@ html(lang="#{config.language}") block content .pure-u-1-4: #sidebar - if theme.google_search + if theme.google_search == true .widget #search != search_form() - if theme.baidu_search + if theme.baidu_search == true .widget form(action="https://www.baidu.com/baidu" method="get" accept-charset="utf-8" class="search-form") input(type="search" name="word" maxlength="20" class="search-form-input" placeholder="Search") From 0ffb58518e99959833c4464e1083b53d67227ab8 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 26 Nov 2015 21:46:33 +0800 Subject: [PATCH 079/118] A bug fixed --- layout/base.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/base.jade b/layout/base.jade index 6a1481b76..13df2bda2 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -139,4 +139,4 @@ html(lang="#{config.language}") e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e); })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); - _st('install','#{theme.swiftype}','2.0.0'); + _st('install','#{theme.swiftype}','2.0.0'); From bd690e1dc7016fce23d203ea4ca59a059d90d789 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 29 Nov 2015 14:48:42 +0800 Subject: [PATCH 080/118] text align justify --- source/css/style.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/source/css/style.scss b/source/css/style.scss index ebb1e6d6a..921042eb9 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -215,6 +215,7 @@ a:focus{ line-height: 1.77; color: #444; padding-top: 20px; + text-align: justify; h2, h3 { margin: 1.4em 0 1.1em; } From c39e695ba076dd11c72c5b28aadb94bce20f7f27 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 2 Dec 2015 11:08:17 +0800 Subject: [PATCH 081/118] fixed a bug in English display --- layout/post.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/post.jade b/layout/post.jade index 2f36f7122..d9d1a559b 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -10,7 +10,7 @@ block content if page.categories.length > 0 span.categories= __('belongsto') for category in page.categories.toArray() - a(href=url_for(category.path))= category.name + a(href=url_for(category.path))= " " + category.name if theme.duoshuo span.ds-thread-count(data-thread-key=page.path) if theme.disqus From 624f9fe6e083199d2459ef253a19bb6f12dabd0b Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 3 Dec 2015 12:17:38 +0800 Subject: [PATCH 082/118] nothing important --- layout/archive.jade | 9 --------- 1 file changed, 9 deletions(-) diff --git a/layout/archive.jade b/layout/archive.jade index b58736c74..1dd2ac07a 100644 --- a/layout/archive.jade +++ b/layout/archive.jade @@ -13,21 +13,12 @@ block content .post .post-archive //Use lodash to classify posts. See https://lodash.com/docs#groupBy -<<<<<<< HEAD each posts, year in _.groupBy(page.posts.toArray(), function(p){return -p.date.format('YYYY')}) h2= -year ul.listing for post in posts li span.date= post.date.format('YYYY/MM/DD') -======= - each posts, year in _.groupBy(page.posts.toArray(), function(p){return p.date.format('YYYY')}) - h2= year - ul.listing - for post in posts - li - span.date= post.date.format('l') ->>>>>>> 643cdc14af00bd98350b7f2bffde818ba89e3c3d a(href=url_for(post.path), title=post.title) +title(post) include _partial/paginator.jade From 8b79610e477b5abce5bf8c3aee564ef96f30cfec Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 3 Dec 2015 17:38:13 +0800 Subject: [PATCH 083/118] Optimization of google site search. --- layout/base.jade | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index 13df2bda2..07069007a 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -11,14 +11,14 @@ else - var root = '' -html(lang="#{config.language}") +html(lang='#{config.language}') head - meta(http-equiv="content-type", content="text/html; charset=utf-8") - meta(content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0", name="viewport") - meta(content="yes", name="apple-mobile-web-app-capable") - meta(content="black-translucent", name="apple-mobile-web-app-status-bar-style") - meta(content="telephone=no", name="format-detection") - meta(name="description", content=config.description) + meta(http-equiv='content-type', content='text/html; charset=utf-8') + meta(content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0', name='viewport') + meta(content='yes', name='apple-mobile-web-app-capable') + meta(content='black-translucent', name='apple-mobile-web-app-status-bar-style') + meta(content='telephone=no', name='format-detection') + meta(name='description', content=config.description) block title link(rel='stylesheet', type='text/css', href=root + '/css/normalize.css') link(rel='stylesheet', type='text/css', href=root + '/css/pure-min.css') @@ -46,17 +46,18 @@ html(lang="#{config.language}") .pure-u-1-4: #sidebar if theme.google_search == true .widget - #search - != search_form() + form(action='//www.google.com/search' method='get' accept-charset='utf-8' class='search-form' target='_blank') + input(type='text' name='q' maxlength='20' class='search-form-input' placeholder='Search') + input(type='hidden' name='sitesearch' value='#{config.url}') if theme.baidu_search == true .widget - form(action="https://www.baidu.com/baidu" method="get" accept-charset="utf-8" class="search-form") - input(type="search" name="word" maxlength="20" class="search-form-input" placeholder="Search") - input(type="hidden" name="si" value="#{config.url.replace(/^https?:\/\//, '')}") - input(name="tn" type="hidden" value="bds") - input(name="cl" type="hidden" value="3") - input(name="ct" type="hidden" value="2097152") - input(name="s" type="hidden" value="on") + form(action='//www.baidu.com/baidu' method='get' accept-charset='utf-8' class='search-form' target='_blank') + input(type='search' name='word' maxlength='20' class='search-form-input' placeholder='Search') + input(type='hidden' name='si' value='#{config.url}') + input(name='tn' type='hidden' value='bds') + input(name='cl' type='hidden' value='3') + input(name='ct' type='hidden' value='2097152') + input(name='s' type='hidden' value='on') if theme.swiftype .widget input.st-default-search-input(placeholder='Search' type='text') From 4331ef7428ff354946d8809e2a56ed77846b60bb Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 3 Dec 2015 19:26:28 +0800 Subject: [PATCH 084/118] syntax highlighting theme changed to a light style --- source/css/style.scss | 303 +++++++++++++++++++++--------------------- 1 file changed, 152 insertions(+), 151 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 921042eb9..55104c236 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -719,23 +719,7 @@ div { } /* syntax highlight*/ -pre, -.highlight { - background: #2d2d2d; - margin: 20px 0; - padding: 5px; - overflow: auto; - font-size: 15px; - color: #ccc; - line-height: 1.6; - border-radius: 7px; -} -.highlight .gutter pre, -.gist .gist-file .gist-data .line-numbers { - color: #666; -} -pre, -code { +pre, code { font-family: "Input Mono", "PT Mono", Consolas, Monaco, Menlo, monospace; } code { @@ -744,149 +728,166 @@ code { text-shadow: 0 1px #fff; padding: 0 0.3em; } -pre code { - background: none; - text-shadow: none; - padding: 0; -} -.highlight pre { - border: none; - margin: 0; - padding: 1px; -} -.highlight table { - margin: 0; - width: auto; - border: none; -} -.highlight td { - border: none; - padding: 0; -} -.highlight figcaption { - font-size: 0.85em; - color: #999; - line-height: 1em; - margin-bottom: 1em; -} -.highlight figcaption:before, -.highlight figcaption:after { - content: " "; - display: table; -} -.highlight figcaption:after { - clear: both; -} -.highlight figcaption a { - float: right; -} -.highlight .gutter pre { - text-align: right; - padding-right: 20px; +pre { + background: #f7f7f7; + margin: 20px 0; + padding: 15px; + overflow: auto; + font-size: 13px; + color: #4d4d4c; + line-height: 1.6; + code { + background: none; + text-shadow: none; + padding: 0; + } } -.highlight .line { - height: 20px; +.highlight { + background: #f7f7f7; + margin: 20px 0; + padding: 15px; + overflow: auto; + font-size: 13px; + color: #4d4d4c; + line-height: 1.6; + pre { + border: none; + margin: 0; + padding: 1px; + } + table { + margin: 0; + width: auto; + border: none; + } + td { + border: none; + padding: 0; + } + figcaption { + clearfix: none; + font-size: 0.85em; + color: highlight-comment; + line-height: 1em; + margin-bottom: 1em; + a { + float: right + } + } + .gutter pre { + color: #666; + text-align: right; + padding-right: 20px; + } + .line { + height: 20px; + } } .gist { margin: 20px 0; border-style: solid; border-color: #ccc; border-width: 1px 0; - background: #2d2d2d; + background: #f7f7f7; padding: 15px 40px 15px 15px; + .gist-file { + border: none; + font-family: "Input Mono", "PT Mono", Consolas, Monaco, Menlo, monospace; + margin: 0; + .gist-data { + background: none; + border: none; + .line-numbers { + color: #666; + background: none; + border: none; + padding: 0 20px 0 0; + } + .line-data { + padding: 0; + } + } + .highlight { + margin: 0; + padding: 0; + border: none; + } + .gist-meta { + background: #f7f7f7; + color: #8e908c; + font-size: 13px; + font-family: Lato, "PingFang SC", "Microsoft YaHei", sans-serif; + text-shadow: 0 0; + padding: 0; + margin-top: 1em; + margin-left: 40px; + a { + color: color-link; + font-weight: normal; + &:hover { + text-decoration: underline; + } + } + } + } } -.gist .gist-file { - border: none; - font-family: "Input Mono", "PT Mono", Consolas, Monaco, Menlo, monospace; - margin: 0; -} -.gist .gist-file .gist-data { - background: none; - border: none; -} -.gist .gist-file .gist-data .line-numbers { - background: none; - border: none; - padding: 0 20px 0 0; -} -.gist .gist-file .gist-data .line-data { - padding: 0 !important; -} -.gist .gist-file .highlight { - margin: 0; - padding: 0; - border: none; -} -.gist .gist-file .gist-meta { - background: #2d2d2d; - color: #999; - font: 13px Lato, "PingFang SC", "Microsoft YaHei", sans-serif; - text-shadow: 0 0; - padding: 0; - margin-top: 1em; - margin-left: 40px; -} -.gist .gist-file .gist-meta a { - color: color-link; - font-weight: normal; -} -.gist .gist-file .gist-meta a:hover { - text-decoration: underline; -} -pre .comment { - color: #999; -} -pre .variable, -pre .attribute, -pre .tag, -pre .regexp, -pre .ruby .constant, -pre .xml .tag .title, -pre .xml .pi, -pre .xml .doctype, -pre .html .doctype, -pre .css .id, -pre .css .class, -pre .css .pseudo { - color: #f2777a; -} -pre .number, -pre .preprocessor, -pre .built_in, -pre .literal, -pre .params, -pre .constant { - color: #f99157; -} -pre .ruby .class .title, -pre .css .rules .attribute { - color: #9c9; -} -pre .string, -pre .value, -pre .inheritance, -pre .header, -pre .ruby .symbol, -pre .xml .cdata { - color: #9c9; -} -pre .title, -pre .css .hexcolor { - color: #6cc; -} -pre .function, -pre .python .decorator, -pre .python .title, -pre .ruby .function .title, -pre .ruby .title .keyword, -pre .perl .sub, -pre .javascript .title, -pre .coffeescript .title { - color: #69c; -} -pre .keyword, -pre .javascript .function { - color: #c9c; + +pre { + .comment { + color: #8e908c; + } + .variable, + .attribute, + .tag, + .regexp, + .ruby .constant, + .xml .tag .title, + .xml .pi, + .xml .doctype, + .html .doctype, + .css .id, + .css .class, + .css .pseudo { + color: #c82829; + } + .number, + .preprocessor, + .built_in, + .literal, + .params, + .constant { + color: #f5871f; + } + .ruby .class .title, + .css .rules .attribute { + color: #718c00; + } + .string, + .value, + .inheritance, + .header, + .ruby .symbol, + .xml .cdata { + color: #718c00; + } + .title, + .css .hexcolor { + color: #3e999f; + } + .function, + .python .decorator, + .python .title, + .ruby .function .title, + .ruby .title .keyword, + .perl .sub, + .javascript .title, + .coffeescript .title { + color: #4271ae; + } + .keyword, + .javascript .function { + color: #8959a8; + } } /* icomoon icon fonts*/ From 37aa0bc7031aaf4db77f52b2bfd132051c17b1df Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 3 Dec 2015 19:32:15 +0800 Subject: [PATCH 085/118] a minor typo fixed --- source/css/style.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 55104c236..9e40653bc 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -765,9 +765,8 @@ pre { padding: 0; } figcaption { - clearfix: none; font-size: 0.85em; - color: highlight-comment; + color: #8e908c; line-height: 1em; margin-bottom: 1em; a { From 93d8623a3acc80920c08f304f62e5a0af2a40356 Mon Sep 17 00:00:00 2001 From: nfs1a Date: Sun, 6 Dec 2015 02:16:15 +0800 Subject: [PATCH 086/118] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=B9=81=E9=AB=94?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E8=AA=9E=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- languages/zh-TW.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 languages/zh-TW.yml diff --git a/languages/zh-TW.yml b/languages/zh-TW.yml new file mode 100644 index 000000000..18d38e7ff --- /dev/null +++ b/languages/zh-TW.yml @@ -0,0 +1,21 @@ +reading_label: 正在查看 %s 下的文章 +blog: 部落格 +albums: 相簿 +categories: 分類 +tags: 標籤 +archive: 所有文章 +links: 連結 +about: 關於 +recent: 最新文章 +next: 下一頁 +previous: 上一頁 +notitle: 無標題 +blogroll: 友站連結 +history: 歷史紀錄 +rss: 訂閱 +guestbook: 留言 +home: 首頁 +recent_comments: 最近評論 +Readmore: 閱讀更多 +belongsto: 分類於 +contents: 文章目錄 From 0145a5ec261fb73f48b34419f9f999a8ba165732 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 6 Dec 2015 15:55:57 +0800 Subject: [PATCH 087/118] highlight css updated --- source/css/style.scss | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 9e40653bc..57a7c316c 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -734,7 +734,7 @@ pre { padding: 15px; overflow: auto; font-size: 13px; - color: #4d4d4c; + color: #444; line-height: 1.6; code { background: none; @@ -748,7 +748,7 @@ pre { padding: 15px; overflow: auto; font-size: 13px; - color: #4d4d4c; + color: #444; line-height: 1.6; pre { border: none; @@ -764,6 +764,12 @@ pre { border: none; padding: 0; } + table tr:nth-child(odd) { + background-color: #2D2D2D; + } + table tr { + border: #2D2D2D; + } figcaption { font-size: 0.85em; color: #8e908c; @@ -1013,14 +1019,4 @@ table { td:hover:not(.code):not(.gutter) { background-color: #E6FBFF; } - -} - -.highlight{ - table tr:nth-child(odd) { - background-color: #2D2D2D; - } - table tr { - border: #2D2D2D; - } } From e5f0a4412b5d66195ce089424b96d8b3e3c65e6a Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 6 Dec 2015 16:41:47 +0800 Subject: [PATCH 088/118] bugs fixed --- source/css/style.scss | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 57a7c316c..0b8d1d99c 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -235,7 +235,7 @@ a:focus{ padding-bottom: 2px; word-break: break-all; &:hover { - border-bottom-color: #444; + text-decoration: underline; } } .caption { @@ -270,8 +270,16 @@ a:focus{ ul { margin: 0; } + a { + color: #01579f; + padding-bottom: 2px; + word-break: break-all; + &:hover { + text-decoration: underline; + } + } } - table{ + table { margin: 0; } } @@ -1006,6 +1014,7 @@ i { table { border: 1px solid #666; border-collapse: collapse; + text-align: center; th, tr, td { border: 1px solid #666; padding: 7px; From 9d4a692dabbdcaf02d599b287e792a8807b655f0 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 6 Dec 2015 16:46:37 +0800 Subject: [PATCH 089/118] a bug fixed --- source/css/style.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/source/css/style.scss b/source/css/style.scss index 0b8d1d99c..e3990bc60 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -1014,7 +1014,6 @@ i { table { border: 1px solid #666; border-collapse: collapse; - text-align: center; th, tr, td { border: 1px solid #666; padding: 7px; From f0f029e2ecaa8c1f81ee8e23d0c59619b0eb071f Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 6 Dec 2015 17:00:32 +0800 Subject: [PATCH 090/118] =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E5=86=85=E6=96=87?= =?UTF-8?q?=E5=AD=97=E5=B1=85=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/css/style.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/css/style.scss b/source/css/style.scss index e3990bc60..cfc9ec4d2 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -767,6 +767,7 @@ pre { margin: 0; width: auto; border: none; + text-align: left; } td { border: none; @@ -1014,6 +1015,7 @@ i { table { border: 1px solid #666; border-collapse: collapse; + text-align: center; th, tr, td { border: 1px solid #666; padding: 7px; From 580a418d918b102f47c0b48001e479bb8893eeee Mon Sep 17 00:00:00 2001 From: "Juan A. S" Date: Wed, 9 Dec 2015 20:33:55 +0100 Subject: [PATCH 091/118] Create es-ES.yml Spanish translation --- languages/es-ES.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 languages/es-ES.yml diff --git a/languages/es-ES.yml b/languages/es-ES.yml new file mode 100644 index 000000000..438b9d19e --- /dev/null +++ b/languages/es-ES.yml @@ -0,0 +1,21 @@ +reading_label: Leyendo artículos en %s +blog: Blog +albums: Álbums +categories: Categorías +tags: Etiquetas +archive: Archivo +links: Enlaces +about: Acerca de +recent: Recientes +next: Siguiente +previous: Anterior +notitle: Sin título +blogroll: Blogroll +history: Historial +rss: RSS +guestbook: Libro de visitas +home: Inicio +recent_comments: Comentarios recientes +Readmore: Leer más +belongsto: Guardado en +contents: Contenidos From 261c3d92e80cfda923a553030636bc021e71a701 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 10 Dec 2015 12:42:07 +0800 Subject: [PATCH 092/118] highlight and table style updated --- source/css/style.scss | 705 +++++++++++++++++++++++++++++++----------- 1 file changed, 522 insertions(+), 183 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index cfc9ec4d2..d6cb4a54e 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -727,181 +727,522 @@ div { } /* syntax highlight*/ -pre, code { - font-family: "Input Mono", "PT Mono", Consolas, Monaco, Menlo, monospace; -} -code { - word-break: break-all; - background: #eee; - text-shadow: 0 1px #fff; - padding: 0 0.3em; +figure.highlight { + background: #fff; + margin: 10px 0; + border-radius: 3px; + line-height: 1.2em; + color: #333; + border: 1px solid #d9d9d9; + overflow: hidden; + + table { + display: block; + width: 100%; + overflow-y: hidden; + overflow-x: auto; + } + // Reset for tag `pre` and for class `.gutter`, `.code`, `.tag` + pre, + .gutter, + .code, + .tag { + font-family: Menlo; + border: none; + padding: 0; + margin: 0; + // To override cursor attribute of `.tag` components + cursor: text; + } + // Meta bar which contains name of the file and his link + figcaption { + font-size: 13px; + padding: 10px 15px; + margin: 0; + background: #f7f7f7; + border-bottom: 1px solid #d9d9d9; + color: #999999; + + a { + float: right; + } + } + // Gutter which contains line numbers + .gutter { + background: #fff; + border-right: 1px solid #d9d9d9; + padding: 0.3em 0.5em; + + .line { + color: #aaaaaa; + } + } + // Code container + .code { + padding: 0.3em 0.3em 0.3em 1em; + } + // All lines in gutter and code container + .line { + height: 1.2em; + font-size: 13px; + } } -pre { - background: #f7f7f7; - margin: 20px 0; - padding: 15px; - overflow: auto; - font-size: 13px; - color: #444; - line-height: 1.6; - code { - background: none; - text-shadow: none; - padding: 0; - } + +// Gist +.gist { + .line, + .line-number { + font-family: Menlo; + font-size: 1em; + margin: 0 0 5px 0; + } } + +// Highlight code coloration .highlight { - background: #f7f7f7; - margin: 20px 0; - padding: 15px; - overflow: auto; - font-size: 13px; - color: #444; - line-height: 1.6; - pre { - border: none; - margin: 0; - padding: 1px; - } - table { - margin: 0; - width: auto; - border: none; - text-align: left; - } - td { - border: none; - padding: 0; - } - table tr:nth-child(odd) { - background-color: #2D2D2D; - } - table tr { - border: #2D2D2D; - } - figcaption { - font-size: 0.85em; - color: #8e908c; - line-height: 1em; - margin-bottom: 1em; - a { - float: right + // General + .comment { + color: #969896; } - } - .gutter pre { - color: #666; - text-align: right; - padding-right: 20px; - } - .line { - height: 20px; - } -} -.gist { - margin: 20px 0; - border-style: solid; - border-color: #ccc; - border-width: 1px 0; - background: #f7f7f7; - padding: 15px 40px 15px 15px; - .gist-file { - border: none; - font-family: "Input Mono", "PT Mono", Consolas, Monaco, Menlo, monospace; - margin: 0; - .gist-data { - background: none; - border: none; - .line-numbers { - color: #666; - background: none; - border: none; - padding: 0 20px 0 0; - } - .line-data { - padding: 0; - } + .string { + color: #df5000; } - .highlight { - margin: 0; - padding: 0; - border: none; + .keyword { + color: #a71d5d; } - .gist-meta { - background: #f7f7f7; - color: #8e908c; - font-size: 13px; - font-family: Lato, "PingFang SC", "Microsoft YaHei", sans-serif; - text-shadow: 0 0; - padding: 0; - margin-top: 1em; - margin-left: 40px; - a { - color: color-link; - font-weight: normal; - &:hover { - text-decoration: underline; - } - } + // ApacheConf + &.apacheconf .code { + .common, + .cbracket, + .keyword { + color: #0086b3; + } + .sqbracket { + color: #df5000; + } + .tag { + color: #63a35c; + } } - } -} + // Bash + &.bash .code { + .shebang { + color: #969896; + } + .literal, + .built_in { + color: #0086b3; + } + .variable { + color: #333; + } + .title { + color: #795da3; + } + } + // coffescript + &.coffeescript .code { + .title { + color: #795da3; + } + .literal, + .built_in, + .number { + color: #0086b3; + } + .reserved, + .attribute { + color: #1d3e81; + } + .subst, + .regexp { + color: #df5000; + } + } + // C/C++ + &.cpp .code, + &.c .code { + .preprocessor { + color: #df5000; + } + .title { + color: #795da3; + } + .number, + .built_in { + color: #0086b3; + } + } + // C# + &.cs .code { + .preprocessor, + .preprocessor .keyword { + color: #333; + } + .title { + color: #795da3; + } + .number, + .built_in { + color: #0086b3; + } + .xmlDocTag { + color: #63a35c; + } + } + // CSS + &.css .code { + .at_rule, + .important { + color: #a71d5d; + } + .attribute, + .hexcolor, + .number, + .function { + color: #0086b3; + } + .attr_selector, + .value { + color: #333; + } + .id, + .class, + .pseudo { + color: #795da3; + } + .tag { + color: #63a35c; + } + } + // Diff + &.diff .code { + .chunk { + color: #795da3; + font-weight: bold; + } + .addition { + color: #55a532; + background-color: #eaffea; + } + .deletion { + color: #bd2c00; + background-color: #ffecec; + } + } + // HTTP + &.http .code { + .literal, + .attribute { + color: #0086b3; + } + .request { + color: #a71d5d; + } + } + // INI + &.ini .code { + .title { + color: #795da3; + } + .setting { + color: #a71d5d; + } + .value, + .keyword { + color: #333; + } + } + // JAVA + &.java .code { + .title { + color: #795da3; + } + .javadoc { + color: #969896; + } + .javadoctag { + color: #a71d5d; + } + .number { + color: #0086b3; + } + .params { + color: #1d3e81; + } + } + // JavaScript + &.js .code { + .title { + color: #795da3; + } + .javadoc { + color: #969896; + } + .tag, + .javadoctag { + color: #a71d5d; + } + .tag .title { + color: #333; + } + .regexp { + color: #df5000; + } + .built_in, + .literal, + .number { + color: #0086b3; + } + } + // JSON + &.json .code { + .attribute { + color: #df5000; + } + .number { + color: #0086b3; + } + } + // Makefile + &.mak .code { + .constant { + color: #333; + } + .variable { + color: #df5000; + } + .title { + color: #795da3; + } + .keyword { + color: #0086b3; + } + } + // Markdown + &.md .code { + .value, + .link_label, + .strong, + .emphasis, + .blockquote { + color: #df5000; + } + .link_reference, + .code { + color: #0086b3; + } + .link_url { + text-decoration: underline; + } + } + // Nginx + &.nginx .code { + .title { + color: #a71d5d; + } + .built_in { + color: #0086b3; + } + .regexp, + .number { + color: #df5000; + } + .variable { + color: #333; + } + } + // Objective-C + &.objectivec .code { + .preprocessor { + color: #a71d5d; -pre { - .comment { - color: #8e908c; - } - .variable, - .attribute, - .tag, - .regexp, - .ruby .constant, - .xml .tag .title, - .xml .pi, - .xml .doctype, - .html .doctype, - .css .id, - .css .class, - .css .pseudo { - color: #c82829; - } - .number, - .preprocessor, - .built_in, - .literal, - .params, - .constant { - color: #f5871f; - } - .ruby .class .title, - .css .rules .attribute { - color: #718c00; - } - .string, - .value, - .inheritance, - .header, - .ruby .symbol, - .xml .cdata { - color: #718c00; - } - .title, - .css .hexcolor { - color: #3e999f; - } - .function, - .python .decorator, - .python .title, - .ruby .function .title, - .ruby .title .keyword, - .perl .sub, - .javascript .title, - .coffeescript .title { - color: #4271ae; - } - .keyword, - .javascript .function { - color: #8959a8; - } + .title { + color: #df5000; + } + } + .title { + color: #795da3; + } + .literal, + .number, + .built_in { + color: #0086b3; + } + } + // Perl + &.perl .code { + .sub { + color: #795da3; + } + .regexp { + color: #df5000; + } + } + // PHP + &.php .code { + .phpdoc { + color: #a71d5d; + } + .regexp { + color: #df5000; + } + .literal, + .number { + color: #0086b3; + } + .title { + color: #795da3; + } + } + // Python + &.python .code { + .decorator, + .title { + color: #795da3; + } + .number { + color: #0086b3; + } + } + // Ruby + &.ruby .code { + .parent, + .title { + color: #795da3; + } + .prompt, + .constant, + .number, + .subst .keyword, + .symbol { + color: #0086b3; + } + } + // SQL + &.sql { + .built_in { + color: #a71d5d; + } + .number { + color: #0086b3; + } + } + // XML, HTML + &.xml { + .tag { + color: #333; + } + .value { + color: #df5000; + } + .attribute { + color: #795da3; + } + .title { + color: #63a35c; + } + } + // Puppet + &.puppet { + .title { + color: #795da3; + } + .function { + color: #0086b3; + } + } + // LESS + &.less { + .tag, + .at_rule { + color: #a71d5d; + } + .number, + .hexcolor, + .function, + .attribute { + color: #0086b3; + } + .built_in { + color: #df5000; + } + .id, + .pseudo, + .class { + color: #795da3; + } + } + // SCSS + &.scss { + .tag, + .at_rule, + .important { + color: #a71d5d; + } + .preprocessor, + .number, + .hexcolor, + .function, + .attribute { + color: #0086b3; + } + .variable { + color: #333; + } + .built_in { + color: #df5000; + } + .id, + .pseudo, + .class { + color: #795da3; + } + } + // Stylus + &.stylus { + .at_rule { + color: #a71d5d; + } + .tag { + color: #63a35c; + } + .number, + .hexcolor, + .attribute, + .params { + color: #0086b3; + } + .class, + .id, + .pseudo, + .title { + color: #795da3; + } + } + // Go + &.go { + .typename { + color: #a71d5d; + } + .built_in, + .constant { + color: #0086b3; + } + } + // Swift + &.swift { + .preprocessor { + color: #a71d5d; + } + .title { + color: #795da3; + } + .built_in, + .number { + color: #0086b3; + } + } } /* icomoon icon fonts*/ @@ -1013,20 +1354,18 @@ i { /* table*/ table { - border: 1px solid #666; - border-collapse: collapse; - text-align: center; - th, tr, td { - border: 1px solid #666; - padding: 7px; - } - tr:nth-child(even) { - background: #CCC - } - tr:nth-child(odd) { - background-color: #FAFAFA; - } - td:hover:not(.code):not(.gutter) { - background-color: #E6FBFF; - } + width: 100%; + background: transparent; + border-collapse: collapse; + border-spacing: 0; + text-align: left; + th { + font-weight: bold; + padding-bottom: 0.5em; + border-bottom: 2px solid lighten(#dce4f1, 2); + } + td { + border-bottom: 1px solid lighten(#dce4f1, 2); + padding: 1rem 0; + } } From 9c504a6eca44113ec7956a085b4ca79ad538dc85 Mon Sep 17 00:00:00 2001 From: Sabrina Date: Sat, 12 Dec 2015 01:43:00 +0800 Subject: [PATCH 093/118] add google analytics support set in _config.yml with ga: google-tracking-id to enable google analytics. --- layout/base.jade | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/layout/base.jade b/layout/base.jade index 07069007a..a2b1dce8e 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -141,3 +141,11 @@ html(lang='#{config.language}') })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); _st('install','#{theme.swiftype}','2.0.0'); + + if theme.ga + script. + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*newDate();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + ga('create','#{theme.ga}','auto');ga('send','pageview'); From 303c7ab921e5697656ae7396366b68f4cd138acf Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sat, 12 Dec 2015 12:49:48 +0800 Subject: [PATCH 094/118] Some improvements --- README.md | 12 +++++++----- _config.yml | 1 + source/css/style.scss | 5 +++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index dd9ee2dbb..fc8dfaf64 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ A simple Hexo template with great performance on different devices, ported from ![template preview](http://ooo.0o0.ooo/2015/10/24/562b5be12177e.jpg "Maupassant template preview") - + ## Installation Install theme and renderers: @@ -33,6 +33,7 @@ google_search: true ## Use Google search, true/false baidu_search: ## Use Baidu search, true/false swiftype: ## Your swiftype_key, e.g. m7b11ZrsT8Me7gzApciT tinysou: ## Your tinysou_key, e.g. 4ac092ad8d749fdc6293 +ga: ## Your Google Analytics tracking id, e.g. UA-42425684-2 menu: - page: home directory: / @@ -59,8 +60,9 @@ links: - disqus - [Disqus](https://disqus.com) shortname - google_search - Default search engine - baidu_search - Search engine for users in China -- swiftype - [Swiftype Search](https://swiftype.com) key +- swiftype - [Swiftype Search](https://swiftype.com) key - tinysou - [Tiny Search](http://tinysou.com) key +- ga - [Google Analytics](https://www.google.com/analytics/) tracking id - menu - Customize your menu of pages here, just follow the format of existied items. [IcoMoon](https://icomoon.io) icon fonts have been integrated, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs) - links - Edit your blogroll here @@ -88,7 +90,7 @@ highlight: ``` #### Languages -Two languages are available for this theme currently, English (en) and Simplified Chinese (zh-CN). Contributions of translating to other languages will be highly appreciated. +Four languages are available for this theme currently: Simplified Chinese (zh-CN), Traditional Chinese (zh-TW), English (en) and Spanish (es-ES). Contributions of translating to other languages will be highly appreciated. ## Solutions - Check whether your Terminal's current directory is in hexo's root directory which contains `source/`, `themes/`, etc. @@ -102,10 +104,10 @@ Looking forward to your pull request. ## Acknowledgements Thank [JamesPan](http://blog.jamespan.me) for his help to improve this theme -. +. ## Maupassant on other platforms: + Typecho:https://github.com/pagecho/maupassant/ + Octopress:https://github.com/pagecho/mewpassant/ + Farbox:https://github.com/pagecho/Maupassant-farbox/ + Wordpress:https://github.com/iMuFeng/maupassant/ -+ Ghost: https://github.com/LjxPrime/maupassant/ \ No newline at end of file ++ Ghost: https://github.com/LjxPrime/maupassant/ diff --git a/_config.yml b/_config.yml index 0dec575cd..3383ff47d 100644 --- a/_config.yml +++ b/_config.yml @@ -5,6 +5,7 @@ google_search: true ## Use Google search, true/false baidu_search: ## Use Baidu search, true/false swiftype: ## Your swiftype_key, e.g. m7b11ZrsT8Me7gzApciT tinysou: ## Your tinysou_key, e.g. 4ac092ad8d749fdc6293 +ga: ## Your Google Analytics tracking id, e.g. UA-42425684-2 menu: - page: home directory: / diff --git a/source/css/style.scss b/source/css/style.scss index d6cb4a54e..5c1af8875 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -227,8 +227,9 @@ a:focus{ code { display: inline; margin: 0 5px; - padding: 3px 5px; - border: 1px solid #ddd; + padding: 1px 5px; + border: 1px solid #ccc; + background: #eee; } a { color: #01579f; From 5b9d7f9022beffedad4f1e1ae01905cf7c8c13fc Mon Sep 17 00:00:00 2001 From: Sabrina Date: Sat, 12 Dec 2015 17:29:44 +0800 Subject: [PATCH 095/118] bug fix for google analytics --- layout/base.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/base.jade b/layout/base.jade index a2b1dce8e..b85497a60 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -145,7 +145,7 @@ html(lang='#{config.language}') if theme.ga script. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*newDate();a=s.createElement(o), + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create','#{theme.ga}','auto');ga('send','pageview'); From 58a8d8561070e0e3e4c9b5a4bddaf665a95b8083 Mon Sep 17 00:00:00 2001 From: hythyt9898 Date: Tue, 15 Dec 2015 10:15:21 +0800 Subject: [PATCH 096/118] fix bad title href when site is in a subdirectory --- layout/base.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/base.jade b/layout/base.jade index b85497a60..e8d3753ac 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -33,7 +33,7 @@ html(lang='#{config.language}') #header .site-name h1.hidden= current_title - a#logo(href='/')= config.title + a#logo(href=root)= config.title p.description= config.subtitle #nav-menu - for (i in theme.menu) From 7c54e0c8b7b358fa17cd351833fbd5328e40c544 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Fri, 18 Dec 2015 00:28:40 +0800 Subject: [PATCH 097/118] baidu analytics added --- README.md | 6 ++++-- _config.yml | 3 ++- layout/base.jade | 16 +++++++++++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fc8dfaf64..244df82e8 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,8 @@ google_search: true ## Use Google search, true/false baidu_search: ## Use Baidu search, true/false swiftype: ## Your swiftype_key, e.g. m7b11ZrsT8Me7gzApciT tinysou: ## Your tinysou_key, e.g. 4ac092ad8d749fdc6293 -ga: ## Your Google Analytics tracking id, e.g. UA-42425684-2 +google_analytics: ## Your Google Analytics tracking id, e.g. UA-42425684-2 +baidu_analytics: ## Your Baidu Analytics tracking id, e.g. 8006843039519956000 menu: - page: home directory: / @@ -62,7 +63,8 @@ links: - baidu_search - Search engine for users in China - swiftype - [Swiftype Search](https://swiftype.com) key - tinysou - [Tiny Search](http://tinysou.com) key -- ga - [Google Analytics](https://www.google.com/analytics/) tracking id +- google_analytics - [Google Analytics](https://www.google.com/analytics/) tracking id +- baidu_analytics - [Baidu Analytics](http://tongji.baidu.com) tracking id - menu - Customize your menu of pages here, just follow the format of existied items. [IcoMoon](https://icomoon.io) icon fonts have been integrated, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs) - links - Edit your blogroll here diff --git a/_config.yml b/_config.yml index 3383ff47d..4f9f1393b 100644 --- a/_config.yml +++ b/_config.yml @@ -5,7 +5,8 @@ google_search: true ## Use Google search, true/false baidu_search: ## Use Baidu search, true/false swiftype: ## Your swiftype_key, e.g. m7b11ZrsT8Me7gzApciT tinysou: ## Your tinysou_key, e.g. 4ac092ad8d749fdc6293 -ga: ## Your Google Analytics tracking id, e.g. UA-42425684-2 +google_analytics: ## Your Google Analytics tracking id, e.g. UA-42425684-2 +baidu_analytics: ## Your Baidu Analytics tracking id, e.g. 8006843039519956000 menu: - page: home directory: / diff --git a/layout/base.jade b/layout/base.jade index e8d3753ac..30cf72f38 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -141,11 +141,21 @@ html(lang='#{config.language}') })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); _st('install','#{theme.swiftype}','2.0.0'); - - if theme.ga + + if theme.google_analytics script. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); - ga('create','#{theme.ga}','auto');ga('send','pageview'); + ga('create','#{theme.google_analytics}','auto');ga('send','pageview'); + + if theme.baidu_analytics + script. + var _hmt = _hmt || []; + (function() { + var hm = document.createElement("script"); + hm.src = "//hm.baidu.com/hm.js?#{theme.baidu_analytics}"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); + })(); From d563f1066517e423387996d0319b8c426ce49e81 Mon Sep 17 00:00:00 2001 From: AbandonZHANG <441524586@qq.com> Date: Fri, 18 Dec 2015 17:40:09 +0800 Subject: [PATCH 098/118] fix title href when site's root is / --- layout/base.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/base.jade b/layout/base.jade index 30cf72f38..7081159e8 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -33,7 +33,7 @@ html(lang='#{config.language}') #header .site-name h1.hidden= current_title - a#logo(href=root)= config.title + a#logo(href=(root==''?'/':root))= config.title p.description= config.subtitle #nav-menu - for (i in theme.menu) From 881d7be3fa6898db9a7f2fed9944242ac4bc4874 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 23 Dec 2015 12:54:59 +0800 Subject: [PATCH 099/118] css update --- source/css/style.scss | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 5c1af8875..c354b5cbc 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -216,14 +216,17 @@ a:focus{ color: #444; padding-top: 20px; text-align: justify; - h2, h3 { + h2 { + margin: 1.4em 0 1.1em; + border-bottom: 1px solid #eee; + } + h3 { margin: 1.4em 0 1.1em; } pre code { padding: 0 2em; } p { - margin: 0 0 1.234em; code { display: inline; margin: 0 5px; @@ -261,13 +264,8 @@ a:focus{ display: block; } ul, ol { - overflow: auto; - padding: .5em 2.4em; border-radius: 3px; margin: 1em 0; - li { - text-indent: .5em; - } ul { margin: 0; } @@ -280,9 +278,6 @@ a:focus{ } } } - table { - margin: 0; - } } .tags { padding-bottom: 1em; @@ -426,7 +421,6 @@ blockquote:before,.stressed-quote:before { position: absolute; } strong,b,em{ - padding: 1px 2px; font-weight: bold; } pre{ @@ -738,6 +732,7 @@ figure.highlight { overflow: hidden; table { + margin: 0; display: block; width: 100%; overflow-y: hidden; @@ -1355,18 +1350,19 @@ i { /* table*/ table { - width: 100%; - background: transparent; + margin: auto; + min-width: 200px; + background: transparent; border-collapse: collapse; - border-spacing: 0; - text-align: left; + border-spacing: 0; + text-align: left; th { - font-weight: bold; - padding-bottom: 0.5em; - border-bottom: 2px solid lighten(#dce4f1, 2); + font-weight: bold; + padding: 0.5em; + border-bottom: 2px solid lighten(#dce4f1, 2); } td { + padding: 0.5em; border-bottom: 1px solid lighten(#dce4f1, 2); - padding: 1rem 0; } } From cac171d7e58c03638193ff44a963e2e0f18c1eab Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 23 Dec 2015 13:15:27 +0800 Subject: [PATCH 100/118] css update --- source/css/style.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/css/style.scss b/source/css/style.scss index c354b5cbc..57674ac7a 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -227,6 +227,7 @@ a:focus{ padding: 0 2em; } p { + margin: 0 0 1.234em; code { display: inline; margin: 0 5px; @@ -1350,7 +1351,7 @@ i { /* table*/ table { - margin: auto; + margin: auto auto 1.234em; min-width: 200px; background: transparent; border-collapse: collapse; From 4d95cd83ce5969e5b9a519d7113d767f76df6473 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Fri, 25 Dec 2015 15:24:06 +0800 Subject: [PATCH 101/118] function optimized --- README.md | 11 ++ _config.yml | 10 ++ layout/_partial/after_footer.jade | 59 ++++++++++ layout/_partial/comments.jade | 2 +- .../_partial/{post-nav.jade => post_nav.jade} | 0 layout/_partial/totop.jade | 4 +- layout/_widget/category.jade | 3 + layout/_widget/links.jade | 5 + layout/_widget/recent_comments.jade | 8 ++ layout/_widget/recent_posts.jade | 3 + layout/_widget/search.jade | 21 ++++ layout/_widget/tag.jade | 4 + layout/base.jade | 111 +----------------- layout/post.jade | 2 +- 14 files changed, 133 insertions(+), 110 deletions(-) create mode 100644 layout/_partial/after_footer.jade rename layout/_partial/{post-nav.jade => post_nav.jade} (100%) create mode 100644 layout/_widget/category.jade create mode 100644 layout/_widget/links.jade create mode 100644 layout/_widget/recent_comments.jade create mode 100644 layout/_widget/recent_posts.jade create mode 100644 layout/_widget/search.jade create mode 100644 layout/_widget/tag.jade diff --git a/README.md b/README.md index 244df82e8..3fb12d6c5 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ swiftype: ## Your swiftype_key, e.g. m7b11ZrsT8Me7gzApciT tinysou: ## Your tinysou_key, e.g. 4ac092ad8d749fdc6293 google_analytics: ## Your Google Analytics tracking id, e.g. UA-42425684-2 baidu_analytics: ## Your Baidu Analytics tracking id, e.g. 8006843039519956000 + menu: - page: home directory: / @@ -48,6 +49,15 @@ menu: - page: rss directory: atom.xml icon: icon-rss + +widgets: ## Six widgets in sidebar provided: search, category, tag, recent_posts, rencent_comments and links. + - search + - category + - tag + - recent_posts + - recent_comments + - links + links: - title: site-name1 url: http://www.example1.com/ @@ -66,6 +76,7 @@ links: - google_analytics - [Google Analytics](https://www.google.com/analytics/) tracking id - baidu_analytics - [Baidu Analytics](http://tongji.baidu.com) tracking id - menu - Customize your menu of pages here, just follow the format of existied items. [IcoMoon](https://icomoon.io) icon fonts have been integrated, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs) +- widgets - Choose and arrange the widgets in sidebar here - links - Edit your blogroll here ##Features diff --git a/_config.yml b/_config.yml index 4f9f1393b..07c344b01 100644 --- a/_config.yml +++ b/_config.yml @@ -7,6 +7,7 @@ swiftype: ## Your swiftype_key, e.g. m7b11ZrsT8Me7gzApciT tinysou: ## Your tinysou_key, e.g. 4ac092ad8d749fdc6293 google_analytics: ## Your Google Analytics tracking id, e.g. UA-42425684-2 baidu_analytics: ## Your Baidu Analytics tracking id, e.g. 8006843039519956000 + menu: - page: home directory: / @@ -20,6 +21,15 @@ menu: - page: rss directory: atom.xml icon: icon-rss + +widgets: ## Six widgets in sidebar provided: search, category, tag, recent_posts, rencent_comments and links. + - search + - category + - tag + - recent_posts + - recent_comments + - links + links: - title: site-name1 url: http://www.example1.com/ diff --git a/layout/_partial/after_footer.jade b/layout/_partial/after_footer.jade new file mode 100644 index 000000000..c987b3fc2 --- /dev/null +++ b/layout/_partial/after_footer.jade @@ -0,0 +1,59 @@ +if theme.fancybox + != js([root + '/js/fancybox.pack.js', root + '/js/jquery.fancybox.js']) + != css(root + '/css/jquery.fancybox.css') + +if theme.duoshuo + script. + var duoshuoQuery = {short_name:'#{theme.duoshuo}'}; + (function() { + var ds = document.createElement('script'); + ds.type = 'text/javascript';ds.async = true; + ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//dn-comment.qbox.me/embed.js'; + ds.charset = 'UTF-8'; + (document.getElementsByTagName('head')[0] + || document.getElementsByTagName('body')[0]).appendChild(ds); + })(); + +if theme.tinysou + script. + var option = { + engineKey: '#{theme.tinysou}' + }; + (function(w,d,t,u,n,s,e){ + s = d.createElement(t); + s.src = u; + s.async = 1; + w[n] = function(r){ + w[n].opts = r; + }; + e = d.getElementsByTagName(t)[0]; + e.parentNode.insertBefore(s, e); + })(window,document,'script','//tinysou-cdn.b0.upaiyun.com/ts.js','_ts'); + _ts(option); + +if theme.swiftype + script. + (function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){ + (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t); + e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e); + })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); + + _st('install','#{theme.swiftype}','2.0.0'); + +if theme.google_analytics + script. + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + ga('create','#{theme.google_analytics}','auto');ga('send','pageview'); + +if theme.baidu_analytics + script. + var _hmt = _hmt || []; + (function() { + var hm = document.createElement("script"); + hm.src = "//hm.baidu.com/hm.js?#{theme.baidu_analytics}"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); + })(); diff --git a/layout/_partial/comments.jade b/layout/_partial/comments.jade index e8d6557b3..39fda8143 100644 --- a/layout/_partial/comments.jade +++ b/layout/_partial/comments.jade @@ -1,5 +1,5 @@ if theme.duoshuo - .ds-thread(data-thread-key=page.path, data-title=page.title, data-url=page.permalink, data-author-key='1') + .ds-thread(data-thread-key=page.path, data-title=page.title, data-url=page.permalink, data-author-key='1') if theme.disqus #disqus_thread diff --git a/layout/_partial/post-nav.jade b/layout/_partial/post_nav.jade similarity index 100% rename from layout/_partial/post-nav.jade rename to layout/_partial/post_nav.jade diff --git a/layout/_partial/totop.jade b/layout/_partial/totop.jade index f22f33fc3..18bb34b47 100644 --- a/layout/_partial/totop.jade +++ b/layout/_partial/totop.jade @@ -1 +1,3 @@ -a#rocket.show(href='#top') \ No newline at end of file +a#rocket.show(href='#top') + +!= js([root + '/js/jquery.min.js', root + '/js/totop.js']) diff --git a/layout/_widget/category.jade b/layout/_widget/category.jade new file mode 100644 index 000000000..5546ed19f --- /dev/null +++ b/layout/_widget/category.jade @@ -0,0 +1,3 @@ +.widget + .widget-title= __('categories') + != list_categories({show_count: false}) diff --git a/layout/_widget/links.jade b/layout/_widget/links.jade new file mode 100644 index 000000000..46b1ff43f --- /dev/null +++ b/layout/_widget/links.jade @@ -0,0 +1,5 @@ +.widget + .widget-title= __('blogroll') + - for (var i in theme.links) + ul + a(href='#{theme.links[i].url}' title='#{theme.links[i].title}' target='_blank') #{theme.links[i].title} diff --git a/layout/_widget/recent_comments.jade b/layout/_widget/recent_comments.jade new file mode 100644 index 000000000..af484314a --- /dev/null +++ b/layout/_widget/recent_comments.jade @@ -0,0 +1,8 @@ +if theme.duoshuo + .widget + .comments-title= __('recent_comments') + .ds-recent-comments(data-num-items='5' data-show-avatars='0' data-show-time='1' data-show-admin='0' data-excerpt-length='32' data-show-title='1') +if theme.disqus + .widget + .widget-title= __('recent_comments') + script(type='text/javascript' src='//#{theme.disqus}.disqus.com/recent_comments_widget.js?num_items=5&hide_avatars=1&avatar_size=32&excerpt_length=20&hide_mods=1') diff --git a/layout/_widget/recent_posts.jade b/layout/_widget/recent_posts.jade new file mode 100644 index 000000000..a4d353dbd --- /dev/null +++ b/layout/_widget/recent_posts.jade @@ -0,0 +1,3 @@ +.widget + .widget-title= __('recent') + != list_posts({amount: 10}) diff --git a/layout/_widget/search.jade b/layout/_widget/search.jade new file mode 100644 index 000000000..6d50a9b7d --- /dev/null +++ b/layout/_widget/search.jade @@ -0,0 +1,21 @@ +if theme.google_search == true + .widget + form(action='//www.google.com/search' method='get' accept-charset='utf-8' class='search-form' target='_blank') + input(type='text' name='q' maxlength='20' class='search-form-input' placeholder='Search') + input(type='hidden' name='sitesearch' value='#{config.url}') +if theme.baidu_search == true + .widget + form(action='//www.baidu.com/baidu' method='get' accept-charset='utf-8' class='search-form' target='_blank') + input(type='search' name='word' maxlength='20' class='search-form-input' placeholder='Search') + input(type='hidden' name='si' value='#{config.url}') + input(name='tn' type='hidden' value='bds') + input(name='cl' type='hidden' value='3') + input(name='ct' type='hidden' value='2097152') + input(name='s' type='hidden' value='on') +if theme.swiftype + .widget + input.st-default-search-input(placeholder='Search' type='text') +if theme.tinysou + .widget + form + input#ts-search-input(class='ts-search-input' placeholder='Search' type='text') diff --git a/layout/_widget/tag.jade b/layout/_widget/tag.jade new file mode 100644 index 000000000..ab0c275cd --- /dev/null +++ b/layout/_widget/tag.jade @@ -0,0 +1,4 @@ +.widget + .widget-title= __('tags') + .tagcloud + != tagcloud({min_font: 15, max_font: 15, amount: 100, orderby: 'count'}) diff --git a/layout/base.jade b/layout/base.jade index 7081159e8..10d7cd5b0 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -36,58 +36,15 @@ html(lang='#{config.language}') a#logo(href=(root==''?'/':root))= config.title p.description= config.subtitle #nav-menu - - for (i in theme.menu) + - for (var i in theme.menu) +a_with_current(theme.menu[i].directory, __(theme.menu[i].page), theme.menu[i].icon) #layout.pure-g .pure-u-1.pure-u-md-3-4: .content_container block content - .pure-u-1-4: #sidebar - if theme.google_search == true - .widget - form(action='//www.google.com/search' method='get' accept-charset='utf-8' class='search-form' target='_blank') - input(type='text' name='q' maxlength='20' class='search-form-input' placeholder='Search') - input(type='hidden' name='sitesearch' value='#{config.url}') - if theme.baidu_search == true - .widget - form(action='//www.baidu.com/baidu' method='get' accept-charset='utf-8' class='search-form' target='_blank') - input(type='search' name='word' maxlength='20' class='search-form-input' placeholder='Search') - input(type='hidden' name='si' value='#{config.url}') - input(name='tn' type='hidden' value='bds') - input(name='cl' type='hidden' value='3') - input(name='ct' type='hidden' value='2097152') - input(name='s' type='hidden' value='on') - if theme.swiftype - .widget - input.st-default-search-input(placeholder='Search' type='text') - if theme.tinysou - .widget - form - input#ts-search-input(class='ts-search-input' placeholder='Search' type='text') - .widget - .widget-title= __('categories') - != list_categories({show_count: false}) - .widget - .widget-title= __('tags') - .tagcloud - != tagcloud({min_font: 15, max_font: 15, amount: 100, orderby: 'count'}) - .widget - .widget-title= __('recent') - != list_posts({amount: 10}) - if theme.duoshuo - .widget - .comments-title= __('recent_comments') - .ds-recent-comments(data-num-items='5' data-show-avatars='0' data-show-time='1' data-show-admin='0' data-excerpt-length='32' data-show-title='1') - if theme.disqus - .widget - .widget-title= __('recent_comments') - script(type='text/javascript' src='//#{theme.disqus}.disqus.com/recent_comments_widget.js?num_items=5&hide_avatars=1&avatar_size=32&excerpt_length=20&hide_mods=1') - .widget - .widget-title= __('blogroll') - - for (var i in theme.links) - ul - a(href='#{theme.links[i].url}' title='#{theme.links[i].title}' target='_blank') #{theme.links[i].title} + each item in theme.widgets + != partial('_widget/' + item + '.jade') #footer= '© ' a(href='/', rel='nofollow')= config.title + '.' @@ -98,64 +55,4 @@ html(lang='#{config.language}') a(rel='nofollow', target='_blank', href='https://github.com/pagecho') Cho. include _partial/totop - != js([root + '/js/jquery.min.js', root + '/js/totop.js']) - - if theme.fancybox - != js([root + '/js/fancybox.pack.js', root + '/js/jquery.fancybox.js']) - != css(root + '/css/jquery.fancybox.css') - - if theme.duoshuo - script. - var duoshuoQuery = {short_name:'#{theme.duoshuo}'}; - (function() { - var ds = document.createElement('script'); - ds.type = 'text/javascript';ds.async = true; - ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js'; - ds.charset = 'UTF-8'; - (document.getElementsByTagName('head')[0] - || document.getElementsByTagName('body')[0]).appendChild(ds); - })(); - - if theme.tinysou - script. - var option = { - engineKey: '#{theme.tinysou}' - }; - (function(w,d,t,u,n,s,e){ - s = d.createElement(t); - s.src = u; - s.async = 1; - w[n] = function(r){ - w[n].opts = r; - }; - e = d.getElementsByTagName(t)[0]; - e.parentNode.insertBefore(s, e); - })(window,document,'script','//tinysou-cdn.b0.upaiyun.com/ts.js','_ts'); - _ts(option); - - if theme.swiftype - script. - (function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){ - (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t); - e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e); - })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st'); - - _st('install','#{theme.swiftype}','2.0.0'); - - if theme.google_analytics - script. - (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); - ga('create','#{theme.google_analytics}','auto');ga('send','pageview'); - - if theme.baidu_analytics - script. - var _hmt = _hmt || []; - (function() { - var hm = document.createElement("script"); - hm.src = "//hm.baidu.com/hm.js?#{theme.baidu_analytics}"; - var s = document.getElementsByTagName("script")[0]; - s.parentNode.insertBefore(hm, s); - })(); + include _partial/after_footer diff --git a/layout/post.jade b/layout/post.jade index d9d1a559b..799c1f80e 100644 --- a/layout/post.jade +++ b/layout/post.jade @@ -26,7 +26,7 @@ block content .tags for tag in page.tags.toArray() a(href=url_for(tag.path))= tag.name - include _partial/post-nav + include _partial/post_nav if theme.duoshuo div(class='ds-share flat' data-thread-key=page.path, data-title=page.title, data-url=page.permalink) .ds-share-inline From 4eb47bfb25e4fd52d85b5a987cbb590f0123b512 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Fri, 25 Dec 2015 15:48:07 +0800 Subject: [PATCH 102/118] table css updated --- source/css/style.scss | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 57674ac7a..3d9d694f0 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -1352,18 +1352,22 @@ i { /* table*/ table { margin: auto auto 1.234em; - min-width: 200px; + width: 100%; background: transparent; border-collapse: collapse; border-spacing: 0; text-align: left; th { font-weight: bold; - padding: 0.5em; - border-bottom: 2px solid lighten(#dce4f1, 2); + padding: 5px 10px; + border-bottom: 2px solid #909ba2; } td { - padding: 0.5em; - border-bottom: 1px solid lighten(#dce4f1, 2); + padding: 5px 10px; + } + tr { + &:nth-child(2n) { + background: #f7f8f8; + } } } From 91f5ca648888a612e0fa413a575564c0a77c3bf5 Mon Sep 17 00:00:00 2001 From: Racomaizer Date: Wed, 30 Dec 2015 02:20:28 +0800 Subject: [PATCH 103/118] Remove redundant prefix slashes --- layout/_partial/after_footer.jade | 4 ++-- layout/_partial/totop.jade | 2 +- layout/base.jade | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/layout/_partial/after_footer.jade b/layout/_partial/after_footer.jade index c987b3fc2..be77e3598 100644 --- a/layout/_partial/after_footer.jade +++ b/layout/_partial/after_footer.jade @@ -1,6 +1,6 @@ if theme.fancybox - != js([root + '/js/fancybox.pack.js', root + '/js/jquery.fancybox.js']) - != css(root + '/css/jquery.fancybox.css') + != js([root + 'js/fancybox.pack.js', root + 'js/jquery.fancybox.js']) + != css(root + 'css/jquery.fancybox.css') if theme.duoshuo script. diff --git a/layout/_partial/totop.jade b/layout/_partial/totop.jade index 18bb34b47..1ba267c22 100644 --- a/layout/_partial/totop.jade +++ b/layout/_partial/totop.jade @@ -1,3 +1,3 @@ a#rocket.show(href='#top') -!= js([root + '/js/jquery.min.js', root + '/js/totop.js']) +!= js([root + 'js/jquery.min.js', root + 'js/totop.js']) diff --git a/layout/base.jade b/layout/base.jade index 10d7cd5b0..99ca59502 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -20,14 +20,14 @@ html(lang='#{config.language}') meta(content='telephone=no', name='format-detection') meta(name='description', content=config.description) block title - link(rel='stylesheet', type='text/css', href=root + '/css/normalize.css') - link(rel='stylesheet', type='text/css', href=root + '/css/pure-min.css') - link(rel='stylesheet', type='text/css', href=root + '/css/grids-responsive-min.css') - link(rel='stylesheet', type='text/css', href=root + '/css/style.css') - link(rel='Shortcut Icon', type='image/x-icon',href='/favicon.ico') - link(rel='apple-touch-icon', href='/apple-touch-icon.png') - link(rel='apple-touch-icon-precomposed', href='/apple-touch-icon.png') - link(rel='alternate', type='application/atom+xml', href='/atom.xml') + link(rel='stylesheet', type='text/css', href=root + 'css/normalize.css') + link(rel='stylesheet', type='text/css', href=root + 'css/pure-min.css') + link(rel='stylesheet', type='text/css', href=root + 'css/grids-responsive-min.css') + link(rel='stylesheet', type='text/css', href=root + 'css/style.css') + link(rel='Shortcut Icon', type='image/x-icon',href='favicon.ico') + link(rel='apple-touch-icon', href='apple-touch-icon.png') + link(rel='apple-touch-icon-precomposed', href='apple-touch-icon.png') + link(rel='alternate', type='application/atom+xml', href='atom.xml') body: .body_container #header From e0a8672aa90c0fd0d9469518510ba13c8a1809cd Mon Sep 17 00:00:00 2001 From: Racomaizer Date: Wed, 30 Dec 2015 02:27:40 +0800 Subject: [PATCH 104/118] Some hack to make 'home' links actually work ... when the blog is placed in a subdirectory --- _config.yml | 2 +- layout/_partial/helpers.jade | 2 +- layout/base.jade | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_config.yml b/_config.yml index 07c344b01..a931c5edd 100644 --- a/_config.yml +++ b/_config.yml @@ -10,7 +10,7 @@ baidu_analytics: ## Your Baidu Analytics tracking id, e.g. 8006843039519956000 menu: - page: home - directory: / + directory: . icon: icon-home - page: archive directory: archives/ diff --git a/layout/_partial/helpers.jade b/layout/_partial/helpers.jade index 01023ca05..6acc3bf1f 100644 --- a/layout/_partial/helpers.jade +++ b/layout/_partial/helpers.jade @@ -1,6 +1,6 @@ mixin a_with_current(href, content, id) - var url = url_for(href) - if (href == '/' && (is_home() || is_post())) || is_current(href) + if (href == '.' && (is_home() || is_post())) || is_current(href) a.current(href=url) i(class=id)= ' ' + content else diff --git a/layout/base.jade b/layout/base.jade index 99ca59502..45acacccc 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -33,7 +33,7 @@ html(lang='#{config.language}') #header .site-name h1.hidden= current_title - a#logo(href=(root==''?'/':root))= config.title + a#logo(href=url_for('.'))= config.title p.description= config.subtitle #nav-menu - for (var i in theme.menu) @@ -47,7 +47,7 @@ html(lang='#{config.language}') != partial('_widget/' + item + '.jade') #footer= '© ' - a(href='/', rel='nofollow')= config.title + '.' + a(href=url_for('.'), rel='nofollow')= config.title + '.' | Powered by a(rel='nofollow', target='_blank', href='https://hexo.io') Hexo. a(rel='nofollow', target='_blank', href='https://github.com/tufu9441/maupassant-hexo') Theme From 096e23374e4fcd47e53b5257577647e16a731e12 Mon Sep 17 00:00:00 2001 From: Racomaizer Date: Wed, 30 Dec 2015 02:32:38 +0800 Subject: [PATCH 105/118] Use url_for() helper required by offical doc --- layout/_partial/after_footer.jade | 4 ++-- layout/_partial/totop.jade | 2 +- layout/base.jade | 21 ++++++++------------- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/layout/_partial/after_footer.jade b/layout/_partial/after_footer.jade index be77e3598..b08342c7c 100644 --- a/layout/_partial/after_footer.jade +++ b/layout/_partial/after_footer.jade @@ -1,6 +1,6 @@ if theme.fancybox - != js([root + 'js/fancybox.pack.js', root + 'js/jquery.fancybox.js']) - != css(root + 'css/jquery.fancybox.css') + != js([url_for('js/fancybox.pack.js'), url_for('js/jquery.fancybox.js')]) + != css(url_for('css/jquery.fancybox.css')) if theme.duoshuo script. diff --git a/layout/_partial/totop.jade b/layout/_partial/totop.jade index 1ba267c22..1e6d6d6de 100644 --- a/layout/_partial/totop.jade +++ b/layout/_partial/totop.jade @@ -1,3 +1,3 @@ a#rocket.show(href='#top') -!= js([root + 'js/jquery.min.js', root + 'js/totop.js']) +!= js([url_for('js/jquery.min.js'), url_for('js/totop.js')]) diff --git a/layout/base.jade b/layout/base.jade index 45acacccc..e675adfdd 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -5,11 +5,6 @@ if page.title else - var current_title = config.title -if (config.root != '/') - - var root = config.root -else - - var root = '' - html(lang='#{config.language}') head @@ -20,14 +15,14 @@ html(lang='#{config.language}') meta(content='telephone=no', name='format-detection') meta(name='description', content=config.description) block title - link(rel='stylesheet', type='text/css', href=root + 'css/normalize.css') - link(rel='stylesheet', type='text/css', href=root + 'css/pure-min.css') - link(rel='stylesheet', type='text/css', href=root + 'css/grids-responsive-min.css') - link(rel='stylesheet', type='text/css', href=root + 'css/style.css') - link(rel='Shortcut Icon', type='image/x-icon',href='favicon.ico') - link(rel='apple-touch-icon', href='apple-touch-icon.png') - link(rel='apple-touch-icon-precomposed', href='apple-touch-icon.png') - link(rel='alternate', type='application/atom+xml', href='atom.xml') + link(rel='stylesheet', type='text/css', href=url_for('css/normalize.css')) + link(rel='stylesheet', type='text/css', href=url_for('css/pure-min.css')) + link(rel='stylesheet', type='text/css', href=url_for('css/grids-responsive-min.css')) + link(rel='stylesheet', type='text/css', href=url_for('css/style.css')) + link(rel='Shortcut Icon', type='image/x-icon',href=url_for('favicon.ico')) + link(rel='apple-touch-icon', href=url_for('apple-touch-icon.png')) + link(rel='apple-touch-icon-precomposed', href=url_for('apple-touch-icon.png')) + link(rel='alternate', type='application/atom+xml', href=url_for('atom.xml')) body: .body_container #header From 13275ac66588a8a60ce687ff1d7a27732bd7ceed Mon Sep 17 00:00:00 2001 From: Racomaizer Date: Wed, 30 Dec 2015 02:56:33 +0800 Subject: [PATCH 106/118] Self-adaptive RSS feed header For unknown reason '' trigger a 'expected "indent", but got "outdent"' parse rejection, replace with the standard 'doctype html' --- layout/base.jade | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index e675adfdd..36d58f5fa 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -5,7 +5,14 @@ if page.title else - var current_title = config.title - +case config.feed.type + when "rss2" + - var feed_type='application/rss+xml' + when "atom" + default + - var feed_type='application/atom+xml' + +doctype html html(lang='#{config.language}') head meta(http-equiv='content-type', content='text/html; charset=utf-8') @@ -22,7 +29,8 @@ html(lang='#{config.language}') link(rel='Shortcut Icon', type='image/x-icon',href=url_for('favicon.ico')) link(rel='apple-touch-icon', href=url_for('apple-touch-icon.png')) link(rel='apple-touch-icon-precomposed', href=url_for('apple-touch-icon.png')) - link(rel='alternate', type='application/atom+xml', href=url_for('atom.xml')) + if config.feed + link(rel='alternate', type=feed_type, href=url_for(config.feed.path)) body: .body_container #header From 7205c12512e198058f90b49103c4211c6a42c729 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 30 Dec 2015 13:18:16 +0800 Subject: [PATCH 107/118] back-to-top optimized --- README.md | 2 +- source/css/style.scss | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3fb12d6c5..bb18fbb0c 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ baidu_analytics: ## Your Baidu Analytics tracking id, e.g. 8006843039519956000 menu: - page: home - directory: / + directory: . icon: icon-home - page: archive directory: archives/ diff --git a/source/css/style.scss b/source/css/style.scss index 3d9d694f0..2ac4e5b47 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -432,6 +432,7 @@ pre{ } /* back-to-top rocket*/ +@media print, screen and (min-width: 48em) { #rocket { position: fixed; right: 50px; @@ -487,7 +488,7 @@ pre{ -moz-transform: scale(1.4, 3.2); transform: scale(1.4, 3.2); } - +} /* timeline*/ div { box-sizing: border-box; From 839b256312c6a6eb022d860c7d5d6b8ef4fe74ab Mon Sep 17 00:00:00 2001 From: Zhe Song Date: Wed, 30 Dec 2015 02:22:18 -0800 Subject: [PATCH 108/118] Make comment feature default on for pages while controllable by front-matter. --- README.md | 3 +++ layout/page.jade | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bb18fbb0c..a65e91ba2 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,9 @@ You can control the abstract of a post shown at index, by either filling a `desc #### Table of Contents TOC in a post can be enabled by adding a `toc: true` item in `front-matter`. +#### Comments +Comment feature of each post and page can be enabled (default) and disabled by adding a `comments: true` or `comments: false` in `front-matter`. This could be useful when you want comment feature for guestbook page, but don't want comment feature for about page. + #### Syntax Highlighting Highlighted code showcase is supported, please set the `highlight` option in `_config.yml` of hexo directory like this: diff --git a/layout/page.jade b/layout/page.jade index d29c8f591..7edc70029 100644 --- a/layout/page.jade +++ b/layout/page.jade @@ -6,4 +6,5 @@ block content h1.post-title= page.title .post-content != page.content - + if page.comments + include _partial/comments From e154ce002f9a8ad5dd96e782997de038bd292639 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 30 Dec 2015 23:13:58 +0800 Subject: [PATCH 109/118] minor improvements --- source/css/style.scss | 910 +++++++++++++++++++++--------------------- 1 file changed, 455 insertions(+), 455 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 2ac4e5b47..dbadcc9b8 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -7,398 +7,398 @@ */ body { - background-color: #FFF; - color: #444; - font-family: "TIBch", "Classic Grotesque W01", "Helvetica Neue", Arial, "Hiragino Sans GB", "STHeiti", "Microsoft YaHei", "WenQuanYi Micro Hei", SimSun, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-size: 14px; + background-color: #FFF; + color: #444; + font-family: "TIBch", "Classic Grotesque W01", "Helvetica Neue", Arial, "Hiragino Sans GB", "STHeiti", "Microsoft YaHei", "WenQuanYi Micro Hei", SimSun, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 14px; } .body_container { - padding: 0 60px; - max-width: 1150px; - margin: 0 auto; + padding: 0 60px; + max-width: 1150px; + margin: 0 auto; } .content_container { - padding-right: 50px; - padding-top: 20px; + padding-right: 50px; + padding-top: 20px; } #fb_comments_container{ - margin-top: 35px; - padding-top: 20px; - border-top: 1px solid rgba(150, 150, 150, 0.2); + margin-top: 35px; + padding-top: 20px; + border-top: 1px solid rgba(150, 150, 150, 0.2); } a, button.submit { - color: #6E7173; - text-decoration: none; - -webkit-transition: all .1s ease-in; - -moz-transition: all .1s ease-in; - -o-transition: all .1s ease-in; - transition: all .1s ease-in; + color: #6E7173; + text-decoration: none; + -webkit-transition: all .1s ease-in; + -moz-transition: all .1s ease-in; + -o-transition: all .1s ease-in; + transition: all .1s ease-in; } a:hover, a:active { - color: #444; + color: #444; } a:focus{ - outline:auto; + outline:auto; } .clear { - clear: both; + clear: both; } #header { - padding: 58px 0 0; - text-align: left; - border-bottom: 1px solid #ddd; - position: relative; - .site-name { - margin-bottom: 40px; - h1 { - padding: 0; - margin: 0; - height: 0; - overflow: hidden; - } - #logo { - font: bold 38px/1.12 "Times New Roman", Georgia, Times, sans-serif; - color: #555; - span, &:hover { - color: #777; - } - } - .description { - margin: .2em 0 0; - color: #999; - } - } - #nav-menu { - margin: 10px 0 -1px; - padding: 0; - position: absolute; - right: 0; - bottom: 0; - a { - display: inline-block; - padding: 3px 20px 3px; - line-height: 30px; - color: #444; - font-size: 13px; - border: 1px solid transparent; - &:hover { - border-bottom-color: #444; - } - &.current{ - border: 1px solid #ddd; - border-bottom-color: #fff; - } - } - } + padding: 58px 0 0; + text-align: left; + border-bottom: 1px solid #ddd; + position: relative; + .site-name { + margin-bottom: 40px; + h1 { + padding: 0; + margin: 0; + height: 0; + overflow: hidden; + } + #logo { + font: bold 38px/1.12 "Times New Roman", Georgia, Times, sans-serif; + color: #555; + span, &:hover { + color: #777; + } + } + .description { + margin: .2em 0 0; + color: #999; + } + } + #nav-menu { + margin: 10px 0 -1px; + padding: 0; + position: absolute; + right: 0; + bottom: 0; + a { + display: inline-block; + padding: 3px 20px 3px; + line-height: 30px; + color: #444; + font-size: 13px; + border: 1px solid transparent; + &:hover { + border-bottom-color: #444; + } + &.current{ + border: 1px solid #ddd; + border-bottom-color: #fff; + } + } + } } #sidebar { - border-left: 1px solid #ddd; - padding-left: 35px; - margin-top: 40px; - padding-bottom: 20px; - word-wrap: break-word; - .widget { - margin-bottom: 30px; - .widget-title { - color: #6E7173; - line-height: 2.7; - margin-top: 0; - font-size: 16px; - border-bottom: 1px solid #ddd; - display: block; - font-weight: normal; - } - .comments-title { - color: #6E7173; - line-height: 2.7; - margin-top: 0; - font-size: 16px; - border-bottom: 0px solid #ddd; - display: block; - font-weight: normal; - } - .tagcloud { - margin-top: 10px; - a { - line-height: 1.5; - padding: 5px; - } - } - ul { - list-style: none; - padding: 0; - li { - margin: 5px 0; - line-height: 1.5; - } - } - } - .search-form{ - position: relative; - overflow: hidden; - input { - background: #fff 8px 8px no-repeat - url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6%2BR8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG11AABzoAAA%2FN0AAINkAABw6AAA7GgAADA%2BAAAQkOTsmeoAAAESSURBVHjajNCxS9VRGMbxz71E4OwgoXPQxVEpXCI47%2BZqGP0LCoJO7UVD3QZzb3SwcHB7F3Uw3Zpd%2FAPCcJKG7Dj4u%2FK7Pwp94HDg5Xyf5z1Pr9YKImKANTzFXxzjU2ae6qhXaxURr%2FAFl9hHDy%2FwEK8z89sYVEp5gh84wMvMvGiSJ%2FEV85jNzLMR1McqfmN5BEBmnmMJFSvtpH7jdJiZv7q7Z%2BZPfMdcF6rN%2FT%2F1m2LGBkd4HhFT3dcRMY2FpskxaLNpayciHrWAGeziD7b%2BVfkithuTk8bkGa4wgWFmbrSTZOYeBvjc%2BucQj%2FEe6xHx4Taq1nrnKaW8K6XUUsrHWuvNevdRRLzFGwzvDbXAB9cDAHvhedDruuxSAAAAAElFTkSuQmCC); - display: inline-block; - height: 16px; - padding: 7px 11px 7px 28px; - border: 1px solid #bbb; - border: 1px solid rgba(0,0,0,0.25); - font-weight: 400; - color: #444; - font-size: 14px; - line-height: 16px; - box-sizing: content-box; - background-clip: padding-box; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - } - } + border-left: 1px solid #ddd; + padding-left: 35px; + margin-top: 40px; + padding-bottom: 20px; + word-wrap: break-word; + .widget { + margin-bottom: 30px; + .widget-title { + color: #6E7173; + line-height: 2.7; + margin-top: 0; + font-size: 16px; + border-bottom: 1px solid #ddd; + display: block; + font-weight: normal; + } + .comments-title { + color: #6E7173; + line-height: 2.7; + margin-top: 0; + font-size: 16px; + border-bottom: 0px solid #ddd; + display: block; + font-weight: normal; + } + .tagcloud { + margin-top: 10px; + a { + line-height: 1.5; + padding: 5px; + } + } + ul { + list-style: none; + padding: 0; + li { + margin: 5px 0; + line-height: 1.5; + } + } + } + .search-form{ + position: relative; + overflow: hidden; + input { + background: #fff 8px 8px no-repeat + url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6%2BR8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG11AABzoAAA%2FN0AAINkAABw6AAA7GgAADA%2BAAAQkOTsmeoAAAESSURBVHjajNCxS9VRGMbxz71E4OwgoXPQxVEpXCI47%2BZqGP0LCoJO7UVD3QZzb3SwcHB7F3Uw3Zpd%2FAPCcJKG7Dj4u%2FK7Pwp94HDg5Xyf5z1Pr9YKImKANTzFXxzjU2ae6qhXaxURr%2FAFl9hHDy%2FwEK8z89sYVEp5gh84wMvMvGiSJ%2FEV85jNzLMR1McqfmN5BEBmnmMJFSvtpH7jdJiZv7q7Z%2BZPfMdcF6rN%2FT%2F1m2LGBkd4HhFT3dcRMY2FpskxaLNpayciHrWAGeziD7b%2BVfkithuTk8bkGa4wgWFmbrSTZOYeBvjc%2BucQj%2FEe6xHx4Taq1nrnKaW8K6XUUsrHWuvNevdRRLzFGwzvDbXAB9cDAHvhedDruuxSAAAAAElFTkSuQmCC); + display: inline-block; + height: 16px; + padding: 7px 11px 7px 28px; + border: 1px solid #bbb; + border: 1px solid rgba(0,0,0,0.25); + font-weight: 400; + color: #444; + font-size: 14px; + line-height: 16px; + box-sizing: content-box; + background-clip: padding-box; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + } } /* title for search result or tagged posts*/ .label-title { - margin-top: 1.1em; - font-size: 20px; - font-weight: normal; - color: #888; + margin-top: 1.1em; + font-size: 20px; + font-weight: normal; + color: #888; } .post { - padding: 25px 0 15px; - .post-title { - margin: 0; - color: #555; - text-align: left; - font: bold 25px/1.1 "ff-tisa-web-pro", Cambria, "Times New Roman", Georgia, Times, sans-serif; - a { - color: #555; - } - } - .post-meta { - padding: 0; - margin: 12px 0 0; - color: #999; - float: left; - display: inline; - text-indent: .15em; - } - .ds-thread-count { - padding: 0; - margin: 12px 0 0; - color: #999; - float: right; - display: inline; - text-indent: .15em; - } - .disqus-comment-count { - padding: 0; - margin: 12px 0 0; - color: #999; - float: right; - display: inline; - text-indent: .15em; - } - .post-content { - clear: left; - font-size: 15px; - line-height: 1.77; - color: #444; - padding-top: 20px; - text-align: justify; - h2 { - margin: 1.4em 0 1.1em; - border-bottom: 1px solid #eee; - } - h3 { - margin: 1.4em 0 1.1em; - } - pre code { - padding: 0 2em; - } - p { - margin: 0 0 1.234em; - code { - display: inline; - margin: 0 5px; - padding: 1px 5px; - border: 1px solid #ccc; - background: #eee; - } - a { - color: #01579f; - padding-bottom: 2px; - word-break: break-all; - &:hover { - text-decoration: underline; - } - } - .caption { - color: #444; - display: block; - font-size: 0.9em; - margin-top: 0.1em; - position: relative; - text-align: center; - } - } - hr { - margin: 2.4em auto; - border: none; - border-top: 1px solid #eee; - position: relative; - } - img { - max-width: 100%; - padding: 0.5em 0; - margin: auto; - display: block; - } - ul, ol { - border-radius: 3px; - margin: 1em 0; - ul { - margin: 0; - } - a { - color: #01579f; - padding-bottom: 2px; - word-break: break-all; - &:hover { - text-decoration: underline; - } - } - } - } - .tags { - padding-bottom: 1em; - a { - margin-right: .5em; - &:before { - content: '#'; - display: inline-block; - } - } - } + padding: 25px 0 15px; + .post-title { + margin: 0; + color: #555; + text-align: left; + font: bold 25px/1.1 "ff-tisa-web-pro", Cambria, "Times New Roman", Georgia, Times, sans-serif; + a { + color: #555; + } + } + .post-meta { + padding: 0; + margin: 12px 0 0; + color: #999; + float: left; + display: inline; + text-indent: .15em; + } + .ds-thread-count { + padding: 0; + margin: 12px 0 0; + color: #999; + float: right; + display: inline; + text-indent: .15em; + } + .disqus-comment-count { + padding: 0; + margin: 12px 0 0; + color: #999; + float: right; + display: inline; + text-indent: .15em; + } + .post-content { + clear: left; + font-size: 15px; + line-height: 1.77; + color: #444; + padding-top: 20px; + text-align: justify; + h2 { + margin: 1.4em 0 1.1em; + border-bottom: 1px solid #eee; + } + h3 { + margin: 1.4em 0 1.1em; + } + pre code { + padding: 0 2em; + } + p { + margin: 0 0 1.234em; + code { + display: inline; + margin: 0 5px; + padding: 1px 5px; + border: 1px solid #ccc; + background: #eee; + } + a { + color: #01579f; + padding-bottom: 2px; + word-break: break-all; + &:hover { + text-decoration: underline; + } + } + .caption { + color: #444; + display: block; + font-size: 0.9em; + margin-top: 0.1em; + position: relative; + text-align: center; + } + } + hr { + margin: 2.4em auto; + border: none; + border-top: 1px solid #eee; + position: relative; + } + img { + max-width: 100%; + padding: 0.5em 0; + margin: auto; + display: block; + } + ul, ol { + border-radius: 3px; + margin: 1em 0; + ul { + margin: 0; + } + a { + color: #01579f; + padding-bottom: 2px; + word-break: break-all; + &:hover { + text-decoration: underline; + } + } + } + } + .tags { + padding-bottom: 1em; + a { + margin-right: .5em; + &:before { + content: '#'; + display: inline-block; + } + } + } } .page-navigator { - border-top: 1px solid #ddd; - list-style: none; - margin-top: 25px; - padding: 25px 0; - font-size: 14px; - a { - display: inline-block; - height: 25px; - line-height: 25px; - padding: 5px 20px; - border: 1px solid #DDD; - float: left; - &.pre { - float: left; - } - &.next { - float: right; - } - &:hover { - border-color: #999; - } - } + border-top: 1px solid #ddd; + list-style: none; + margin-top: 25px; + padding: 25px 0; + font-size: 14px; + a { + display: inline-block; + height: 25px; + line-height: 25px; + padding: 5px 20px; + border: 1px solid #DDD; + float: left; + &.pre { + float: left; + } + &.next { + float: right; + } + &:hover { + border-color: #999; + } + } } #footer { - padding: .8em 0 3.6em; - margin-top:1em; - line-height: 1.5; - color: #999; - span { - font-size: .9em; - } + padding: .8em 0 3.6em; + margin-top:1em; + line-height: 1.5; + color: #999; + span { + font-size: .9em; + } } /* for different pages starts*/ .post-archive { - font-size: 15px; - line-height: 2; - padding-bottom: .8em; - h2{ - margin: 0; - font: bold 25px / 1.1 "ff-tisa-web-pro", Cambria, "Times New Roman", Georgia, Times, sans-serif; - } - .date { - padding-right: .7em; - } + font-size: 15px; + line-height: 2; + padding-bottom: .8em; + h2{ + margin: 0; + font: bold 25px / 1.1 "ff-tisa-web-pro", Cambria, "Times New Roman", Georgia, Times, sans-serif; + } + .date { + padding-right: .7em; + } } #categories { - padding: 0; - margin: 0; + padding: 0; + margin: 0; - .category{ - margin: 10px 0 20px 0; - text-align: center; - a { - text-align: left; - display: inline-block; - border: 1px solid #ddd; - padding: 20px 40px; - min-width: 100px; - h3 { - margin: 0; - } - &:hover { - border-color: #888; - } - } - } + .category{ + margin: 10px 0 20px 0; + text-align: center; + a { + text-align: left; + display: inline-block; + border: 1px solid #ddd; + padding: 20px 40px; + min-width: 100px; + h3 { + margin: 0; + } + &:hover { + border-color: #888; + } + } + } } /* for different pages ends*/ /* Date: Thu, 31 Dec 2015 15:21:23 +0800 Subject: [PATCH 110/118] fix issue #33 --- layout/base.jade | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/layout/base.jade b/layout/base.jade index 36d58f5fa..eacdd440d 100644 --- a/layout/base.jade +++ b/layout/base.jade @@ -5,12 +5,13 @@ if page.title else - var current_title = config.title -case config.feed.type - when "rss2" - - var feed_type='application/rss+xml' - when "atom" - default - - var feed_type='application/atom+xml' +if config.feed + case config.feed.type + when "rss2" + - var feed_type='application/rss+xml' + when "atom" + default + - var feed_type='application/atom+xml' doctype html html(lang='#{config.language}') From a12e028fe4ebb4d01404c8106850dac087d51d55 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Fri, 8 Jan 2016 14:47:47 +0800 Subject: [PATCH 111/118] highlight css updated --- source/css/style.scss | 121 ++++++++++++++++++++++++++++++------------ 1 file changed, 88 insertions(+), 33 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index dbadcc9b8..f44ce042b 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -811,6 +811,9 @@ figure.highlight { // ApacheConf &.apacheconf .code { .common, + .nomarkup, + .attribute, + .variable, .cbracket, .keyword { color: #0086b3; @@ -818,6 +821,7 @@ figure.highlight { .sqbracket { color: #df5000; } + .section, .tag { color: #63a35c; } @@ -853,7 +857,8 @@ figure.highlight { color: #1d3e81; } .subst, - .regexp { + .regexp, + .attribute { color: #df5000; } } @@ -863,6 +868,9 @@ figure.highlight { .preprocessor { color: #df5000; } + .meta-keyword { + color: #a71d5d; + } .title { color: #795da3; } @@ -884,14 +892,16 @@ figure.highlight { .built_in { color: #0086b3; } - .xmlDocTag { + .xmlDocTag, + .doctag { color: #63a35c; } } // CSS &.css .code { .at_rule, - .important { + .important, + .meta { color: #a71d5d; } .attribute, @@ -906,16 +916,19 @@ figure.highlight { } .id, .class, - .pseudo { + .pseudo, + .selector-pseudo { color: #795da3; } - .tag { + .tag, + .selector-tag { color: #63a35c; } } // Diff &.diff .code { - .chunk { + .chunk, + .meta { color: #795da3; font-weight: bold; } @@ -930,8 +943,11 @@ figure.highlight { } // HTTP &.http .code { - .literal, - .attribute { + .attribute, + .attr { + color: #df5000; + } + .literal { color: #0086b3; } .request { @@ -940,10 +956,12 @@ figure.highlight { } // INI &.ini .code { - .title { + .title, + .section { color: #795da3; } - .setting { + .setting, + .attr { color: #a71d5d; } .value, @@ -959,6 +977,8 @@ figure.highlight { .javadoc { color: #969896; } + .meta, + .annotation, .javadoctag { color: #a71d5d; } @@ -971,6 +991,7 @@ figure.highlight { } // JavaScript &.js .code { + .built_in, .title { color: #795da3; } @@ -987,7 +1008,6 @@ figure.highlight { .regexp { color: #df5000; } - .built_in, .literal, .number { color: #0086b3; @@ -998,7 +1018,8 @@ figure.highlight { .attribute { color: #df5000; } - .number { + .number, + .literal { color: #0086b3; } } @@ -1007,13 +1028,11 @@ figure.highlight { .constant { color: #333; } - .variable { - color: #df5000; - } .title { color: #795da3; } - .keyword { + .keyword, + .meta-keyword { color: #0086b3; } } @@ -1023,27 +1042,32 @@ figure.highlight { .link_label, .strong, .emphasis, - .blockquote { + .blockquote, + .quote, + .section { color: #df5000; } .link_reference, + .symbol, .code { color: #0086b3; } - .link_url { + .link_url, + .link { text-decoration: underline; } } // Nginx &.nginx .code { - .title { + .title, + .attribute { color: #a71d5d; } - .built_in { + .built_in, + .literal { color: #0086b3; } - .regexp, - .number { + .regexp { color: #df5000; } .variable { @@ -1052,13 +1076,17 @@ figure.highlight { } // Objective-C &.objectivec .code { - .preprocessor { + .preprocessor, + .meta { color: #a71d5d; .title { color: #df5000; } } + .meta-string { + color: #df5000; + } .title { color: #795da3; } @@ -1073,13 +1101,17 @@ figure.highlight { .sub { color: #795da3; } + .title { + color: #795da3; + } .regexp { color: #df5000; } } // PHP &.php .code { - .phpdoc { + .phpdoc, + .doctag { color: #a71d5d; } .regexp { @@ -1096,7 +1128,8 @@ figure.highlight { // Python &.python .code { .decorator, - .title { + .title, + .meta { color: #795da3; } .number { @@ -1134,10 +1167,12 @@ figure.highlight { .value { color: #df5000; } - .attribute { + .attribute, + .attr { color: #795da3; } - .title { + .title, + .name { color: #63a35c; } } @@ -1149,6 +1184,12 @@ figure.highlight { .function { color: #0086b3; } + .name { + color: #a71d5d; + } + .attr { + color: #0086b3; + } } // LESS &.less { @@ -1167,7 +1208,10 @@ figure.highlight { } .id, .pseudo, - .class { + .class, + .selector-id, + .selector-class, + .selector-tag { color: #795da3; } } @@ -1178,7 +1222,6 @@ figure.highlight { .important { color: #a71d5d; } - .preprocessor, .number, .hexcolor, .function, @@ -1193,16 +1236,24 @@ figure.highlight { } .id, .pseudo, - .class { + .class, + .preprocessor, + .selector-class, + .selector-id { color: #795da3; } + .tag, + .selector-tag { + color: #63a35c; + } } // Stylus &.stylus { .at_rule { color: #a71d5d; } - .tag { + .tag, + .selector-tag { color: #63a35c; } .number, @@ -1214,7 +1265,10 @@ figure.highlight { .class, .id, .pseudo, - .title { + .title, + .selector-id, + .selector-pseudo, + .selector-class { color: #795da3; } } @@ -1237,7 +1291,8 @@ figure.highlight { color: #795da3; } .built_in, - .number { + .number, + .type { color: #0086b3; } } From 52d249ae7f352d438ece52eb83284e996a2e22a6 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Tue, 12 Jan 2016 22:01:53 +0800 Subject: [PATCH 112/118] highlight css updated --- source/css/style.scss | 59 +++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index f44ce042b..530eee24e 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -725,26 +725,23 @@ div { /* syntax highlight*/ figure.highlight { - background: #fff; - margin: 10px 0; - border-radius: 3px; - line-height: 1.2em; - color: #333; - border: 1px solid #d9d9d9; - overflow: hidden; + background: #f7f8f8; + margin: 10px 0; + line-height: 1.2em; + color: #333; + padding-top: 15px; + overflow: hidden; table { - margin: 0; display: block; width: 100%; - overflow-y: hidden; - overflow-x: auto; } // Reset for tag `pre` and for class `.gutter`, `.code`, `.tag` pre, .gutter, .code, .tag { + background-color: inherit; font-family: Menlo; border: none; padding: 0; @@ -752,24 +749,30 @@ figure.highlight { // To override cursor attribute of `.tag` components cursor: text; } + // hide gutter when code is plain text + &.plain { + .gutter { + display:none; + } + } // Meta bar which contains name of the file and his link figcaption { font-size: 13px; - padding: 10px 15px; + padding: 0 15px 20px; margin: 0; - background: #f7f7f7; - border-bottom: 1px solid #d9d9d9; + background: #f7f8f8; color: #999999; a { float: right; + color: #349ef3; } } // Gutter which contains line numbers .gutter { - background: #fff; - border-right: 1px solid #d9d9d9; - padding: 0.3em 0.5em; + background: #f7f8f8; + border-right: 1px solid #e6e6e6; + padding: 0.3em 15px; .line { color: #aaaaaa; @@ -777,7 +780,13 @@ figure.highlight { } // Code container .code { - padding: 0.3em 0.3em 0.3em 1em; + padding: 0.3em 15px 0.3em 1em; + width: 100%; + + pre { + max-width: 700px; + overflow-x: auto; + } } // All lines in gutter and code container .line { @@ -803,7 +812,7 @@ figure.highlight { color: #969896; } .string { - color: #df5000; + color: #183691; } .keyword { color: #a71d5d; @@ -945,7 +954,7 @@ figure.highlight { &.http .code { .attribute, .attr { - color: #df5000; + color: #183691; } .literal { color: #0086b3; @@ -1016,7 +1025,7 @@ figure.highlight { // JSON &.json .code { .attribute { - color: #df5000; + color: #183691; } .number, .literal { @@ -1045,7 +1054,7 @@ figure.highlight { .blockquote, .quote, .section { - color: #df5000; + color: #183691; } .link_reference, .symbol, @@ -1068,7 +1077,7 @@ figure.highlight { color: #0086b3; } .regexp { - color: #df5000; + color: #183691; } .variable { color: #333; @@ -1085,7 +1094,7 @@ figure.highlight { } } .meta-string { - color: #df5000; + color: #183691; } .title { color: #795da3; @@ -1165,7 +1174,7 @@ figure.highlight { color: #333; } .value { - color: #df5000; + color: #183691; } .attribute, .attr { @@ -1407,7 +1416,7 @@ i { /* table*/ table { - margin: auto auto 1.234em; + margin: auto auto 15px; width: 100%; background: transparent; border-collapse: collapse; From 4a0264a1c88eed8f359dca49d27aaebb1777aff4 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Wed, 13 Jan 2016 22:58:25 +0800 Subject: [PATCH 113/118] css updated --- source/css/style.scss | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 530eee24e..6a920053d 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -216,6 +216,8 @@ a:focus{ color: #444; padding-top: 20px; text-align: justify; + text-justify: distribute; + word-break: break-all; h2 { margin: 1.4em 0 1.1em; border-bottom: 1px solid #eee; @@ -246,9 +248,9 @@ a:focus{ .caption { color: #444; display: block; - font-size: 0.9em; - margin-top: 0.1em; - position: relative; + font-size: 0.9em; + margin-top: 0.1em; + position: relative; text-align: center; } } @@ -270,6 +272,13 @@ a:focus{ ul { margin: 0; } + code { + display: inline; + margin: 0 5px; + padding: 1px 5px; + border: 1px solid #ccc; + background: #eee; + } a { color: #01579f; padding-bottom: 2px; From 608297f4195bc7200c427a43dc3ea4e13c102795 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Thu, 14 Jan 2016 10:16:17 +0800 Subject: [PATCH 114/118] a bug fixed --- layout/_partial/after_footer.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/_partial/after_footer.jade b/layout/_partial/after_footer.jade index b08342c7c..7b2c3dfc8 100644 --- a/layout/_partial/after_footer.jade +++ b/layout/_partial/after_footer.jade @@ -8,7 +8,7 @@ if theme.duoshuo (function() { var ds = document.createElement('script'); ds.type = 'text/javascript';ds.async = true; - ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//dn-comment.qbox.me/embed.js'; + ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js'; ds.charset = 'UTF-8'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds); From 3751a8da5d9da2b3502f93c13bf61b45ea893502 Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sat, 23 Jan 2016 21:13:50 +0800 Subject: [PATCH 115/118] README updated --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a65e91ba2..fe750a8ff 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ links: - tinysou - [Tiny Search](http://tinysou.com) key - google_analytics - [Google Analytics](https://www.google.com/analytics/) tracking id - baidu_analytics - [Baidu Analytics](http://tongji.baidu.com) tracking id -- menu - Customize your menu of pages here, just follow the format of existied items. [IcoMoon](https://icomoon.io) icon fonts have been integrated, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs) +- menu - Customize your menu of pages here, just follow the format of existied items. Don't forget to create corresponding folders inlcuding `index.md` in `source` folder to ensure the pages will correctly display. [IcoMoon](https://icomoon.io) icon fonts have been integrated, and you can choose other icons you like [here](https://icomoon.io/app/#/select) and use them according to the [instruction](https://icomoon.io/#docs) - widgets - Choose and arrange the widgets in sidebar here - links - Edit your blogroll here From 2c4a3b13943e6873dcd72c8fffd7d2ee9b6cfa1c Mon Sep 17 00:00:00 2001 From: tufu9441 Date: Sun, 24 Jan 2016 15:16:58 +0800 Subject: [PATCH 116/118] Codeblocks resize on mobile devices --- layout/_partial/after_footer.jade | 2 ++ source/js/codeblock-resizer.js | 47 +++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 source/js/codeblock-resizer.js diff --git a/layout/_partial/after_footer.jade b/layout/_partial/after_footer.jade index 7b2c3dfc8..83421cc0d 100644 --- a/layout/_partial/after_footer.jade +++ b/layout/_partial/after_footer.jade @@ -1,3 +1,5 @@ +!= js(url_for('js/codeblock-resizer.js')) + if theme.fancybox != js([url_for('js/fancybox.pack.js'), url_for('js/jquery.fancybox.js')]) != css(url_for('css/jquery.fancybox.css')) diff --git a/source/js/codeblock-resizer.js b/source/js/codeblock-resizer.js new file mode 100644 index 000000000..7558e79ed --- /dev/null +++ b/source/js/codeblock-resizer.js @@ -0,0 +1,47 @@ ++function($) { + 'use strict'; + + // Resize codeblocks to fit the screen width + + var CodeBlockResizer = function(elem) { + this.$codeBlocks = $(elem); + }; + + CodeBlockResizer.prototype = { + /** + * Run main feature + */ + run: function() { + var self = this; + // resize all codeblocks + self.resize(); + // resize codeblocks when window is resized + $(window).smartresize(function() { + self.resize(); + }); + }, + + /** + * Resize codeblocks + */ + resize: function() { + var self = this; + self.$codeBlocks.each(function() { + var $gutter = $(this).find('.gutter'); + var $code = $(this).find('.code'); + // get padding of code div + var codePaddings = $code.width() - $code.innerWidth(); + // codeblock div width with padding - gutter div with padding + code div padding + var width = $(this).outerWidth() - $gutter.outerWidth() + codePaddings; + // apply new width + $code.css('width', width); + $code.children('pre').css('width', width); + }); + } + }; + + $(document).ready(function() { + var resizer = new CodeBlockResizer('figure.highlight'); + resizer.run(); + }); +}(jQuery); From 471fbef078c8fe8a13cf4bb5a231c54e81d59170 Mon Sep 17 00:00:00 2001 From: Mekhi Li Date: Sun, 24 Jan 2016 18:07:19 +0800 Subject: [PATCH 117/118] Codeblocks resize on mobile devices Codeblocks resize on mobile devices --- source/css/style.scss | 120 +++++++++++++++++++----------------------- 1 file changed, 55 insertions(+), 65 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 6a920053d..59139e34f 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -734,74 +734,64 @@ div { /* syntax highlight*/ figure.highlight { - background: #f7f8f8; - margin: 10px 0; - line-height: 1.2em; - color: #333; - padding-top: 15px; - overflow: hidden; - - table { - display: block; - width: 100%; - } - // Reset for tag `pre` and for class `.gutter`, `.code`, `.tag` - pre, - .gutter, - .code, - .tag { - background-color: inherit; - font-family: Menlo; - border: none; - padding: 0; - margin: 0; - // To override cursor attribute of `.tag` components - cursor: text; - } - // hide gutter when code is plain text - &.plain { - .gutter { - display:none; - } - } - // Meta bar which contains name of the file and his link - figcaption { - font-size: 13px; - padding: 0 15px 20px; - margin: 0; - background: #f7f8f8; - color: #999999; + background: #f7f8f8; + margin: 10px 0; + border-radius: 3px; + line-height: 1.2em; + color: #333; + border: 1px solid #d9d9d9; + overflow: hidden; +} - a { - float: right; - color: #349ef3; - } - } - // Gutter which contains line numbers - .gutter { - background: #f7f8f8; - border-right: 1px solid #e6e6e6; - padding: 0.3em 15px; +figure.highlight table { + margin: 0; + display: block; + width: 100%; + overflow-y: hidden; + overflow-x: auto; +} - .line { - color: #aaaaaa; - } - } - // Code container - .code { - padding: 0.3em 15px 0.3em 1em; - width: 100%; +figure.highlight pre, +figure.highlight .gutter, +figure.highlight .code, +figure.highlight .tag { + font-family: Menlo; + border: none; + padding: 0; + margin: 0; + cursor: text; +} - pre { - max-width: 700px; - overflow-x: auto; - } - } - // All lines in gutter and code container - .line { - height: 1.2em; - font-size: 13px; - } +figure.highlight figcaption { + font-size: 13px; + padding: 10px 15px; + margin: 0; + background: #f7f7f7; + border-bottom: 1px solid #d9d9d9; + color: #999999; +} + +figure.highlight figcaption a { + float: right; +} + +figure.highlight .gutter { + background: #fff; + border-right: 1px solid #d9d9d9; + padding: 0.3em 0.5em; +} + + figure.highlight .gutter .line { + color: #aaaaaa; +} + + figure.highlight .code { + padding: 0.3em 0.3em 0.3em 1em; +} + +figure.highlight .line { + height: 1.2em; + font-size: 13px; } // Gist From 1a8aaeba545bb39729b23406ff26b1b0bf96d49d Mon Sep 17 00:00:00 2001 From: Mekhi Li Date: Sun, 24 Jan 2016 18:24:02 +0800 Subject: [PATCH 118/118] Codeblocks self-adaption on mobile devices Codeblocks self-adaption on mobile devices --- source/css/style.scss | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/css/style.scss b/source/css/style.scss index 59139e34f..8cdbc0c8e 100644 --- a/source/css/style.scss +++ b/source/css/style.scss @@ -736,10 +736,8 @@ div { figure.highlight { background: #f7f8f8; margin: 10px 0; - border-radius: 3px; line-height: 1.2em; color: #333; - border: 1px solid #d9d9d9; overflow: hidden; }