@ -0,0 +1,3 @@ |
||||
/target |
||||
**/*.rs.bk |
||||
.idea/ |
@ -0,0 +1,177 @@ |
||||
[[package]] |
||||
name = "aho-corasick" |
||||
version = "0.6.9" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
dependencies = [ |
||||
"memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "bread" |
||||
version = "0.1.0" |
||||
dependencies = [ |
||||
"chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"markdown 0.2.0 (git+https://github.com/johannhof/markdown.rs)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "cfg-if" |
||||
version = "0.1.6" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[[package]] |
||||
name = "chrono" |
||||
version = "0.4.6" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
dependencies = [ |
||||
"num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "lazy_static" |
||||
version = "0.2.11" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[[package]] |
||||
name = "lazy_static" |
||||
version = "1.2.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[[package]] |
||||
name = "libc" |
||||
version = "0.2.47" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[[package]] |
||||
name = "markdown" |
||||
version = "0.2.0" |
||||
source = "git+https://github.com/johannhof/markdown.rs#788aa51284ef71e18bf237f91a4c7cb77de6dbaf" |
||||
dependencies = [ |
||||
"lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"pipeline 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "memchr" |
||||
version = "2.1.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
dependencies = [ |
||||
"cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "num-integer" |
||||
version = "0.1.39" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
dependencies = [ |
||||
"num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "num-traits" |
||||
version = "0.2.6" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[[package]] |
||||
name = "pipeline" |
||||
version = "0.5.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[[package]] |
||||
name = "redox_syscall" |
||||
version = "0.1.51" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[[package]] |
||||
name = "regex" |
||||
version = "0.2.11" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
dependencies = [ |
||||
"aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "regex-syntax" |
||||
version = "0.5.6" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
dependencies = [ |
||||
"ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "thread_local" |
||||
version = "0.3.6" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
dependencies = [ |
||||
"lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "time" |
||||
version = "0.1.42" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
dependencies = [ |
||||
"libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "ucd-util" |
||||
version = "0.1.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[[package]] |
||||
name = "utf8-ranges" |
||||
version = "1.0.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[[package]] |
||||
name = "winapi" |
||||
version = "0.3.6" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
dependencies = [ |
||||
"winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
"winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "winapi-i686-pc-windows-gnu" |
||||
version = "0.4.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[[package]] |
||||
name = "winapi-x86_64-pc-windows-gnu" |
||||
version = "0.4.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
||||
[metadata] |
||||
"checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" |
||||
"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" |
||||
"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" |
||||
"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" |
||||
"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" |
||||
"checksum libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "48450664a984b25d5b479554c29cc04e3150c97aa4c01da5604a2d4ed9151476" |
||||
"checksum markdown 0.2.0 (git+https://github.com/johannhof/markdown.rs)" = "<none>" |
||||
"checksum memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e1dd4eaac298c32ce07eb6ed9242eda7d82955b9170b7d6db59b2e02cc63fcb8" |
||||
"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" |
||||
"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" |
||||
"checksum pipeline 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d15b6607fa632996eb8a17c9041cb6071cb75ac057abd45dece578723ea8c7c0" |
||||
"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" |
||||
"checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" |
||||
"checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" |
||||
"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" |
||||
"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" |
||||
"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" |
||||
"checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" |
||||
"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" |
||||
"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" |
||||
"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" |
@ -0,0 +1,9 @@ |
||||
[package] |
||||
name = "bread" |
||||
version = "0.1.0" |
||||
authors = ["Ondřej Hruška <ondra@ondrovo.com>"] |
||||
edition = "2018" |
||||
|
||||
[dependencies] |
||||
markdown = { git = "https://github.com/johannhof/markdown.rs" } |
||||
chrono = "0.4" |
@ -0,0 +1,136 @@ |
||||
use std::env; |
||||
use std::fs; |
||||
use std::fs::DirEntry; |
||||
use std::fs::File; |
||||
use std::io::prelude::*; |
||||
use std::path::{Path, PathBuf}; |
||||
use chrono; |
||||
use chrono::NaiveDate; |
||||
use markdown; |
||||
use std::fs::OpenOptions; |
||||
|
||||
#[derive(Debug)] |
||||
struct Bread { |
||||
path: PathBuf, |
||||
rel_path: PathBuf, |
||||
date: chrono::NaiveDate, |
||||
note: String, |
||||
images: Vec<PathBuf>, |
||||
} |
||||
|
||||
impl Bread { |
||||
fn thumb_photo(&self) -> (&str, &str) { |
||||
let first_img : &PathBuf = self.images.get(0).unwrap(); |
||||
|
||||
let img_path = first_img.to_str().unwrap(); |
||||
let img_alt = first_img.file_name().unwrap().to_str().unwrap(); |
||||
|
||||
(img_path, img_alt) |
||||
} |
||||
|
||||
fn parse(base_dir : &PathBuf, bread_dir : &DirEntry) -> Result<Bread, std::io::Error> { |
||||
let bpath = bread_dir.path(); |
||||
let mut note = String::new(); |
||||
|
||||
let mut note_path = bpath.join("note.txt"); |
||||
|
||||
// try a md one as a fallback
|
||||
if !note_path.exists() { |
||||
note_path = bpath.join("note.md"); |
||||
} |
||||
|
||||
if note_path.exists() { |
||||
let mut note_file = File::open(note_path)?; |
||||
note_file.read_to_string(&mut note)?; |
||||
note = markdown::to_html(¬e); |
||||
} |
||||
|
||||
let mut bread_files: Vec<DirEntry> = fs::read_dir(&bpath)?.map(|e| e.unwrap()).collect(); |
||||
bread_files.sort_by(|x, y| x.file_name().cmp(&y.file_name())); |
||||
|
||||
let images = bread_files.iter().filter(|&f| { |
||||
let fname = f.file_name(); |
||||
let name = fname.to_str().unwrap(); |
||||
return |
||||
name.ends_with(".png") || |
||||
name.ends_with(".jpg") || |
||||
name.ends_with(".jpeg") || |
||||
name.ends_with(".gif"); |
||||
}).map(|x| x.path().strip_prefix(base_dir).unwrap().to_path_buf()).collect(); |
||||
|
||||
return Ok(Bread { |
||||
date: NaiveDate::parse_from_str(bpath.file_name().unwrap().to_str().unwrap(), "%Y-%m-%d").unwrap(), |
||||
rel_path: bpath.strip_prefix(base_dir).unwrap().to_path_buf(), |
||||
path: bpath, |
||||
note, |
||||
images |
||||
}); |
||||
} |
||||
} |
||||
|
||||
fn main() { |
||||
let cwd = env::current_dir().unwrap(); |
||||
let web_path = Path::new(&cwd).join("web"); |
||||
let data_path = web_path.join("data"); |
||||
let tpl_path = web_path.join("templates"); |
||||
|
||||
let mut bread_dirs: Vec<DirEntry> = fs::read_dir(&data_path).unwrap().map(|e| e.unwrap()).collect(); |
||||
bread_dirs.sort_by(|x, y| x.file_name().cmp(&y.file_name())); |
||||
|
||||
let mut breads : Vec<Bread> = Vec::new(); |
||||
|
||||
for bread_dir in bread_dirs { |
||||
if let Ok(b) = Bread::parse(&web_path, &bread_dir) { |
||||
breads.push(b); |
||||
} |
||||
} |
||||
|
||||
let mut main_tpl = String::new(); |
||||
let mut thumb_tpl = String::new(); |
||||
let mut detail_tpl = String::new(); |
||||
File::open(tpl_path.join("index.html")).unwrap().read_to_string(&mut main_tpl).unwrap(); |
||||
File::open(tpl_path.join("_thumb.html")).unwrap().read_to_string(&mut thumb_tpl).unwrap(); |
||||
File::open(tpl_path.join("detail.html")).unwrap().read_to_string(&mut detail_tpl).unwrap(); |
||||
|
||||
let mut thumbs = String::new(); |
||||
|
||||
for bread in &breads { |
||||
let date = bread.date.format("%Y/%m/%d").to_string(); |
||||
let detail_file = bread.date.format("%Y-%m-%d.html").to_string(); |
||||
|
||||
let (img_path, img_alt) = bread.thumb_photo(); |
||||
|
||||
let thumb = thumb_tpl |
||||
.replace("{detail_url}", &detail_file) |
||||
.replace("{img_src}", &img_path) |
||||
.replace("{img_alt}", &img_alt) |
||||
.replace("{title}", &date); |
||||
|
||||
thumbs.push_str(&thumb); |
||||
|
||||
{ |
||||
let detail = detail_tpl |
||||
.replace("{title}", &date) |
||||
.replace("{note}", if bread.note.is_empty() { "<i>There's no note about this bread.</i>" } else { &bread.note }); |
||||
|
||||
let mut pics = String::new(); |
||||
for img in &bread.images { |
||||
pics.push_str(&"<a href=\"{src}\"><img src=\"{src}\"><a/>".replace("{src}", img.to_str().unwrap())) |
||||
} |
||||
|
||||
let detail = detail.replace("{images}", &pics); |
||||
|
||||
let mut f = OpenOptions::new().write(true).truncate(true).create(true).open(web_path.join(detail_file)).unwrap(); |
||||
f.write(detail.as_bytes()).unwrap(); |
||||
} |
||||
} |
||||
|
||||
// TODO generate a RSS feed
|
||||
|
||||
let main = main_tpl.replace("{breads}", &thumbs); |
||||
|
||||
{ |
||||
let mut f = OpenOptions::new().write(true).truncate(true).create(true).open(web_path.join("index.html")).unwrap(); |
||||
f.write(main.as_bytes()).unwrap(); |
||||
} |
||||
} |
@ -0,0 +1 @@ |
||||
./*.html |
@ -0,0 +1,82 @@ |
||||
html, body { |
||||
font-family: "Helvetica Neue", "DejaVu Sans", "Noto Sans", Helvetica, Arial, sans-serif; |
||||
background: #404040; |
||||
color: white; |
||||
} |
||||
|
||||
h1 { |
||||
text-align: center; |
||||
} |
||||
|
||||
.MainGallery { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
flex-direction: row; |
||||
justify-content: center; |
||||
align-items: center; |
||||
} |
||||
|
||||
.BreadThumb { |
||||
margin: 10px; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.BreadThumb img { |
||||
max-height: 300px; |
||||
box-shadow: 0 0 5px black; |
||||
border-radius: 5px; |
||||
} |
||||
|
||||
.BreadThumb header { |
||||
padding-bottom: 5px; |
||||
font-weight: bold; |
||||
padding-left: 3px; |
||||
} |
||||
|
||||
a { |
||||
text-decoration: none; |
||||
color: white; |
||||
} |
||||
|
||||
.BreadDetail { |
||||
|
||||
} |
||||
|
||||
.BreadDetail .note { |
||||
display: block; |
||||
margin: 0 auto 10px; |
||||
max-width: 800px; |
||||
|
||||
padding: 10px; |
||||
|
||||
border-left: 6px solid #676767; |
||||
background: rgba(29, 29, 29, 0.25); |
||||
} |
||||
|
||||
.BreadDetail .note a { |
||||
color: #9bd6fc; |
||||
text-decoration: underline; |
||||
} |
||||
|
||||
.BreadDetail .note p:first-child { |
||||
margin-top: 0; |
||||
} |
||||
|
||||
.BreadDetail .note p:last-child { |
||||
margin-bottom: 0; |
||||
} |
||||
|
||||
.BreadDetail .images { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
flex-direction: row; |
||||
justify-content: center; |
||||
align-items: center; |
||||
} |
||||
|
||||
.BreadDetail .images img { |
||||
margin: 10px; |
||||
max-height: 500px; |
||||
box-shadow: 0 0 5px black; |
||||
border-radius: 5px; |
||||
} |
After Width: | Height: | Size: 263 KiB |
After Width: | Height: | Size: 195 KiB |
@ -0,0 +1,4 @@ |
||||
This was my first bread ever. |
||||
|
||||
I didn't have a sourdough starter yet, so it used store-bought yeast. |
||||
It looked okay, tasted mediocre. |
After Width: | Height: | Size: 347 KiB |
After Width: | Height: | Size: 341 KiB |
@ -0,0 +1 @@ |
||||
My first sourdough bread. I added coriander seeds to it. Pretty good |
After Width: | Height: | Size: 224 KiB |
After Width: | Height: | Size: 415 KiB |
After Width: | Height: | Size: 371 KiB |
After Width: | Height: | Size: 272 KiB |
@ -0,0 +1 @@ |
||||
nice crust, but it had huge holes in it. idk why |
After Width: | Height: | Size: 258 KiB |
@ -0,0 +1 @@ |
||||
Tried cutting the dough blob before baking, like I saw in some tutorial. I think I overdid it a bit |
After Width: | Height: | Size: 542 KiB |
After Width: | Height: | Size: 306 KiB |
@ -0,0 +1 @@ |
||||
a bit flat, but tasty |
After Width: | Height: | Size: 374 KiB |
@ -0,0 +1 @@ |
||||
nice crust |
After Width: | Height: | Size: 441 KiB |
@ -0,0 +1 @@ |
||||
I made the dough too runny–too much water–so it spilled over the whole baking form. That's why it's round. I dont remember what it tasted like, probably average |
After Width: | Height: | Size: 366 KiB |
After Width: | Height: | Size: 304 KiB |
After Width: | Height: | Size: 263 KiB |
@ -0,0 +1 @@ |
||||
this came out a bit more "rustic" than usual. the cracked crust looks nice, but it makes slicing difficult |
After Width: | Height: | Size: 313 KiB |
@ -0,0 +1 @@ |
||||
Experimenting with chia seeds. Tasted okay, but a lot of the seeds didn't stick to the bread. Maybe I should've put them in water for a bit first.. they get all slimy in water, might stick better |
After Width: | Height: | Size: 434 KiB |
@ -0,0 +1 @@ |
||||
cracked crust again |
@ -0,0 +1,2 @@ |
||||
I didn't bake any bread for almost a month and the starter culture went bad. This bread didn't rise at all and was super sour. |
||||
I threw the whole thing out and refreshed the starter for about a week. |
After Width: | Height: | Size: 1.2 MiB |
@ -0,0 +1 @@ |
||||
First bread with the renewed starter culture. Didn't rise much, but tasted okay. |
After Width: | Height: | Size: 1.8 MiB |
@ -0,0 +1 @@ |
||||
that's more like it |
After Width: | Height: | Size: 1.9 MiB |
@ -0,0 +1 @@ |
||||
trying a new recipe - I may have finally found the right ratio of rye vs wheat flour. It's quite simple - 1:1. Baked with 200g of each and one spoon of salt. Note the starter is rye only, so it counts into the rye amount. |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 2.1 MiB |
@ -0,0 +1,13 @@ |
||||
Trying to bake a baguette with a recipe I got from Dashie. |
||||
It tasted okay, but I'll stick with bread. |
||||
|
||||
the weird shape is due to limited baking space - I baked it (like all the other breads) in a [Remoska](http://remoska.cz/). |
||||
|
||||
here's the recipe: |
||||
|
||||
- 340ml water ~25°C |
||||
- 2 tablespoon of oil (used sunflower one) |
||||
- 2 coffee spoons of salt |
||||
- 4 coffee spoon of sugar |
||||
- 560gr of T55 type flour |
||||
- 5g of *instant* yeast (bought in a bunch of small bags) |
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 1.8 MiB |
@ -0,0 +1 @@ |
||||
this one was very good |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 2.1 MiB |
@ -0,0 +1,2 @@ |
||||
nice texture, not cracked at all. this is because I added some water into the baking form, |
||||
so it made steam. like you're supposed to. |
After Width: | Height: | Size: 2.4 MiB |
@ -0,0 +1,3 @@ |
||||
made the dough too dry, so it couldn't rise properly. also didn't do the steam thing. all in all a disaster |
||||
|
||||
but it tasted okay regardless |
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 1.3 MiB |
@ -0,0 +1,4 @@ |
||||
<section class="BreadThumb" onclick="location.href='{detail_url}'"> |
||||
<header><a href="{detail_url}">{title}</a></header> |
||||
<img src="{img_src}" alt="{img_alt}"> |
||||
</section> |
@ -0,0 +1,23 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
<title>Breads</title> |
||||
<link rel="stylesheet" href="assets/style.css"> |
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge"> |
||||
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
</head> |
||||
<body> |
||||
<h1>{title}</h1> |
||||
|
||||
<section class="BreadDetail"> |
||||
<div class="note">{note}</div> |
||||
|
||||
<div class="images"> |
||||
{images} |
||||
</div> |
||||
</section> |
||||
</body> |
||||
</html> |
@ -0,0 +1,19 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
<title>Breads</title> |
||||
<link rel="stylesheet" href="assets/style.css"> |
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge"> |
||||
<meta name="apple-mobile-web-app-capable" content="yes"> |
||||
</head> |
||||
<body> |
||||
<h1>Piggo's Bread Gallery</h1> |
||||
|
||||
<div class="MainGallery"> |
||||
{breads} |
||||
</div> |
||||
</body> |
||||
</html> |