1316 lines
		
	
	
		
			40 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			1316 lines
		
	
	
		
			40 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| {
 | |
|   authors: {
 | |
|     robert_mcgovern: {
 | |
|       name: 'Robert McGovern',
 | |
|       web: 'https://tarasis.net',
 | |
|       email: 'rob@tarasis.net',
 | |
|       bio: '',
 | |
|       avatar: 'bio-photo-2.jpg',
 | |
|       twitter: 'tarasis'
 | |
|     }
 | |
|   },
 | |
|   navigation: { main: [ [Object], [Object], [Object], [Object] ] },
 | |
|   site: {
 | |
|     theme: 'minimal-mistakes-jekyll',
 | |
|     minimal_mistakes_skin: 'neon',
 | |
|     locale: 'en-US',
 | |
|     title: 'TDN: RMCG',
 | |
|     title_separator: '-',
 | |
|     name: 'Robert McGovern',
 | |
|     description: 'Random Things',
 | |
|     url: 'https://tarasis.net',
 | |
|     baseurl: '',
 | |
|     repository: null,
 | |
|     teaser: null,
 | |
|     logo: '/assets/images/apple-touch-icon.png',
 | |
|     masthead_title: '',
 | |
|     subtitle: '👨💻 🚶♂️ 💭 🤯',
 | |
|     breadcrumbs: false,
 | |
|     breadcrumb_home_label: 'Home',
 | |
|     breadcrumb_separator: '>',
 | |
|     words_per_minute: 200,
 | |
|     head_scripts: [ '/assets/js/progress.js', '/assets/js/scroll-to-top.js' ],
 | |
|     comments: {
 | |
|       provider: 'disqus',
 | |
|       disqus: [Object],
 | |
|       discourse: [Object],
 | |
|       facebook: [Object],
 | |
|       utterances: [Object]
 | |
|     },
 | |
|     staticman: {
 | |
|       allowedFields: [Array],
 | |
|       branch: null,
 | |
|       commitMessage: 'New comment by {fields.name}',
 | |
|       filename: 'comment-{@timestamp}',
 | |
|       format: 'yml',
 | |
|       moderation: true,
 | |
|       path: '_data/comments/{options.slug}',
 | |
|       requiredFields: [Array],
 | |
|       transforms: [Object],
 | |
|       generatedFields: [Object],
 | |
|       endpoint: null
 | |
|     },
 | |
|     atom_feed: { path: null },
 | |
|     search: true,
 | |
|     search_full_content: true,
 | |
|     search_provider: 'lunr',
 | |
|     algolia: {
 | |
|       application_id: 'F5FF4IDLYX',
 | |
|       index_name: 'tarasis-blog',
 | |
|       search_only_api_key: 'ed656902b5bdd356f885bf9d99635fc1',
 | |
|       powered_by: true
 | |
|     },
 | |
|     google_site_verification: null,
 | |
|     bing_site_verification: null,
 | |
|     yandex_site_verification: null,
 | |
|     twitter: { username: 'tarasis' },
 | |
|     facebook: { username: 'tarasis', app_id: null, publisher: null },
 | |
|     og_image: '/assets/images/bio-photo.jpg',
 | |
|     social: { type: null, name: null, links: null },
 | |
|     analytics: { provider: false, google: [Object] },
 | |
|     author: {
 | |
|       name: 'Robert McGovern',
 | |
|       avatar: '/assets/images/bio-photo.jpg',
 | |
|       bio: 'Wannabe field researcher for the Hitchhikers Guide to the Galaxy',
 | |
|       location: 'ZZ9 Plural Z Alpha',
 | |
|       links: [Array]
 | |
|     },
 | |
|     footer: { links: [Array] },
 | |
|     include: [ '.htaccess', '_pages' ],
 | |
|     exclude: [
 | |
|       '*.sublime-project', '*.sublime-workspace',
 | |
|       'vendor',            '.asset-cache',
 | |
|       '.bundle',           '.jekyll-assets-cache',
 | |
|       '.jekyll-cache',     '.sass-cache',
 | |
|       'assets/js/plugins', 'assets/js/_main.js',
 | |
|       'assets/js/vendor',  'Capfile',
 | |
|       'CHANGELOG',         'config',
 | |
|       'Gemfile',           'Gruntfile.js',
 | |
|       'gulpfile.js',       'LICENSE',
 | |
|       'log',               'node_modules',
 | |
|       'package.json',      'Rakefile',
 | |
|       'README',            'tmp'
 | |
|     ],
 | |
|     keep_files: [ '.git', '.svn' ],
 | |
|     encoding: 'utf-8',
 | |
|     markdown_ext: 'markdown,mkdown,mkdn,mkd,md',
 | |
|     strict_front_matter: true,
 | |
|     liquid: { error_mode: 'strict' },
 | |
|     markdown: 'kramdown',
 | |
|     highlighter: 'rouge',
 | |
|     lsi: false,
 | |
|     excerpt_separator: '<!--more-->',
 | |
|     incremental: false,
 | |
|     kramdown: {
 | |
|       input: 'GFM',
 | |
|       hard_wrap: false,
 | |
|       auto_ids: true,
 | |
|       footnote_nr: 1,
 | |
|       entity_output: 'as_char',
 | |
|       toc_levels: '1..6',
 | |
|       smart_quotes: 'lsquo,rsquo,ldquo,rdquo',
 | |
|       enable_coderay: false
 | |
|     },
 | |
|     sass: { sass_dir: '_sass', style: 'compressed' },
 | |
|     permalink: '/:year/:month/:day/:title/',
 | |
|     paginate: 10,
 | |
|     paginate_path: '/page:num/',
 | |
|     timezone: null,
 | |
|     plugins: [
 | |
|       'jekyll-archives',
 | |
|       'jekyll-paginate',
 | |
|       'jekyll-sitemap',
 | |
|       'jekyll-gist',
 | |
|       'jekyll-feed',
 | |
|       'jemoji',
 | |
|       'jekyll-include-cache',
 | |
|       'jekyll-gist'
 | |
|     ],
 | |
|     whitelist: [
 | |
|       'jekyll-archives',
 | |
|       'jekyll-paginate',
 | |
|       'jekyll-sitemap',
 | |
|       'jekyll-gist',
 | |
|       'jekyll-feed',
 | |
|       'jemoji',
 | |
|       'jekyll-include-cache',
 | |
|       'jekyll-gist'
 | |
|     ],
 | |
|     category_archive: { type: 'liquid', path: '/categories/' },
 | |
|     tag_archive: { type: 'liquid', path: '/tags/' },
 | |
|     compress_html: { clippings: 'all', ignore: [Object] },
 | |
|     collections: { recipes: [Object], pets: [Object], portfolio: [Object] },
 | |
|     defaults: { posts: [Object], pages: [Object], recipies: [Object] },
 | |
|     post_ext: 'markdown',
 | |
|     page_ext: 'html',
 | |
|     post_layout: 'single',
 | |
|     page_layout: 'page',
 | |
|     titlecase: true
 | |
|   },
 | |
|   eleventy: {
 | |
|     version: '2.0.0',
 | |
|     generator: 'Eleventy v2.0.0',
 | |
|     env: {
 | |
|       source: 'cli',
 | |
|       config: '/Users/tarasis/Programming/Websites/tarasis.net/.eleventy.js',
 | |
|       root: '/Users/tarasis/Programming/Websites/tarasis.net',
 | |
|       isServerless: false
 | |
|     }
 | |
|   },
 | |
|   pkg: {
 | |
|     name: 'tarasis.net',
 | |
|     version: '2.0.0',
 | |
|     description: 'Second generation of site using 11ty for building but using Jekyll theme Minimal Mistakes (with mods to make it work)',
 | |
|     main: 'index.js',
 | |
|     scripts: {
 | |
|       'watch:sass': 'sass --watch src/_sass/**/*.scss dist/assets/styles/minimal-mistakes.css',
 | |
|       'build:sass': 'sass --style=compressed src/_sass/minimal-mistakes.scss dist/assets/styles/minimal-mistakes.css',
 | |
|       'build:mysass': 'sass  --style=compressed src/assets/css/main.scss dist/assets/css/main.css',
 | |
|       'watch:eleventy': 'eleventy --serve',
 | |
|       'build:eleventy': 'eleventy',
 | |
|       start: 'npm-run-all build:sass --parallel watch:*',
 | |
|       build: 'npm-run-all build:*',
 | |
|       debug: 'DEBUG=Eleventy:* eleventy'
 | |
|     },
 | |
|     repository: {
 | |
|       type: 'git',
 | |
|       url: 'forgejo@git.tarasis.net:tarasis/tarasis.net.git'
 | |
|     },
 | |
|     keywords: [ 'website', 'blog', '11ty', 'jekyll' ],
 | |
|     author: 'Robert McGovern et all',
 | |
|     license: 'MIT',
 | |
|     devDependencies: { '@11ty/eleventy': '^2.0.0-beta.1' },
 | |
|     dependencies: {
 | |
|       '@11ty/eleventy-navigation': '^0.3.5',
 | |
|       '@11ty/eleventy-plugin-rss': '^1.2.0',
 | |
|       '@11ty/eleventy-plugin-syntaxhighlight': '^4.2.0',
 | |
|       '@11ty/eleventy-upgrade-help': '^2.0.5',
 | |
|       autoprefixer: '^10.4.13',
 | |
|       const: '^1.0.0',
 | |
|       'eleventy-load': '^0.3.1',
 | |
|       'eleventy-load-css': '^0.3.0',
 | |
|       'eleventy-load-file': '^0.1.0',
 | |
|       'eleventy-load-html': '^0.1.1',
 | |
|       'eleventy-load-sass': '^0.1.2',
 | |
|       'eleventy-plugin-description': '^0.1.5',
 | |
|       'eleventy-plugin-toc': '^1.1.5',
 | |
|       'eleventy-xml-plugin': '^0.1.0',
 | |
|       'fs-extra': '^11.1.0',
 | |
|       'js-yaml': '^4.1.0',
 | |
|       'markdown-it': '^13.0.1',
 | |
|       'markdown-it-anchor': '^8.6.6',
 | |
|       'markdown-it-attrs': '^4.1.6',
 | |
|       'markdown-it-container': '^3.0.0',
 | |
|       'markdown-it-fontawesome': '^0.3.0',
 | |
|       'markdown-it-footnote': '^3.0.3',
 | |
|       markdownify: '^0.1.0',
 | |
|       moment: '^2.29.4',
 | |
|       'npm-run-all': '^4.1.5',
 | |
|       postcss: '^8.4.21',
 | |
|       sass: '^1.57.1',
 | |
|       slugify: '^1.6.5'
 | |
|     }
 | |
|   },
 | |
|   layout: 'single',
 | |
|   permalink: "/{{ page.date | date: 'Y/M/D' }}/{{ page.fileSlug }}/",
 | |
|   author_profile: true,
 | |
|   read_time: true,
 | |
|   share: true,
 | |
|   related: true,
 | |
|   title: 'Day 7 - Taking a break',
 | |
|   date: 2019-06-03T20:20:16.000Z,
 | |
|   category: null,
 | |
|   tags: [ 'camino', 'caminodesantiago', 'jakobsweg' ],
 | |
|   page: {
 | |
|     date: 2019-06-03T20:20:16.000Z,
 | |
|     inputPath: './src/_posts/2019-06-03-Day7.md',
 | |
|     fileSlug: 'Day7',
 | |
|     filePathStem: '/_posts/Day7',
 | |
|     outputFileExtension: 'html',
 | |
|     templateSyntax: 'liquid,md',
 | |
|     url: '/2019/6/3/Day7/',
 | |
|     outputPath: 'dist/2019/6/3/Day7/index.html'
 | |
|   },
 | |
|   collections: {
 | |
|     all: [
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object], [Object]
 | |
|     ],
 | |
|     life: [ [Object], [Object], [Object], [Object] ],
 | |
|     camino: [
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object]
 | |
|     ],
 | |
