diff --git a/book/style.css b/book/style.css
index 9cc4ee7..cd854eb 100644
--- a/book/style.css
+++ b/book/style.css
@@ -137,7 +137,10 @@ nav.TOC,nav.TOC a, nav.TOC a:visited{
color:#000000;
}
-nav.TOC span:hover, nav.TOC span:hover *{
+nav.TOC span:hover,
+nav.TOC span:hover *,
+nav.TOC span.chapterToc.selected,
+nav.TOC span.chapterToc.selected a {
background-color:#dad5ca;
}
@@ -296,6 +299,6 @@ figcaption.caption {
}
div.center {
- margin-left: 0;
- margin-right: 0;
+ margin-left: 0 !important;
+ margin-right: 0 !important;
}
diff --git a/website/assets/og_image_baking.png b/website/assets/og_image_baking.png
new file mode 100644
index 0000000..5cce72f
Binary files /dev/null and b/website/assets/og_image_baking.png differ
diff --git a/website/assets/og_image_bread_types.png b/website/assets/og_image_bread_types.png
new file mode 100644
index 0000000..a9a2f6a
Binary files /dev/null and b/website/assets/og_image_bread_types.png differ
diff --git a/website/assets/og_image_flour_types.png b/website/assets/og_image_flour_types.png
new file mode 100644
index 0000000..e7c4549
Binary files /dev/null and b/website/assets/og_image_flour_types.png differ
diff --git a/website/assets/og_image_general.png b/website/assets/og_image_general.png
new file mode 100644
index 0000000..78920f2
Binary files /dev/null and b/website/assets/og_image_general.png differ
diff --git a/website/assets/og_image_how_sourdough_works.png b/website/assets/og_image_how_sourdough_works.png
new file mode 100644
index 0000000..a369521
Binary files /dev/null and b/website/assets/og_image_how_sourdough_works.png differ
diff --git a/website/assets/og_image_making_a_sourdough_starter.png b/website/assets/og_image_making_a_sourdough_starter.png
new file mode 100644
index 0000000..c246402
Binary files /dev/null and b/website/assets/og_image_making_a_sourdough_starter.png differ
diff --git a/website/assets/og_image_non_wheat_sourdough.png b/website/assets/og_image_non_wheat_sourdough.png
new file mode 100644
index 0000000..3a356d5
Binary files /dev/null and b/website/assets/og_image_non_wheat_sourdough.png differ
diff --git a/website/assets/og_image_sourdough_starter_types.png b/website/assets/og_image_sourdough_starter_types.png
new file mode 100644
index 0000000..31350b1
Binary files /dev/null and b/website/assets/og_image_sourdough_starter_types.png differ
diff --git a/website/assets/og_image_storing_bread.png b/website/assets/og_image_storing_bread.png
new file mode 100644
index 0000000..224cfe0
Binary files /dev/null and b/website/assets/og_image_storing_bread.png differ
diff --git a/website/assets/og_image_the_history_of_sourdough.png b/website/assets/og_image_the_history_of_sourdough.png
new file mode 100644
index 0000000..69a71da
Binary files /dev/null and b/website/assets/og_image_the_history_of_sourdough.png differ
diff --git a/website/assets/og_image_troubleshooting.png b/website/assets/og_image_troubleshooting.png
new file mode 100644
index 0000000..23b0e8a
Binary files /dev/null and b/website/assets/og_image_troubleshooting.png differ
diff --git a/website/assets/og_image_wheat_sourdough.png b/website/assets/og_image_wheat_sourdough.png
new file mode 100644
index 0000000..12f8f45
Binary files /dev/null and b/website/assets/og_image_wheat_sourdough.png differ
diff --git a/website/modify_build.rb b/website/modify_build.rb
index 9a6c441..e82a1c3 100644
--- a/website/modify_build.rb
+++ b/website/modify_build.rb
@@ -36,6 +36,9 @@ class ModifyBuild
text = add_home_link_to_menu(text)
text = fix_anchor_hyperlinks_menu(text)
text = add_favicon(text)
+ text = add_meta_tags(text, filename)
+ text = remove_section_table_of_contents(text)
+ text = mark_menu_as_selected_if_on_page(text, extract_file_from_path(filename))
File.open(filename, "w") {|file| file.puts text }
end
@@ -218,7 +221,7 @@ class ModifyBuild
menu = doc.css(".menu-items")[0]
return text if menu.nil?
- home_html = %Q{Home}
+ home_html = %Q{Home}
menu.inner_html = "#{home_html} #{menu.inner_html}"
doc.to_html
end
@@ -248,6 +251,109 @@ class ModifyBuild
doc.to_html
end
+ def add_meta_tags(text, filename)
+ doc = build_doc(text)
+ head = doc.css("head")[0]
+ title = head.css("title")[0].text
+ cleaned_filename = extract_file_from_path(filename)
+ description = extract_description(text, filename)
+ og_image = og_image_for_chapter(cleaned_filename)
+ meta_html = %Q{
+
+
+
+
+
+
+
+
+ }
+ head.inner_html = "#{head.inner_html} #{meta_html}"
+ doc.to_html
+ end
+
+ # Takes a name like "static_website_html/book.html" and returns "book.html"
+ def extract_file_from_path(filename)
+ result = filename.split("/")
+ return filename if result.length == 1
+ raise ArgumentError.new("The filename #{filename} is odd. Don't know how to handle it") if result.length > 2
+
+ result[1]
+ end
+
+ def extract_description(text, filename)
+ doc = build_doc(text)
+ el = doc.css(".main-content p:first-of-type")[0]
+ custom = custom_titles_per_filename(clean_filename(filename))
+ return custom if custom
+ return "" if el.nil?
+ el.text
+ end
+
+ # static_website_html/Acknowledgements.html => "Acknowledgements.html"
+ def clean_filename(filename)
+ filename.split("/")[1]
+ end
+
+ def custom_titles_per_filename(filename)
+ index_text = "The Sourdough Framework goes beyond just recipes and provides a solid knowledge foundation, covering the science of sourdough, the basics of bread making, and advanced techniques for achieving the perfect sourdough bread at home."
+ data = {
+ "book.html" => index_text,
+ "index.html" => index_text
+ }
+ data[filename]
+ end
+
+ def remove_section_table_of_contents(text)
+ doc = build_doc(text)
+ el = doc.css(".sectionTOCS")[0]
+ return text unless el
+
+ el.remove
+ doc.to_html
+ end
+
+ def og_image_for_chapter(chapter_name)
+ open_graph_images_map[chapter_name] || open_graph_images_map["index.html"]
+ end
+
+ def open_graph_images_map
+ {
+ "Baking.html" => "og_image_baking.png",
+ "Breadtypes.html" => "og_image_bread_types.png",
+ "Flourtypes.html" => "og_image_flour_types.png",
+ "index.html" => "og_image_general.png",
+ "Howsourdoughworks.html" => "og_image_how_sourdough_works.png",
+ "Makingasourdoughstarter.html" => "og_image_making_a_sourdough_starter.png",
+ "Nonwheatsourdough.html" => "og_image_non_wheat_sourdough.png",
+ "Sourdoughstartertypes.html" => "og_image_sourdough_starter_types.png",
+ "Storingbread.html" => "og_image_storing_bread.png",
+ "Thehistoryofsourdough.html" => "og_image_the_history_of_sourdough.png",
+ "Wheatsourdough.html" => "og_image_troubleshooting.png",
+ }
+ end
+
+ def mark_menu_as_selected_if_on_page(text, filename)
+ doc = build_doc(text)
+ selected = doc.css(".menu-items .chapterToc > a").find do |el|
+ el["href"] == ""
+ end
+
+ # Special case for index page
+ if ["index.html", "book.html"].include?(filename)
+ doc.css(".menu-items .chapterToc.home-link")[0].add_class("selected")
+ return doc.to_html
+ end
+ return doc.to_html unless selected
+
+ # Fix that when the menu is selected the href is empty. This way users can
+ # click the menu and the page will reload.
+ selected["href"] = filename
+ selected.parent.add_class("selected")
+ doc.to_html
+ end
+
+
def build_doc(text)
Nokogiri::HTML(text)
end