TokamakPublish
1.0.0
استخدم Tokamak في سماتك الخاصة بمولد النشر الثابت.
يمكنك إما كتابة المظهر بالكامل باستخدام Tokamak، أو دمجه مع Plot
HTML الموجود لديك.
يتم توفير تطبيق Tokamak لموضوع .foundation
تحت الاسم .tokamakFoundation
.
TokamakHTMLFactory
لإنشاء سمة Tokamak الخاصة بك، قم بالتوافق مع بروتوكول TokamakHTMLFactory
. وهذا يتطلب الوظائف التالية:
struct MyThemeFactory < Site : Website > : TokamakHTMLFactory {
func makeIndexView ( for index : Index , context : PublishingContext < Self . Site > ) throws -> IndexView
func makeSectionView (
for section : Publish . Section < Self . Site > ,
context : PublishingContext < Self . Site >
) throws -> SectionView
func makeItemView ( for item : Item < Self . Site > , context : PublishingContext < Self . Site > ) throws -> ItemView
func makePageView ( for page : Page , context : PublishingContext < Self . Site > ) throws -> PageView
func makeTagListView ( for page : TagListPage , context : PublishingContext < Self . Site > ) throws -> TagListView
func makeTagDetailsView ( for page : TagDetailsPage , context : PublishingContext < Self . Site > ) throws -> TagDetailsView
}
في هذه الوظائف، يمكنك إنشاء طريقة View
باستخدام بناء جملة متوافق مع SwiftUI:
struct MyThemeFactory < Site : Website > : TokamakHTMLFactory {
func makePageView ( for page : Page , context : PublishingContext < Self . Site > ) throws -> PageView {
Text ( " Welcome to my website " )
. font ( . largeTitle )
VStack ( alignment : . leading ) {
page . body
}
. frame ( idealWidth : 820 , maxWidth : 820 )
. padding ( . vertical , 40 )
Text ( " 2020 © Tokamak Contributors " )
. font ( . caption )
}
...
}
يمكنك تضمين طرق عرض Tokamak في Plot HTML الخاص بك مع عقدة view
:
let myHTML = Plot . HTML (
. body (
. h1 ( . text ( " My Website " ) ) ,
. view {
Text ( " This is a Tokamak " ) + Text ( " View " )
. font ( . system ( . body , design : . monospaced ) )
} ,
. view ( MyTokamakView ( ) )
)
)
يمكنك تضمين عقد الأرض في طرق عرض Tokamak الخاصة بك بنفس السهولة:
struct ContentView : View {
var body : some View {
Text ( " My Website " )
. font ( . largeTitle )
Node . p (
. span ( " This is a Plot " ) ,
. span ( . text ( " Node " ) , . style ( " font-family: monospace " ) )
)
}
}