|     caminodesantiago: [
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object]
 | |
|     ],
 | |
|     webdev: [ [Object], [Object], [Object], [Object], [Object], [Object] ],
 | |
|     javascript: [ [Object], [Object] ],
 | |
|     freecodecamp: [ [Object] ],
 | |
|     css: [ [Object], [Object] ],
 | |
|     site: [ [Object], [Object], [Object], [Object] ],
 | |
|     frontendmentor: [ [Object], [Object] ],
 | |
|     programming: [ [Object], [Object], [Object], [Object], [Object] ],
 | |
|     ios: [ [Object], [Object], [Object], [Object] ],
 | |
|     swift: [ [Object], [Object], [Object], [Object] ],
 | |
|     'coding-challenges': [ [Object], [Object], [Object] ],
 | |
|     jakobsweg: [
 | |
|       [Object], [Object],
 | |
|       [Object], [Object],
 | |
|       [Object], [Object],
 | |
|       [Object], [Object],
 | |
|       [Object], [Object],
 | |
|       [Object], [Object],
 | |
|       [Object], [Object],
 | |
|       [Object], [Object],
 | |
|       [Object]
 | |
|     ],
 | |
|     caminofrances: [ [Object] ],
 | |
|     personal: [ [Object], [Object] ],
 | |
|     webdevelopment: [ [Object] ],
 | |
|     learning: [ [Object] ],
 | |
|     html: [ [Object] ],
 | |
|     swiftui: [ [Object] ],
 | |
|     pages: [
 | |
|       [Object], [Object],
 | |
|       [Object], [Object],
 | |
|       [Object], [Object],
 | |
|       [Object], [Object],
 | |
|       [Object], [Object]
 | |
|     ],
 | |
|     posts: [
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object],
 | |
|       [Object], [Object], [Object]
 | |
|     ],
 | |
|     projects: [],
 | |
|     tags: [
 | |
|       'life',              'camino',
 | |
|       'caminodesantiago',  'webdev',
 | |
|       'javascript',        'freecodecamp',
 | |
|       'css',               'site',
 | |
|       'frontendmentor',    'programming',
 | |
|       'ios',               'swift',
 | |
|       'coding-challenges', 'jakobsweg',
 | |
|       'caminofrances',     'personal',
 | |
|       'webdevelopment',    'learning',
 | |
|       'html',              'swiftui'
 | |
|     ]
 | |
