├── .gitignore ├── docs ├── fonts │ └── theserif │ │ ├── theSerif-bold.ttf │ │ └── theSerif-black.eot ├── favicon.ico ├── robots.txt ├── contributions.png ├── default-thumb.jpg ├── favicon-16x16.png ├── favicon-32x32.png ├── apple-touch-icon.png ├── mstile-150x150.png ├── maks-dancing-short.gif ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── processing-on-pi-website.jpg ├── browserconfig.xml ├── page │ └── 1 │ │ └── index.html ├── post │ └── page │ │ └── 1 │ │ └── index.html ├── tags │ ├── shortcodes │ │ ├── page │ │ │ └── 1 │ │ │ │ └── index.html │ │ └── index.html │ ├── index.xml │ └── index.html ├── categories │ ├── shortcodes │ │ └── page │ │ │ └── 1 │ │ │ └── index.html │ ├── index.xml │ └── index.html ├── manifest.json ├── safari-pinned-tab.svg ├── dist │ ├── gsoc-theme.min.js │ └── processing-theme.min.js ├── sitemap.xml ├── img │ └── spinner.svg ├── sitemap.xsl ├── result │ └── index.html ├── process │ └── index.html ├── 404.html └── lib │ └── lazyload │ └── lazyload.min.js ├── themes └── gsoc │ ├── static │ ├── fonts │ │ └── theserif │ │ │ ├── theSerif-bold.ttf │ │ │ └── theSerif-black.eot │ ├── favicon.ico │ ├── default-thumb.jpg │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── mstile-150x150.png │ ├── apple-touch-icon.png │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── browserconfig.xml │ ├── manifest.json │ ├── safari-pinned-tab.svg │ ├── dist │ │ ├── gsoc-theme.min.js │ │ └── processing-theme.min.js │ ├── img │ │ └── spinner.svg │ ├── sitemap.xsl │ └── lib │ │ └── lazyload │ │ └── lazyload.min.js │ ├── .gitignore │ ├── layouts │ ├── _default │ │ ├── single.md │ │ ├── single.html │ │ ├── terms.html │ │ ├── taxonomy.html │ │ ├── baseof.html │ │ └── section.html │ ├── shortcodes │ │ ├── row.html │ │ ├── left.html │ │ ├── muted.html │ │ ├── center.html │ │ ├── right.html │ │ ├── columns.html │ │ ├── button.html │ │ ├── message.html │ │ ├── panel.html │ │ ├── tip.html │ │ ├── warning.html │ │ ├── alert.html │ │ ├── imgproc.html │ │ └── figure.html │ ├── robots.txt │ ├── partials │ │ ├── toc.html │ │ ├── header.html │ │ ├── scripts.html │ │ ├── social.html │ │ ├── slideout.html │ │ ├── comments.html │ │ ├── footer.html │ │ ├── post │ │ │ └── copyright.html │ │ └── head.html │ ├── sitemap.xml │ ├── 404.html │ ├── tutorial │ │ ├── single.html │ │ ├── summary.html │ │ └── section.html │ ├── post │ │ ├── summary.html │ │ └── single.html │ └── index.html │ ├── src │ ├── .babelrc │ ├── js │ │ ├── lib │ │ │ └── math.js │ │ └── gsoc-theme.js │ ├── sass │ │ ├── _mixins.scss │ │ ├── mixins │ │ │ ├── _labels.scss │ │ │ ├── _fonts.scss │ │ │ ├── _buttons.scss │ │ │ ├── _breakpoints.scss │ │ │ ├── _gradients.scss │ │ │ ├── _grid.scss │ │ │ ├── _flex.scss │ │ │ └── _utils.scss │ │ ├── components │ │ │ ├── _footer.scss │ │ │ ├── _figure.scss │ │ │ ├── _offcanvas.scss │ │ │ ├── _print.scss │ │ │ ├── _reset.scss │ │ │ ├── _breadcrumbs.scss │ │ │ ├── _post.scss │ │ │ ├── _tabs.scss │ │ │ ├── _modal.scss │ │ │ ├── _dropdown.scss │ │ │ ├── _colors.scss │ │ │ ├── _grid.scss │ │ │ ├── _positioning.scss │ │ │ ├── _tutorial-list.scss │ │ │ ├── _tables.scss │ │ │ ├── _labels.scss │ │ │ ├── _messages.scss │ │ │ ├── _code.scss │ │ │ ├── _pagination.scss │ │ │ ├── _utils.scss │ │ │ ├── _navigation.scss │ │ │ ├── _sizing.scss │ │ │ ├── _animation.scss │ │ │ ├── _buttons.scss │ │ │ ├── _icons.scss │ │ │ └── _layout.scss │ │ ├── gsoc-theme.scss │ │ └── _components.scss │ ├── package.json │ └── gulpfile.js │ ├── CHANGELOG.md │ ├── images │ ├── tn.png │ ├── showcase.png │ └── screenshot.png │ ├── exampleSite │ ├── content │ │ ├── post │ │ │ ├── hidden-post.md │ │ │ ├── theme-preview.md │ │ │ └── shortcodes.md │ │ └── about.md │ └── config.toml │ ├── archetypes │ └── default.md │ ├── LICENSE.md │ ├── theme.toml │ ├── i18n │ ├── zh-CN.yaml │ ├── en.yaml │ ├── es.yaml │ └── fr.yaml │ └── README.md ├── content ├── contributions.png ├── maks-dancing-short.gif ├── processing-on-pi-website.jpg ├── result.md ├── process.md ├── post │ └── hidden-post.md └── context.md ├── archetypes ├── default-original.md └── default.md ├── README.md └── config.toml /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea -------------------------------------------------------------------------------- /docs/fonts/theserif/theSerif-bold.ttf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/gsoc/static/fonts/theserif/theSerif-bold.ttf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/gsoc/.gitignore: -------------------------------------------------------------------------------- 1 | /src/node_modules/ 2 | /.idea/ 3 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/_default/single.md: -------------------------------------------------------------------------------- 1 | {{ .RawContent }} -------------------------------------------------------------------------------- /themes/gsoc/src/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env"] 4 | ] 5 | } -------------------------------------------------------------------------------- /themes/gsoc/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 0.0.1 4 | 5 | - Initial release 6 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/row.html: -------------------------------------------------------------------------------- 1 |
2 | {{.Inner}} 3 |
-------------------------------------------------------------------------------- /themes/gsoc/layouts/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Sitemap: {{ "sitemap.xml" | absURL }} 3 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/left.html: -------------------------------------------------------------------------------- 1 |
2 | {{ .Inner }} 3 |
-------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/muted.html: -------------------------------------------------------------------------------- 1 |
2 | {{.Inner}} 3 |
4 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/center.html: -------------------------------------------------------------------------------- 1 |
2 | {{ .Inner }} 3 |
-------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/right.html: -------------------------------------------------------------------------------- 1 |
2 | {{ .Inner }} 3 |
-------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/favicon.ico -------------------------------------------------------------------------------- /docs/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Sitemap: https://msurguy.github.io/GSOC2018-processing-pi/sitemap.xml 3 | -------------------------------------------------------------------------------- /docs/contributions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/contributions.png -------------------------------------------------------------------------------- /docs/default-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/default-thumb.jpg -------------------------------------------------------------------------------- /docs/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/favicon-16x16.png -------------------------------------------------------------------------------- /docs/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/favicon-32x32.png -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/columns.html: -------------------------------------------------------------------------------- 1 |
2 | {{ .Inner }} 3 |
4 | -------------------------------------------------------------------------------- /content/contributions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/content/contributions.png -------------------------------------------------------------------------------- /docs/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/apple-touch-icon.png -------------------------------------------------------------------------------- /docs/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/mstile-150x150.png -------------------------------------------------------------------------------- /themes/gsoc/images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/images/tn.png -------------------------------------------------------------------------------- /docs/maks-dancing-short.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/maks-dancing-short.gif -------------------------------------------------------------------------------- /content/maks-dancing-short.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/content/maks-dancing-short.gif -------------------------------------------------------------------------------- /themes/gsoc/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/static/favicon.ico -------------------------------------------------------------------------------- /docs/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/android-chrome-192x192.png -------------------------------------------------------------------------------- /docs/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/android-chrome-512x512.png -------------------------------------------------------------------------------- /themes/gsoc/images/showcase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/images/showcase.png -------------------------------------------------------------------------------- /archetypes/default-original.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /docs/processing-on-pi-website.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/processing-on-pi-website.jpg -------------------------------------------------------------------------------- /themes/gsoc/images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/images/screenshot.png -------------------------------------------------------------------------------- /themes/gsoc/src/js/lib/math.js: -------------------------------------------------------------------------------- 1 | // lib/math.js 2 | export function sum(x, y) { 3 | return x + y; 4 | } 5 | 6 | export var pi = 3.141593; -------------------------------------------------------------------------------- /content/processing-on-pi-website.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/content/processing-on-pi-website.jpg -------------------------------------------------------------------------------- /themes/gsoc/static/default-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/static/default-thumb.jpg -------------------------------------------------------------------------------- /themes/gsoc/static/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/static/favicon-16x16.png -------------------------------------------------------------------------------- /themes/gsoc/static/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/static/favicon-32x32.png -------------------------------------------------------------------------------- /themes/gsoc/static/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/static/mstile-150x150.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Redirect 2 | 3 | Please see https://msurguy.github.io/GSOC2018-processing-pi/ to read the final report for my Google Summer of Code 2018 -------------------------------------------------------------------------------- /docs/fonts/theserif/theSerif-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/docs/fonts/theserif/theSerif-black.eot -------------------------------------------------------------------------------- /themes/gsoc/static/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/static/apple-touch-icon.png -------------------------------------------------------------------------------- /themes/gsoc/static/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/static/android-chrome-192x192.png -------------------------------------------------------------------------------- /themes/gsoc/static/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/static/android-chrome-512x512.png -------------------------------------------------------------------------------- /content/result.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Results" 3 | date: 2018-08-13T21:38:52+08:00 4 | lastmod: 2018-08-13T21:41:52+08:00 5 | menu: "sidebar" 6 | weight: 15 7 | --- -------------------------------------------------------------------------------- /themes/gsoc/static/fonts/theserif/theSerif-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/GSOC2018-processing-pi/master/themes/gsoc/static/fonts/theserif/theSerif-black.eot -------------------------------------------------------------------------------- /themes/gsoc/layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ define "content" -}} 2 |
3 |
4 | {{ .Content }} 5 |
6 |
7 | {{- end }} -------------------------------------------------------------------------------- /content/process.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Process" 3 | date: 2018-08-13T21:38:52+08:00 4 | lastmod: 2018-08-13T21:41:52+08:00 5 | menu: "sidebar" 6 | weight: 10 7 | --- 8 | 9 | # What process looked like -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/button.html: -------------------------------------------------------------------------------- 1 |

{{ if .Get "text"}} {{ .Get "text"}} {{ end }}

2 | 3 | 4 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/_mixins.scss: -------------------------------------------------------------------------------- 1 | @import "mixins/breakpoints"; 2 | @import "mixins/fonts"; 3 | @import "mixins/flex"; 4 | @import "mixins/grid"; 5 | @import "mixins/buttons"; 6 | @import "mixins/labels"; 7 | @import "mixins/gradients"; 8 | @import "mixins/utils"; -------------------------------------------------------------------------------- /themes/gsoc/src/sass/mixins/_labels.scss: -------------------------------------------------------------------------------- 1 | @mixin label($text, $back) { 2 | background: $back; 3 | color: $text; 4 | 5 | &.tag, 6 | &.outline { 7 | background: none; 8 | border-color: $back; 9 | color: $back; 10 | } 11 | } -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_footer.scss: -------------------------------------------------------------------------------- 1 | .footer { 2 | line-height: 24px; 3 | color: #959595; 4 | border-top: 1px solid #CCC; 5 | 6 | a { 7 | text-decoration: none; 8 | font-weight: normal; 9 | color: #959595; 10 | border-bottom: 1px solid #CECECE; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /docs/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #b91d47 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/gsoc-theme.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Based on Kube CSS & JS Framework (https://github.com/imperavi/kube) 3 | */ 4 | 5 | // Font family: theSerif 6 | @import url('https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700'); 7 | 8 | @import "variables"; 9 | @import "mixins"; 10 | @import "components"; -------------------------------------------------------------------------------- /themes/gsoc/static/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #b91d47 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /content/post/hidden-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "This is a hidden post." 3 | date: 2018-03-08T17:40:19+08:00 4 | lastmod: 2018-03-08T22:01:19+08:00 5 | draft: true 6 | 7 | hiddenFromHomePage: true 8 | --- 9 | 10 | This post is hidden from the home page. 11 | 12 | 13 | 14 | But you can see it in archives, rss or other pages. -------------------------------------------------------------------------------- /themes/gsoc/exampleSite/content/post/hidden-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "This is a hidden post." 3 | date: 2018-03-08T17:40:19+08:00 4 | lastmod: 2018-03-08T22:01:19+08:00 5 | draft: false 6 | 7 | hiddenFromHomePage: true 8 | --- 9 | 10 | This post is hidden from the home page. 11 | 12 | 13 | 14 | But you can see it in archives, rss or other pages. -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/message.html: -------------------------------------------------------------------------------- 1 | {{ if .IsNamedParams }} 2 |
3 | {{ if .Get "title" }} 4 |
5 | {{ .Get "title" }} 6 |
7 | {{ end }} 8 | {{ .Inner }} 9 |
10 | {{ else }} 11 |
12 | {{ .Inner }} 13 |
14 | {{ end }} -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/panel.html: -------------------------------------------------------------------------------- 1 |
2 | {{ with .Get "header" }}
{{ htmlUnescape . | markdownify}}
{{end}} 3 |
{{.Inner}}
4 | {{ with .Get "footer" }}{{end}} 5 |
6 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/tip.html: -------------------------------------------------------------------------------- 1 | 2 | {{if .Get "title" }} 3 |
4 | {{ with .Get "title" }}
{{htmlUnescape .}}
{{end}} 5 |
{{.Inner}}
6 |
7 | {{else}} 8 | 9 | {{end}} 10 | 11 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/warning.html: -------------------------------------------------------------------------------- 1 | 2 | {{if .Get "title" }} 3 |
4 | {{ with .Get "title" }}
{{htmlUnescape .}}
{{end}} 5 |
{{.Inner}}
6 |
7 | {{else}} 8 | 9 | {{end}} 10 | 11 | -------------------------------------------------------------------------------- /docs/page/1/index.html: -------------------------------------------------------------------------------- 1 | https://msurguy.github.io/GSOC2018-processing-pi/ -------------------------------------------------------------------------------- /docs/post/page/1/index.html: -------------------------------------------------------------------------------- 1 | https://msurguy.github.io/GSOC2018-processing-pi/post/ -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_figure.scss: -------------------------------------------------------------------------------- 1 | figure { 2 | &.center { 3 | text-align: center; 4 | } 5 | 6 | &.right { 7 | text-align: right; 8 | } 9 | 10 | &.left { 11 | text-align: left; 12 | } 13 | 14 | img { 15 | display: block; 16 | border: 0; 17 | } 18 | 19 | &.border { 20 | img { 21 | border-top: 3px #CCC solid; 22 | border-bottom: 3px #CCC solid; 23 | } 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /docs/tags/shortcodes/page/1/index.html: -------------------------------------------------------------------------------- 1 | https://msurguy.github.io/GSOC2018-processing-pi/tags/shortcodes/ -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/alert.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | {{ if .IsNamedParams }} 11 | {{.Get "title"}} 12 | {{ end }} 13 | 14 | {{ .Inner }} 15 |
16 | -------------------------------------------------------------------------------- /docs/categories/shortcodes/page/1/index.html: -------------------------------------------------------------------------------- 1 | https://msurguy.github.io/GSOC2018-processing-pi/categories/shortcodes/ -------------------------------------------------------------------------------- /docs/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "icons": [ 4 | { 5 | "src": "/android-chrome-192x192.png", 6 | "sizes": "192x192", 7 | "type": "image/png" 8 | }, 9 | { 10 | "src": "/android-chrome-512x512.png", 11 | "sizes": "512x512", 12 | "type": "image/png" 13 | } 14 | ], 15 | "theme_color": "#ffffff", 16 | "background_color": "#ffffff", 17 | "display": "standalone" 18 | } -------------------------------------------------------------------------------- /themes/gsoc/layouts/partials/toc.html: -------------------------------------------------------------------------------- 1 | {{ if or .Params.toc (and .Site.Params.toc (ne .Params.toc false)) }} 2 |
3 |

{{ T "toc" }}

4 | {{ $globalAutoCollapseToc := .Site.Params.autoCollapseToc | default false }} 5 |
6 | {{.TableOfContents}} 7 |
8 |
9 | {{- end }} -------------------------------------------------------------------------------- /themes/gsoc/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "icons": [ 4 | { 5 | "src": "/android-chrome-192x192.png", 6 | "sizes": "192x192", 7 | "type": "image/png" 8 | }, 9 | { 10 | "src": "/android-chrome-512x512.png", 11 | "sizes": "512x512", 12 | "type": "image/png" 13 | } 14 | ], 15 | "theme_color": "#ffffff", 16 | "background_color": "#ffffff", 17 | "display": "standalone" 18 | } -------------------------------------------------------------------------------- /themes/gsoc/layouts/partials/header.html: -------------------------------------------------------------------------------- 1 |
2 | 9 |
10 | 11 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/mixins/_fonts.scss: -------------------------------------------------------------------------------- 1 | // Text 2 | @mixin text-font($font) { 3 | body { 4 | font-family: #{$font}; 5 | } 6 | } 7 | 8 | // Headings 9 | @mixin headings-font($font) { 10 | h1.title, h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { 11 | font-family: #{$font}; 12 | } 13 | } 14 | 15 | // Buttons 16 | @mixin buttons-font($font) { 17 | button, .button { 18 | font-family: #{$font}; 19 | } 20 | } 21 | 22 | // Inputs 23 | @mixin inputs-font($font) { 24 | input, textarea, select { 25 | font-family: #{$font}; 26 | } 27 | } -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_offcanvas.scss: -------------------------------------------------------------------------------- 1 | .offcanvas { 2 | background: #fff; 3 | position: fixed; 4 | padding: $base-line; 5 | height: 100%; 6 | top: 0; 7 | left: 0; 8 | z-index: $z-over-page; 9 | overflow-y: scroll; 10 | } 11 | .offcanvas .close { 12 | position: absolute; 13 | top: 8px; 14 | right: 8px; 15 | } 16 | .offcanvas-left { 17 | border-right: 1px solid rgba(0, 0, 0, .1); 18 | } 19 | .offcanvas-right { 20 | left: auto; 21 | right: 0; 22 | border-left: 1px solid rgba(0, 0, 0, .1); 23 | } 24 | .offcanvas-push-body { 25 | position: relative; 26 | } -------------------------------------------------------------------------------- /themes/gsoc/exampleSite/content/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "About" 3 | date: 2017-08-20T21:38:52+08:00 4 | lastmod: 2017-08-28T21:41:52+08:00 5 | menu: "main" 6 | weight: 50 7 | 8 | --- 9 | 10 | Hugo is a static site engine written in Go. 11 | 12 | 13 | It makes use of a variety of open source projects including: 14 | 15 | * [Cobra](https://github.com/spf13/cobra) 16 | * [Viper](https://github.com/spf13/viper) 17 | * [J Walter Weatherman](https://github.com/spf13/jWalterWeatherman) 18 | * [Cast](https://github.com/spf13/cast) 19 | 20 | Learn more and contribute on [GitHub](https://github.com/gohugoio). 21 | 22 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/sitemap.xml: -------------------------------------------------------------------------------- 1 | {{ "" | safeHTML }} 2 | 3 | {{ range .Data.Pages }} 4 | 5 | {{ .Permalink }}{{ if not .Lastmod.IsZero }} 6 | {{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}{{ end }}{{ with .Sitemap.ChangeFreq }} 7 | {{ . }}{{ end }}{{ if ge .Sitemap.Priority 0.0 }} 8 | {{ .Sitemap.Priority }}{{ end }} 9 | 10 | {{ end }} 11 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/partials/scripts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {{- if .Site.GoogleAnalytics -}} 10 | {{ template "_internal/google_analytics_async.html" . }} 11 | {{- end -}} 12 | 13 | 14 | {{ range .Site.Params.customJS }} 15 | 16 | {{ end }} 17 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/partials/social.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .TranslationBaseName "-" " " | title }}" 3 | date: {{ .Date }} 4 | lastmod: {{ .Date }} 5 | draft: true 6 | keywords: [] 7 | description: "" 8 | tags: [] 9 | categories: [] 10 | author: "" 11 | 12 | # You can also close(false) or open(true) something for this content. 13 | # P.S. comment can only be closed 14 | comment: false 15 | toc: false 16 | autoCollapseToc: false 17 | postMetaInFooter: false 18 | hiddenFromHomePage: false 19 | # You can also define another contentCopyright. e.g. contentCopyright: "This is another copyright." 20 | contentCopyright: false 21 | 22 | # You unlisted posts you might want not want the header or footer to show 23 | hideHeaderAndFooter: false 24 | 25 | --- 26 | 27 | 28 | -------------------------------------------------------------------------------- /themes/gsoc/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .TranslationBaseName "-" " " | title }}" 3 | date: {{ .Date }} 4 | lastmod: {{ .Date }} 5 | draft: true 6 | keywords: [] 7 | description: "" 8 | tags: [] 9 | categories: [] 10 | author: "" 11 | 12 | # You can also close(false) or open(true) something for this content. 13 | # P.S. comment can only be closed 14 | comment: false 15 | toc: false 16 | autoCollapseToc: false 17 | postMetaInFooter: false 18 | hiddenFromHomePage: false 19 | # You can also define another contentCopyright. e.g. contentCopyright: "This is another copyright." 20 | contentCopyright: false 21 | 22 | # You unlisted posts you might want not want the header or footer to show 23 | hideHeaderAndFooter: false 24 | --- 25 | 26 | 27 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_print.scss: -------------------------------------------------------------------------------- 1 | @media print { 2 | 3 | * { 4 | background: transparent !important; 5 | color: black !important; 6 | box-shadow: none !important; 7 | text-shadow: none !important; 8 | } 9 | 10 | a, 11 | a:visited { 12 | text-decoration: underline; 13 | } 14 | 15 | pre, blockquote { 16 | border: 1px solid #999; 17 | page-break-inside: avoid; 18 | } 19 | 20 | p, h2, h3 { 21 | orphans: 3; 22 | widows: 3; 23 | } 24 | 25 | thead { display: table-header-group; } 26 | tr, img { page-break-inside: avoid; } 27 | img { max-width: 100% !important; } 28 | h2, h3, h4 { page-break-after: avoid; } 29 | @page { margin: 0.5cm; } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/404.html: -------------------------------------------------------------------------------- 1 | {{ define "title" }}404 page not found - {{ .Site.Title }}{{ end }} 2 | 3 | {{ define "content" }} 4 |
5 |

