A simple static Jekyll site for keeping track of recipes 0u0
Перейти к файлу
Lynne Megido 68763c6fe7
display info when there are no recipes
2020-03-06 23:20:21 +10:00
.vscode setup jekyll structure 2020-03-01 02:07:24 +10:00
_includes ruby function for formatting time 2020-03-06 21:32:01 +10:00
_layouts ruby function for formatting time 2020-03-06 21:32:01 +10:00
_plugins don't repeat yourself uwu 2020-03-06 21:33:57 +10:00
assets make #main take up ful width on smol screens 2020-03-06 20:49:28 +10:00
.drone.yml revert to stable jekyll, don't bother with html validation 2020-03-06 20:43:17 +10:00
.gitignore revert to stable jekyll, don't bother with html validation 2020-03-06 20:43:17 +10:00
Gemfile revert to stable jekyll, don't bother with html validation 2020-03-06 20:43:17 +10:00
Gemfile.lock revert to stable jekyll, don't bother with html validation 2020-03-06 20:43:17 +10:00
LICENSE replaced gitea's weird apache2 license version with the one from apache.org 2020-03-01 06:34:21 +10:00
README.md add a help file, expand on the readme a bit 2020-03-06 05:17:41 +10:00
_config.yml render fractions using ruby code instead of the gross liquid thing i was using before 2020-03-06 04:32:37 +10:00
help.html add class 'dark' to help page readme link 2020-03-06 05:18:38 +10:00
index.html display info when there are no recipes 2020-03-06 23:20:21 +10:00

recipe-site

Build Status

A simple static Jekyll site for keeping track of recipes. This is my first major Jekyll project, so it might be a little messy. This project is a work in progress.

Usage

Ensure that you have Git, Ruby and RubyGems installed.

Assuming a Unix system:

$ git clone https://git.bune.city/lynnesbian/recipe-site
$ cd recipe-site
$ gem install bundler
$ bundle install
$ bundle exec jekyll build

This will compile the website into the _site directory, which you may serve with any HTTP server. It is necessary to re-run bundle exec jekyll build after any modifications.

Alternatively, you can use jekyll's built in server for testing:

$ bundle exec jekyll serve

The built in server will automatically regenerate the _site output whenever you make a change.

However, there won't be much to look at until you add some recipes!

Recipe file format

Recipes are found in _recipes/, with subrecipes located in _subrecipes/.

Here's an example recipe, which could be saved to _recipes/chocolate_cake.md:

---
name: Chocolate cake
author: Jane Crocker
difficulty: 2

ingredients:
- [1, egg, null]
- [2, butter, sticks]
- [2, flour, cups]
# et cetera
method:
- Preheat the oven to 200°C
- Whisk the egg finely
# et cetera
time: 240
---
  • name (string) - The displayed name of the recipe. Does not appear in the URL.
  • author (string, optional) - The author of the recipe.
  • difficulty (float, optional) - The difficulty of the recipe on a scale of 1 to 5. Will be displayed as a star rating. Half stars (e.g. "2.5") are allowed.
  • ingredients (list) - Each entry in ingredients is an array consisting of up to four items:
    • amount (number or array) - The amount of this item to add, e.g. 2 for 2 cups of flour. Non-whole numbers will be displayed as fractions, e.g. 1.5 becomes .
      • If this is 0, the output will be e.g. "jalepeño chillis to taste" rather than "0 jalepeño chillis".
      • If this is an array, it will be printed as amount[0] to amount[1]. For example, if you wanted to say "2 to 3 cups of peas", you would write [[2, 3], peas, cups].
    • ingredient name (string) - The name of the ingredient, e.g. flour for 2 cups of flour.
    • unit terminology (string, optional) - The unit that amount refers to, e.g. cups for 2 cups of flour. If left blank or null, as in [1, egg], the output will simply be "1 egg".
    • optional (boolean, optional) - Whether or not this ingredient is optional. The ingredient [1, chocolate egg, null, true] produces "1 chocolate egg" and marks is as optional. Defaults to false.
  • method (list) - A list of steps undertaken to create the recipe, written in plain English. Or whatever language you prefer.
  • time (string, optional) - The time it takes to make the recipe in minutes.

The recipe's file name isn't important, but it's good practice to make it something obvious, like chocolate_cake.md and not strawberry_pie.md.

The recipe files are standard YAML. Every recipe must begin and end with three dashes to ensure that Jekyll processes it. Jekyll only processes files with certain extensions. Even though the recipes are formatted as YAML, they can't be saved as .yml or .yaml files - they must be saved with an extension that Jekyll will process, like .md or .html. Additionally, any tags not marked as optional must be included in order for the file to render properly.

Good:

---
name: Example
---

Bad:

name: Example

Subrecipes

Subrecipes behave a little differently to regular recipes:

  • They don't show up on the home page
  • The time, author, difficulty and ratings tags do not do anything. They can still be included, but won't be displayed.

Subrecipes have a tag that regular recipes do not - the parents tag. This is a list of recipes that the subrecipe should be included in. For example:

---
name: Chocolate icing
parents:
- chocolate_cake
- chocolate_cupcakes
ingredients:
- [250, chocolate, grams]
# et cetera
---

The entries in parents refer to the filenames of the parent recipes - chocolate_cake refers to chocolate_cake.md.

If a subrecipe does not have at least one valid parents entry, it will not appear anywhere on the website.

Licensing

This software makes use of a subset of Font Awesome v4.7.0, which is licensed under the SIL.

This software is licensed under the Apache 2.0 license.

Copyright 2020 Lynnesbian

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.