|   },
 | |
|   siblings: {
 | |
|     next: {
 | |
|       template: [Template],
 | |
|       data: [Object],
 | |
|       page: [Object],
 | |
|       inputPath: './src/_posts/2019-06-04-Day%208.md',
 | |
|       fileSlug: 'Day%208',
 | |
|       filePathStem: '/_posts/Day%208',
 | |
|       date: 2019-06-04T19:30:37.000Z,
 | |
|       outputPath: 'dist/2019/6/4/Day%208/index.html',
 | |
|       url: '/2019/6/4/Day%208/',
 | |
|       templateContent: [Getter/Setter],
 | |
|       content: [Getter]
 | |
|     },
 | |
|     prev: {
 | |
|       template: [Template],
 | |
|       data: [Object],
 | |
|       page: [Object],
 | |
|       inputPath: './src/_posts/2019-06-02-day6.md',
 | |
|       fileSlug: 'day6',
 | |
|       filePathStem: '/_posts/day6',
 | |
|       date: 2019-06-02T16:49:22.000Z,
 | |
|       outputPath: 'dist/2019/6/2/day6/index.html',
 | |
|       url: '/2019/6/2/day6/',
 | |
|       templateContent: [Getter/Setter],
 | |
|       content: [Getter]
 | |
|     }
 | |
|   }
 | |
| 
 | |
| ----
 | |
| 
 | |