6 |

/* 404 page not found. */

7 | 8 |
9 | 18 | {{ end }} 19 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/partials/slideout.html: -------------------------------------------------------------------------------- 1 |
2 | 11 |
12 | 13 | 14 | 15 |
16 |
17 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/imgproc.html: -------------------------------------------------------------------------------- 1 | {{ $original := .Page.Resources.GetMatch (printf "%s*" (.Get 0)) }} 2 | {{ $command := .Get 1 }} 3 | {{ $options := .Get 2 }} 4 | {{ $caption := .Get 3 }} 5 | {{ if eq $command "Fit"}} 6 | {{ .Scratch.Set "image" ($original.Fit $options) }} 7 | {{ else if eq $command "Resize"}} 8 | {{ .Scratch.Set "image" ($original.Resize $options) }} 9 | {{ else if eq $command "Fill"}} 10 | {{ .Scratch.Set "image" ($original.Fill $options) }} 11 | {{ else }} 12 | {{ errorf "Invalid image processing command: Must be one of Fit, Fill or Resize."}} 13 | {{ end }} 14 | {{ $image := .Scratch.Get "image" }} 15 |
16 | 17 |
18 | {{ $caption }} 19 |
20 |
-------------------------------------------------------------------------------- /themes/gsoc/layouts/tutorial/single.html: -------------------------------------------------------------------------------- 1 | {{ define "content" -}} 2 |
3 |

{{ .Title }}

