Slide 1

Slide 1 text

Hard drugs for Playgrounds nef Miguel Ángel Díaz-López Senior Software Engineer at 47degrees @miguelangel_dl @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 2

Slide 2 text

| @47deg 47deg.com @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 3

Slide 3 text

Markdown ⦾ Quick review @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 4

Slide 4 text

1. Headers # This is an

tag This is an

tag This is an

tag @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 5

Slide 5 text

2. Lists * Line 1 * Line 1 a * Line 1 b * Line 2 @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 6

Slide 6 text

3. Quotes > This is a quote example where we put emphasis in this `element` @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 7

Slide 7 text

4. Emphasis *This text will be italic _This will also be italic_ This text will be bold This will also be bold _You can combine them_ @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 8

Slide 8 text

5. Links https: github.com/bow swift/nef [GitHub](https: github.com/bow swift/nef) @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 9

Slide 9 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 10

Slide 10 text

Markup for playgrounds : line of text with optional markup … line of text with optional markup : This is a single comment @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 11

Slide 11 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 12

Slide 12 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 13

Slide 13 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 14

Slide 14 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 15

Slide 15 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 16

Slide 16 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 17

Slide 17 text

How to change between render documents modes? @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 18

Slide 18 text

import Bow let either = Either.right("Either") either.fold( { _ in "Default" }, { input in "Great \(input)!" } ) Great Either! @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 19

Slide 19 text

: > Bow provides us functional programming in Swift import Bow : Either Sum type of types `A` and `B`. Represents a value of either one of those types, but not both at the same time. Values of type `A` are called left ; values of type `B` are called right . let either = Either.right("Either") either.fold( { _ in "Default" }, { input in "Great \(input)!" } ) Great Either! @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 20

Slide 20 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 21

Slide 21 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 22

Slide 22 text

What is nef? "A set of command line tools that lets you have compile time veri cation of your documentation written as Xcode Playground" @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

What can I do with nef? @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 25

Slide 25 text

Eases the creation of Xcode Playgrounds with support for third party libraries. @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 26

Slide 26 text

Compiles Xcode Playgrounds with support for third party libraries from the command line. @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 27

Slide 27 text

Generates Markdown project from Xcode Playground. @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 28

Slide 28 text

Integrates Xcode Playgrounds with Jekyll to create a microsite. @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 29

Slide 29 text

Eases the creation of Xcode Playgrounds nef playground name AltConf2019 podfile bow podfile @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 30

Slide 30 text

Pod le target 'AltConf2019' do platform :ios, 12.0 use_frameworks! pod "Bow", " 0.4.0" end @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 31

Slide 31 text

Installing Playground (AltConf2019) Set AltConf2019 target to iOS Updating podfile (bow podfile) Installing Pods @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 32

Slide 32 text

Xcode Playground project @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 33

Slide 33 text

Compiles Xcode Playgrounds with support for third party libraries @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 34

Slide 34 text

nef compile . @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 35

Slide 35 text

Installing Pods Building AltConf2019.xcworkspace (AltConf2019) Copy frameworks Found 2 playgrounds Compiling Markup Formatting Reference.xcplaygroundpage Compiling Example.xcplaygroundpage @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 36

Slide 36 text

Markdown support @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 37

Slide 37 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 38

Slide 38 text

nef markdown project . output ~/Desktop @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 39

Slide 39 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 40

Slide 40 text

Jekyll Integration Transform your plain text into static websites and blogs @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 41

Slide 41 text

nef jekyll project AltConf2019 output site @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 42

Slide 42 text

nef commands nef provides some commands to modify the Markdown transformation process. nef:begin:header nef:end nef:begin:hidden import UIKit This will be hidden in the Markdown file nef:end @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 43

Slide 43 text

Case of success @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 44

Slide 44 text

Demo @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 45

Slide 45 text

Closing the circle: CI & CD @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

Outline 1. Mardown: quick review 2. What is nef? 3. What can I do with nef? 4. Markdown support 5. Jekyll Integration 6. Closing the circle: CI & CD @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 49

Slide 49 text

bow-swift/nef @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 50

Slide 50 text

One more thing... @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 51

Slide 51 text

How nef works? @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 52

Slide 52 text

Parser Creates a valid AST from Xcode Playground's page 1. Lexical analyzer the nef's tokenizer (scanner) 2. Syntax analyzer build the AST @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 53

Slide 53 text

Render 1. Markdown 2. Jekyll 3. ... @miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 56

Slide 56 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 57

Slide 57 text

@miguelangel_dl | #AltConfMadrid | @bow_swift

Slide 58

Slide 58 text

miguelangel-dev/nef-slides- altconf2019 open me! @miguelangel_dl | #AltConfMadrid | @bow_swift