| {
 | |
|   template: Template {
 | |
|     _config: TemplateConfig {
 | |
|       userConfig: [UserConfig],
 | |
|       overrides: {},
 | |
|       projectConfigPaths: [Array],
 | |
|       customRootConfig: null,
 | |
|       rootConfig: [Object],
 | |
|       hasConfigMerged: true,
 | |
|       logger: [ConsoleLogger],
 | |
|       _usesGraph: [GlobalDependencyMap],
 | |
|       config: [Object],
 | |
|       verbose: true
 | |
|     },
 | |
|     inputPath: './src/_drafts/swiftui.md',
 | |
|     inputDir: 'src',
 | |
|     parsed: {
 | |
|       root: '',
 | |
|       dir: './src/_drafts',
 | |
|       base: 'swiftui.md',
 | |
|       ext: '.md',
 | |
|       name: 'swiftui'
 | |
|     },
 | |
|     extraOutputSubdirectory: '',
 | |
|     outputDir: 'dist',
 | |
|     _extensionMap: EleventyExtensionMap {
 | |
|       eleventyConfig: [TemplateConfig],
 | |
|       _config: [Object],
 | |
|       formatKeys: [Array],
 | |
|       unfilteredFormatKeys: [Array],
 | |
|       _extensionToKeyMap: [Object],
 | |
|       validTemplateLanguageKeys: [Array],
 | |
|       passthroughCopyKeys: [],
 | |
|       _spiderJsDepsCache: {},
 | |
|       _engineManager: [TemplateEngineManager]
 | |
|     },
 | |
|     linters: [],
 | |
|     transforms: [],
 | |
|     templateData: TemplateData {
 | |
|       eleventyConfig: [TemplateConfig],
 | |
|       config: [Object],
 | |
|       benchmarks: [Object],
 | |
|       inputDirNeedsCheck: false,
 | |
|       inputDir: 'src',
 | |
|       dataDir: 'src/_data',
 | |
|       rawImports: [Object],
 | |
|       globalData: [Promise],
 | |
|       templateDirectoryData: [Object],
 | |
|       _fsExistsCache: [FSExistsCache],
 | |
|       initialGlobalData: [TemplateDataInitialGlobalData],
 | |
|       _extensionMap: [EleventyExtensionMap],
 | |
|       _env: [Object],
 | |
|       fileSystemSearch: [FileSystemSearch],
 | |
|       configApiGlobalData: [Promise],
 | |
|       pathCache: [Array]
 | |
|     },
 | |
|     isVerbose: true,
 | |
|     isDryRun: false,
 | |
|     writeCount: 0,
 | |
|     fileSlug: TemplateFileSlug {
 | |
|       inputPath: '_drafts/swiftui.md',
 | |
|       cleanInputPath: '_drafts/swiftui.md',
 | |
|       dirs: [Array],
 | |
|       parsed: [Object],
 | |
|       filenameNoExt: 'swiftui'
 | |
|     },
 | |
|     fileSlugStr: 'swiftui',
 | |
|     filePathStem: '/_drafts/swiftui',
 | |
|     outputFormat: 'fs',
 | |
|     behavior: TemplateBehavior {
 | |
|       render: true,
 | |
|       write: true,
 | |
|       outputFormat: 'fs',
 | |
|       config: [Object]
 | |
|     },
 | |
|     serverlessUrls: null,
 | |
|     _logger: ConsoleLogger { _isVerbose: true, outputStream: [Readable] },
 | |
|     _templateRender: TemplateRender {
 | |
|       _config: [Object],
 | |
|       engineNameOrPath: './src/_drafts/swiftui.md',
 | |
|       inputDir: 'src',
 | |
|       includesDir: 'src/_includes',
 | |
|       parseMarkdownWith: 'liquid',
 | |
|       parseHtmlWith: 'liquid',
 | |
|       _extensionMap: [EleventyExtensionMap],
 | |
|       _engineName: 'md',
 | |
|       _engine: [Markdown],
 | |
|       useMarkdown: true
 | |
|     },
 | |
|     inputContent: Promise {
 | |
|       '---\n' +
 | |
|         'layout: single\n' +
 | |
|         'author_profile: true\n' +
 | |
|         'read_time: true\n' +
 | |
|         'share: true\n' +
 | |
|         'related: true\n' +
 | |
|         'title: SwiftUI\n' +
 | |
|         'tags: [swiftui,programming,ios, swift]\n' +
 | |
|         'category: Programming\n' +
 | |
|         '---\n' +
 | |
|         '\n' +
 | |
|         "Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.\n" +
 | |
|         '\n' +
 | |
|         '<!--more-->\n' +
 | |
|         '\n' +
 | |
|         'SwiftUI simplifies designing interfaces\n' +
 | |
|         'Provides a fast means of iterating design\n' +
 | |
|         'Able to quickly see results\n' +
 | |
|         'Easy to mock in data\n' +
 | |
|         '\n' +
 | |
|         'Buggy.\n' +
 | |
|         'Filled 3 bugs so far.\n' +
 | |
|         '\n' +
 | |
|         'Swift:\n' +
 | |
|         '\n' +
 | |
|         '{% highlight swift %}\n' +
 | |
|         '     override public func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {\n' +
 | |
|         '        super.touchesBegan(touches, with: event)\n' +
 | |
|         '        currentTouchPosition = touches.first?.location(in: self)\n' +
 | |
|         '\n' +
 | |
|         '        NSObject.cancelPreviousPerformRequests(withTarget: self)\n' +
 | |
|         '    }\n' +
 | |
|         '{% endhighlight %}\n' +
 | |
|         '\n' +
 | |
|         'Swift:\n' +
 | |
|         '\n' +
 | |
|         '```swift\n' +
 | |
|         'def print_hi(name)\n' +
 | |
|         '  puts "Hi, #{name}"\n' +
 | |
|         'end\n' +
 | |
|         "print_hi('Tom')\n" +
 | |
|         "#=> prints 'Hi, Tom' to STDOUT.\n" +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         'Bash: \n' +
 | |
|         '```bash\n' +
 | |
|         '\n' +
 | |
|         '#!/usr/bin/env bash\n' +
 | |
|         'set -e # halt script on error\n' +
 | |
|         '\n' +
 | |
|         'echo\n' +
 | |
|         'echo "------------------------------------------------------------------------------------------------------------------------"\n' +
 | |
|         'if [ "$TRAVIS_PULL_REQUEST" != "false" -a "$TRAVIS_BRANCH" == "comments" ]; then\n' +
 | |
|         '\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "Building site for pull request for $TRAVIS_BRANCH..."\n' +
 | |
|         '    bundle exec jekyll build --config _config.yml --source . --destination ./docs\n' +
 | |
|         '    echo "Site built into /docs"\n' +
 | |
|         '\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "Proofing links"\n' +
 | |
|         '    bundle exec htmlproofer ./docs --disable-external --allow_hash_href\n' +
 | |
|         '    echo "Proofing links complete"\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "------------------------------------------------------------------------------------------------------------------------"\n' +
 | |
|         '\n' +
 | |
|         '    exit 0\n' +
 | |
|         '\n' +
 | |
|         'elif [ "$TRAVIS_BRANCH" == "master" ]; then\n' +
 | |
|         '\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "Building site for $TRAVIS_BRANCH..."\n' +
 | |
|         '    bundle exec jekyll build --config _config.yml --source . --destination ./docs\n' +
 | |
|         '    echo "Site built into /docs"\n' +
 | |
|         '\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "Proofing links"\n' +
 | |
|         '    bundle exec htmlproofer ./docs --disable-external --allow_hash_href\n' +
 | |
|         '    echo "Proofing links complete"\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "------------------------------------------------------------------------------------------------------------------------"\n' +
 | |
|         '\n' +
 | |
|         '    exit 0\n' +
 | |
|         '\n' +
 | |
|         'else\n' +
 | |
|         '\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "Build not triggered internally"\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "------------------------------------------------------------------------------------------------------------------------"\n' +
 | |
|         '    exit 0\n' +
 | |
|         '\n' +
 | |
|         'fi\n' +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         'Ruby:\n' +
 | |
|         '\n' +
 | |
|         '{% highlight ruby %}\n' +
 | |
|         'require "gem"\n' +
 | |
|         '\n' +
 | |
|         'number = 0\n' +
 | |
|         'regexp = /[abc]/\n' +
 | |
|         '\n' +
 | |
|         '# This is a comment\n' +
 | |
|         'class Person\n' +
 | |
|         '  \n' +
 | |
|         '  attr_accessor :name\n' +
 | |
|         '  \n' +
 | |
|         '  def initialize(attributes = {})\n' +
 | |
|         '    @name = attributes[:name]\n' +
 | |
|         '  end\n' +
 | |
|         '  \n' +
 | |
|         '  def self.greet\n' +
 | |
|         '    "hello"\n' +
 | |
|         '  end\n' +
 | |
|         'end\n' +
 | |
|         '\n' +
 | |
|         'person1 = Person.new(:name => "Chris")\n' +
 | |
|         'puts "#{Person::greet} #{person1.name}\\n"\n' +
 | |
|         '{% endhighlight %}\n' +
 | |
|         '\n' +
 | |
|         'html:\n' +
 | |
|         '\n' +
 | |
|         '```html\n' +
 | |
|         '<!DOCTYPE html>\n' +
 | |
|         '<html>\n' +
 | |
|         '\n' +
 | |
|         '    <head>\n' +
 | |
|         '        <title>Title</title>\n' +
 | |
|         '    </head>\n' +
 | |
|         '\n' +
 | |
|         '    <body>\n' +
 | |
|         '        <h1 id="heading">Heading</h1>\n' +
 | |
|         '        <p class="class">This is an example paragraph.</p>\n' +
 | |
|         '    </body>\n' +
 | |
|         '\n' +
 | |
|         '</html>\n' +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         'css:\n' +
 | |
|         '```css\n' +
 | |
|         '.highlight pre {\n' +
 | |
|         '  width: 100%;\n' +
 | |
|         '}\n' +
 | |
|         '\n' +
 | |
|         '.highlight .hll {\n' +
 | |
|         '  background-color: $base06;\n' +
 | |
|         '}\n' +
 | |
|         '.highlight {\n' +
 | |
|         '  .c {\n' +
 | |
|         '    /* Comment */\n' +
 | |
|         '    color: $base04;\n' +
 | |
|         '  }\n' +
 | |
|         '}\n' +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         'Javascript:\n' +
 | |
|         '\n' +
 | |
|         '```javascript\n' +
 | |
|         '$(document).ready(function() {\n' +
 | |
|         '  // FitVids init\n' +
 | |
|         '  $("#main").fitVids();\n' +
 | |
|         '\n' +
 | |
|         '  // Sticky sidebar\n' +
 | |
|         '  var stickySideBar = function() {\n' +
 | |
|         '    var show =\n' +
 | |
|         '      $(".author__urls-wrapper button").length === 0\n' +
 | |
|         '        ? $(window).width() > 1024 // width should match $large Sass variable\n' +
 | |
|         '        : !$(".author__urls-wrapper button").is(":visible");\n' +
 | |
|         '    if (show) {\n' +
 | |
|         '      // fix\n' +
 | |
|         '      $(".sidebar").addClass("sticky");\n' +
 | |
|         '    } else {\n' +
 | |
|         '      // unfix\n' +
 | |
|         '      $(".sidebar").removeClass("sticky");\n' +
 | |
|         '    }\n' +
 | |
|         '  };\n' +
 | |
|         '}\n' +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         '<p>notice</p>{: .notice} \n' +
 | |
|         '<p>primary</p>{: .notice--primary}\n' +
 | |
|         '<p>info</p>{: .notice--info}\n' +
 | |
|         '<p>warning</p>{: .notice--warning}\n' +
 | |
|         '<p>success</p>{: .notice--success}\n' +
 | |
|         '<p>danger</p>{: .notice--danger}\n' +
 | |
|         '\n' +
 | |
|         '<div class="notice--success" markdown="1">\n' +
 | |
|         '  # Headline for the Notice\n' +
 | |
|         '  <br>\n' +
 | |
|         '  Text for the notice\n' +
 | |
|         '</div>'
 | |
|     },
 | |
|     readingPromise: Promise { [Object] },
 | |
|     _frontMatterDataCache: Promise { [Object] },
 | |
|     _frontMatter: {
 | |
|       content: '\n' +
 | |
|         "Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.\n" +
 | |
|         '\n' +
 | |
|         '<!--more-->\n' +
 | |
|         '\n' +
 | |
|         'SwiftUI simplifies designing interfaces\n' +
 | |
|         'Provides a fast means of iterating design\n' +
 | |
|         'Able to quickly see results\n' +
 | |
|         'Easy to mock in data\n' +
 | |
|         '\n' +
 | |
|         'Buggy.\n' +
 | |
|         'Filled 3 bugs so far.\n' +
 | |
|         '\n' +
 | |
|         'Swift:\n' +
 | |
|         '\n' +
 | |
|         '{% highlight swift %}\n' +
 | |
|         '     override public func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {\n' +
 | |
|         '        super.touchesBegan(touches, with: event)\n' +
 | |
|         '        currentTouchPosition = touches.first?.location(in: self)\n' +
 | |
|         '\n' +
 | |
|         '        NSObject.cancelPreviousPerformRequests(withTarget: self)\n' +
 | |
|         '    }\n' +
 | |
|         '{% endhighlight %}\n' +
 | |
|         '\n' +
 | |
|         'Swift:\n' +
 | |
|         '\n' +
 | |
|         '```swift\n' +
 | |
|         'def print_hi(name)\n' +
 | |
|         '  puts "Hi, #{name}"\n' +
 | |
|         'end\n' +
 | |
|         "print_hi('Tom')\n" +
 | |
|         "#=> prints 'Hi, Tom' to STDOUT.\n" +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         'Bash: \n' +
 | |
|         '```bash\n' +
 | |
|         '\n' +
 | |
|         '#!/usr/bin/env bash\n' +
 | |
|         'set -e # halt script on error\n' +
 | |
|         '\n' +
 | |
|         'echo\n' +
 | |
|         'echo "---------------------------------------------------------------------------------------------------------------------"\n' +
 | |
|         'if [ "$TRAVIS_PULL_REQUEST" != "false" -a "$TRAVIS_BRANCH" == "comments" ]; then\n' +
 | |
|         '\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "Building site for pull request for $TRAVIS_BRANCH..."\n' +
 | |
|         '    bundle exec jekyll build --config _config.yml --source . --destination ./docs\n' +
 | |
|         '    echo "Site built into /docs"\n' +
 | |
|         '\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "Proofing links"\n' +
 | |
|         '    bundle exec htmlproofer ./docs --disable-external --allow_hash_href\n' +
 | |
|         '    echo "Proofing links complete"\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "------------------------------------------------------------------------------------------------------------------------"\n' +
 | |
|         '\n' +
 | |
|         '    exit 0\n' +
 | |
|         '\n' +
 | |
|         'elif [ "$TRAVIS_BRANCH" == "master" ]; then\n' +
 | |
|         '\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "Building site for $TRAVIS_BRANCH..."\n' +
 | |
|         '    bundle exec jekyll build --config _config.yml --source . --destination ./docs\n' +
 | |
|         '    echo "Site built into /docs"\n' +
 | |
|         '\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "Proofing links"\n' +
 | |
|         '    bundle exec htmlproofer ./docs --disable-external --allow_hash_href\n' +
 | |
|         '    echo "Proofing links complete"\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "------------------------------------------------------------------------------------------------------------------------"\n' +
 | |
|         '\n' +
 | |
|         '    exit 0\n' +
 | |
|         '\n' +
 | |
|         'else\n' +
 | |
|         '\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "Build not triggered internally"\n' +
 | |
|         '    echo\n' +
 | |
|         '    echo "------------------------------------------------------------------------------------------------------------------------"\n' +
 | |
|         '    exit 0\n' +
 | |
|         '\n' +
 | |
|         'fi\n' +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         'Ruby:\n' +
 | |
|         '\n' +
 | |
|         '{% highlight ruby %}\n' +
 | |
|         'require "gem"\n' +
 | |
|         '\n' +
 | |
|         'number = 0\n' +
 | |
|         'regexp = /[abc]/\n' +
 | |
|         '\n' +
 | |
|         '# This is a comment\n' +
 | |
|         'class Person\n' +
 | |
|         '  \n' +
 | |
|         '  attr_accessor :name\n' +
 | |
|         '  \n' +
 | |
|         '  def initialize(attributes = {})\n' +
 | |
|         '    @name = attributes[:name]\n' +
 | |
|         '  end\n' +
 | |
|         '  \n' +
 | |
|         '  def self.greet\n' +
 | |
|         '    "hello"\n' +
 | |
|         '  end\n' +
 | |
|         'end\n' +
 | |
|         '\n' +
 | |
|         'person1 = Person.new(:name => "Chris")\n' +
 | |
|         'puts "#{Person::greet} #{person1.name}\\n"\n' +
 | |
|         '{% endhighlight %}\n' +
 | |
|         '\n' +
 | |
|         'html:\n' +
 | |
|         '\n' +
 | |
|         '```html\n' +
 | |
|         '<!DOCTYPE html>\n' +
 | |
|         '<html>\n' +
 | |
|         '\n' +
 | |
|         '    <head>\n' +
 | |
|         '        <title>Title</title>\n' +
 | |
|         '    </head>\n' +
 | |
|         '\n' +
 | |
|         '    <body>\n' +
 | |
|         '        <h1 id="heading">Heading</h1>\n' +
 | |
|         '        <p class="class">This is an example paragraph.</p>\n' +
 | |
|         '    </body>\n' +
 | |
|         '\n' +
 | |
|         '</html>\n' +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         'css:\n' +
 | |
|         '```css\n' +
 | |
|         '.highlight pre {\n' +
 | |
|         '  width: 100%;\n' +
 | |
|         '}\n' +
 | |
|         '\n' +
 | |
|         '.highlight .hll {\n' +
 | |
|         '  background-color: $base06;\n' +
 | |
|         '}\n' +
 | |
|         '.highlight {\n' +
 | |
|         '  .c {\n' +
 | |
|         '    /* Comment */\n' +
 | |
|         '    color: $base04;\n' +
 | |
|         '  }\n' +
 | |
|         '}\n' +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         'Javascript:\n' +
 | |
|         '\n' +
 | |
|         '```javascript\n' +
 | |
|         '$(document).ready(function() {\n' +
 | |
|         '  // FitVids init\n' +
 | |
|         '  $("#main").fitVids();\n' +
 | |
|         '\n' +
 | |
|         '  // Sticky sidebar\n' +
 | |
|         '  var stickySideBar = function() {\n' +
 | |
|         '    var show =\n' +
 | |
|         '      $(".author__urls-wrapper button").length === 0\n' +
 | |
|         '        ? $(window).width() > 1024 // width should match $large Sass variable\n' +
 | |
|         '        : !$(".author__urls-wrapper button").is(":visible");\n' +
 | |
|         '    if (show) {\n' +
 | |
|         '      // fix\n' +
 | |
|         '      $(".sidebar").addClass("sticky");\n' +
 | |
|         '    } else {\n' +
 | |
|         '      // unfix\n' +
 | |
|         '      $(".sidebar").removeClass("sticky");\n' +
 | |
|         '    }\n' +
 | |
|         '  };\n' +
 | |
|         '}\n' +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         '<p>notice</p>{: .notice} \n' +
 | |
|         '<p>primary</p>{: .notice--primary}\n' +
 | |
|         '<p>info</p>{: .notice--info}\n' +
 | |
|         '<p>warning</p>{: .notice--warning}\n' +
 | |
|         '<p>success</p>{: .notice--success}\n' +
 | |
|         '<p>danger</p>{: .notice--danger}\n' +
 | |
|         '\n' +
 | |
|         '<div class="notice--success" markdown="1">\n' +
 | |
|         '  # Headline for the Notice\n' +
 | |
|         '  <br>\n' +
 | |
|         '  Text for the notice\n' +
 | |
|         '</div>',
 | |
|       data: [Object],
 | |
|       isEmpty: false,
 | |
|       excerpt: '\n' +
 | |
|         "Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.\n" +
 | |
|         '\n' +
 | |
|         '<!--more-->\n' +
 | |
|         '\n' +
 | |
|         'SwiftUI simplifies designing interfaces\n' +
 | |
|         'Provides a fast means of iterating design\n' +
 | |
|         'Able to quickly see results\n' +
 | |
|         'Easy to mock in data\n' +
 | |
|         '\n' +
 | |
|         'Buggy.\n' +
 | |
|         'Filled 3 bugs so far.\n' +
 | |
|         '\n' +
 | |
|         'Swift:\n' +
 | |
|         '\n' +
 | |
|         '{% highlight swift %}\n' +
 | |
|         '     override public func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {\n' +
 | |
|         '        super.touchesBegan(touches, with: event)\n' +
 | |
|         '        currentTouchPosition = touches.first?.location(in: self)\n' +
 | |
|         '\n' +
 | |
|         '        NSObject.cancelPreviousPerformRequests(withTarget: self)\n' +
 | |
|         '    }\n' +
 | |
|         '{% endhighlight %}\n' +
 | |
|         '\n' +
 | |
|         'Swift:\n' +
 | |
|         '\n' +
 | |
|         '```swift\n' +
 | |
|         'def print_hi(name)\n' +
 | |
|         '  puts "Hi, #{name}"\n' +
 | |
|         'end\n' +
 | |
|         "print_hi('Tom')\n" +
 | |
|         "#=> prints 'Hi, Tom' to STDOUT.\n" +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         'Bash: \n' +
 | |
|         '```bash\n' +
 | |
|         '\n' +
 | |
|         '#!/usr/bin/env bash\n' +
 | |
|         'set -e # halt script on error\n' +
 | |
|         '\n' +
 | |
|         'echo\n' +
 | |
|         'echo "'
 | |
|     },
 | |
|     _stats: Promise { [Stats] },
 | |
|     _dataCache: {
 | |
|       authors: [Object],
 | |
|       navigation: [Object],
 | |
|       'ui-text': [Object],
 | |
|       site: [Object],
 | |
|       eleventy: [Object],
 | |
|       pkg: [Object],
 | |
|       layout: 'single',
 | |
|       author_profile: true,
 | |
|       read_time: true,
 | |
|       share: true,
 | |
|       related: true,
 | |
|       title: 'SwiftUI',
 | |
|       tags: [Array],
 | |
|       category: 'Programming',
 | |
|       page: [Object],
 | |
|       collections: [Object]
 | |
|     },
 | |
|     _usePermalinkRoot: undefined
 | |
|   },
 | |
|   data: {
 | |
|     authors: { robert_mcgovern: [Object] },
 | |
|     navigation: { main: [Array] },
 | |
|     'ui-text': {
 | |
|       en: [Object],
 | |
|       'en-US': [Object],
 | |
|       'en-CA': [Object],
 | |
|       'en-GB': [Object],
 | |
|       'en-AU': [Object],
 | |
|       es: [Object],
 | |
|       'es-ES': [Object],
 | |
|       'es-CO': [Object],
 | |
|       fr: [Object],
 | |
|       'fr-FR': [Object],
 | |
|       'fr-BE': [Object],
 | |
|       'fr-CH': [Object],
 | |
|       tr: [Object],
 | |
|       'tr-TR': [Object],
 | |
|       pt: [Object],
 | |
|       'pt-PT': [Object],
 | |
|       'pt-BR': [Object],
 | |
|       it: [Object],
 | |
|       'it-IT': [Object],
 | |
|       zh: [Object],
 | |
|       'zh-CN': [Object],
 | |
|       'zh-SG': [Object],
 | |
|       'zh-TW': [Object],
 | |
|       'zh-HK': [Object],
 | |
|       de: [Object],
 | |
|       'de-DE': [Object],
 | |
|       'de-AT': [Object],
 | |
|       'de-CH': [Object],
 | |
|       'de-BE': [Object],
 | |
|       'de-LI': [Object],
 | |
|       'de-LU': [Object],
 | |
|       ne: [Object],
 | |
|       'ne-NP': [Object],
 | |
|       ko: [Object],
 | |
|       'ko-KR': [Object],
 | |
|       ru: [Object],
 | |
|       'ru-RU': [Object],
 | |
|       lt: [Object],
 | |
|       'lt-LT': [Object],
 | |
|       gr: [Object],
 | |
|       'gr-GR': [Object],
 | |
|       sv: [Object],
 | |
|       'sv-SE': [Object],
 | |
|       'sv-FI': [Object],
 | |
|       nl: [Object],
 | |
|       'nl-BE': [Object],
 | |
|       'nl-NL': [Object],
 | |
|       id: [Object],
 | |
|       'id-ID': [Object],
 | |
|       vi: [Object],
 | |
|       'vi-VN': [Object],
 | |
|       da: [Object],
 | |
|       'da-DK': [Object],
 | |
|       pl: [Object],
 | |
|       'pl-PL': [Object],
 | |
|       ja: [Object],
 | |
|       'ja-JP': [Object],
 | |
|       sk: [Object],
 | |
|       'sk-SK': [Object],
 | |
|       hu: [Object],
 | |
|       'hu-HU': [Object],
 | |
|       ro: [Object],
 | |
|       'ro-RO': [Object],
 | |
|       pa: [Object],
 | |
|       'pa-IN': [Object],
 | |
|       fa: [Object],
 | |
|       'fa-IR': [Object],
 | |
|       ml: [Object],
 | |
|       'ml-IN': [Object],
 | |
|       th: [Object],
 | |
|       'th-TH': [Object],
 | |
|       hi: [Object],
 | |
|       'hi-IN': [Object],
 | |
|       ca: [Object],
 | |
|       'ca-ES': [Object],
 | |
|       ga: [Object],
 | |
|       'ga-IE': [Object],
 | |
|       fi: [Object],
 | |
|       my: [Object],
 | |
|       'my-MM': [Object],
 | |
|       no: [Object],
 | |
|       'no-NB': [Object],
 | |
|       'no-NN': [Object],
 | |
|       he: [Object],
 | |
|       'he-IL': [Object],
 | |
|       ar: [Object],
 | |
|       'ar-SD': [Object],
 | |
|       'ar-SA': [Object],
 | |
|       'ar-AE': [Object],
 | |
|       'ar-EG': [Object]
 | |
|     },
 | |
|     site: {
 | |
|       theme: 'minimal-mistakes-jekyll',
 | |
|       minimal_mistakes_skin: 'neon',
 | |
|       locale: 'en-US',
 | |
|       title: 'TDN: RMCG',
 | |
|       title_separator: '-',
 | |
|       name: 'Robert McGovern',
 | |
|       description: 'Random Things',
 | |
|       url: 'https://tarasis.net',
 | |
|       baseurl: '',
 | |
|       repository: null,
 | |
|       teaser: null,
 | |
|       logo: '/assets/images/apple-touch-icon.png',
 | |
|       masthead_title: '',
 | |
|       subtitle: '👨💻 🚶♂️ 💭 🤯',
 | |
|       breadcrumbs: false,
 | |
|       breadcrumb_home_label: 'Home',
 | |
|       breadcrumb_separator: '>',
 | |
|       words_per_minute: 200,
 | |
|       head_scripts: [Array],
 | |
|       comments: [Object],
 | |
|       staticman: [Object],
 | |
|       atom_feed: [Object],
 | |
|       search: true,
 | |
|       search_full_content: true,
 | |
|       search_provider: 'lunr',
 | |
|       algolia: [Object],
 | |
|       google_site_verification: null,
 | |
|       bing_site_verification: null,
 | |
|       yandex_site_verification: null,
 | |
|       twitter: [Object],
 | |
|       facebook: [Object],
 | |
|       og_image: '/assets/images/bio-photo.jpg',
 | |
|       social: [Object],
 | |
|       analytics: [Object],
 | |
|       author: [Object],
 | |
|       footer: [Object],
 | |
|       include: [Array],
 | |
|       exclude: [Array],
 | |
|       keep_files: [Array],
 | |
|       encoding: 'utf-8',
 | |
|       markdown_ext: 'markdown,mkdown,mkdn,mkd,md',
 | |
|       strict_front_matter: true,
 | |
|       liquid: [Object],
 | |
|       markdown: 'kramdown',
 | |
|       highlighter: 'rouge',
 | |
|       lsi: false,
 | |
|       excerpt_separator: '<!--more-->',
 | |
|       incremental: false,
 | |
|       kramdown: [Object],
 | |
|       sass: [Object],
 | |
|       permalink: '/:year/:month/:day/:title/',
 | |
|       paginate: 10,
 | |
|       paginate_path: '/page:num/',
 | |
|       timezone: null,
 | |
|       plugins: [Array],
 | |
|       whitelist: [Array],
 | |
|       category_archive: [Object],
 | |
|       tag_archive: [Object],
 | |
|       compress_html: [Object],
 | |
|       collections: [Object],
 | |
|       defaults: [Object],
 | |
|       post_ext: 'markdown',
 | |
|       page_ext: 'html',
 | |
|       post_layout: 'single',
 | |
|       page_layout: 'page',
 | |
|       titlecase: true
 | |
|     },
 | |
|     eleventy: { version: '2.0.0', generator: 'Eleventy v2.0.0', env: [Object] },
 | |
|     pkg: {
 | |
|       name: 'tarasis.net',
 | |
|       version: '2.0.0',
 | |
|       description: 'Second generation of site using 11ty for building but using Jekyll theme Minimal Mistakes (with mods to make it work)',
 | |
|       main: 'index.js',
 | |
|       scripts: [Object],
 | |
|       repository: [Object],
 | |
|       keywords: [Array],
 | |
|       author: 'Robert McGovern et all',
 | |
|       license: 'MIT',
 | |
|       devDependencies: [Object],
 | |
|       dependencies: [Object]
 | |
|     },
 | |
|     layout: 'single',
 | |
|     author_profile: true,
 | |
|     read_time: true,
 | |
|     share: true,
 | |
|     related: true,
 | |
|     title: 'SwiftUI',
 | |
|     tags: [ 'swiftui', 'programming', 'ios', 'swift' ],
 | |
|     category: 'Programming',
 | |
|     page: {
 | |
|       excerpt: '\n' +
 | |
|         "Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.\n" +
 | |
|         '\n' +
 | |
|         '<!--more-->\n' +
 | |
|         '\n' +
 | |
|         'SwiftUI simplifies designing interfaces\n' +
 | |
|         'Provides a fast means of iterating design\n' +
 | |
|         'Able to quickly see results\n' +
 | |
|         'Easy to mock in data\n' +
 | |
|         '\n' +
 | |
|         'Buggy.\n' +
 | |
|         'Filled 3 bugs so far.\n' +
 | |
|         '\n' +
 | |
|         'Swift:\n' +
 | |
|         '\n' +
 | |
|         '{% highlight swift %}\n' +
 | |
|         '     override public func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {\n' +
 | |
|         '        super.touchesBegan(touches, with: event)\n' +
 | |
|         '        currentTouchPosition = touches.first?.location(in: self)\n' +
 | |
|         '\n' +
 | |
|         '        NSObject.cancelPreviousPerformRequests(withTarget: self)\n' +
 | |
|         '    }\n' +
 | |
|         '{% endhighlight %}\n' +
 | |
|         '\n' +
 | |
|         'Swift:\n' +
 | |
|         '\n' +
 | |
|         '```swift\n' +
 | |
|         'def print_hi(name)\n' +
 | |
|         '  puts "Hi, #{name}"\n' +
 | |
|         'end\n' +
 | |
|         "print_hi('Tom')\n" +
 | |
|         "#=> prints 'Hi, Tom' to STDOUT.\n" +
 | |
|         '```\n' +
 | |
|         '\n' +
 | |
|         'Bash: \n' +
 | |
|         '```bash\n' +
 | |
|         '\n' +
 | |
|         '#!/usr/bin/env bash\n' +
 | |
|         'set -e # halt script on error\n' +
 | |
|         '\n' +
 | |
|         'echo\n' +
 | |
|         'echo "',
 | |
|       date: 2020-03-05T11:10:48.355Z,
 | |
|       inputPath: './src/_drafts/swiftui.md',
 | |
|       fileSlug: 'swiftui',
 | |
|       filePathStem: '/_drafts/swiftui',
 | |
|       outputFileExtension: 'html',
 | |
|       templateSyntax: 'liquid,md',
 | |
|       url: '/_drafts/swiftui/',
 | |
|       outputPath: 'dist/_drafts/swiftui/index.html'
 | |
|     },
 | |
|     collections: {
 | |
|       all: [Array],
 | |
|       life: [Array],
 | |
|       camino: [Array],
 | |
|       caminodesantiago: [Array],
 | |
|       webdev: [Array],
 | |
|       site: [Array],
 | |
|       frontendmentor: [Array],
 | |
|       javascript: [Array],
 | |
|       freecodecamp: [Array],
 | |
|       programming: [Array],
 | |
|       ios: [Array],
 | |
|       swift: [Array],
 | |
|       'coding-challenges': [Array],
 | |
|       jakobsweg: [Array],
 | |
|       css: [Array],
 | |
|       caminofrances: [Array],
 | |
|       personal: [Array],
 | |
|       webdevelopment: [Array],
 | |
|       learning: [Array],
 | |
|       html: [Array],
 | |
|       swiftui: [Array],
 | |
|       pages: [Array],
 | |
|       posts: [Array],
 | |
|       projects: [],
 | |
|       tags: [Array]
 | |
|     }
 | |
|   },
 | |
|   page: {
 | |
|     excerpt: '\n' +
 | |
|       "Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.\n" +
 | |
|       '\n' +
 | |
|       '<!--more-->\n' +
 | |
|       '\n' +
 | |
|       'SwiftUI simplifies designing interfaces\n' +
 | |
|       'Provides a fast means of iterating design\n' +
 | |
|       'Able to quickly see results\n' +
 | |
|       'Easy to mock in data\n' +
 | |
|       '\n' +
 | |
|       'Buggy.\n' +
 | |
|       'Filled 3 bugs so far.\n' +
 | |
|       '\n' +
 | |
|       'Swift:\n' +
 | |
|       '\n' +
 | |
|       '{% highlight swift %}\n' +
 | |
|       '     override public func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {\n' +
 | |
|       '        super.touchesBegan(touches, with: event)\n' +
 | |
|       '        currentTouchPosition = touches.first?.location(in: self)\n' +
 | |
|       '\n' +
 | |
|       '        NSObject.cancelPreviousPerformRequests(withTarget: self)\n' +
 | |
|       '    }\n' +
 | |
|       '{% endhighlight %}\n' +
 | |
|       '\n' +
 | |
|       'Swift:\n' +
 | |
|       '\n' +
 | |
|       '```swift\n' +
 | |
|       'def print_hi(name)\n' +
 | |
|       '  puts "Hi, #{name}"\n' +
 | |
|       'end\n' +
 | |
|       "print_hi('Tom')\n" +
 | |
|       "#=> prints 'Hi, Tom' to STDOUT.\n" +
 | |
|       '```\n' +
 | |
|       '\n' +
 | |
|       'Bash: \n' +
 | |
|       '```bash\n' +
 | |
|       '\n' +
 | |
|       '#!/usr/bin/env bash\n' +
 | |
|       'set -e # halt script on error\n' +
 | |
|       '\n' +
 | |
|       'echo\n' +
 | |
|       'echo "',
 | |
|     date: 2020-03-05T11:10:48.355Z,
 | |
|     inputPath: './src/_drafts/swiftui.md',
 | |
|     fileSlug: 'swiftui',
 | |
|     filePathStem: '/_drafts/swiftui',
 | |
|     outputFileExtension: 'html',
 | |
|     templateSyntax: 'liquid,md',
 | |
|     url: '/_drafts/swiftui/',
 | |
|     outputPath: 'dist/_drafts/swiftui/index.html'
 | |
|   },
 | |
|   inputPath: './src/_drafts/swiftui.md',
 | |
|   fileSlug: 'swiftui',
 | |
|   filePathStem: '/_drafts/swiftui',
 | |
|   date: 2020-03-05T11:10:48.355Z,
 | |
|   outputPath: 'dist/_drafts/swiftui/index.html',
 | |
|   url: '/_drafts/swiftui/',
 | |
|   templateContent: [Getter/Setter],
 | |
|   content: [Getter]
 | |
| }
 | |
