メタプログラミング向けのテンプレートエンジン gysb を作った
by
omochimetaru
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
ϝλϓϩάϥϛϯά͚ ͷςϯϓϨʔτΤϯδϯ gysb Λ࡞ͬͨ omochimetaru @
Slide 2
Slide 2 text
Array ͱ ؒͨͪ Array - startIndex, endIndex, subscript, _ArrayBuffer ArraySlice - startIndex, endIndex, subscript, _SliceBuffer ContiguousArray - startIndex, endIndex, subscript, _ContiguousArrayBuffer
Slide 3
Slide 3 text
gyb Generate Your Boilerplate
Slide 4
Slide 4 text
gyb Generate Your Boilerplate ࣮ߦ: %{ }% ࣮ߦ: % (ߦ) ࣜల։: ${ }
Slide 5
Slide 5 text
Arrays.swift.gyb apple/swift @ github
Slide 6
Slide 6 text
%{ arrayTypes = [ ('ContiguousArray', 'a `ContiguousArray` instance'), ('ArraySlice', 'an `ArraySlice` instance'), ('Array', 'an array'), ] }% % for (Self, a_Self) in arrayTypes: public struct ${Self} { %if Self == 'Array': internal typealias _Buffer = _ArrayBuffer %elif Self == 'ArraySlice': internal typealias _Buffer = _SliceBuffer %else: internal typealias _Buffer = _${Self.strip('_')}Buffer %end internal var _buffer: _Buffer } %end
Slide 7
Slide 7 text
public struct ContiguousArray { internal typealias _Buffer = _ContiguousBuffer internal var _buffer: _Buffer } public struct ArraySlice { internal typealias _Buffer = _SliceBuffer internal var _buffer: _Buffer } public struct Array { internal typealias _Buffer = _ArrayBuffer internal var _buffer: _Buffer }
Slide 8
Slide 8 text
gyb ͷྑ͘ͳ͍ͱ͜Ζ
Slide 9
Slide 9 text
gyb ͷྑ͘ͳ͍ͱ͜Ζ python Λॻ͘ͱ͜Ζ
Slide 10
Slide 10 text
gysb Generate Your Swifty Boilerplate
Slide 11
Slide 11 text
gysb Generate Your Swifty Boilerplate https://github.com/omochi/gysb ࣮ߦ: %{ }% ࣮ߦ: % (ߦ) ࣜల։: ${ }
Slide 12
Slide 12 text
Demo ࣮ࡍͷσϞͷͱ͖ɺ ҎԼͷιʔεΛࡐʹɺ --source-dirs, --parse, --compile Ϟʔυͷಈ࡞Λհ͠ ͨɻ https://github.com/omochi/ReactiveEmitter/blob/master/ Sources/ReactiveEmitter/Operator/Combine.swift.gysb
Slide 13
Slide 13 text
gysb ͷ։ൃ gysb ͷಈ࡞ݪཧͦΕࣗମϝλϓϩάϥϛϯά͔ͩΒ Swift ͷϝλϓϩάϥϛϯά͢ΔͨΊʹ Swift ͷϝλϓϩάϥϛϯάΛߦ͏ Swift ϓϩάϥϜΛ࡞ͬͨ ! (͋ͱ Kotlin C++ ੜͰ͖ΔΑ)
Slide 14
Slide 14 text
(એ) Discord Offline Discord αʔό ios-developers-japan ΛϦΞϧͰ 12/4 ϝϧΧϦ ύωϧσΟεΧογϣϯܗࣜ https://connpass.com/event/71774/
Slide 15
Slide 15 text
Sourceryͱͷҧ͍ Sourcery ܕใऔಘ + ςϯϓϨʔτ(ෳݴޠ) gysb ςϯϓϨʔτ Sourcery ͷ swift ςϯϓϨʔτϥΠϒϥϦඇରԠ gysb gysb.json Ͱ SwiftPM ʹରԠ