4 |
5 | Published: {{ .Date.Format (.Site.Params.dateFormatToUse | default "2006-01-02") }} by: {{ if .Params.author }}{{ .Params.author | safeHTML }}{{ else }}{{ .Site.Author.name | safeHTML }}{{ end }} 6 | {{ with .Params.tags -}} 7 | 12 | 13 |
14 | {{- end }} 15 | 16 |
17 | {{ .Content }} 18 |
19 |
20 | {{- end }} 21 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/mixins/_buttons.scss: -------------------------------------------------------------------------------- 1 | @mixin button($color-text, $color-back) 2 | { 3 | color: $color-text; 4 | background-color: $color-back; 5 | 6 | &:hover { 7 | color: $color-text; 8 | background-color: lighten($color-back, 20%); 9 | } 10 | &:disabled, 11 | &.disabled { 12 | color: rgba($color-text, .7); 13 | background-color: rgba($color-back, .7); 14 | } 15 | &.outline { 16 | background: none; 17 | color: $color-back; 18 | border-color: $color-back; 19 | 20 | &:hover { 21 | color: rgba($color-back, .6); 22 | border-color: rgba($color-back, .5); 23 | } 24 | &:disabled, 25 | &.disabled { 26 | background: none; 27 | color: rgba($color-back, .7); 28 | border-color: rgba($color-back, .5); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /themes/gsoc/src/sass/mixins/_breakpoints.scss: -------------------------------------------------------------------------------- 1 | @mixin breakpoint($min: 0, $max: 0) { 2 | 3 | $type: type-of($min); 4 | 5 | @if $type == string 6 | { 7 | @if $min == sm 8 | { 9 | @media (max-width: $sm) { @content; } 10 | } 11 | @else if $min == md 12 | { 13 | @media (min-width: $sm) and (max-width: $md) { @content; } 14 | } 15 | @else if $min == lg 16 | { 17 | @media (min-width: $lg) { @content; } 18 | } 19 | } 20 | @else if $type == number 21 | { 22 | $query: "all" !default; 23 | @if $min != 0 and $max != 0 { $query: "(min-width: #{$min}) and (max-width: #{$max})"; } 24 | @else if $min != 0 and $max == 0 { $query: "(min-width: #{$min})"; } 25 | @else if $min == 0 and $max != 0 { $query: "(max-width: #{$max})"; } 26 | @media #{$query} { @content; } 27 | } 28 | } -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_reset.scss: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | } 4 | *, 5 | *:before, 6 | *:after { 7 | box-sizing: inherit; 8 | } 9 | * { 10 | margin: 0; 11 | padding: 0; 12 | outline: 0; 13 | -webkit-overflow-scrolling: touch; 14 | } 15 | img, 16 | video, 17 | audio { 18 | max-width: 100%; 19 | } 20 | img, 21 | video { 22 | height: auto; 23 | } 24 | svg { 25 | max-height: 100%; 26 | } 27 | iframe { 28 | border: none; 29 | } 30 | ::-moz-focus-inner { 31 | border: 0; 32 | padding: 0; 33 | } 34 | input[type="radio"], 35 | input[type="checkbox"] { 36 | vertical-align: middle; 37 | position: relative; 38 | bottom: 0.15rem; 39 | font-size: 115%; 40 | margin-right: 3px; 41 | } 42 | input[type="search"] { 43 | -webkit-appearance: textfield; 44 | } 45 | input[type="search"]::-webkit-search-decoration, 46 | input[type="search"]::-webkit-search-cancel-button { 47 | -webkit-appearance: none; 48 | } -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_breadcrumbs.scss: -------------------------------------------------------------------------------- 1 | .breadcrumbs { 2 | font-size: $font-size-small; 3 | margin-bottom: $base-line; 4 | 5 | & ul { 6 | @include flex; 7 | @include flex-items-middle; 8 | } 9 | &.push-center ul { 10 | @include flex-items-center; 11 | } 12 | & span, 13 | & a { 14 | font-style: normal; 15 | padding: 0 10px; 16 | display: inline-block; 17 | white-space: nowrap; 18 | } 19 | & li { 20 | &:after { 21 | display: inline-block; 22 | content: '/'; 23 | color: rgba(0, 0, 0, .3); 24 | } 25 | &:last-child:after { 26 | display: none; 27 | } 28 | &:first-child span, 29 | &:first-child a { 30 | padding-left: 0; 31 | } 32 | &.active a { 33 | color: $color-text; 34 | text-decoration: none; 35 | cursor: text; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/partials/comments.html: -------------------------------------------------------------------------------- 1 | {{ if and .IsPage (ne .Params.comment false) }} 2 | 3 | {{- if .Site.DisqusShortname -}} 4 |
5 | 17 | 18 | {{- end -}} 19 | 20 | 21 | {{- end }} 22 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/_components.scss: -------------------------------------------------------------------------------- 1 | // Core 2 | @import "components/reset"; 3 | @import "components/colors"; 4 | @import "components/typography"; 5 | @import "components/grid"; 6 | @import "components/layout"; 7 | @import "components/tables"; 8 | //@import "components/forms"; 9 | @import "components/buttons"; 10 | @import "components/labels"; 11 | @import "components/breadcrumbs"; 12 | @import "components/pagination"; 13 | @import "components/icons"; 14 | @import "components/positioning"; 15 | @import "components/sizing"; 16 | @import "components/utils"; 17 | @import "components/print"; 18 | @import "components/navigation"; 19 | @import "components/post"; 20 | @import "components/figure"; 21 | @import "components/code"; 22 | @import "components/footer"; 23 | 24 | // Plugins 25 | @import "components/animation"; 26 | //@import "components/dropdown"; 27 | @import "components/messages"; 28 | //@import "components/modal"; 29 | @import "components/offcanvas"; 30 | @import "components/tabs"; 31 | @import "components/tutorial-list"; 32 | 33 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_post.scss: -------------------------------------------------------------------------------- 1 | .post { 2 | max-width: 740px; 3 | 4 | img { 5 | max-width: 100%; 6 | height: auto; 7 | display: inline-block; 8 | vertical-align: middle; 9 | } 10 | 11 | .post-meta { 12 | margin-bottom: 20px; 13 | margin-top: 10px; 14 | } 15 | 16 | .post-tags { 17 | a { 18 | margin-right: 5px; 19 | //color: $theme-color; 20 | word-break: break-all; 21 | 22 | span::before { 23 | content: '#'; 24 | } 25 | } 26 | } 27 | } 28 | 29 | .post-content { 30 | 31 | //> table { 32 | // max-width: 100%; 33 | // margin: 10px 0; 34 | // border-spacing: 0; 35 | // box-shadow: 2px 2px 3px rgba(0,0,0,.125); 36 | // 37 | // thead { 38 | // background: $color-aluminum; 39 | // } 40 | // 41 | // th, td { 42 | // padding: 5px 15px; 43 | // border: 1px double $color-darkgray; 44 | // } 45 | // 46 | // tr:hover { 47 | // background-color: $color-aluminum; 48 | // } 49 | //} 50 | 51 | 52 | } 53 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/mixins/_gradients.scss: -------------------------------------------------------------------------------- 1 | // vertical 2 | @mixin gradient-vertical($start: #555, $end: #333) { 3 | background-color: $start; 4 | background-image: linear-gradient(to bottom, $start 0%, $end 100%); 5 | } 6 | 7 | // vertical to opacity 8 | @mixin gradient-vertical-to-opacity($color, $opacity: 0) { 9 | $rgba: rgba(red($color), green($color), blue($color), $opacity); 10 | background: linear-gradient(to bottom, $color 0%, $rgba 100%); 11 | } 12 | 13 | // horizontal 14 | @mixin gradient-horizontal($start: #555, $end: #333) { 15 | background-color: $start; 16 | background: linear-gradient(to right, $start 0%, $end 100%); 17 | } 18 | 19 | // horizontal to opacity 20 | @mixin gradient-horizontal-to-opacity($color: #555, $opacity: 0) { 21 | $rgba: rgba(red($color), green($color), blue($color), $opacity); 22 | background: linear-gradient(to right, $color 0%, $rgba 100%); 23 | } 24 | 25 | // radial 26 | @mixin gradient-radial($inner: #555, $outer: #333) { 27 | background-image: radial-gradient(circle, $inner, $outer); 28 | } -------------------------------------------------------------------------------- /themes/gsoc/layouts/partials/footer.html: -------------------------------------------------------------------------------- 1 | 14 | 15 | -------------------------------------------------------------------------------- /themes/gsoc/src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "processing-theme", 3 | "version": "1.0.0", 4 | "description": "A super concise theme for Hugo", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "browserslist": "last 4 versions, ie 10", 10 | "author": "", 11 | "license": "ISC", 12 | "devDependencies": { 13 | "babel-cli": "^6.26.0", 14 | "babel-core": "^6.26.3", 15 | "babel-preset-env": "^1.7.0", 16 | "babel-preset-es2015": "^6.24.1", 17 | "babelify": "^8.0.0", 18 | "browserify": "^16.2.2", 19 | "gulp": "^3.9.1", 20 | "gulp-babel": "^7.0.1", 21 | "gulp-clean-css": "^3.9.4", 22 | "gulp-concat": "^2.6.1", 23 | "gulp-rename": "^1.2.3", 24 | "gulp-sass": "^4.0.1", 25 | "gulp-sourcemaps": "^2.6.4", 26 | "gulp-uglify": "^3.0.0", 27 | "gulplog": "^1.0.0", 28 | "vinyl-buffer": "^1.0.1", 29 | "vinyl-source-stream": "^2.0.0", 30 | "webpack-stream": "^4.0.3" 31 | }, 32 | "dependencies": { 33 | "highlightjs-line-numbers.js": "^2.3.0" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /docs/categories/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Categories on Google Summer of Code 2018 submission 5 | https://msurguy.github.io/GSOC2018-processing-pi/categories/ 6 | Recent content in Categories on Google Summer of Code 2018 submission 7 | Hugo -- gohugo.io 8 | en 9 | Maksim Surguy 10 | 11 | 12 | 13 | 14 | 15 | Shortcodes 16 | https://msurguy.github.io/GSOC2018-processing-pi/categories/shortcodes/ 17 | Tue, 30 Aug 2016 16:01:23 +0800 18 | 19 | https://msurguy.github.io/GSOC2018-processing-pi/categories/shortcodes/ 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/tutorial/summary.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{ .Title }}

4 | 18 |
19 | 20 |
21 |
22 | {{ .Summary }} 23 |
24 |
25 | {{ T "readMore" }} 26 |
27 |
28 |
29 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/post/summary.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{ .Title }}

4 | 18 |
19 | 20 |
21 |
22 | {{ .Summary }} 23 |
24 |
25 | {{ T "readMore" }} 26 |
27 |
28 |
29 | -------------------------------------------------------------------------------- /docs/tags/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Tags on Google Summer of Code 2018 submission 5 | https://msurguy.github.io/GSOC2018-processing-pi/tags/ 6 | Recent content in Tags on Google Summer of Code 2018 submission 7 | Hugo -- gohugo.io 8 | en 9 | Maksim Surguy 10 | Tue, 30 Aug 2016 16:01:23 +0800 11 | 12 | 13 | 14 | 15 | 16 | Shortcodes 17 | https://msurguy.github.io/GSOC2018-processing-pi/tags/shortcodes/ 18 | Tue, 30 Aug 2016 16:01:23 +0800 19 | 20 | https://msurguy.github.io/GSOC2018-processing-pi/tags/shortcodes/ 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_tabs.scss: -------------------------------------------------------------------------------- 1 | .tabs { 2 | margin-bottom: $base-line; 3 | font-size: $font-size-small; 4 | 5 | & li em, 6 | & li.active a { 7 | color: $color-text; 8 | border: 1px solid rgba(0, 0, 0, .1); 9 | cursor: default; 10 | text-decoration: none; 11 | background: none; 12 | } 13 | & em, 14 | & a { 15 | position: relative; 16 | top: 1px; 17 | font-style: normal; 18 | display: block; 19 | padding: .5rem 1rem; 20 | border: 1px solid transparent; 21 | color: rgba(0, 0, 0, .5); 22 | text-decoration: none; 23 | } 24 | & a:hover { 25 | @include transition; 26 | color: $color-text; 27 | text-decoration: underline; 28 | background-color: $color-silver; 29 | } 30 | } 31 | 32 | @include breakpoint($min: $sm) { 33 | .tabs { 34 | & ul { 35 | @include flex; 36 | 37 | margin-top: -1px; 38 | border-bottom: 1px solid rgba(0, 0, 0, .1); 39 | } 40 | & li em, 41 | & li.active a { 42 | border-bottom: 1px solid #fff; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_modal.scss: -------------------------------------------------------------------------------- 1 | .modal-box { 2 | position: fixed; 3 | top: 0; 4 | left: 0; 5 | bottom: 0; 6 | right: 0; 7 | overflow-x: hidden; 8 | overflow-y: auto; 9 | z-index: $z-over-control; 10 | } 11 | .modal { 12 | position: relative; 13 | margin: auto; 14 | margin-top: 16px; 15 | padding: 0; 16 | background: #fff; 17 | box-shadow: 0 10px 25px rgba(0, 0, 0, .15); 18 | border-radius: 8px; 19 | color: #000; 20 | 21 | & input, 22 | & textarea { 23 | @media (max-width: $sm) { 24 | font-size: 16px; 25 | } 26 | } 27 | & .close { 28 | position: absolute; 29 | top: 18px; 30 | right: 16px; 31 | opacity: .3; 32 | &:hover { 33 | opacity: 1; 34 | } 35 | } 36 | } 37 | .modal-header { 38 | padding: 24px 32px; 39 | font-size: 18px; 40 | font-weight: bold; 41 | border-bottom: 1px solid rgba(0, 0, 0, .05); 42 | &:empty { 43 | display: none; 44 | } 45 | } 46 | .modal-body { 47 | padding: 36px 56px; 48 | } 49 | 50 | 51 | 52 | // Responsive 53 | @media (max-width: $sm) { 54 | .modal-header, 55 | .modal-body { 56 | padding: 24px; 57 | } 58 | } -------------------------------------------------------------------------------- /themes/gsoc/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Maksim Surguy 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ define "content" }} 2 | {{.Content}} 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | {{ end }} -------------------------------------------------------------------------------- /themes/gsoc/layouts/tutorial/section.html: -------------------------------------------------------------------------------- 1 | {{ define "title" }}{{ T "archive" }} - {{ .Site.Title }}{{ end }} 2 | 3 | {{ define "content"}} 4 | 5 |

Tutorials

6 | 7 |
8 | {{ range .Data.Pages.ByWeight }} 9 |
10 |
11 | 12 | 13 | {{ if isset .Params "thumbnail" }} 14 | 15 | {{ else }} 16 | 17 | {{ end }} 18 |
19 |

20 | {{ if isset .Params "description" }} 21 | {{.Params.description}} 22 | {{ end }}

23 |
24 |
25 | 26 |
27 |

{{.Title}}

28 | 29 |

30 | {{ if isset .Params "author" }} 31 | by: {{.Params.Author}} 32 | {{ else }} 33 |   34 | {{ end }} 35 |

36 |
37 |
38 | {{ end }} 39 | 40 | 41 |
42 | 43 | {{ end }} -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_dropdown.scss: -------------------------------------------------------------------------------- 1 | .dropdown { 2 | position: absolute; 3 | z-index: $z-over-content; 4 | top: 0; 5 | right: 0; 6 | width: 280px; 7 | color: #000; 8 | font-size: $font-size - 1px; 9 | background: #fff; 10 | box-shadow: 0 10px 25px rgba(0, 0, 0, .15); 11 | border-radius: 3px; 12 | max-height: 300px; 13 | margin: 0; 14 | padding: 0; 15 | overflow: hidden; 16 | 17 | &.dropdown-mobile { 18 | position: fixed; 19 | top: 0; 20 | left: 0; 21 | right: 0; 22 | bottom: 0; 23 | width: 100%; 24 | max-height: none; 25 | border: none; 26 | } 27 | & .close { 28 | margin: 20px auto; 29 | } 30 | &.open { 31 | overflow: auto; 32 | } 33 | & ul { 34 | 35 | list-style: none; 36 | margin: 0; 37 | 38 | & li { 39 | border-bottom: 1px solid rgba(0, 0, 0, .07); 40 | &:last-child { 41 | border-bottom: none; 42 | } 43 | } 44 | & a { 45 | display: block; 46 | padding: 12px; 47 | text-decoration: none; 48 | color: #000; 49 | &:hover { 50 | background: rgba(0, 0, 0, .05); 51 | } 52 | 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_colors.scss: -------------------------------------------------------------------------------- 1 | // Text Colors 2 | .black { color: $color-black; } 3 | .inverted { color: $color-inverted; } 4 | .error { color: $color-error; } 5 | .success { color: $color-success; } 6 | .warning { color: $color-warning; } 7 | .focus { color: $color-focus; } 8 | .aluminum { color: $color-aluminum; } 9 | .silver { color: $color-silver; } 10 | .lightgray { color: $color-lightgray; } 11 | .gray { color: $color-gray; } 12 | .midgray { color: $color-midgray; } 13 | .darkgray { color: $color-darkgray; } 14 | 15 | // Background Colors 16 | .bg-black { background-color: $color-black; } 17 | .bg-inverted { background-color: $color-inverted; } 18 | .bg-error { background-color: $color-error; } 19 | .bg-success { background-color: $color-success; } 20 | .bg-warning { background-color: $color-warning; } 21 | .bg-focus { background-color: $color-focus; } 22 | .bg-aluminum { background-color: $color-aluminum; } 23 | .bg-silver { background-color: $color-silver; } 24 | .bg-lightgray { background-color: $color-lightgray; } 25 | .bg-gray { background-color: $color-gray; } 26 | .bg-midgray { background-color: $color-midgray; } 27 | .bg-darkgray { background-color: $color-darkgray; } 28 | .bg-highlight { background-color: $color-highlight; } -------------------------------------------------------------------------------- /themes/gsoc/theme.toml: -------------------------------------------------------------------------------- 1 | # theme.toml template for a Hugo theme 2 | # See https://github.com/gohugoio/hugoThemes#themetoml for an example 3 | 4 | name = "GSOC" 5 | license = "MIT" 6 | licenselink = "https://github.com/msurguy/hugo-theme-processing/blob/master/LICENSE.md" 7 | description = "A minimal website theme for Hugo" 8 | homepage = "https://github.com/msurguy/hugo-theme-processing" 9 | tags = ["responsive", "blog", "simple", "clean", "highlight.js", "syntax highlighting"] 10 | features = ["responsive", "blog", "simple", "clean", "highlight.js", "syntax highlighting"] 11 | min_version = "0.35" 12 | 13 | [author] 14 | name = "msurguy" 15 | homepage = "https://github.com/msurguy" 16 | 17 | [imaging] 18 | # Default resample filter used for resizing. Default is Box, 19 | # a simple and fast averaging filter appropriate for downscaling. 20 | # See https://github.com/disintegration/imaging 21 | resampleFilter = "box" 22 | 23 | # Defatult JPEG quality setting. Default is 75. 24 | quality = 90 25 | 26 | # Anchor used when cropping pictures. 27 | # Default is "smart" which does Smart Cropping, using https://github.com/muesli/smartcrop 28 | # Smart Cropping is content aware and tries to find the best crop for each image. 29 | # Valid values are Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight 30 | anchor = "smart" -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_grid.scss: -------------------------------------------------------------------------------- 1 | // Grid Row 2 | .row { 3 | @include grid-row; 4 | 5 | // Gutters 6 | &.gutters, 7 | &.gutters > .row { 8 | margin-left: -$grid-gutter; 9 | 10 | @include breakpoint(sm) { 11 | margin-left: 0; 12 | } 13 | 14 | & > .col { 15 | margin-left: $grid-gutter; 16 | 17 | @include breakpoint(sm) { 18 | margin-left: 0; 19 | } 20 | } 21 | } 22 | &.around { 23 | @include flex-items-space-around; 24 | } 25 | &.between { 26 | @include flex-items-space-between; 27 | } 28 | &.auto { 29 | & .col { 30 | @include flex-item-grow(1); 31 | } 32 | } 33 | } 34 | 35 | // Grid Columns 36 | @include generate-grid-columns; 37 | 38 | // Offset 39 | [class^='offset-'], 40 | [class*=' offset-'] { 41 | @include breakpoint(sm) { 42 | margin-left: 0; 43 | } 44 | } 45 | 46 | // Ordering 47 | .first { order: -1; } 48 | .last { order: 1; } 49 | 50 | @include breakpoint(sm) { 51 | .row { 52 | 53 | & .col { 54 | margin-left: 0; 55 | width: 100%; 56 | } 57 | &.gutters { 58 | & .col { 59 | margin-bottom: $text-margin-bottom; 60 | } 61 | } 62 | } 63 | .first-sm { order: -1; } 64 | .last-sm { order: 1; } 65 | } -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_positioning.scss: -------------------------------------------------------------------------------- 1 | // Push 2 | .gutters .column.push-left, 3 | .push-left { margin-right: auto; } 4 | 5 | .gutters .column.push-right, 6 | .push-right { margin-left: auto; } 7 | 8 | .gutters .column.push-center, 9 | .push-center { margin-left: auto; margin-right: auto; } 10 | 11 | .gutters .column.push-middle, 12 | .push-middle { margin-top: auto; margin-bottom: auto; } 13 | 14 | .push-bottom { margin-top: auto; } 15 | 16 | @include breakpoint(sm) { 17 | 18 | .gutters .column.push-left-sm, 19 | .push-left-sm { margin-left: 0; } 20 | 21 | .gutters .column.push-center-sm, 22 | .push-center-sm { margin-left: auto; margin-right: auto;} 23 | 24 | .push-top-sm { margin-top: 0; } 25 | 26 | } 27 | 28 | // Flex Alignment 29 | .align-middle { 30 | @include flex-items-middle; 31 | } 32 | .align-right { 33 | @include flex-items-right; 34 | } 35 | .align-center { 36 | @include flex-items-center; 37 | } 38 | 39 | @include breakpoint(sm) { 40 | .align-left-sm { @include flex-items-left; } 41 | } 42 | 43 | // Float 44 | .float-right { 45 | float: right; 46 | } 47 | .float-left { 48 | float: left; 49 | } 50 | @include breakpoint(sm) { 51 | .float-right { float: none; } 52 | .float-left { float: none; } 53 | } 54 | 55 | // Fixed 56 | .fixed { 57 | position: fixed; 58 | top: 0; 59 | left: 0; 60 | z-index: $z-over-content; 61 | width: 100%; 62 | } -------------------------------------------------------------------------------- /docs/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /themes/gsoc/static/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | 10 | 12 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_tutorial-list.scss: -------------------------------------------------------------------------------- 1 | .tutorial-list { 2 | margin-bottom: 40px; 3 | } 4 | 5 | .tutorial-item { 6 | position: relative; 7 | overflow: hidden; 8 | margin-bottom: 20px; 9 | 10 | // The cover image is 16x9 ratio 11 | .cover { 12 | position: relative; 13 | height: 0; 14 | padding-top: 56.25%; 15 | overflow: hidden; 16 | 17 | img { 18 | width: 100%; 19 | position: absolute; 20 | top: 0; 21 | left: 0; 22 | } 23 | 24 | &:hover .meta-overlay{ 25 | opacity: 1; 26 | } 27 | 28 | .meta-overlay { 29 | position: absolute; 30 | top: 0; 31 | left: 0; 32 | width: 100%; 33 | height: 100%; 34 | padding: 15px 15px 0 15px; 35 | color: white; 36 | opacity: 0; 37 | transition: opacity 0.15s ease; 38 | background: rgba(50,51,59,0.95); 39 | } 40 | } 41 | 42 | .cover-link { 43 | position: absolute; 44 | top: 0; 45 | right: 0; 46 | left: 0; 47 | bottom: 0; 48 | border: 0 !important; 49 | z-index: 1; 50 | text-decoration: none; 51 | } 52 | 53 | .meta { 54 | background-color: #313131; 55 | position: relative; 56 | white-space: nowrap; 57 | padding: 1em 1em .8em; 58 | z-index: 3; 59 | 60 | h2 { 61 | color: #FFF; 62 | text-transform: uppercase; 63 | margin: 0; 64 | } 65 | 66 | p { 67 | color: #FFF; 68 | margin: 0; 69 | } 70 | } 71 | 72 | 73 | 74 | } -------------------------------------------------------------------------------- /themes/gsoc/layouts/partials/post/copyright.html: -------------------------------------------------------------------------------- 1 | {{ if or .Params.postMetaInFooter (and .Site.Params.postMetaInFooter (ne .Params.postMetaInFooter false)) -}} 2 |
3 | 7 | 11 | {{ if $.Site.Params.linkToMarkDown -}} 12 | {{ with $.OutputFormats.Get "markdown" -}} 13 | 17 | {{- end }} 18 | {{- end }} 19 | {{ if or .Params.contentCopyright (and .Site.Params.contentCopyright (ne .Params.contentCopyright false)) -}} 20 | 30 | {{- end }} 31 |
32 | {{- end }} -------------------------------------------------------------------------------- /themes/gsoc/layouts/_default/terms.html: -------------------------------------------------------------------------------- 1 | {{ define "title" }}{{ T .Data.Plural }} - {{ .Site.Title }}{{ end }} 2 | 3 | {{ define "content" }} 4 | {{ $name := .Data.Plural -}} 5 | {{ $terms := .Data.Terms.ByCount -}} 6 | {{ $length := len $terms -}} 7 | {{ if eq $name "categories" }} 8 |
9 |
10 | {{ if eq $length 0 }} 11 | {{ T "zeroCategoryCounter" }} 12 | {{ else }} 13 | {{ T "categoryCounter" $length }} 14 | {{ end }} 15 |
16 |
17 | {{ range $key, $value := $terms }} 18 | 19 | {{ $value.Term }} 20 | {{ len $value.Pages }} 21 | 22 | {{ end }} 23 |
24 |
25 | {{ else if eq $name "tags" }} 26 |
27 |
28 | {{ if eq $length 0 }} 29 | {{ T "zeroTagCounter" }} 30 | {{ else }} 31 | {{ T "tagCounter" $length }} 32 | {{ end }} 33 |
34 |
35 | {{ range $key, $value := $terms }} 36 | 37 | {{ $value.Term }} 38 | {{ len $value.Pages }} 39 | 40 | {{ end }} 41 |
42 |
43 | {{ end }} 44 | {{ end }} -------------------------------------------------------------------------------- /themes/gsoc/layouts/_default/taxonomy.html: -------------------------------------------------------------------------------- 1 | {{ define "title" }}{{ .Title }} · {{ .Site.Title }}{{ end }} 2 | 3 | {{ define "content"}} 4 | {{ $paginator := .Paginate (where .Data.Pages.ByDate.Reverse "Type" "post") .Site.Params.archivePaginate }} 5 |
6 | {{ if not $paginator.HasPrev }} 7 | {{ if eq .Data.Plural "tags" }} 8 |
9 |

{{ .Title }}

10 |
11 | {{ else if eq .Data.Plural "categories" }} 12 |
13 |

{{ .Title }}

14 |
15 | {{ end }} 16 | {{ end }} 17 | 18 | {{ range $paginator.Pages }} 19 |
20 | 21 | {{ .Date.Format (.Site.Params.dateFormatToUse | default "2006-01-02") }} 22 | 23 | 24 | 25 | {{ .Title }} 26 | 27 | 28 |
29 | {{ end }} 30 |
31 | 32 | 46 | {{ end }} -------------------------------------------------------------------------------- /themes/gsoc/i18n/zh-CN.yaml: -------------------------------------------------------------------------------- 1 | # ===== title ===== 2 | archive: 3 | other: "归档" 4 | 5 | tags: 6 | other: "标签" 7 | 8 | categories: 9 | other: "分类" 10 | 11 | # ===== footer ===== 12 | powered: 13 | other: "由 %s 强力驱动" 14 | 15 | theme: 16 | other: "主题" 17 | 18 | siteUV: 19 | other: "本站总访客数 %s 人" 20 | 21 | sitePV: 22 | other: "本站总访问量 %s 次" 23 | 24 | pagePV: 25 | other: "%s 次阅读" 26 | 27 | # ===== post ===== 28 | prevPage: 29 | other: "上一页" 30 | 31 | nextPage: 32 | other: "下一页" 33 | 34 | prevPost: 35 | other: "上一篇" 36 | 37 | nextPost: 38 | other: "下一篇" 39 | 40 | toc: 41 | other: "文章目录" 42 | 43 | readMore: 44 | other: "阅读更多" 45 | 46 | reward: 47 | other: "赞赏支持" 48 | 49 | rewardAlipay: 50 | other: "支付宝打赏" 51 | 52 | rewardWechat: 53 | other: "微信打赏" 54 | 55 | wordCount: 56 | one: "约 {{ .Count }} 字" 57 | other: "约 {{ .Count }} 字" 58 | 59 | readingTime: 60 | one: "预计阅读 {{ .Count }} 分钟" 61 | other: "预计阅读 {{ .Count }} 分钟" 62 | 63 | # ===== content license ===== 64 | author: 65 | other: "文章作者" 66 | 67 | lastMod: 68 | other: "上次更新" 69 | 70 | markdown: 71 | other: "原始文档" 72 | 73 | seeMarkDown: 74 | other: "查看本文 Markdown 版本 »" 75 | 76 | license: 77 | other: "许可协议" 78 | 79 | # ===== counter ===== 80 | archiveCounter: 81 | one: "共计 {{ .Count }} 篇文章" 82 | other: "共计 {{ .Count }} 篇文章" 83 | 84 | tagCounter: 85 | one: "共计 {{ .Count }} 个标签" 86 | other: "共计 {{ .Count }} 个标签" 87 | 88 | zeroTagCounter: 89 | other: "暂无标签" 90 | 91 | categoryCounter: 92 | one: "共计 {{ .Count }} 个分类" 93 | other: "共计 {{ .Count }} 个分类" 94 | 95 | zeroCategoryCounter: 96 | other: "暂无分类" 97 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {{- block "title" . -}} 8 | {{ if .IsPage }}{{ .Title }} - {{ .Site.Title }}{{ else }}{{ .Site.Title }}{{ end }} 9 | {{- end -}} 10 | 11 | {{ partial "head.html" . }} 12 | 13 | 14 | {{ if not .Params.hideHeaderAndFooter -}} 15 | 19 | {{- end }} 20 | 21 |
22 |
23 | {{ block "content" . }}{{ end }} 24 |
25 | 34 | 35 | {{ if or .Params.toc (and .Site.Params.toc (ne .Params.toc false)) }} 36 | 39 | {{- end }} 40 | 41 |
42 | 43 | {{ if not .Params.hideHeaderAndFooter -}} 44 | 49 | {{- end }} 50 | 51 | {{ partial "scripts.html" . }} 52 | 53 | 54 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/mixins/_grid.scss: -------------------------------------------------------------------------------- 1 | // Make Row 2 | @mixin grid-row { 3 | @include flex; 4 | @include flex-items-row; 5 | @include flex-items-wrap; 6 | 7 | @include breakpoint(sm) { 8 | @include flex-items-column; 9 | @include flex-items-nowrap; 10 | } 11 | } 12 | 13 | // Generate Columns 14 | @mixin generate-grid-columns { 15 | 16 | @for $i from 1 through $grid-columns 17 | { 18 | .col-#{$i} { 19 | width: 100% / $grid-columns * $i; 20 | } 21 | .offset-#{$i} { 22 | $width: 100% / $grid-columns * $i; 23 | margin-left: $width; 24 | } 25 | 26 | } 27 | 28 | .gutters { 29 | @for $i from 1 through $grid-columns 30 | { 31 | & > .col-#{$i} { 32 | $width: 100% / $grid-columns * $i; 33 | width: calc(#{$width} - #{$grid-gutter}); 34 | } 35 | & > .offset-#{$i} { 36 | $width: 100% / $grid-columns * $i; 37 | margin-left: calc(#{$width} + #{$grid-gutter}) !important; 38 | } 39 | } 40 | } 41 | } 42 | 43 | 44 | // Grid Media Columns 45 | @mixin grid-media-columns($num) { 46 | 47 | -webkit-column-count: $num; 48 | -moz-column-count: $num; 49 | column-count: $num; 50 | 51 | -webkit-column-gap: $grid-gutter; 52 | -moz-column-gap: $grid-gutter; 53 | column-gap: $grid-gutter; 54 | 55 | & > div { 56 | display: inline-block; 57 | width: 100%; 58 | } 59 | 60 | @include breakpoint(sm) { 61 | -webkit-column-count: 1; 62 | -moz-column-count: 1; 63 | column-count: 1; 64 | } 65 | } -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_tables.scss: -------------------------------------------------------------------------------- 1 | //table { 2 | // border-collapse: collapse; 3 | // border-spacing: 0; 4 | // max-width: 100%; 5 | // width: 100%; 6 | // empty-cells: show; 7 | // font-size: $table-font-size; 8 | // line-height: $table-base-line; 9 | //} 10 | //table caption { 11 | // text-align: left; 12 | // font-size: $font-size-small; 13 | // font-weight: 500; 14 | // color: $color-midgray; 15 | //} 16 | // 17 | //th { 18 | // text-align: left; 19 | // font-weight: 700; 20 | // vertical-align: bottom; 21 | //} 22 | //td { 23 | // vertical-align: top; 24 | //} 25 | //tr.align-middle td, 26 | //td.align-middle { 27 | // vertical-align: middle; 28 | //} 29 | //th, 30 | //td { 31 | // padding: $table-padding-tb $table-padding-rl; 32 | // border-bottom: $table-border; 33 | // &:first-child { 34 | // padding-left: 0; 35 | // } 36 | // &:last-child { 37 | // padding-right: 0; 38 | // } 39 | //} 40 | //tfoot th, 41 | //tfoot td { 42 | // color: rgba($color-text, .5); 43 | //} 44 | // 45 | //// Bordered 46 | //table.bordered { 47 | // 48 | // & td, 49 | // & th { 50 | // border: $table-border; 51 | // } 52 | // 53 | //} 54 | // 55 | //// Striped 56 | //table.striped tr:nth-child(odd) td { 57 | // background: $table-background-striped; 58 | //} 59 | // 60 | //table.bordered, 61 | //table.striped { 62 | // & td, 63 | // & th { 64 | // &:first-child { 65 | // padding-left: $table-padding-rl; 66 | // } 67 | // &:last-child { 68 | // padding-right: $table-padding-rl; 69 | // } 70 | // } 71 | //} 72 | // 73 | //// Unstyled 74 | //table.unstyled { 75 | // & td, 76 | // & th { 77 | // border: none; 78 | // padding: 0; 79 | // } 80 | //} -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_labels.scss: -------------------------------------------------------------------------------- 1 | .label { 2 | display: inline-block; 3 | font-size: 12px; 4 | background: $color-silver; 5 | line-height: 18px; 6 | padding: 0 10px; 7 | font-weight: 500; 8 | color: $color-text; 9 | border: 1px solid transparent; 10 | vertical-align: middle; 11 | text-decoration: none; 12 | border-radius: 4px; 13 | & a, 14 | & a:hover { 15 | color: inherit; 16 | text-decoration: none; 17 | } 18 | } 19 | .label.big { 20 | font-size: $font-size-small; 21 | line-height: 24px; 22 | padding: 0 12px; 23 | } 24 | .label.upper { 25 | text-transform: uppercase; 26 | font-size: 11px; 27 | } 28 | 29 | // Outline 30 | .label.outline { 31 | background: none; 32 | border-color: $color-gray; 33 | } 34 | 35 | // Badges 36 | .label.badge { 37 | text-align: center; 38 | border-radius: 64px; 39 | padding: 0 6px; 40 | &.big { 41 | padding: 0 8px; 42 | } 43 | } 44 | 45 | // Tag 46 | .label.tag { 47 | padding: 0; 48 | background: none; 49 | border: none; 50 | text-transform: uppercase; 51 | font-size: $font-size-smaller - 1px; 52 | &.big { 53 | font-size: $font-size-small - 1px; 54 | } 55 | } 56 | 57 | .label.success { 58 | @include label(#fff, $color-success); 59 | } 60 | .label.error { 61 | @include label(#fff, $color-error); 62 | } 63 | .label.warning { 64 | @include label($color-black, $color-warning); 65 | } 66 | .label.focus { 67 | @include label(#fff, $color-focus); 68 | } 69 | .label.black { 70 | @include label(#fff, $color-black); 71 | } 72 | .label.inverted { 73 | @include label($color-black, $color-inverted); 74 | } -------------------------------------------------------------------------------- /themes/gsoc/i18n/en.yaml: -------------------------------------------------------------------------------- 1 | # ===== title ===== 2 | archive: 3 | other: "Archive" 4 | 5 | tags: 6 | other: "Tags" 7 | 8 | categories: 9 | other: "Categories" 10 | 11 | # ===== footer ===== 12 | powered: 13 | other: "Powered by %s" 14 | 15 | theme: 16 | other: "Theme" 17 | 18 | siteUV: 19 | other: "site uv: %s" 20 | 21 | sitePV: 22 | other: "site pv: %s" 23 | 24 | pagePV: 25 | other: "%s times read" 26 | 27 | # ===== post ===== 28 | prevPage: 29 | other: "Prev" 30 | 31 | nextPage: 32 | other: "Next" 33 | 34 | prevPost: 35 | other: "Prev" 36 | 37 | nextPost: 38 | other: "Next" 39 | 40 | toc: 41 | other: "Contents" 42 | 43 | readMore: 44 | other: "Read more.." 45 | 46 | reward: 47 | other: "Reward" 48 | 49 | rewardAlipay: 50 | other: "alipay" 51 | 52 | rewardWechat: 53 | other: "wechat" 54 | 55 | wordCount: 56 | one: "{{ .Count }} word" 57 | other: "{{ .Count }} words" 58 | 59 | readingTime: 60 | one: "{{ .Count }} min read" 61 | other: "{{ .Count }} mins read" 62 | 63 | # ===== content license ===== 64 | author: 65 | other: "Author" 66 | 67 | lastMod: 68 | other: "LastMod" 69 | 70 | markdown: 71 | other: "Markdown" 72 | 73 | seeMarkDown: 74 | other: "The Markdown version »" 75 | 76 | license: 77 | other: "License" 78 | 79 | # ===== counter ===== 80 | archiveCounter: 81 | one: "{{ .Count }} Post In Total" 82 | other: "{{ .Count }} Posts In Total" 83 | 84 | tagCounter: 85 | one: "{{ .Count }} Tag In Total" 86 | other: "{{ .Count }} Tags In Total" 87 | 88 | zeroTagCounter: 89 | other: "No tags" 90 | 91 | categoryCounter: 92 | one: "{{ .Count }} Category In Total" 93 | other: "{{ .Count }} Categories In Total" 94 | 95 | zeroCategoryCounter: 96 | other: "No categories" 97 | -------------------------------------------------------------------------------- /themes/gsoc/i18n/es.yaml: -------------------------------------------------------------------------------- 1 | # ===== title ===== 2 | archive: 3 | other: "Archivo" 4 | 5 | tags: 6 | other: "Tags" 7 | 8 | categories: 9 | other: "Categorías" 10 | 11 | # ===== footer ===== 12 | powered: 13 | other: "Creado con %s" 14 | 15 | theme: 16 | other: "Tema" 17 | 18 | siteUV: 19 | other: "sitio uv: %s" 20 | 21 | sitePV: 22 | other: "sitio pv: %s" 23 | 24 | pagePV: 25 | other: "%s leido" 26 | 27 | # ===== post ===== 28 | prevPage: 29 | other: "Previo" 30 | 31 | nextPage: 32 | other: "Siguiente" 33 | 34 | prevPost: 35 | other: "Previo" 36 | 37 | nextPost: 38 | other: "Siguiente" 39 | 40 | toc: 41 | other: "Contenidos" 42 | 43 | readMore: 44 | other: "Leer mas.." 45 | 46 | reward: 47 | other: "Reward" 48 | 49 | rewardAlipay: 50 | other: "alipay" 51 | 52 | rewardWechat: 53 | other: "wechat" 54 | 55 | wordCount: 56 | one: "{{ .Count }} palabra" 57 | other: "{{ .Count }} palabras" 58 | 59 | readingTime: 60 | one: "{{ .Count }} min lectura" 61 | other: "{{ .Count }} mins lectura" 62 | 63 | # ===== content license ===== 64 | author: 65 | other: "Autor" 66 | 67 | lastMod: 68 | other: "Ultima modificación" 69 | 70 | markdown: 71 | other: "Markdown" 72 | 73 | seeMarkDown: 74 | other: "Versión Markdown »" 75 | 76 | license: 77 | other: "Licencia" 78 | 79 | # ===== counter ===== 80 | archiveCounter: 81 | one: "{{ .Count }} Post en Total" 82 | other: "{{ .Count }} Posts en Total" 83 | 84 | tagCounter: 85 | one: "{{ .Count }} Tag en Total" 86 | other: "{{ .Count }} Tags en Total" 87 | 88 | zeroTagCounter: 89 | other: "No tags" 90 | 91 | categoryCounter: 92 | one: "{{ .Count }} Categoria en Total" 93 | other: "{{ .Count }} Categorias en Total" 94 | 95 | zeroCategoryCounter: 96 | other: "No categorias" 97 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_messages.scss: -------------------------------------------------------------------------------- 1 | .message { 2 | font-family: $monospace-font-family; 3 | font-size: $font-size-small; 4 | line-height: $base-line-small; 5 | background: $color-message-default; 6 | color: $color-text; 7 | padding: 1rem; 8 | padding-right: 2.5em; 9 | padding-bottom: .75rem; 10 | margin-bottom: $base-line; 11 | position: relative; 12 | border-left: 7px solid darken($color-message-default, 30%); 13 | 14 | p { 15 | margin-bottom: 0; 16 | } 17 | 18 | & a { 19 | color: inherit; 20 | text-decoration: underline; 21 | font-weight: bold; 22 | } 23 | & h2, 24 | & h3, 25 | & h4, 26 | & h5, 27 | & h6 { 28 | color: inherit; 29 | margin-bottom: 0; 30 | } 31 | & .close { 32 | position: absolute; 33 | right: 1rem; 34 | top: 1.1rem; 35 | } 36 | } 37 | .message.error { 38 | background: $color-message-error; 39 | border-color: darken($color-message-error, 15%); 40 | color: darken($color-message-error, 60%); 41 | } 42 | .message.success { 43 | background: $color-message-success; 44 | border-color: darken($color-message-success, 55%); 45 | color: darken($color-message-success, 60%); 46 | } 47 | .message.warning { 48 | background: $color-message-warning; 49 | border-color: darken($color-message-warning, 15%); 50 | color: darken($color-message-warning, 60%); 51 | } 52 | .message.focus { 53 | background: $color-message-focus; 54 | border-color: darken($color-message-focus, 15%); 55 | color: darken($color-message-focus, 60%); 56 | } 57 | .message.black { 58 | background: $color-black; 59 | color: #fff; 60 | } 61 | .message.inverted { 62 | background: $color-inverted; 63 | } -------------------------------------------------------------------------------- /themes/gsoc/i18n/fr.yaml: -------------------------------------------------------------------------------- 1 | # ===== title ===== 2 | archive: 3 | other: "Archive" 4 | 5 | tags: 6 | other: "Tags" 7 | 8 | categories: 9 | other: "Catégories" 10 | 11 | # ===== footer ===== 12 | powered: 13 | other: "Propulsé par %s" 14 | 15 | theme: 16 | other: "Thème" 17 | 18 | siteUV: 19 | other: "site uv: %s" 20 | 21 | sitePV: 22 | other: "site pv: %s" 23 | 24 | pagePV: 25 | other: "%s temps de lecture" 26 | 27 | # ===== post ===== 28 | prevPage: 29 | other: "Plus récents" 30 | 31 | nextPage: 32 | other: "Plus vieux" 33 | 34 | prevPost: 35 | other: "Précédent" 36 | 37 | nextPost: 38 | other: "Suivant" 39 | 40 | toc: 41 | other: "Contenu" 42 | 43 | readMore: 44 | other: "Lire la suite..." 45 | 46 | reward: 47 | other: "Reward" 48 | 49 | rewardAlipay: 50 | other: "alipay" 51 | 52 | rewardWechat: 53 | other: "wechat" 54 | 55 | wordCount: 56 | one: "{{ .Count }} mots" 57 | other: "{{ .Count }} mots" 58 | 59 | readingTime: 60 | one: "{{ .Count }} min de lecture" 61 | other: "{{ .Count }} mins de lecture" 62 | 63 | # ===== content license ===== 64 | author: 65 | other: "Auteur" 66 | 67 | lastMod: 68 | other: "Modifié" 69 | 70 | markdown: 71 | other: "Markdown" 72 | 73 | seeMarkDown: 74 | other: "Version de Markdown »" 75 | 76 | license: 77 | other: "Licence" 78 | 79 | # ===== counter ===== 80 | archiveCounter: 81 | one: "{{ .Count }} Articles au total" 82 | other: "{{ .Count }} Articles au total" 83 | 84 | tagCounter: 85 | one: "{{ .Count }} Tag au total" 86 | other: "{{ .Count }} Tags au total" 87 | 88 | zeroTagCounter: 89 | other: "Aucun tag" 90 | 91 | categoryCounter: 92 | one: "{{ .Count }} Catégorie au total" 93 | other: "{{ .Count }} Catégories au total" 94 | 95 | zeroCategoryCounter: 96 | other: "Aucune catégorie" 97 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/_default/section.html: -------------------------------------------------------------------------------- 1 | {{ define "title" }}{{ T "archive" }} - {{ .Site.Title }}{{ end }} 2 | 3 | {{ define "content"}} 4 | {{- $paginator := .Paginate (where .Data.Pages.ByDate.Reverse "Type" "post") .Site.Params.archivePaginate }} 5 |
6 | {{- if not $paginator.HasPrev }} 7 |
8 | 9 | {{ T "archiveCounter" (len .Data.Pages) }} 10 | 11 |
12 | {{- end -}} 13 | 14 | {{- range $index, $element := $paginator.Pages -}} 15 | {{- $thisYear := $element.Date.Format "2006" }} 16 | {{- $lastElement := $index | add -1 | index $paginator.Pages }} 17 | {{ if or (eq $index 0) ( ne ($lastElement.Date.Format "2006") $thisYear ) }} 18 |
19 |

{{ $thisYear }}

20 |
21 | {{- end }} 22 | 23 |
24 | 25 | {{ $element.Date.Format "01-02" }} 26 | 27 | 28 | 29 | {{ .Title }} 30 | 31 | 32 |
33 | {{- end -}} 34 |
35 | 36 | 50 | {{ end }} -------------------------------------------------------------------------------- /docs/dist/gsoc-theme.min.js: -------------------------------------------------------------------------------- 1 | !function i(a,c,l){function f(n,e){if(!c[n]){if(!a[n]){var t="function"==typeof require&&require;if(!e&&t)return t(n,!0);if(u)return u(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r}var o=c[n]={exports:{}};a[n][0].call(o.exports,function(e){return f(a[n][1][e]||e)},o,o.exports,i,a,c,l)}return c[n].exports}for(var u="function"==typeof require&&require,e=0;ee[t]&&n<=e[t+1])return t;return n>e[e.length-1]?e.length-1:-1}(i,e);if($(r).removeClass("active"),$(o).removeClass("has-active"),-1!==n){$(r[n]).addClass("active");for(var t=r[n].parentNode;"NAV"!==t.tagName;)$(t).addClass("has-active"),t=t.parentNode.parentNode}})},toc:function(){var e=document.getElementById("post-toc");if(null!==e){var n=document.getElementById("TableOfContents");null===n?e.parentNode.removeChild(e):(this._refactorToc(n),this._linkToc(),this._initToc())}},_refactorToc:function(e){for(var n=e.children[0],t=n,r=void 0;1===t.children.length&&"UL"===(r=t.children[0].children[0]).tagName;)t=r;t!==n&&e.replaceChild(t,n)},_linkToc:function(){for(var e=document.querySelectorAll("#TableOfContents a:first-child"),n=0;nh"+t),o=0;o'+i.innerHTML}}};$(document).ready(function(){r.toc()}),hljs.initHighlightingOnLoad()},{}]},{},[1]); 2 | //# sourceMappingURL=gsoc-theme.min.js.map 3 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_code.scss: -------------------------------------------------------------------------------- 1 | pre { 2 | padding: 5px; 3 | margin: 10px 2px; 4 | //position: relative; 5 | border-radius: 5px; 6 | box-shadow: 1px 1px 2px rgba(0,0,0,0.2); 7 | background: $code-background; 8 | overflow-x: auto; 9 | } 10 | 11 | code.hljs { 12 | font-size: $code-font-size; 13 | line-height: 1.6em; 14 | font-family: $code-font-family; 15 | display: block; 16 | position: relative; 17 | //margin-right:10px; 18 | } 19 | 20 | .hljs-comment, 21 | .hljs-quote { 22 | color: map-get($code-highlight-color, comment); 23 | } 24 | 25 | .hljs-keyword, 26 | .hljs-selector-tag, 27 | .hljs-addition { 28 | color: map-get($code-highlight-color, keyword); 29 | } 30 | 31 | .hljs-number, 32 | .hljs-string, 33 | .hljs-meta .hljs-meta-string, 34 | .hljs-literal, 35 | .hljs-doctag, 36 | .hljs-regexp { 37 | color: map-get($code-highlight-color, number); 38 | } 39 | 40 | .hljs-title, 41 | .hljs-section, 42 | .hljs-name, 43 | .hljs-selector-id, 44 | .hljs-selector-class { 45 | color: map-get($code-highlight-color, title); 46 | } 47 | 48 | .hljs-attribute, 49 | .hljs-attr, 50 | .hljs-variable, 51 | .hljs-template-variable, 52 | .hljs-class .hljs-title, 53 | .hljs-type { 54 | color: map-get($code-highlight-color, attribute); 55 | } 56 | 57 | .hljs-symbol, 58 | .hljs-bullet, 59 | .hljs-subst, 60 | .hljs-meta, 61 | .hljs-meta .hljs-keyword, 62 | .hljs-selector-attr, 63 | .hljs-selector-pseudo, 64 | .hljs-link { 65 | color: map-get($code-highlight-color, symbol); 66 | } 67 | 68 | .hljs-built_in, 69 | .hljs-deletion { 70 | color: map-get($code-highlight-color, built_in); 71 | } 72 | 73 | .hljs-formula { 74 | background: map-get($code-highlight-color, formula); 75 | } 76 | 77 | .hljs-emphasis { 78 | font-style: italic; 79 | } 80 | 81 | .hljs-strong { 82 | font-weight: bold; 83 | } 84 | -------------------------------------------------------------------------------- /docs/dist/processing-theme.min.js: -------------------------------------------------------------------------------- 1 | !function i(a,c,l){function f(n,e){if(!c[n]){if(!a[n]){var t="function"==typeof require&&require;if(!e&&t)return t(n,!0);if(u)return u(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r}var o=c[n]={exports:{}};a[n][0].call(o.exports,function(e){return f(a[n][1][e]||e)},o,o.exports,i,a,c,l)}return c[n].exports}for(var u="function"==typeof require&&require,e=0;ee[t]&&n<=e[t+1])return t;return n>e[e.length-1]?e.length-1:-1}(i,e);if($(r).removeClass("active"),$(o).removeClass("has-active"),-1!==n){$(r[n]).addClass("active");for(var t=r[n].parentNode;"NAV"!==t.tagName;)$(t).addClass("has-active"),t=t.parentNode.parentNode}})},toc:function(){var e=document.getElementById("post-toc");if(null!==e){var n=document.getElementById("TableOfContents");null===n?e.parentNode.removeChild(e):(this._refactorToc(n),this._linkToc(),this._initToc())}},_refactorToc:function(e){for(var n=e.children[0],t=n,r=void 0;1===t.children.length&&"UL"===(r=t.children[0].children[0]).tagName;)t=r;t!==n&&e.replaceChild(t,n)},_linkToc:function(){for(var e=document.querySelectorAll("#TableOfContents a:first-child"),n=0;nh"+t),o=0;o'+i.innerHTML}}};$(document).ready(function(){r.toc()}),hljs.initHighlightingOnLoad()},{}]},{},[1]); 2 | //# sourceMappingURL=processing-theme.min.js.map 3 | -------------------------------------------------------------------------------- /themes/gsoc/static/dist/gsoc-theme.min.js: -------------------------------------------------------------------------------- 1 | !function i(a,c,l){function f(n,e){if(!c[n]){if(!a[n]){var t="function"==typeof require&&require;if(!e&&t)return t(n,!0);if(u)return u(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r}var o=c[n]={exports:{}};a[n][0].call(o.exports,function(e){return f(a[n][1][e]||e)},o,o.exports,i,a,c,l)}return c[n].exports}for(var u="function"==typeof require&&require,e=0;ee[t]&&n<=e[t+1])return t;return n>e[e.length-1]?e.length-1:-1}(i,e);if($(r).removeClass("active"),$(o).removeClass("has-active"),-1!==n){$(r[n]).addClass("active");for(var t=r[n].parentNode;"NAV"!==t.tagName;)$(t).addClass("has-active"),t=t.parentNode.parentNode}})},toc:function(){var e=document.getElementById("post-toc");if(null!==e){var n=document.getElementById("TableOfContents");null===n?e.parentNode.removeChild(e):(this._refactorToc(n),this._linkToc(),this._initToc())}},_refactorToc:function(e){for(var n=e.children[0],t=n,r=void 0;1===t.children.length&&"UL"===(r=t.children[0].children[0]).tagName;)t=r;t!==n&&e.replaceChild(t,n)},_linkToc:function(){for(var e=document.querySelectorAll("#TableOfContents a:first-child"),n=0;nh"+t),o=0;o'+i.innerHTML}}};$(document).ready(function(){r.toc()}),hljs.initHighlightingOnLoad()},{}]},{},[1]); 2 | //# sourceMappingURL=gsoc-theme.min.js.map 3 | -------------------------------------------------------------------------------- /themes/gsoc/static/dist/processing-theme.min.js: -------------------------------------------------------------------------------- 1 | !function i(a,c,l){function f(n,e){if(!c[n]){if(!a[n]){var t="function"==typeof require&&require;if(!e&&t)return t(n,!0);if(u)return u(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r}var o=c[n]={exports:{}};a[n][0].call(o.exports,function(e){return f(a[n][1][e]||e)},o,o.exports,i,a,c,l)}return c[n].exports}for(var u="function"==typeof require&&require,e=0;ee[t]&&n<=e[t+1])return t;return n>e[e.length-1]?e.length-1:-1}(i,e);if($(r).removeClass("active"),$(o).removeClass("has-active"),-1!==n){$(r[n]).addClass("active");for(var t=r[n].parentNode;"NAV"!==t.tagName;)$(t).addClass("has-active"),t=t.parentNode.parentNode}})},toc:function(){var e=document.getElementById("post-toc");if(null!==e){var n=document.getElementById("TableOfContents");null===n?e.parentNode.removeChild(e):(this._refactorToc(n),this._linkToc(),this._initToc())}},_refactorToc:function(e){for(var n=e.children[0],t=n,r=void 0;1===t.children.length&&"UL"===(r=t.children[0].children[0]).tagName;)t=r;t!==n&&e.replaceChild(t,n)},_linkToc:function(){for(var e=document.querySelectorAll("#TableOfContents a:first-child"),n=0;nh"+t),o=0;o'+i.innerHTML}}};$(document).ready(function(){r.toc()}),hljs.initHighlightingOnLoad()},{}]},{},[1]); 2 | //# sourceMappingURL=processing-theme.min.js.map 3 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/mixins/_flex.scss: -------------------------------------------------------------------------------- 1 | // display 2 | @mixin flex { 3 | display: flex; 4 | } 5 | 6 | // basis 7 | @mixin flex-basis($width) { 8 | flex-basis: $width; 9 | } 10 | 11 | // items wrap 12 | @mixin flex-items-wrap { 13 | flex-wrap: wrap; 14 | } 15 | 16 | // items nowrap 17 | @mixin flex-items-nowrap { 18 | flex-wrap: nowrap; 19 | } 20 | 21 | // items row 22 | @mixin flex-items-row { 23 | flex-direction: row; 24 | } 25 | 26 | // items columns 27 | @mixin flex-items-column { 28 | flex-direction: column; 29 | } 30 | 31 | // items left 32 | @mixin flex-items-left { 33 | justify-content: flex-start; 34 | } 35 | 36 | // items right 37 | @mixin flex-items-right { 38 | justify-content: flex-end; 39 | } 40 | 41 | // items center 42 | @mixin flex-items-center { 43 | justify-content: center; 44 | } 45 | 46 | // items between 47 | @mixin flex-items-space-between { 48 | justify-content: space-between; 49 | } 50 | 51 | // items around 52 | @mixin flex-items-space-around { 53 | justify-content: space-around; 54 | } 55 | 56 | // items vertical top 57 | @mixin flex-items-top { 58 | align-items: flex-start; 59 | } 60 | 61 | // items vertical middle 62 | @mixin flex-items-middle { 63 | align-items: center; 64 | } 65 | 66 | // items vertical bottom 67 | @mixin flex-items-bottom { 68 | align-items: flex-end; 69 | } 70 | 71 | // item grow 72 | @mixin flex-item-grow($grow: 0) { 73 | flex-grow: $grow; 74 | } 75 | 76 | 77 | // item auto 78 | @mixin flex-item-auto { 79 | flex: auto; 80 | } 81 | 82 | // item one 83 | @mixin flex-item-one { 84 | flex: 1; 85 | } 86 | 87 | // item shrink 88 | @mixin flex-item-shrink($num: 0) { 89 | flex-shrink: $num; 90 | } 91 | 92 | // item width 93 | @mixin flex-item-width($width) { 94 | flex: 0 0 $width; 95 | 96 | @include breakpoint(sm) { 97 | flex: 0 0 100% !important; 98 | } 99 | } -------------------------------------------------------------------------------- /themes/gsoc/layouts/post/single.html: -------------------------------------------------------------------------------- 1 | {{ define "content" -}} 2 |
3 | 4 |
5 |

{{ .Title }}

6 | 7 | 17 |
18 | 19 | 20 |
21 | {{ .Content }} 22 |
23 | 24 | 25 | 26 | 27 | 54 |
55 | {{- end }} 56 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/mixins/_utils.scss: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | @mixin clearfix { 3 | &:after { 4 | content: ''; 5 | display: table; 6 | clear: both; 7 | } 8 | } 9 | 10 | // Transition 11 | @mixin transition($transition: all linear .2s) { 12 | -moz-transition: $transition; 13 | transition: $transition; 14 | } 15 | 16 | // transform 17 | @mixin transform($transforms) { 18 | -moz-transform: $transforms; 19 | -ms-transform: $transforms; 20 | -webkit-transform: $transforms; 21 | transform: $transforms; 22 | } 23 | 24 | // blur 25 | @mixin blur($radius) { 26 | -webkit-filter: blur($radius); 27 | -moz-filter: blur($radius); 28 | -ms-filter: blur($radius); 29 | filter: blur($radius); 30 | } 31 | 32 | // striped 33 | @mixin striped($color: rgba(255, 255, 255, .2), $angle: 45deg) { 34 | background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); 35 | background-image: -o-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); 36 | background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); 37 | } 38 | 39 | // animation 40 | @mixin animation($animation) { 41 | -webkit-animation: $animation; 42 | -moz-animation: $animation; 43 | animation: $animation; 44 | } 45 | 46 | 47 | // Retina Images 48 | @mixin retina-background-image($file, $type, $width: auto, $height: auto) { 49 | 50 | background-repeat: no-repeat; 51 | background-image: url($file + '.' + $type); 52 | 53 | @media 54 | only screen and (-webkit-min-device-pixel-ratio: 2), 55 | only screen and (min--moz-device-pixel-ratio: 2), 56 | only screen and (-o-min-device-pixel-ratio: 2/1), 57 | only screen and (min-device-pixel-ratio: 2), 58 | only screen and (min-resolution: 192dpi), 59 | only screen and (min-resolution: 2dppx) { 60 | background-image: url($file + '-2x.' + $type); 61 | background-size: $width $height; 62 | } 63 | } -------------------------------------------------------------------------------- /themes/gsoc/layouts/shortcodes/figure.html: -------------------------------------------------------------------------------- 1 | 14 | {{ $src := .Get "src" }} 15 | {{ $placeholder := .Get "placeholder" }} 16 | {{ $caption := .Get "caption" }} 17 | {{ $link := .Get "link" }} 18 | {{ $linktarget := .Get "linktarget" }} 19 | {{ $attr := .Get "attr" }} 20 | {{ $attrlink := .Get "attrlink" }} 21 | {{ $alt := .Get "alt" }} 22 | {{ $title := .Get "title" }} 23 | {{ $class := .Get "class" }} 24 | {{ $width := .Get "width" }} 25 | {{ $height := .Get "height" }} 26 | 27 | 28 | {{ with $link }}{{ end }} 29 | {{ if $placeholder }} 30 | 31 | {{ else }} 32 | 33 | {{ end }} 34 | {{ if $link }}{{ end }} 35 | {{ if or (or $title $caption) $attr }} 36 |
{{ if isset .Params "title" }} 37 |
{{ $title }}
{{ end }} 38 | {{ if or $caption $attr }} 39 | {{ $caption }} 40 | {{ with $attrlink }} {{ end }} 41 | {{ $attr }} 42 | {{ if $attrlink }} {{ end }} 43 | {{ end }} 44 |
45 | {{ end }} 46 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_pagination.scss: -------------------------------------------------------------------------------- 1 | .pagination { 2 | margin: $base-line 0; 3 | font-size: $font-size-small; 4 | 5 | 6 | & ul { 7 | @include flex; 8 | 9 | margin: 0; 10 | } 11 | &.align-center ul { 12 | @include flex-items-center; 13 | } 14 | & span, 15 | & a { 16 | border-radius: 3px; 17 | display: inline-block; 18 | padding: 8px 12px; 19 | line-height: 1; 20 | white-space: nowrap; 21 | border: 1px solid transparent; 22 | } 23 | & a { 24 | text-decoration: none; 25 | color: $color-text; 26 | &:hover { 27 | color: rgba(0, 0, 0, .5); 28 | border-color: $color-silver; 29 | } 30 | } 31 | & span, 32 | & li.active a { 33 | color: rgba(0, 0, 0, .5); 34 | border-color: $color-silver; 35 | cursor: text; 36 | } 37 | &.upper { 38 | font-size: $font-size-smaller; 39 | } 40 | } 41 | 42 | // Pager 43 | .pager { 44 | & span { 45 | line-height: $base-line; 46 | } 47 | & span, 48 | & a { 49 | padding-left: 16px; 50 | padding-right: 16px; 51 | border-radius: 64px; 52 | border-color: rgba(0, 0, 0, .1); 53 | } 54 | & li { 55 | @include flex-basis(50%); 56 | } 57 | & li.next { 58 | text-align: right; 59 | } 60 | &.align-center li { 61 | @include flex-basis(auto); 62 | margin-left: 4px; 63 | margin-right: 4px; 64 | } 65 | &.flat { 66 | & span, 67 | & a { 68 | border: none; 69 | display: block; 70 | padding: 0; 71 | } 72 | & a { 73 | font-weight: bold; 74 | &:hover { 75 | background: none; 76 | text-decoration: underline; 77 | } 78 | } 79 | } 80 | } 81 | 82 | // Responsive 83 | @include breakpoint(sm) { 84 | .pager.flat { 85 | & ul { 86 | @include flex-items-column; 87 | } 88 | & li { 89 | @include flex-basis(100%); 90 | 91 | margin-bottom: 8px; 92 | text-align: left; 93 | } 94 | } 95 | } -------------------------------------------------------------------------------- /content/context.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Context" 3 | date: 2018-08-13T21:38:52+08:00 4 | lastmod: 2018-08-13T21:41:52+08:00 5 | menu: "sidebar" 6 | weight: 10 7 | --- 8 | 9 | # How I got into GSoC 2018 10 | 11 | As I was in grad school, I had an assignment in one of the classes. That assignment was to write a research essay about the history of some technology that I considered interesting. After careful consideration, I chose Processing as one of the technologies that I'd like to learn about, specifically about its history. 12 | 13 | I set out to dig deep into the roots of Processing, finding out who was involved in creating it, who was contributing, what other technologies served as a predecessor to Processing and after three days of intensive research I was able to write an essay titled "The History of Processing". 14 | 15 | You can read my essay here: [The History of Processing ](https://maxoffsky.com/research/research-essay-the-history-of-processing) 16 | 17 | Shortly after publishing, the essay made rounds around the web: 18 | 19 | 20 | 21 | 22 | While working on the essay, I discovered that Processing was a participant in Google Summer of Code for a few years and that peaked my interest. I started looking at the website that lists project ideas that would be a good candidate for GSoC 2018 and found out that help is needed for Raspberry Pi related content and developing a website. These are my strengths, so I applied with this proposal, which got accepted: 23 | 24 | https://docs.google.com/document/d/1SShi0Rjh6jHl6s_BIB5TBxKEygU1Knr5GQ1pwikIji8/edit 25 | 26 | Before GSoC officially started, I was able to do some user research to understand the needs and the frustrations of people that are looking for the type of content that I wanted to produce. 27 | 28 | You can see more about the process at the [process page](../process) 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | https://msurguy.github.io/GSOC2018-processing-pi/context/ 7 | 2018-08-13T21:41:52+08:00 8 | weekly 9 | 0.5 10 | 11 | 12 | 13 | https://msurguy.github.io/GSOC2018-processing-pi/process/ 14 | 2018-08-13T21:41:52+08:00 15 | weekly 16 | 0.5 17 | 18 | 19 | 20 | https://msurguy.github.io/GSOC2018-processing-pi/result/ 21 | 2018-08-13T21:41:52+08:00 22 | weekly 23 | 0.5 24 | 25 | 26 | 27 | https://msurguy.github.io/GSOC2018-processing-pi/ 28 | 2018-08-13T21:41:52+08:00 29 | weekly 30 | 0.5 31 | 32 | 33 | 34 | https://msurguy.github.io/GSOC2018-processing-pi/post/shortcodes/ 35 | 2018-02-01T18:01:23+08:00 36 | weekly 37 | 0.5 38 | 39 | 40 | 41 | https://msurguy.github.io/GSOC2018-processing-pi/categories/ 42 | weekly 43 | 0 44 | 45 | 46 | 47 | https://msurguy.github.io/GSOC2018-processing-pi/post/ 48 | 2018-02-01T18:01:23+08:00 49 | weekly 50 | 0 51 | 52 | 53 | 54 | https://msurguy.github.io/GSOC2018-processing-pi/tags/shortcodes/ 55 | 2018-02-01T18:01:23+08:00 56 | weekly 57 | 0 58 | 59 | 60 | 61 | https://msurguy.github.io/GSOC2018-processing-pi/categories/shortcodes/ 62 | 2018-02-01T18:01:23+08:00 63 | weekly 64 | 0 65 | 66 | 67 | 68 | https://msurguy.github.io/GSOC2018-processing-pi/tags/ 69 | 2018-02-01T18:01:23+08:00 70 | weekly 71 | 0 72 | 73 | 74 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_utils.scss: -------------------------------------------------------------------------------- 1 | // Group 2 | .group { 3 | @include clearfix; 4 | } 5 | 6 | // Flex 7 | .flex { 8 | @include flex; 9 | } 10 | @include breakpoint(sm) { 11 | .flex-column-sm { 12 | @include flex-items-column; 13 | } 14 | .flex-w100-sm { 15 | @include flex-item-width(100%); 16 | } 17 | } 18 | 19 | // Visibility 20 | .invisible { 21 | visibility: hidden; 22 | } 23 | .visible { 24 | visibility: visible; 25 | } 26 | 27 | // Display 28 | .display-block { 29 | display: block; 30 | } 31 | .hide { 32 | display: none !important; 33 | } 34 | @include breakpoint(sm) { 35 | .hide-sm { 36 | display: none !important; 37 | } 38 | } 39 | @include breakpoint($min: $sm) { 40 | .show-sm { 41 | display: none !important; 42 | } 43 | } 44 | 45 | // Print 46 | @media print { 47 | .hide-print { 48 | display: none !important; 49 | } 50 | .show-print { 51 | display: block !important; 52 | } 53 | } 54 | 55 | // NoScroll 56 | .no-scroll { 57 | overflow: hidden; 58 | position: fixed; 59 | top: 0; 60 | left: 0; 61 | width: 100%; 62 | height: 100% !important; 63 | } 64 | 65 | // ScrollbarMeasure 66 | .scrollbar-measure { 67 | position: absolute; 68 | top: -9999px; 69 | width: 50px; 70 | height: 50px; 71 | overflow: scroll; 72 | } 73 | 74 | // Responsive embedded objects 75 | .video-container { 76 | height: 0; 77 | padding-bottom: 56.25%; // ratio 16:9 78 | position: relative; 79 | margin-bottom: $text-margin-bottom; 80 | & iframe, 81 | & object, 82 | & embed { 83 | position: absolute; 84 | top: 0; 85 | left: 0; 86 | width: 100% !important; 87 | height: 100% !important; 88 | } 89 | } 90 | 91 | // Close 92 | .close { 93 | 94 | display: inline-block; 95 | min-height: 16px; 96 | min-width: 16px; 97 | line-height: 16px; 98 | vertical-align: middle; 99 | text-align: center; 100 | font-size: 12px; 101 | opacity: .6; 102 | 103 | &:hover { 104 | opacity: 1; 105 | } 106 | &.small { 107 | font-size: 8px; 108 | } 109 | &.big { 110 | font-size: 18px; 111 | } 112 | &.white { 113 | color: #fff; 114 | } 115 | } 116 | 117 | // Caret 118 | .caret { 119 | display: inline-block; 120 | } 121 | .button { 122 | & .caret { 123 | margin-right: -8px; 124 | } 125 | } 126 | 127 | // Overlay 128 | .overlay { 129 | position: fixed; 130 | z-index: $z-over-control; 131 | top: 0; 132 | left: 0; 133 | right: 0; 134 | bottom: 0; 135 | background-color: $overlay-background-color; 136 | 137 | & > .close { 138 | position: fixed; 139 | top: 1rem; 140 | right: 1rem; 141 | } 142 | } -------------------------------------------------------------------------------- /themes/gsoc/src/js/gsoc-theme.js: -------------------------------------------------------------------------------- 1 | const Gsoctheme = {}; 2 | 3 | Gsoctheme._initToc = function () { 4 | 5 | const HEADERFIX = 30 6 | const $toclink = $('.toc-link') 7 | const $headerlink = $('.headerlink') 8 | const $tocLinkLis = $('.post-toc-content li') 9 | 10 | const headerlinkTop = $.map($headerlink, function (link) { 11 | return $(link).offset().top 12 | }) 13 | 14 | const headerLinksOffsetForSearch = $.map(headerlinkTop, function (offset) { 15 | return offset - HEADERFIX 16 | }) 17 | 18 | const searchActiveTocIndex = function (array, target) { 19 | for (let i = 0; i < array.length - 1; i++) { 20 | if (target > array[i] && target <= array[i + 1]) return i 21 | } 22 | if (target > array[array.length - 1]) return array.length - 1 23 | return -1 24 | } 25 | 26 | $(window).scroll(function () { 27 | const scrollTop = $(window).scrollTop() 28 | const activeTocIndex = searchActiveTocIndex(headerLinksOffsetForSearch, scrollTop) 29 | 30 | $($toclink).removeClass('active') 31 | $($tocLinkLis).removeClass('has-active') 32 | 33 | if (activeTocIndex !== -1) { 34 | $($toclink[activeTocIndex]).addClass('active') 35 | let ancestor = $toclink[activeTocIndex].parentNode 36 | while (ancestor.tagName !== 'NAV') { 37 | $(ancestor).addClass('has-active') 38 | ancestor = ancestor.parentNode.parentNode 39 | } 40 | } 41 | }) 42 | } 43 | 44 | Gsoctheme.toc = function () { 45 | const tocContainer = document.getElementById('post-toc') 46 | if (tocContainer !== null) { 47 | const toc = document.getElementById('TableOfContents') 48 | if (toc === null) { 49 | // toc = true, but there are no headings 50 | tocContainer.parentNode.removeChild(tocContainer) 51 | } else { 52 | this._refactorToc(toc) 53 | this._linkToc() 54 | this._initToc() 55 | } 56 | } 57 | } 58 | 59 | Gsoctheme._refactorToc = function (toc) { 60 | // when headings do not start with `h1` 61 | const oldTocList = toc.children[0] 62 | let newTocList = oldTocList 63 | let temp 64 | while (newTocList.children.length === 1 && (temp = newTocList.children[0].children[0]).tagName === 'UL') newTocList = temp 65 | 66 | if (newTocList !== oldTocList) toc.replaceChild(newTocList, oldTocList) 67 | } 68 | 69 | Gsoctheme._linkToc = function () { 70 | const links = document.querySelectorAll('#TableOfContents a:first-child') 71 | for (let i = 0; i < links.length; i++) links[i].className += ' toc-link' 72 | 73 | for (let num = 1; num <= 6; num++) { 74 | const headers = document.querySelectorAll('.post-content>h' + num) 75 | for (let i = 0; i < headers.length; i++) { 76 | const header = headers[i] 77 | header.innerHTML = `${header.innerHTML}` 78 | } 79 | } 80 | } 81 | 82 | 83 | $(document).ready(function () { 84 | Gsoctheme.toc() 85 | }); 86 | 87 | hljs.initHighlightingOnLoad() 88 | -------------------------------------------------------------------------------- /themes/gsoc/exampleSite/content/post/theme-preview.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Theme preview" 3 | date: 2017-08-23T18:03:09+08:00 4 | lastmod: 2017-08-23T18:03:09+08:00 5 | draft: false 6 | tags: ["preview", "Theme preview", "tag-3"] 7 | categories: ["Theme preview", "category-2", "category-3"] 8 | 9 | weight: 10 10 | 11 | --- 12 | 13 | # 1. Headers 14 | 15 | # H1 16 | ## H2 17 | ### H3 18 | #### H4 19 | ##### H5 20 | ###### H6 21 | 22 | ## 2. Markdown functions 23 | 24 | `*` or `_` To _underline_ 25 | 26 | `**` or `__` to **emphasize** or __emphasize__ 27 | 28 | `~~` to ~~Strikethrough~~ 29 | 30 | Superscript and subscript X2 / X2 31 | 32 | Key select Ctrl 33 | 34 | Link [Processing](https://Processing.org) 35 | 36 | Reference to another section within document [click](#section-07) 37 | 38 | *Note:you can customize paragraph anchors by using `{#section-id}`* 39 | 40 | References: [[1]](#ref01) 41 | 42 | ## 3. Lists 43 | 44 | Lists 45 | 46 | ### 3.1 Unordered lists 47 | 48 | * Item 49 | - Item 50 | - Item 51 | * Item 52 | 1. Item 53 | 2. Item 54 | * Item 55 | 56 | ### 3.2 Ordered lists 57 | 58 | 1. Item 59 | 1. Item 60 | 2. Item 61 | 2. Item 62 | - Item 63 | - Item 64 | 3. Item 65 | 66 | ### 3.4 ToDO lists 67 | 68 | - [ ] Cmd Markdown 69 | - [ ] Task 1 70 | - [ ] Task 2 71 | - [x] [Task lists](https://github.com/blog/1375-task-lists-in-gfm-issues-pulls-comments) 72 | - [ ] More tasks 73 | - [ ] Task 3 74 | - [x] All done! 75 | 76 | ## 4. Quotes 77 | 78 | > Read this please 79 | > 80 | > -- Source 81 | 82 | ## 5. Highlighter 83 | 84 | Code highlighting 85 | 86 | ```javascript 87 | // Initialize video.js player 88 | if (document.getElementById('my-player') !== null) { 89 | /* eslint-disable no-undef */ 90 | videojs('#my-player', { 91 | aspectRatio: '16:9', 92 | fluid: true, 93 | }); 94 | } 95 | ``` 96 | 97 | ## 6. HR 98 | 99 | --- 100 | 101 | Horizontal line via CSS 102 | 103 | ## 7. Images {#section-07} 104 | 105 | See image below👇 106 | 107 | ![hugo even showcase](https://raw.githubusercontent.com/olOwOlo/hugo-theme-even/master/images/showcase.png "showcase.png") 108 | 109 | Here's a shortcode for centered image👇 110 | 111 | {{% figure class="center" src="https://raw.githubusercontent.com/olOwOlo/hugo-theme-even/master/images/showcase.png" alt="hugo even showcase" title="showcase.png" %}} 112 | 113 | ## 8. Tables 114 | 115 | Markdown tables 👇 116 | 117 | | Tables | Are | Cool | 118 | | :------------ |:-------------:| -----:| 119 | | col 3 is | right-aligned | $1600 | 120 | | col 2 is | centered | $12 | 121 | | zebra stripes | are neat | $1 | 122 | 123 | ## 9. YouTube 124 | 125 | Via shortcode 126 | 127 | {{% youtube "PBsUD40nPkI" %}} 128 | 129 | ## References 130 | 131 | 1. [Markdown Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) 132 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_navigation.scss: -------------------------------------------------------------------------------- 1 | .ribbon { 2 | height: auto; 3 | background-color: #1d517e; 4 | background: linear-gradient(to bottom, #003b6e, #1d517e); 5 | 6 | ul li.highlight a { 7 | color: white; 8 | font-weight: bold; 9 | } 10 | 11 | ul li a { 12 | color: #b2b2b2; 13 | } 14 | 15 | ul li { 16 | display: inline-block; 17 | margin: 0; 18 | padding: 6px 10px 5px 10px; 19 | list-style: none; 20 | background-color: transparent; 21 | background-color: rgba(0, 0, 0, 0.12); 22 | 23 | @media (max-width: $sm) { 24 | font-size: 12px; 25 | padding: 3px 5px 2px 5px; 26 | } 27 | } 28 | ul.left li { 29 | float: left; 30 | border-right: 1px solid #1a1a1a; 31 | } 32 | 33 | ul.right li { 34 | float: right; 35 | border-left: 1px solid #1a1a1a; 36 | 37 | @media (max-width: $sm) { 38 | float: left; 39 | } 40 | } 41 | 42 | ul li.highlight { 43 | background-color: black; 44 | border-right: none; 45 | } 46 | ul.left { 47 | float: left; 48 | } 49 | 50 | ul.right { 51 | float: right; 52 | @media (max-width: $sm) { 53 | float: left; 54 | } 55 | } 56 | ul { 57 | display: inline-block; 58 | margin: 0; 59 | padding: 0; 60 | } 61 | .clear { 62 | clear: both; 63 | } 64 | } 65 | 66 | .nav-container { 67 | list-style: none; 68 | text-align: left; 69 | background: #FFF; 70 | margin: 0; 71 | padding: 0; 72 | 73 | .menu { 74 | padding: 0; 75 | margin: 0; 76 | font-family: $text-font-family; 77 | 78 | .menu-item { 79 | &:hover { 80 | border-left: 5px #CCC solid; 81 | //background-color: #CCC; 82 | } 83 | 84 | //& + .menu-item { 85 | // margin-left: $menu-item-margin-left; 86 | //} 87 | 88 | //@include underline-from-center; 89 | } 90 | 91 | .menu-item-link { 92 | padding: 0 30px; 93 | color: $color-link; 94 | font-size: $font-size; 95 | line-height: $base-line-big; 96 | } 97 | } 98 | } 99 | 100 | .post-toc { 101 | word-wrap: break-word; 102 | box-sizing: border-box; 103 | 104 | .post-toc-title { 105 | margin-bottom: 0; 106 | margin-top: 10px; 107 | margin-left: 5px; 108 | margin-right: 5px; 109 | font-size: 16px; 110 | font-weight: 400; 111 | text-transform: uppercase; 112 | } 113 | 114 | .post-toc-content { 115 | font-size: 14px; 116 | 117 | &.always-active ul { 118 | display: block; 119 | } 120 | 121 | >nav>ul { 122 | margin: 10px 0; 123 | } 124 | 125 | ul { 126 | padding-left: 5px; 127 | list-style: square; 128 | 129 | ul { 130 | display: none; 131 | margin-left: 10px; 132 | } 133 | 134 | .has-active > ul { 135 | display: block; 136 | } 137 | } 138 | 139 | .toc-link.active { 140 | color: #FF69B4; 141 | } 142 | } 143 | } 144 | 145 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_sizing.scss: -------------------------------------------------------------------------------- 1 | // Width 2 | .w5 { width: 5%; } 3 | .w10 { width: 10%; } 4 | .w15 { width: 15%; } 5 | .w20 { width: 20%; } 6 | .w25 { width: 25%; } 7 | .w30 { width: 30%; } 8 | .w35 { width: 35%; } 9 | .w40 { width: 40%; } 10 | .w45 { width: 45%; } 11 | .w50 { width: 50%; } 12 | .w55 { width: 55%; } 13 | .w60 { width: 60%; } 14 | .w65 { width: 65%; } 15 | .w70 { width: 70%; } 16 | .w75 { width: 75%; } 17 | .w80 { width: 80%; } 18 | .w85 { width: 85%; } 19 | .w90 { width: 90%; } 20 | .w95 { width: 95%; } 21 | .w100 { width: 100%; } 22 | 23 | .w-auto { width: auto; } 24 | 25 | // Content Width 26 | .w-small { width: $w-small; } 27 | .w-medium { width: $w-medium; } 28 | .w-big { width: $w-big; } 29 | .w-large { width: $w-large; } 30 | 31 | @include breakpoint(sm) { 32 | .w-auto-sm { 33 | width: auto; 34 | } 35 | .w100-sm, 36 | .w-small, 37 | .w-medium, 38 | .w-big, 39 | .w-large { 40 | width: 100%; 41 | } 42 | } 43 | 44 | // Max Width 45 | .max-w5 { max-width: 5%; } 46 | .max-w10 { max-width: 10%; } 47 | .max-w15 { max-width: 15%; } 48 | .max-w20 { max-width: 20%; } 49 | .max-w25 { max-width: 25%; } 50 | .max-w30 { max-width: 30%; } 51 | .max-w35 { max-width: 35%; } 52 | .max-w40 { max-width: 40%; } 53 | .max-w45 { max-width: 45%; } 54 | .max-w50 { max-width: 50%; } 55 | .max-w55 { max-width: 55%; } 56 | .max-w60 { max-width: 60%; } 57 | .max-w65 { max-width: 65%; } 58 | .max-w70 { max-width: 70%; } 59 | .max-w75 { max-width: 75%; } 60 | .max-w80 { max-width: 80%; } 61 | .max-w85 { max-width: 85%; } 62 | .max-w90 { max-width: 90%; } 63 | .max-w95 { max-width: 95%; } 64 | .max-w100 { max-width: 100%; } 65 | 66 | // Content Max Width 67 | .max-w-small { max-width: $w-small; } 68 | .max-w-medium { max-width: $w-medium; } 69 | .max-w-big { max-width: $w-big; } 70 | .max-w-large { max-width: $w-large; } 71 | 72 | @include breakpoint(sm) { 73 | .max-w-auto-sm, 74 | .max-w-small, 75 | .max-w-medium, 76 | .max-w-big, 77 | .max-w-large { 78 | max-width: auto; 79 | } 80 | } 81 | 82 | // Min Width 83 | .min-w5 { min-width: 5%; } 84 | .min-w10 { min-width: 10%; } 85 | .min-w15 { min-width: 15%; } 86 | .min-w20 { min-width: 20%; } 87 | .min-w25 { min-width: 25%; } 88 | .min-w30 { min-width: 30%; } 89 | .min-w35 { min-width: 35%; } 90 | .min-w40 { min-width: 40%; } 91 | .min-w45 { min-width: 45%; } 92 | .min-w50 { min-width: 50%; } 93 | .min-w55 { min-width: 55%; } 94 | .min-w60 { min-width: 60%; } 95 | .min-w65 { min-width: 65%; } 96 | .min-w70 { min-width: 70%; } 97 | .min-w75 { min-width: 75%; } 98 | .min-w80 { min-width: 80%; } 99 | .min-w85 { min-width: 85%; } 100 | .min-w90 { min-width: 90%; } 101 | .min-w95 { min-width: 95%; } 102 | .min-w100 { min-width: 100%; } 103 | 104 | // Height 105 | .h25 { height: 25%; } 106 | .h50 { height: 50%; } 107 | .h100 { height: 100%; } -------------------------------------------------------------------------------- /themes/gsoc/exampleSite/content/post/shortcodes.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Shortcodes" 3 | date: 2016-08-30T16:01:23+08:00 4 | lastmod: 2018-02-01T18:01:23+08:00 5 | draft: false 6 | tags: ["shortcodes"] 7 | categories: ["shortcodes"] 8 | 9 | --- 10 | 11 | # center, right, left 12 | 13 | ``` 14 | ## default 15 | ![img](/path/to/img.gif "img") 16 | 17 | {{%/* center */%}} 18 | ## center 19 | ![img](/path/to/img.gif "img") 20 | {{%/* /center */%}} 21 | 22 | {{%/* right */%}} 23 | ## right 24 | ![img](/path/to/img.gif "img") 25 | {{%/* /right */%}} 26 | 27 | {{%/* left */%}} 28 | ## left 29 | ![img](/path/to/img.gif "img") 30 | {{%/* /left */%}} 31 | ``` 32 | 33 | 34 | ## default 35 | ![img](https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg "img") 36 | 37 | {{% center %}} 38 | ## center 39 | ![img](https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg "img") 40 | {{% /center %}} 41 | 42 | {{% right %}} 43 | ## right 44 | ![img](https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg "img") 45 | {{% /right %}} 46 | 47 | {{% left %}} 48 | ## left 49 | ![img](https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg "img") 50 | {{% /left %}} 51 | 52 | --- 53 | 54 | ## figure with class 55 | 56 | ``` 57 | {{%/* figure src="/path/to/img.gif" title="default" alt="img" */%}} 58 | {{%/* figure class="center" src="/path/to/img.gif" title="center" alt="img" */%}} 59 | {{%/* figure class="right" src="/path/to/img.gif" title="right" alt="img" */%}} 60 | {{%/* figure class="left" src="/path/to/img.gif" title="left" alt="img" */%}} 61 | ``` 62 | 63 | {{% figure src="https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg" title="default" alt="img" %}} 64 | {{% figure class="center" src="https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg" title="center" alt="img" %}} 65 | {{% figure class="right" src="https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg" title="right" alt="img" %}} 66 | {{% figure class="left" src="https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg" title="left" alt="img" %}} 67 | 68 | --- 69 | 70 | ``` 71 | {{%/* center */%}} 72 | 73 | ## hybrid in center 74 | {{%/* figure src="/path/to/img.gif" title="default" alt="img" */%}} 75 | {{%/* figure class="right" src="/path/to/img.gif" title="right" alt="img" */%}} 76 | 77 | {{%/* left */%}} 78 | {{%/* figure src="/path/to/img.gif" title="default in left" alt="img" */%}} 79 | {{%/* /left */%}} 80 | 81 | {{%/* /center */%}} 82 | ``` 83 | 84 | {{% center %}} 85 | ## hybrid in center 86 | {{% figure src="https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg" title="default" alt="img" %}} 87 | {{% figure class="right" src="https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg" title="right" alt="img" %}} 88 | {{% left %}} 89 | {{% figure src="https://wx1.sinaimg.cn/small/006SToa6ly1fm07summ2gj30qo0qomzu.jpg" title="default in left" alt="img" %}} 90 | {{% /left %}} 91 | {{% /center %}} 92 | 93 | --- 94 | 95 | 100 | -------------------------------------------------------------------------------- /themes/gsoc/layouts/partials/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {{- if .Description -}} 16 | 17 | {{ else if .IsPage }} 18 | 19 | {{ else if .Site.Params.description }} 20 | 21 | {{- end -}} 22 | 23 | {{- if .Keywords -}} 24 | {{ $length := len .Keywords | add -1 -}} 25 | 26 | {{ else if .Site.Params.keywords }} 27 | {{ $length := len .Site.Params.keywords | add -1 -}} 28 | 29 | {{- end }} 30 | 31 | 32 | {{ with .Site.Params.google_verification }}{{ end }} 33 | 34 | 35 | 36 | {{ if .RSSLink -}} 37 | 38 | 39 | {{ end -}} 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | {{ range .Site.Params.customCSS }} 53 | 54 | {{ end }} 55 | 56 | {{/* NOTE: These Hugo Internal Templates can be found starting at https://github.com/spf13/hugo/blob/master/tpl/tplimpl/template_embedded.go#L158 */}} 57 | {{- template "_internal/opengraph.html" . -}} 58 | {{- template "_internal/google_news.html" . -}} 59 | {{- template "_internal/schema.html" . -}} 60 | {{- template "_internal/twitter_cards.html" . -}} 61 | -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | baseURL = "https://msurguy.github.io/GSOC2018-processing-pi" 2 | languageCode = "en" 3 | defaultContentLanguage = "en" # en / fr / ... (This field determines which i18n file to use) 4 | title = "Google Summer of Code 2018 submission" 5 | enableRobotsTXT = true 6 | enableEmoji = true 7 | theme = "gsoc" 8 | 9 | preserveTaxonomyNames = true 10 | paginate = 10 # how many pages to show 11 | disqusShortname = "" # disqus_shortname 12 | googleAnalytics = "" # UA-XXXXXXXX-X 13 | copyright = "Maksim Surguy" # default: author.name 14 | 15 | publishDir = "docs" 16 | 17 | [author] # essential 18 | name = "Maksim Surguy" 19 | 20 | [sitemap] # essential 21 | changefreq = "weekly" 22 | priority = 0.5 23 | filename = "sitemap.xml" 24 | 25 | [[menu.main]] # config your menu 26 | name = "Home" 27 | weight = 10 28 | identifier = "home" 29 | url = "/" 30 | [[menu.main]] 31 | name = "Context" 32 | weight = 20 33 | identifier = "context" 34 | url = "/context/" 35 | [[menu.main]] 36 | name = "Process" 37 | weight = 20 38 | identifier = "Process" 39 | url = "/process/" 40 | [[menu.main]] 41 | name = "Next Steps" 42 | weight = 80 43 | identifier = "next-steps" 44 | url = "#next-steps" 45 | 46 | [params] 47 | debug = false # If true, load `eruda.min.js`. See https://github.com/liriliri/eruda 48 | 49 | since = "2018" # Site creation date 50 | 51 | # site info (optional) 52 | logoTitle = "GSOC 2018" # default: the title value 53 | keywords = ["gsoc","processing", "raspberry pi"] 54 | description = "Description of Google Summer of Code 2018 project for website and tutorials for Processing on Raspberry Pi" 55 | 56 | # paginate of archives, tags and categories 57 | archivePaginate = 5 58 | 59 | # The date format to use; for a list of valid formats, see https://gohugo.io/functions/format/ 60 | dateFormatToUse = "2006-01-02" 61 | 62 | # show word count and read time ? 63 | moreMeta = false 64 | 65 | # Some global options, you can also close or open something in front matter for a single post, see more information from `archetypes/default.md`. 66 | toc = true 67 | autoCollapseToc = false # Auto expand and collapse toc 68 | postMetaInFooter = true # contain author, lastMod, markdown link, license 69 | linkToMarkDown = false # Only effective when hugo will output .md files 70 | contentCopyright = '' # e.g. 'CC BY-NC-ND 4.0' 71 | 72 | google_verification = "" # Google_Verification 73 | 74 | # Link custom CSS and JS assets 75 | # (relative to /static/css and /static/js respectively) 76 | customCSS = [] 77 | customJS = [] 78 | 79 | [params.social] 80 | c-twitter = "https://twitter.com/msurguy" 81 | g-github = "https://github.com/msurguy" 82 | 83 | # Uncomment these options to make hugo output .md files. 84 | #[mediaTypes] 85 | # [mediaTypes."text/plain"] 86 | # suffix = "md" 87 | # 88 | #[outputFormats.MarkDown] 89 | # mediaType = "text/plain" 90 | # isPlainText = true 91 | # isHTML = false 92 | # 93 | #[outputs] 94 | # home = ["HTML", "RSS"] 95 | # page = ["HTML", "MarkDown"] 96 | # section = ["HTML", "RSS"] 97 | # taxonomy = ["HTML", "RSS"] 98 | # taxonomyTerm = ["HTML"] 99 | -------------------------------------------------------------------------------- /themes/gsoc/src/gulpfile.js: -------------------------------------------------------------------------------- 1 | const gulp = require('gulp'); 2 | const sass = require('gulp-sass'); 3 | const concat = require('gulp-concat'); 4 | const uglify = require('gulp-uglify'); 5 | const rename = require('gulp-rename'); 6 | const minify = require('gulp-clean-css'); 7 | 8 | const babelify = require('babelify'); 9 | const browserify = require('browserify'); 10 | const babel = require('gulp-babel'); 11 | const webpack = require('webpack-stream'); 12 | const source = require('vinyl-source-stream'); 13 | const buffer = require('vinyl-buffer'); 14 | const log = require('gulplog'); 15 | const sourcemaps = require('gulp-sourcemaps'); 16 | 17 | gulp.task('sass', function() { 18 | return gulp.src('sass/gsoc-theme.scss') 19 | .pipe(sass()) 20 | .pipe(gulp.dest('dist/css')) 21 | .pipe(rename('gsoc-theme.min.css')) 22 | .pipe(minify()) 23 | .pipe(gulp.dest('../static/dist')); 24 | }); 25 | 26 | 27 | gulp.task('combine', function() { 28 | return gulp.src([ 29 | 'sass/_variables.scss', 30 | 'sass/mixins/_breakpoints.scss', 31 | 'sass/mixins/_fonts.scss', 32 | 'sass/mixins/_flex.scss', 33 | 'sass/mixins/_grid.scss', 34 | 'sass/mixins/_utils.scss', 35 | 'sass/mixins/_buttons.scss', 36 | 'sass/mixins/_gradients.scss', 37 | 'sass/mixins/_labels.scss' 38 | ]) 39 | .pipe(concat('gsoc-theme.scss')) 40 | .pipe(gulp.dest('dist/scss')); 41 | }); 42 | // 43 | // gulp.task('scripts', function() { 44 | // return gulp.src(scripts) 45 | // .pipe(concat('kube.js')) 46 | // .pipe(gulp.dest('dist/js')) 47 | // .pipe(rename('kube.min.js')) 48 | // .pipe(uglify()) 49 | // .pipe(gulp.dest('dist/js')); 50 | // }); 51 | 52 | 53 | const scripts = [ 54 | "js/lib/*", 55 | "js/*" 56 | ]; 57 | 58 | // gulp.task('scripts', () => 59 | // gulp.src('js/gsoc-theme.js') 60 | // .pipe(babel()) 61 | // .pipe(gulp.dest('dist/js')) 62 | // .pipe(rename('gsoc-theme.min.js')) 63 | // .pipe(uglify()) 64 | // .pipe(gulp.dest('../static/dist')) 65 | // ); 66 | 67 | gulp.task('javascript', function () { 68 | // set up the browserify instance on a task basis 69 | const b = browserify({ 70 | entries: 'js/gsoc-theme.js', 71 | debug: true, 72 | //extensions: ['es6'], 73 | // defining transforms here will avoid crashing your stream 74 | transform: [babelify.configure({presets : ['env']})] 75 | }); 76 | 77 | return b.bundle() 78 | .pipe(source('gsoc-theme.js')) 79 | .pipe(gulp.dest('./dist/js/')) 80 | .pipe(buffer()) 81 | .pipe(rename('gsoc-theme.min.js')) 82 | 83 | //.pipe(source('gsoc-theme.min.js')) 84 | .pipe(sourcemaps.init()) 85 | //Add transformation tasks to the pipeline here. 86 | .pipe(uglify()) 87 | .on('error', log.error) 88 | .pipe(sourcemaps.write('./')) 89 | .pipe(gulp.dest('../static/dist')); 90 | }); 91 | 92 | gulp.task('watch', function() { 93 | gulp.watch(scripts, ['javascript']); 94 | gulp.watch(['sass/*.scss', 'sass/components/*.scss', 'sass/mixins/*.scss'], ['sass', 'combine']); 95 | 96 | }); 97 | 98 | gulp.task('default', ['sass', 'combine', 'javascript']); 99 | 100 | gulp.task('dev', ['sass', 'combine', 'javascript', 'watch']); 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /docs/img/spinner.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /themes/gsoc/static/img/spinner.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_animation.scss: -------------------------------------------------------------------------------- 1 | @keyframes slideUp { 2 | to { height: 0; padding-top: 0; padding-bottom: 0; } 3 | } 4 | @keyframes slideDown { 5 | from { height: 0; padding-top: 0; padding-bottom: 0; } 6 | } 7 | @keyframes fadeIn { 8 | from { opacity: 0; } 9 | to { opacity: 1; } 10 | } 11 | @keyframes fadeOut { 12 | from { opacity: 1; } 13 | to { opacity: 0; } 14 | } 15 | @keyframes flipIn { 16 | from { opacity: 0; transform: scaleY(0); } 17 | to { opacity: 1; transform: scaleY(1); } 18 | } 19 | @keyframes flipOut { 20 | from { opacity: 1; transform: scaleY(1); } 21 | to { opacity: 0; transform: scaleY(0); } 22 | } 23 | @keyframes zoomIn { 24 | from { opacity: 0; transform: scale3d(.3, .3, .3); } 25 | 50% { opacity: 1; } 26 | } 27 | @keyframes zoomOut { 28 | from { opacity: 1; } 29 | 50% { opacity: 0; transform: scale3d(.3, .3, .3); } 30 | to { opacity: 0; } 31 | } 32 | @keyframes slideInRight { 33 | from { transform: translate3d(100%, 0, 0); visibility: visible; } 34 | to { transform: translate3d(0, 0, 0); } 35 | } 36 | @keyframes slideInLeft { 37 | from { transform: translate3d(-100%, 0, 0); visibility: visible; } 38 | to { transform: translate3d(0, 0, 0); } 39 | } 40 | @keyframes slideInDown { 41 | from { transform: translate3d(0, -100%, 0); visibility: visible; } 42 | to { transform: translate3d(0, 0, 0); } 43 | } 44 | @keyframes slideOutLeft { 45 | from { transform: translate3d(0, 0, 0); } 46 | to { visibility: hidden; transform: translate3d(-100%, 0, 0); } 47 | } 48 | @keyframes slideOutRight { 49 | from { transform: translate3d(0, 0, 0); } 50 | to { visibility: hidden; transform: translate3d(100%, 0, 0); } 51 | } 52 | @keyframes slideOutUp { 53 | from { transform: translate3d(0, 0, 0); } 54 | to { visibility: hidden; transform: translate3d(0, -100%, 0); } 55 | } 56 | @keyframes rotate { 57 | from { transform: rotate(0deg); } 58 | to { transform: rotate(360deg); } 59 | } 60 | @keyframes pulse { 61 | from { transform: scale3d(1, 1, 1); } 62 | 50% { transform: scale3d(1.03, 1.03, 1.03); } 63 | to { transform: scale3d(1, 1, 1); } 64 | } 65 | @keyframes shake { 66 | 15% { transform: translateX(0.5rem); } 67 | 30% { transform: translateX(-0.4rem); } 68 | 45% { transform: translateX(0.3rem); } 69 | 60% { transform: translateX(-0.2rem); } 70 | 75% { transform: translateX(0.1rem); } 71 | 90% { transform: translateX(0); } 72 | 90% { transform: translateX(0); } 73 | } 74 | 75 | .fadeIn { animation: fadeIn 250ms; } 76 | .fadeOut { animation: fadeOut 250ms; } 77 | 78 | .zoomIn { animation: zoomIn 200ms; } 79 | .zoomOut { animation: zoomOut 500ms; } 80 | 81 | .slideInRight { animation: slideInRight 500ms; } 82 | .slideInLeft { animation: slideInLeft 500ms; } 83 | .slideInDown { animation: slideInDown 500ms; } 84 | .slideOutLeft { animation: slideOutLeft 500ms; } 85 | .slideOutRight { animation: slideOutRight 500ms; } 86 | .slideOutUp { animation: slideOutUp 500ms; } 87 | 88 | .slideUp { overflow: hidden; animation: slideUp 200ms ease-in-out; } 89 | .slideDown { overflow: hidden; animation: slideDown 80ms ease-in-out; } 90 | 91 | .flipIn { animation: flipIn 250ms cubic-bezier(0.5, -0.5, 0.5, 1.5) } 92 | .flipOut { animation: flipOut 500ms cubic-bezier(0.5, -0.5, 0.5, 1.5) } 93 | 94 | .rotate { animation: rotate 500ms; } 95 | .pulse { animation: pulse 250ms 2; } 96 | .shake { animation: shake 500ms; } -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_buttons.scss: -------------------------------------------------------------------------------- 1 | button, 2 | .button { 3 | font-family: $text-font-family; 4 | font-size: $button-font-size; 5 | color: $color-button-primary-text; 6 | background-color: $color-button-primary; 7 | border-radius: $button-border-radius; 8 | min-height: $button-height; 9 | padding: $button-padding-tb $button-padding-rl; 10 | font-weight: $button-font-weight; 11 | text-decoration: none; 12 | cursor: pointer; 13 | display: inline-block; 14 | line-height: $button-base-line; 15 | border: 1px solid transparent; 16 | vertical-align: middle; 17 | -webkit-appearance: none; 18 | 19 | & i { 20 | position: relative; 21 | top: 1px; 22 | margin: 0 2px; 23 | } 24 | } 25 | 26 | input[type="submit"] { 27 | width: auto; 28 | } 29 | 30 | button:hover, 31 | .button:hover { 32 | outline: none; 33 | text-decoration: none; 34 | color: $color-button-primary-text; 35 | background-color: lighten($color-button-primary, 10%); 36 | } 37 | 38 | // Disabled 39 | .button:disabled, 40 | .button.disabled { 41 | cursor: default; 42 | font-style: normal; 43 | color: rgba($color-button-primary-text, .7); 44 | background-color: rgba($color-button-primary, .7); 45 | } 46 | 47 | // Size 48 | .button.small { 49 | font-size: $button-font-size-small; 50 | line-height: $button-font-size-small + 2px; 51 | min-height: $button-height-small; 52 | padding: $button-padding-small-tb $button-padding-small-rl; 53 | border-radius: $button-border-radius; 54 | } 55 | 56 | .button.big { 57 | font-size: $button-font-size-big; 58 | line-height: $button-font-size-big + 2px; 59 | min-height: $button-height-big; 60 | padding: $button-padding-big-tb $button-padding-big-rl; 61 | border-radius: $button-border-radius; 62 | } 63 | 64 | .button.large { 65 | font-size: $button-font-size-large; 66 | line-height: $button-font-size-large + 2px; 67 | min-height: $button-height-large; 68 | padding: $button-padding-large-tb $button-padding-large-rl; 69 | border-radius: $button-border-radius; 70 | } 71 | 72 | // Outline 73 | .button.outline { 74 | background: none; 75 | border-width: 2px; 76 | border-color: $color-button-primary; 77 | color: $color-button-primary; 78 | 79 | &:hover { 80 | background: none; 81 | color: rgba($color-button-primary, .6); 82 | border-color: rgba($color-button-primary, .5); 83 | } 84 | &:disabled, 85 | &.disabled { 86 | background: none; 87 | color: rgba($color-button-primary, .7); 88 | border-color: rgba($color-button-primary, .5); 89 | } 90 | } 91 | 92 | // White 93 | .button.inverted { 94 | @include button(#000, #fff); 95 | 96 | &:hover { 97 | opacity: .7; 98 | } 99 | } 100 | 101 | // Round 102 | .button.round { 103 | border-radius: $button-height-large; 104 | } 105 | 106 | // Raised 107 | .button.raised { 108 | box-shadow: 0 1px 3px rgba(0, 0, 0, .3); 109 | } 110 | 111 | // Upper 112 | .button.upper { 113 | text-transform: uppercase; 114 | letter-spacing: .04em; 115 | font-size: $button-font-size-small; 116 | 117 | &.small { 118 | font-size: $button-font-size-smaller; 119 | } 120 | &.big { 121 | font-size: $button-font-size-small; 122 | } 123 | &.large { 124 | font-size: $button-font-size; 125 | } 126 | } 127 | 128 | // Secondary 129 | .button.secondary { 130 | @include button($color-button-secondary-text, $color-button-secondary); 131 | } 132 | -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_icons.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Kube'; 3 | src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfgAAAC8AAAAYGNtYXAXVtKOAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZsMn2SAAAAF4AAADeGhlYWQMP9EUAAAE8AAAADZoaGVhB8IDzQAABSgAAAAkaG10eCYABd4AAAVMAAAAMGxvY2EFWASuAAAFfAAAABptYXhwABcAmwAABZgAAAAgbmFtZfMJxocAAAW4AAABYnBvc3QAAwAAAAAHHAAAACAAAwPHAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBwPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qf//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAAKAAAAAAQAA8AADwAUACQANABEAFYAaAB4AIgAmAAAEyIGFREUFjMhMjY1ETQmIwUhESEREzgBMSIGFRQWMzI2NTQmIzM4ATEiBhUUFjMyNjU0JiMzOAExIgYVFBYzMjY1NCYjATIWHQEUBiMiJj0BNDYzOAExITIWHQEUBiMiJj0BNDYzOAExATgBMSIGFRQWMzI2NTQmIzM4ATEiBhUUFjMyNjU0JiMzOAExIgYVFBYzMjY1NCYjwFBwcFACgFBwcFD9IQM+/MKrHioqHh4qKh70HioqHh4qKh70HisrHh0rKh7+MBQdHRQUHBwUAbgUHBwUFB0dFP4wHioqHh4qKh70HioqHh4qKh70HisrHh0rKh4DYHBQ/iBQcHBQAeBQcF/9XwKh/n8qHh4qKh4eKioeHioqHh4qKh4eKioeHioCQBwVjhUcHBWOFRwcFY4VHBwVjhUc/rAqHh4qKh4eKioeHioqHh4qKh4eKioeHioAAAABAQAAwAMAAcAACwAAAQcXBycHJzcnNxc3AwDMAjMDAzMCzDTMzAGVqAIrAgIrAqgrqKgAAQGAAEACgAJAAAsAACUnByc3JzcXNxcHFwJVqAIrAgIrAqgrqKhAzAIzAwMzAsw0zMwAAAEBgABAAoACQAALAAABFzcXBxcHJwcnNycBq6gCKwICKwKoK6ioAkDMAjMDAzMCzDTMzAABAQAAwAMAAcAACwAAJTcnNxc3FwcXBycHAQDMAjMDAzMCzDTMzOuoAisCAisCqCuoqAAAAgAP/+UD1AOqAAQACAAAEwEHATcFAScBSwOJPPx3PAOJ/Hc8A4kDqvx3PAOJPDz8dzwDiQAAAAADAIAAgAOAAwAAAwAHAAsAADc1IRUBIRUhESEVIYADAP0AAwD9AAMA/QCAgIABgIABgIAAAgBPAA8DsgNxABgALQAAJQcBDgEjIi4CNTQ+AjMyHgIVFAYHAQEiDgIVFB4CMzI+AjU0LgIjA7JY/t4lWTBBc1YxMVZzQUFzVTIcGQEi/dgxVkAlJUBWMTFWQCUlQFYxZ1gBIRkcMlVzQUFzVjExVnNBMFkm/uACuyVAVjExVkAlJUBWMTFWQCUAAAABAAAAAQAABhlWm18PPPUACwQAAAAAANSQRjkAAAAA1JBGOQAA/+UEAAPAAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAQAAAEAAAAAAAAAAAAAAAAAAAAMBAAAAAAAAAAAAAAAAgAAAAQAAAAEAAEABAABgAQAAYAEAAEABAAADwQAAIAEAABPAAAAAAAKABQAHgDYAPIBDAEmAUABXAF2AbwAAAABAAAADACZAAoAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEABAAAAAEAAAAAAAIABwBFAAEAAAAAAAMABAAtAAEAAAAAAAQABABaAAEAAAAAAAUACwAMAAEAAAAAAAYABAA5AAEAAAAAAAoAGgBmAAMAAQQJAAEACAAEAAMAAQQJAAIADgBMAAMAAQQJAAMACAAxAAMAAQQJAAQACABeAAMAAQQJAAUAFgAXAAMAAQQJAAYACAA9AAMAAQQJAAoANACAS3ViZQBLAHUAYgBlVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwS3ViZQBLAHUAYgBlS3ViZQBLAHUAYgBlUmVndWxhcgBSAGUAZwB1AGwAYQByS3ViZQBLAHUAYgBlRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") format('truetype'); 4 | font-weight: normal; 5 | font-style: normal; 6 | } 7 | 8 | [class^="kube-"], [class*=" kube-"], .close, .caret { 9 | /* use !important to prevent issues with browser extensions that change fonts */ 10 | font-family: 'Kube' !important; 11 | speak: none; 12 | font-style: normal; 13 | font-weight: normal; 14 | font-variant: normal; 15 | text-transform: none; 16 | line-height: 1; 17 | 18 | /* Better Font Rendering =========== */ 19 | -webkit-font-smoothing: antialiased; 20 | -moz-osx-font-smoothing: grayscale; 21 | } 22 | 23 | .kube-calendar:before { 24 | content: "\e900"; 25 | } 26 | .caret.down:before, 27 | .kube-caret-down:before { 28 | content: "\e901"; 29 | } 30 | .caret.left:before, 31 | .kube-caret-left:before { 32 | content: "\e902"; 33 | } 34 | .caret.right:before, 35 | .kube-caret-right:before { 36 | content: "\e903"; 37 | } 38 | .caret.up:before, 39 | .kube-caret-up:before { 40 | content: "\e904"; 41 | } 42 | .close:before, 43 | .kube-close:before { 44 | content: "\e905"; 45 | } 46 | .kube-menu:before { 47 | content: "\e906"; 48 | } 49 | .kube-search:before { 50 | content: "\e907"; 51 | } -------------------------------------------------------------------------------- /themes/gsoc/src/sass/components/_layout.scss: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 0; 3 | margin: 0; 4 | -webkit-font-smoothing: antialiased; 5 | -moz-osx-font-smoothing: grayscale; 6 | //line-height: $global-lineheight; 7 | color: $color-text; 8 | background: $global-background; 9 | scroll-behavior: smooth; 10 | //border-top: 3px solid $theme-color; 11 | 12 | display: flex; 13 | flex-direction: column; 14 | min-height: 100vh; 15 | } 16 | 17 | .header { 18 | display: block; 19 | width: 100%; 20 | height: 126px; 21 | margin-bottom: 30px; 22 | overflow: hidden; 23 | background: #3a7bd5; /* fallback for old browsers */ 24 | background: -webkit-linear-gradient(to right, #3a6073, #3a7bd5); /* Chrome 10-25, Safari 5.1-6 */ 25 | background: linear-gradient(to right, #3a6073, #3a7bd5); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ 26 | background-color: #333; 27 | background-position: bottom; 28 | position: relative; 29 | 30 | @media (max-width: $sm) { 31 | height: 76px; 32 | margin-bottom: 30px; 33 | background-position: top; 34 | } 35 | 36 | a { 37 | font-family: 'Helvetica Neue', 'Enriqueta', georgia, times, sans-serif; 38 | text-decoration: underline; 39 | border: none; 40 | color: #FFFFFF; 41 | 42 | } 43 | 44 | h1 { 45 | position: absolute; 46 | font-size: 2.5em; 47 | left: 30px; 48 | top: 26px; 49 | margin: 0; 50 | padding: 0; 51 | color: $color-white; 52 | 53 | @media (max-width: $sm) { 54 | font-size: 1.5em; 55 | left: 30px; 56 | top: 5px; 57 | } 58 | } 59 | 60 | h2 { 61 | color: #DDDDDD; 62 | position: absolute; 63 | font-size: 1.5em; 64 | left: 30px; 65 | top: 64px; 66 | margin: 0; 67 | padding: 0; 68 | 69 | @media (max-width: $sm) { 70 | font-size: 1em; 71 | left: 30px; 72 | top: 34px; 73 | } 74 | } 75 | } 76 | 77 | .main-wrapper { 78 | flex: 1 0 auto; 79 | display: flex; 80 | @include clearfix; 81 | 82 | .nav-container { 83 | width: 200px; 84 | order: -1; 85 | overflow: auto; 86 | 87 | 88 | //border-right: 1px solid rgba(0, 0, 0, .1); 89 | 90 | .menu { 91 | display: block; 92 | position: relative; 93 | 94 | .menu-item { 95 | display: block; 96 | width: 100%; 97 | } 98 | } 99 | } 100 | 101 | .middle { 102 | min-width: 0; 103 | width: 100%; 104 | max-width: 740px; 105 | //height: 100%; 106 | padding: 0 15px; 107 | margin: 0; 108 | display: flex; 109 | //flex-grow: 1; 110 | flex: 1; 111 | overflow-x: hidden; 112 | position: relative; 113 | left: 0; 114 | justify-content: flex-start; 115 | align-items: stretch; 116 | flex-wrap: nowrap; 117 | flex-direction: column; 118 | overflow-y: auto; 119 | //padding: $global-container-padding; 120 | } 121 | 122 | .aside-container { 123 | width: 280px; 124 | overflow-y: auto; 125 | padding: 0 15px; 126 | 127 | //padding: 20px; 128 | } 129 | } 130 | 131 | @include breakpoint(sm) { 132 | .main-wrapper{ 133 | flex-direction: column; 134 | 135 | .nav-container, .aside-container{ 136 | width: 100%; 137 | position: relative; 138 | } 139 | } 140 | } 141 | 142 | @include breakpoint(768px) { 143 | .main-wrapper{ 144 | .nav-container { 145 | @supports (position: sticky) { 146 | position: sticky; 147 | top: 20px; 148 | z-index: 1080; 149 | height: calc(100vh - 60px); 150 | } 151 | } 152 | 153 | .aside-container{ 154 | @supports (position: sticky) { 155 | position: sticky; 156 | top: 20px; 157 | height: calc(100vh - 60px); 158 | overflow-y: auto; 159 | } 160 | } 161 | } 162 | } 163 | 164 | .footer { 165 | clear: both; 166 | padding: 40px 30px 20px 30px; 167 | 168 | //line-height: 23px; 169 | //color: #959595; 170 | } 171 | -------------------------------------------------------------------------------- /themes/gsoc/README.md: -------------------------------------------------------------------------------- 1 | # hugo-theme-even 2 | 3 | A super concise theme for Hugo 4 | 5 | > It's a port of the [hexo-theme-even](https://github.com/ahonn/hexo-theme-even) 6 | 7 | [Demo](https://blog.olowolo.com/example-site/) | [中文说明](https://github.com/olOwOlo/hugo-theme-even/blob/master/README-zh.md) 8 | 9 | ## Screenshots 10 | 11 | ![even-showcase](https://raw.githubusercontent.com/olOwOlo/hugo-theme-even/master/images/showcase.png) 12 | 13 | ## Installation 14 | 15 | ```bash 16 | $ git clone https://github.com/olOwOlo/hugo-theme-even themes/even 17 | ``` 18 | 19 | **Important:** Take a look inside the [`exampleSite`](https://github.com/olOwOlo/hugo-theme-even/tree/master/exampleSite) folder of this theme. You'll find a file called [`config.toml`](https://github.com/olOwOlo/hugo-theme-even/blob/master/exampleSite/config.toml). **To use it, copy the [`config.toml`](https://github.com/olOwOlo/hugo-theme-even/blob/master/exampleSite/config.toml) in the root folder of your Hugo site.** Feel free to change it. 20 | 21 | ## Language Support 22 | 23 | > Translations are collected from the [`themes/even/i18n/`](https://github.com/olOwOlo/hugo-theme-even/tree/master/i18n) folder (built into the theme), as well as translations present in `i18n/` at the root of your project. The translations will be merged and take precedence over what is in the theme folder. 24 | 25 | To use the translations, just set a correct value for [`defaultContentLanguage`](https://github.com/olOwOlo/hugo-theme-even/blob/master/exampleSite/config.toml#L3). 26 | 27 | ```toml 28 | defaultContentLanguage = "en" # en / zh-cn / other... 29 | ``` 30 | 31 | Can also support any other languages as well. For example, to support german, create a file `/i18n/de.yaml` in the root folder of your Hugo site. For reference template you can see the [`en.yaml`](https://github.com/olOwOlo/hugo-theme-even/tree/master/i18n/en.yaml) file. 32 | 33 | P.S. In multilingual mode, the language which currently being used to render the website will be used. 34 | 35 | ## Favicon 36 | 37 | In order to customize the favicon you need to place **all** the following files in the `static` folder at the root of your site, which will overwrite those files in the [`themes/even/static/`](https://github.com/olOwOlo/hugo-theme-even/tree/master/static) folder. 38 | 39 | - android-chrome-192x192.png 40 | - android-chrome-512x512.png 41 | - apple-touch-icon.png 42 | - browserconfig.xml 43 | - favicon.ico 44 | - favicon-16x16.png 45 | - favicon-32x32.png 46 | - manifest.json 47 | - mstile-150x150.png 48 | - safari-pinned-tab.svg 49 | 50 | A [favicon generator](https://www.google.com/search?q=favicon+generator) can help you generate these files. 51 | 52 | ## Front Matter 53 | 54 | You can customize something for a single content in the content's front-matter. The [`themes/even/archetypes/default.md`](https://github.com/olOwOlo/hugo-theme-even/tree/master/archetypes/default.md) shows all available params. Copy this file in the `archetypes` folder at the root of your project will be useful. 55 | 56 | ## Shortcodes 57 | 58 | This theme provides `center`,` right`, `left`,` music` four shortcodes, and support `center`,` right`, `left` class for the built-in `figure`. See more information from [there](https://blog.olowolo.com/example-site/post/shortcodes/). 59 | 60 | ## Theme Color 61 | 62 | There are five built-in theme colors ( Default | Mint Green | Cobalt Blue | Hot Pink | Dark Violet ), you can config it by changing the `$theme-color-config` value in [`/src/css/_variable.scss`](https://github.com/olOwOlo/hugo-theme-even/blob/master/src/css/_variables.scss#L5-L8). 63 | 64 | ## Build 65 | 66 | If you changed any file under `/src/`, you need to rebuild. 67 | ```bash 68 | cd ./themes/even/src/ 69 | npm install 70 | npm run build 71 | ``` 72 | 73 | ## Update Theme 74 | 75 | ```bash 76 | cd ./themes/even/ 77 | git pull 78 | ``` 79 | 80 | ## License 81 | 82 | Released under the [MIT](https://github.com/olOwOlo/hugo-theme-even/blob/master/LICENSE.md) License. 83 | 84 | ## Acknowledgements 85 | 86 | - [ananke](https://github.com/budparr/gohugo-theme-ananke) 87 | - [hexo-theme-even](https://github.com/ahonn/hexo-theme-even) 88 | - [hugo-nuo](https://github.com/laozhu/hugo-nuo) 89 | -------------------------------------------------------------------------------- /themes/gsoc/exampleSite/config.toml: -------------------------------------------------------------------------------- 1 | baseURL = "http://localhost:1313/" 2 | languageCode = "en" 3 | defaultContentLanguage = "en" # en / fr / ... (This field determines which i18n file to use) 4 | title = "GSOC template" 5 | enableRobotsTXT = true 6 | enableEmoji = true 7 | theme = "gsoc" 8 | 9 | preserveTaxonomyNames = true 10 | paginate = 10 # how many pages to show 11 | disqusShortname = "" # disqus_shortname 12 | googleAnalytics = "" # UA-XXXXXXXX-X 13 | copyright = "" # default: author.name 14 | 15 | [author] # essential 16 | name = "Maks Surguy" 17 | 18 | [sitemap] # essential 19 | changefreq = "weekly" 20 | priority = 0.5 21 | filename = "sitemap.xml" 22 | 23 | [[menu.main]] # config your menu 24 | name = "Home" 25 | weight = 10 26 | identifier = "home" 27 | url = "/" 28 | [[menu.main]] 29 | name = "Archives" 30 | weight = 20 31 | identifier = "archives" 32 | url = "/post/" 33 | [[menu.main]] 34 | name = "Tags" 35 | weight = 30 36 | identifier = "tags" 37 | url = "/tags/" 38 | [[menu.main]] 39 | name = "Categories" 40 | weight = 40 41 | identifier = "categories" 42 | url = "/categories/" 43 | 44 | [params] 45 | debug = false # If true, load `eruda.min.js`. See https://github.com/liriliri/eruda 46 | 47 | since = "2018" # Site creation date 48 | 49 | # site info (optional) 50 | logoTitle = "GSoC" # default: the title value 51 | keywords = ["gsoc", "raspberry pi"] 52 | description = "GSOC 2018 for Processing on Raspberry Pi" 53 | 54 | # paginate of archives, tags and categories 55 | archivePaginate = 5 56 | 57 | # The date format to use; for a list of valid formats, see https://gohugo.io/functions/format/ 58 | dateFormatToUse = "2006-01-02" 59 | 60 | # show word count and read time ? 61 | moreMeta = false 62 | 63 | # Some global options, you can also close or open something in front matter for a single post, see more information from `archetypes/default.md`. 64 | toc = true 65 | autoCollapseToc = false # Auto expand and collapse toc 66 | fancybox = true # see https://github.com/fancyapps/fancybox 67 | 68 | postMetaInFooter = true # contain author, lastMod, markdown link, license 69 | linkToMarkDown = false # Only effective when hugo will output .md files 70 | contentCopyright = '' # e.g. 'CC BY-NC-ND 4.0' 71 | 72 | google_verification = "" # Google_Verification 73 | 74 | # Link custom CSS and JS assets 75 | # (relative to /static/css and /static/js respectively) 76 | customCSS = [] 77 | customJS = [] 78 | 79 | [params.publicCDN] # load these files from public cdn 80 | enable = false 81 | jquery = '' 82 | slideout = '' 83 | fancyboxJs = '' 84 | fancyboxCss = '' 85 | 86 | [params.social] 87 | a-email = "mailto:your@email.com" 88 | c-twitter = "http://localhost:1313" 89 | d-facebook = "http://localhost:1313" 90 | f-google = "http://localhost:1313" 91 | g-github = "http://localhost:1313" 92 | 93 | # Uncomment these options to make hugo output .md files. 94 | #[mediaTypes] 95 | # [mediaTypes."text/plain"] 96 | # suffix = "md" 97 | # 98 | #[outputFormats.MarkDown] 99 | # mediaType = "text/plain" 100 | # isPlainText = true 101 | # isHTML = false 102 | # 103 | #[outputs] 104 | # home = ["HTML", "RSS"] 105 | # page = ["HTML", "MarkDown"] 106 | # section = ["HTML", "RSS"] 107 | # taxonomy = ["HTML", "RSS"] 108 | # taxonomyTerm = ["HTML"] 109 | -------------------------------------------------------------------------------- /docs/sitemap.xsl: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | XML Sitemap 12 | 13 | 65 | 66 | 67 |
68 |

XML Sitemap

69 |

70 | This is a sitemap generated by Hugo to allow search engines to discover this blog's content. 71 |

72 |

73 | The xsl style copy from Ghost. 74 |

75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 97 | 100 | 103 | 106 | 107 | 108 | 109 |
URL ( total)PrioCh. Freq.Last Modified
90 | 91 | 92 | 93 | 94 | 95 | 96 | 98 | 99 | 101 | 102 | 104 | 105 |
110 |
111 | 112 | 113 | 114 |
115 |
-------------------------------------------------------------------------------- /themes/gsoc/static/sitemap.xsl: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | XML Sitemap 12 | 13 | 65 | 66 | 67 |
68 |

XML Sitemap

69 |

70 | This is a sitemap generated by Hugo to allow search engines to discover this blog's content. 71 |

72 |

73 | The xsl style copy from Ghost. 74 |

75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 97 | 100 | 103 | 106 | 107 | 108 | 109 |
URL ( total)PrioCh. Freq.Last Modified
90 | 91 | 92 | 93 | 94 | 95 | 96 | 98 | 99 | 101 | 102 | 104 | 105 |
110 |
111 | 112 | 113 | 114 |
115 |
-------------------------------------------------------------------------------- /docs/result/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Results - Google Summer of Code 2018 submission 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 84 | 85 |
86 |
87 |
88 |
89 | 90 |
91 |
92 |
93 | 106 | 107 | 108 | 118 | 119 |
120 | 121 |
122 | 125 |
126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /docs/process/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Process - Google Summer of Code 2018 submission 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 84 | 85 |
86 |
87 |
88 |
89 | 90 | 91 |

What process looked like

92 | 93 |
94 |
95 |
96 | 109 | 110 | 111 | 125 | 126 |
127 | 128 |
129 | 132 |
133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 404 page not found - Google Summer of Code 2018 submission 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 72 | 73 |
74 |
75 | 76 |
77 |

78 |

/* 404 page not found. */

79 | 80 |
81 | 90 | 91 |
92 | 105 | 106 | 107 | 117 | 118 |
119 | 120 |
121 | 124 |
125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | -------------------------------------------------------------------------------- /docs/tags/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Tags - Google Summer of Code 2018 submission 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 74 | 75 |
76 |
77 | 78 | 79 |
80 |
81 | 82 | 1 Tag In Total 83 | 84 |
85 |
86 | 87 | 88 | shortcodes 89 | 1 90 | 91 | 92 |
93 |
94 | 95 | 96 |
97 | 110 | 111 | 112 | 122 | 123 |
124 | 125 |
126 | 129 |
130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /docs/categories/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Categories - Google Summer of Code 2018 submission 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 74 | 75 |
76 |
77 | 78 | 79 |
80 |
81 | 82 | 1 Category In Total 83 | 84 |
85 |
86 | 87 | 88 | shortcodes 89 | 1 90 | 91 | 92 |
93 |
94 | 95 | 96 |
97 | 110 | 111 | 112 | 122 | 123 |
124 | 125 |
126 | 129 |
130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /docs/lib/lazyload/lazyload.min.js: -------------------------------------------------------------------------------- 1 | var _extends=Object.assign||function(e){for(var t=1;t=o(e)+n+e.offsetHeight},a=function(e,t,n){return(t===window?window.pageXOffset:s(t))>=s(e)+n+e.offsetWidth},c=function(e,t,n){return!(i(e,t,n)||l(e,t,n)||r(e,t,n)||a(e,t,n))},u=function(e,t){var n,o=new e(t);try{n=new CustomEvent("LazyLoad::Initialized",{detail:{instance:o}})}catch(e){(n=document.createEvent("CustomEvent")).initCustomEvent("LazyLoad::Initialized",!1,!1,{instance:o})}window.dispatchEvent(n)},d=function(e,t){return e.getAttribute("data-"+t)},h=function(e,t,n){return e.setAttribute("data-"+t,n)},f=function(e,t){var n=e.parentNode;if(!n||"PICTURE"===n.tagName)for(var o=0;o0;)e.splice(o.pop(),1)},_startScrollHandler:function(){this._isHandlingScroll||(this._isHandlingScroll=!0,this._settings.container.addEventListener("scroll",this._boundHandleScroll))},_stopScrollHandler:function(){this._isHandlingScroll&&(this._isHandlingScroll=!1,this._settings.container.removeEventListener("scroll",this._boundHandleScroll))},handleScroll:function(){var e=this._settings.throttle;if(0!==e){var t=Date.now(),n=e-(t-this._previousLoopTime);n<=0||n>e?(this._loopTimeout&&(clearTimeout(this._loopTimeout),this._loopTimeout=null),this._previousLoopTime=t,this._loopThroughElements()):this._loopTimeout||(this._loopTimeout=setTimeout(function(){this._previousLoopTime=Date.now(),this._loopTimeout=null,this._loopThroughElements()}.bind(this),n))}else this._loopThroughElements()},update:function(){this._elements=Array.prototype.slice.call(this._queryOriginNode.querySelectorAll(this._settings.elements_selector)),this._purgeElements(),this._loopThroughElements(),this._startScrollHandler()},destroy:function(){window.removeEventListener("resize",this._boundHandleScroll),this._loopTimeout&&(clearTimeout(this._loopTimeout),this._loopTimeout=null),this._stopScrollHandler(),this._elements=null,this._queryOriginNode=null,this._settings=null}};var b=window.lazyLoadOptions;return p&&b&&function(e,t){var n=t.length;if(n)for(var o=0;o=o(e)+n+e.offsetHeight},a=function(e,t,n){return(t===window?window.pageXOffset:s(t))>=s(e)+n+e.offsetWidth},c=function(e,t,n){return!(i(e,t,n)||l(e,t,n)||r(e,t,n)||a(e,t,n))},u=function(e,t){var n,o=new e(t);try{n=new CustomEvent("LazyLoad::Initialized",{detail:{instance:o}})}catch(e){(n=document.createEvent("CustomEvent")).initCustomEvent("LazyLoad::Initialized",!1,!1,{instance:o})}window.dispatchEvent(n)},d=function(e,t){return e.getAttribute("data-"+t)},h=function(e,t,n){return e.setAttribute("data-"+t,n)},f=function(e,t){var n=e.parentNode;if(!n||"PICTURE"===n.tagName)for(var o=0;o0;)e.splice(o.pop(),1)},_startScrollHandler:function(){this._isHandlingScroll||(this._isHandlingScroll=!0,this._settings.container.addEventListener("scroll",this._boundHandleScroll))},_stopScrollHandler:function(){this._isHandlingScroll&&(this._isHandlingScroll=!1,this._settings.container.removeEventListener("scroll",this._boundHandleScroll))},handleScroll:function(){var e=this._settings.throttle;if(0!==e){var t=Date.now(),n=e-(t-this._previousLoopTime);n<=0||n>e?(this._loopTimeout&&(clearTimeout(this._loopTimeout),this._loopTimeout=null),this._previousLoopTime=t,this._loopThroughElements()):this._loopTimeout||(this._loopTimeout=setTimeout(function(){this._previousLoopTime=Date.now(),this._loopTimeout=null,this._loopThroughElements()}.bind(this),n))}else this._loopThroughElements()},update:function(){this._elements=Array.prototype.slice.call(this._queryOriginNode.querySelectorAll(this._settings.elements_selector)),this._purgeElements(),this._loopThroughElements(),this._startScrollHandler()},destroy:function(){window.removeEventListener("resize",this._boundHandleScroll),this._loopTimeout&&(clearTimeout(this._loopTimeout),this._loopTimeout=null),this._stopScrollHandler(),this._elements=null,this._queryOriginNode=null,this._settings=null}};var b=window.lazyLoadOptions;return p&&b&&function(e,t){var n=t.length;if(n)for(var o=0;o 2 | 3 | 4 | 5 | 6 | Shortcodes · Google Summer of Code 2018 submission 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 74 | 75 |
76 |
77 | 78 | 79 |
80 | 81 | 82 |
83 |

Shortcodes

84 |
85 | 86 | 87 | 88 | 89 |
90 | 91 | 2016-08-30 92 | 93 | 94 | 95 | Shortcodes 96 | 97 | 98 |
99 | 100 |
101 | 102 | 106 | 107 |
108 | 121 | 122 | 123 | 133 | 134 |
135 | 136 |
137 | 140 |
141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | --------------------------------------------------------------------------------