| 
 | |
| ---
 | |
| 
 | |
| content of object in collections.all
 | |
| 
 | |
| {
 | |
|     content: [Getter],
 | |
|     data: {
 | |
|       'ui-text': [Object],
 | |
|       authors: [Object],
 | |
|       category: 'coding-challenges',
 | |
|       collections: [Object],
 | |
|       eleventy: [Object],
 | |
|       navigation: [Object],
 | |
|       page: [Object],
 | |
|       pkg: [Object],
 | |
|       site: [Object],
 | |
|       tags: [Array],
 | |
|       title: 'Swift Coding Challenge 3 and 4'
 | |
|     },
 | |
|     date: 2020-04-22T22:50:03.539Z,
 | |
|     filePathStem: '/_drafts/swift-coding-challenge-3-and-4',
 | |
|     fileSlug: 'swift-coding-challenge-3-and-4',
 | |
|     inputPath: './src/_drafts/swift-coding-challenge-3-and-4.md',
 | |
|     outputPath: 'dist/_drafts/swift-coding-challenge-3-and-4/index.html',
 | |
|     page: {
 | |
|       date: 2020-04-22T22:50:03.539Z,
 | |
|       filePathStem: '/_drafts/swift-coding-challenge-3-and-4',
 | |
|       fileSlug: 'swift-coding-challenge-3-and-4',
 | |
|       inputPath: './src/_drafts/swift-coding-challenge-3-and-4.md',
 | |
|       outputFileExtension: 'html',
 | |
|       outputPath: 'dist/_drafts/swift-coding-challenge-3-and-4/index.html',
 | |
|       templateSyntax: 'liquid,md',
 | |
|       url: '/_drafts/swift-coding-challenge-3-and-4/'
 | |
|     },
 | |
|     template: Template {
 | |
|       _cacheFinalContent: '
 | |
| Challenge 3
 | |
| 
 | |
| \n' +
 | |
|         '
 | |
| Take two strings, random order of letters and compare if they contain the same letters
 | |
| 
 | |
| \n' +
 | |
|         '
 | |
| This was very quickly done. I remembered about sorted
 | |
| 
 | |
| \n' +
 | |
|         '
 | |
| Challenge 4
 | |
| 
 | |
| \n',
 | |
|       _cacheRenderedContent: '
 | |
| Challenge 3
 | |
| 
 | |
| \n' +
 | |
|         '
 | |
| Take two strings, random order of letters and compare if they contain the same letters
 | |
| 
 | |
| \n' +
 | |
|         '
 | |
| This was very quickly done. I remembered about sorted
 | |
| 
 | |
| \n' +
 | |
|         '
 | |
| Challenge 4
 | |
| 
 | |
| \n',
 | |
|       _config: [TemplateConfig],
 | |
|       _dataCache: [Object],
 | |
|       _extensionMap: [EleventyExtensionMap],
 | |
|       _frontMatter: [Object],
 | |
|       _frontMatterDataCache: [Promise],
 | |
|       _logger: [ConsoleLogger],
 | |
|       _stats: [Promise],
 | |
|       _templateRender: [TemplateRender],
 | |
|       _usePermalinkRoot: undefined,
 | |
|       behavior: [TemplateBehavior],
 | |
|       extraOutputSubdirectory: '',
 | |
|       filePathStem: '/_drafts/swift-coding-challenge-3-and-4',
 | |
|       fileSlug: [TemplateFileSlug],
 | |
|       fileSlugStr: 'swift-coding-challenge-3-and-4',
 | |
|       inputContent: [Promise],
 | |
|       inputDir: 'src',
 | |
|       inputPath: './src/_drafts/swift-coding-challenge-3-and-4.md',
 | |
|       isDryRun: false,
 | |
|       isVerbose: true,
 | |
|       linters: [],
 | |
|       outputDir: 'dist',
 | |
|       outputFormat: 'fs',
 | |
|       parsed: [Object],
 | |
|       readingPromise: [Promise],
 | |
|       serverlessUrls: null,
 | |
|       templateData: [TemplateData],
 | |
|       transforms: [],
 | |
|       writeCount: 0
 | |
|     },
 | |
|     templateContent: [Getter/Setter],
 | |
|     url: '/_drafts/swift-coding-challenge-3-and-4/'
 | |
|   }, |