Skip to content

Commit

Permalink
style: 🎨 ran cargo fmt
Browse files Browse the repository at this point in the history
  • Loading branch information
arctic-hen7 committed Aug 17, 2021
1 parent 259a537 commit 0e509a0
Show file tree
Hide file tree
Showing 19 changed files with 369 additions and 335 deletions.
28 changes: 14 additions & 14 deletions examples/showcase/app/src/bin/build.rs
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
use perseus::{
config_manager::FsConfigManager,
build::build_templates
};
use futures::executor::block_on;
use perseus::{build::build_templates, config_manager::FsConfigManager};
use perseus_showcase_app::pages;
use sycamore::prelude::SsrNode;
use futures::executor::block_on;

fn main() {
let config_manager = FsConfigManager::new();

let fut = build_templates(vec![
pages::index::get_page::<SsrNode>(),
pages::about::get_page::<SsrNode>(),
pages::post::get_page::<SsrNode>(),
pages::new_post::get_page::<SsrNode>(),
pages::ip::get_page::<SsrNode>(),
pages::time::get_page::<SsrNode>(),
pages::time_root::get_page::<SsrNode>()
], &config_manager);
let fut = build_templates(
vec![
pages::index::get_page::<SsrNode>(),
pages::about::get_page::<SsrNode>(),
pages::post::get_page::<SsrNode>(),
pages::new_post::get_page::<SsrNode>(),
pages::ip::get_page::<SsrNode>(),
pages::time::get_page::<SsrNode>(),
pages::time_root::get_page::<SsrNode>(),
],
&config_manager,
);
block_on(fut).expect("Static generation failed!");

println!("Static generation successfully completed!");
Expand Down
55 changes: 32 additions & 23 deletions examples/showcase/app/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
pub mod pages;

use perseus::shell::{app_shell, ErrorPages};
use sycamore::prelude::*;
use sycamore_router::{Route, BrowserRouter};
use sycamore_router::{BrowserRouter, Route};
use wasm_bindgen::prelude::*;
use perseus::shell::{app_shell, ErrorPages};

// Define our routes
#[derive(Route)]
Expand All @@ -15,31 +15,39 @@ enum AppRoute {
#[to("/post/new")]
NewPost,
#[to("/post/<slug>")]
Post {
slug: String
},
Post { slug: String },
#[to("/ip")]
Ip,
#[to("/time")]
TimeRoot,
#[to("/timeisr/<slug>")]
Time {
slug: String
},
Time { slug: String },
#[not_found]
NotFound
NotFound,
}

fn get_error_pages() -> ErrorPages {
let mut error_pages = ErrorPages::new(Box::new(|_, _, _| template! {
p { "Another error occurred." }
}));
error_pages.add_page(404, Box::new(|_, _, _| template! {
p { "Page not found." }
}));
error_pages.add_page(400, Box::new(|_, _, _| template! {
p { "Client error occurred..." }
let mut error_pages = ErrorPages::new(Box::new(|_, _, _| {
template! {
p { "Another error occurred." }
}
}));
error_pages.add_page(
404,
Box::new(|_, _, _| {
template! {
p { "Page not found." }
}
}),
);
error_pages.add_page(
400,
Box::new(|_, _, _| {
template! {
p { "Client error occurred..." }
}
}),
);

error_pages
}
Expand All @@ -49,16 +57,16 @@ fn get_error_pages() -> ErrorPages {
pub fn run() -> Result<(), JsValue> {
std::panic::set_hook(Box::new(console_error_panic_hook::hook));
// Get the root (for the router) we'll be injecting page content into
let root = web_sys::window()
let root = web_sys::window()
.unwrap()
.document()
.unwrap()
.query_selector("#_perseus_root")
.unwrap()
.unwrap();

sycamore::render_to(
||
sycamore::render_to(
|| {
template! {
BrowserRouter(|route: AppRoute| {
// TODO improve performance rather than naively copying error pages for every template
Expand Down Expand Up @@ -103,9 +111,10 @@ pub fn run() -> Result<(), JsValue> {
}
}
})
},
&root
}
},
&root,
);

Ok(())
Ok(())
}
18 changes: 9 additions & 9 deletions examples/showcase/app/src/pages/about.rs
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
use sycamore::prelude::{template, component, GenericNode, Template as SycamoreTemplate};
use perseus::template::Template;
use sycamore::prelude::{component, template, GenericNode, Template as SycamoreTemplate};

#[component(AboutPage<G>)]
pub fn about_page() -> SycamoreTemplate<G> {
template! {
p { "About." }
}
template! {
p { "About." }
}
}

pub fn get_page<G: GenericNode>() -> Template<G> {
Template::new("about")
.template(template_fn())
Template::new("about").template(template_fn())
}

pub fn template_fn<G: GenericNode>() -> perseus::template::TemplateFn<G> {
Box::new(|_| template! {
Box::new(|_| {
template! {
AboutPage()
}
)
}
})
}
33 changes: 17 additions & 16 deletions examples/showcase/app/src/pages/index.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
use serde::{Serialize, Deserialize};
use sycamore::prelude::{template, component, GenericNode, Template as SycamoreTemplate};
use perseus::template::Template;
use serde::{Deserialize, Serialize};
use sycamore::prelude::{component, template, GenericNode, Template as SycamoreTemplate};

#[derive(Serialize, Deserialize, Debug)]
pub struct IndexPageProps {
pub greeting: String
pub greeting: String,
}

#[component(IndexPage<G>)]
pub fn index_page(props: IndexPageProps) -> SycamoreTemplate<G> {
template! {
p {(props.greeting)}
template! {
p {(props.greeting)}
a(href = "/about") { "About!" }
}
}
}

pub fn get_page<G: GenericNode>() -> Template<G> {
Expand All @@ -22,17 +22,18 @@ pub fn get_page<G: GenericNode>() -> Template<G> {
}

pub async fn get_static_props(_path: String) -> Result<String, String> {
Ok(serde_json::to_string(
&IndexPageProps {
greeting: "Hello World!".to_string()
}
).unwrap())
Ok(serde_json::to_string(&IndexPageProps {
greeting: "Hello World!".to_string(),
})
.unwrap())
}

pub fn template_fn<G: GenericNode>() -> perseus::template::TemplateFn<G> {
Box::new(|props: Option<String>| template! {
IndexPage(
serde_json::from_str::<IndexPageProps>(&props.unwrap()).unwrap()
)
Box::new(|props: Option<String>| {
template! {
IndexPage(
serde_json::from_str::<IndexPageProps>(&props.unwrap()).unwrap()
)
}
})
}
}
37 changes: 19 additions & 18 deletions examples/showcase/app/src/pages/ip.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// This page illustrates SSR

use serde::{Serialize, Deserialize};
use sycamore::prelude::{template, component, GenericNode, Template as SycamoreTemplate};
use perseus::template::Template;
use perseus::errors::ErrorCause;
use perseus::template::Template;
use serde::{Deserialize, Serialize};
use sycamore::prelude::{component, template, GenericNode, Template as SycamoreTemplate};

#[derive(Serialize, Deserialize)]
pub struct IpPageProps {
Expand All @@ -12,13 +12,13 @@ pub struct IpPageProps {

#[component(IpPage<G>)]
pub fn dashboard_page(props: IpPageProps) -> SycamoreTemplate<G> {
template! {
p {
template! {
p {
(
format!("Your IP address is {}.", props.ip)
)
format!("Your IP address is {}.", props.ip)
)
}
}
}
}

pub fn get_page<G: GenericNode>() -> Template<G> {
Expand All @@ -29,17 +29,18 @@ pub fn get_page<G: GenericNode>() -> Template<G> {

pub async fn get_request_state(_path: String) -> Result<String, (String, ErrorCause)> {
// Err(("this is a test error!".to_string(), ErrorCause::Client(None)))
Ok(serde_json::to_string(
&IpPageProps {
ip: "x.x.x.x".to_string()
}
).unwrap())
Ok(serde_json::to_string(&IpPageProps {
ip: "x.x.x.x".to_string(),
})
.unwrap())
}

pub fn template_fn<G: GenericNode>() -> perseus::template::TemplateFn<G> {
Box::new(|props: Option<String>| template! {
IpPage(
serde_json::from_str::<IpPageProps>(&props.unwrap()).unwrap()
)
Box::new(|props: Option<String>| {
template! {
IpPage(
serde_json::from_str::<IpPageProps>(&props.unwrap()).unwrap()
)
}
})
}
}
10 changes: 5 additions & 5 deletions examples/showcase/app/src/pages/mod.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
pub mod index;
pub mod about;
pub mod post;
pub mod index;
pub mod ip;
pub mod new_post;
pub mod post;
pub mod time;
pub mod time_root;

use perseus::{get_templates_map, template::Template};
use sycamore::prelude::GenericNode;
use std::collections::HashMap;
use sycamore::prelude::GenericNode;

/// Shorthand for the `get_templates_map!` macro from Perseus for our specific app pages.
pub fn get_templates_map<G: GenericNode>() -> HashMap<String, Template<G>> {
get_templates_map! [
get_templates_map![
index::get_page::<G>(),
about::get_page::<G>(),
post::get_page::<G>(),
Expand All @@ -21,4 +21,4 @@ pub fn get_templates_map<G: GenericNode>() -> HashMap<String, Template<G>> {
time::get_page::<G>(),
time_root::get_page::<G>()
]
}
}
18 changes: 9 additions & 9 deletions examples/showcase/app/src/pages/new_post.rs
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
use sycamore::prelude::{template, component, GenericNode, Template as SycamoreTemplate};
use perseus::template::Template;
use sycamore::prelude::{component, template, GenericNode, Template as SycamoreTemplate};

#[component(NewPostPage<G>)]
pub fn new_post_page() -> SycamoreTemplate<G> {
template! {
p { "New post creator." }
}
template! {
p { "New post creator." }
}
}

pub fn get_page<G: GenericNode>() -> Template<G> {
Template::new("post/new")
.template(template_fn())
Template::new("post/new").template(template_fn())
}

pub fn template_fn<G: GenericNode>() -> perseus::template::TemplateFn<G> {
Box::new(|_| template! {
Box::new(|_| {
template! {
NewPostPage()
}
)
}
})
}
Loading

0 comments on commit 0e509a0

Please sign in to comment.