mirror of
https://github.com/hendricius/the-sourdough-framework
synced 2025-11-14 23:21:11 -06:00
Merge remote-tracking branch 'upstream/main' into 225-ebook-situation
This commit is contained in:
56
.github/workflows/docker-build-push.yml
vendored
56
.github/workflows/docker-build-push.yml
vendored
@@ -1,56 +0,0 @@
|
|||||||
name: Create and publish a Docker image
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
|
|
||||||
env:
|
|
||||||
REGISTRY: ghcr.io
|
|
||||||
IMAGE_NAME: ${{ github.repository }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-and-push-image:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Log in to the Container registry
|
|
||||||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
|
||||||
with:
|
|
||||||
registry: ${{ env.REGISTRY }}
|
|
||||||
username: ${{ github.actor }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
- name: Figure out branch name
|
|
||||||
shell: bash
|
|
||||||
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
|
|
||||||
id: extract_branch
|
|
||||||
- name: Determine docker image tag
|
|
||||||
shell: bash
|
|
||||||
id: determine_tag
|
|
||||||
run: |
|
|
||||||
if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
|
|
||||||
echo "tag=latest" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
echo "tag=${{ steps.extract_branch.outputs.branch }}" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Extract metadata (tags, labels) for Docker
|
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@v5
|
|
||||||
with:
|
|
||||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
||||||
# Buildx for caching
|
|
||||||
- uses: docker/setup-buildx-action@v3
|
|
||||||
- name: Build and push Docker image
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
push: true
|
|
||||||
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.determine_tag.outputs.tag }}
|
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
|
||||||
cache-from: type=gha
|
|
||||||
cache-to: type=gha,mode=max
|
|
||||||
36
.github/workflows/release-book-website.yml
vendored
36
.github/workflows/release-book-website.yml
vendored
@@ -4,12 +4,36 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
|
||||||
env:
|
env:
|
||||||
IMAGE: ghcr.io/${{ github.repository }}:latest
|
LATEST_IMAGE: ghcr.io/${{ github.repository }}:latest
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-push-image:
|
build-and-push-image:
|
||||||
uses: ./.github/workflows/docker-build-push.yml
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Log in to the Container registry
|
||||||
|
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
# Buildx for caching
|
||||||
|
- uses: docker/setup-buildx-action@v3
|
||||||
|
- name: Build and push Docker image
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: ghcr.io/${{ github.repository }}:latest
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
release-book-website:
|
release-book-website:
|
||||||
needs: build-and-push-image
|
needs: build-and-push-image
|
||||||
@@ -20,7 +44,7 @@ jobs:
|
|||||||
- name: Print dependency versions
|
- name: Print dependency versions
|
||||||
uses: addnab/docker-run-action@v3
|
uses: addnab/docker-run-action@v3
|
||||||
with:
|
with:
|
||||||
image: ${{ env.IMAGE }}
|
image: ${{ env.LATEST_IMAGE }}
|
||||||
options: -v ${{ github.workspace }}:/app
|
options: -v ${{ github.workspace }}:/app
|
||||||
run: |
|
run: |
|
||||||
cd /app/book
|
cd /app/book
|
||||||
@@ -28,7 +52,7 @@ jobs:
|
|||||||
- name: Print build variables
|
- name: Print build variables
|
||||||
uses: addnab/docker-run-action@v3
|
uses: addnab/docker-run-action@v3
|
||||||
with:
|
with:
|
||||||
image: ${{ env.IMAGE }}
|
image: ${{ env.LATEST_IMAGE }}
|
||||||
options: -v ${{ github.workspace }}:/app
|
options: -v ${{ github.workspace }}:/app
|
||||||
run: |
|
run: |
|
||||||
cd /app/book
|
cd /app/book
|
||||||
@@ -36,7 +60,7 @@ jobs:
|
|||||||
- name: Bake the book
|
- name: Bake the book
|
||||||
uses: addnab/docker-run-action@v3
|
uses: addnab/docker-run-action@v3
|
||||||
with:
|
with:
|
||||||
image: ${{ env.IMAGE }}
|
image: ${{ env.LATEST_IMAGE }}
|
||||||
options: -v ${{ github.workspace }}:/app
|
options: -v ${{ github.workspace }}:/app
|
||||||
run: |
|
run: |
|
||||||
cd /app/book
|
cd /app/book
|
||||||
@@ -60,7 +84,7 @@ jobs:
|
|||||||
- name: Bake the website
|
- name: Bake the website
|
||||||
uses: addnab/docker-run-action@v3
|
uses: addnab/docker-run-action@v3
|
||||||
with:
|
with:
|
||||||
image: ${{ env.IMAGE }}
|
image: ${{ env.LATEST_IMAGE }}
|
||||||
options: -v ${{ github.workspace }}:/app
|
options: -v ${{ github.workspace }}:/app
|
||||||
run: |
|
run: |
|
||||||
cd /app/book
|
cd /app/book
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
name: Test building book and website
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
test-building-book-website:
|
|
||||||
uses: ./.github/workflows/test-book-website.yml
|
|
||||||
with:
|
|
||||||
docker-image: ghcr.io/${{ github.repository }}:latest
|
|
||||||
10
.github/workflows/test-book-website-push.yml
vendored
10
.github/workflows/test-book-website-push.yml
vendored
@@ -1,10 +0,0 @@
|
|||||||
name: Test building book and website with default image
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test-building-book-website:
|
|
||||||
uses: ./.github/workflows/test-book-website.yml
|
|
||||||
with:
|
|
||||||
docker-image: ghcr.io/${{ github.repository }}:latest
|
|
||||||
18
.github/workflows/test-book-website.yml
vendored
18
.github/workflows/test-book-website.yml
vendored
@@ -1,11 +1,9 @@
|
|||||||
name: Test book and website for given image
|
name: Test book and website for given image
|
||||||
|
|
||||||
on:
|
on: [push, pull_request]
|
||||||
workflow_call:
|
|
||||||
inputs:
|
env:
|
||||||
docker-image:
|
DOCKER_IMAGE: ghcr.io/${{ github.repository }}:latest
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test-book-website:
|
test-book-website:
|
||||||
@@ -16,7 +14,7 @@ jobs:
|
|||||||
- name: Print dependency versions
|
- name: Print dependency versions
|
||||||
uses: addnab/docker-run-action@v3
|
uses: addnab/docker-run-action@v3
|
||||||
with:
|
with:
|
||||||
image: ${{ inputs.docker-image }}
|
image: ${{ env.DOCKER_IMAGE }}
|
||||||
options: -v ${{ github.workspace }}:/app
|
options: -v ${{ github.workspace }}:/app
|
||||||
run: |
|
run: |
|
||||||
cd /app/book
|
cd /app/book
|
||||||
@@ -24,7 +22,7 @@ jobs:
|
|||||||
- name: Print build variables
|
- name: Print build variables
|
||||||
uses: addnab/docker-run-action@v3
|
uses: addnab/docker-run-action@v3
|
||||||
with:
|
with:
|
||||||
image: ${{ inputs.docker-image }}
|
image: ${{ env.DOCKER_IMAGE }}
|
||||||
options: -v ${{ github.workspace }}:/app
|
options: -v ${{ github.workspace }}:/app
|
||||||
run: |
|
run: |
|
||||||
cd /app/book
|
cd /app/book
|
||||||
@@ -32,7 +30,7 @@ jobs:
|
|||||||
- name: Test baking the release versions
|
- name: Test baking the release versions
|
||||||
uses: addnab/docker-run-action@v3
|
uses: addnab/docker-run-action@v3
|
||||||
with:
|
with:
|
||||||
image: ${{ inputs.docker-image }}
|
image: ${{ env.DOCKER_IMAGE }}
|
||||||
options: -v ${{ github.workspace }}:/app
|
options: -v ${{ github.workspace }}:/app
|
||||||
run: |
|
run: |
|
||||||
cd /app/book
|
cd /app/book
|
||||||
@@ -48,7 +46,7 @@ jobs:
|
|||||||
- name: Test building website
|
- name: Test building website
|
||||||
uses: addnab/docker-run-action@v3
|
uses: addnab/docker-run-action@v3
|
||||||
with:
|
with:
|
||||||
image: ${{ inputs.docker-image }}
|
image: ${{ env.DOCKER_IMAGE }}
|
||||||
options: -v ${{ github.workspace }}:/app
|
options: -v ${{ github.workspace }}:/app
|
||||||
run: |
|
run: |
|
||||||
cd /app/book
|
cd /app/book
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
\begin{tikzpicture}[node distance = 3cm, auto]
|
\begin{tikzpicture}[node distance = 3cm, auto]
|
||||||
\node [start] (init) {Make a starter};
|
\node [start] (init) {Create a starter};
|
||||||
\node [decision, right of=init, node distance=3.5cm] (decision_start) {Starter last fed within 3~days?};
|
\node [decision, right of=init, node distance=3.5cm] (decision_start) {Starter last fed within 3~days?};
|
||||||
\node [block, right of=decision_start, text width=7em, node distance=4cm] (feed_no_branch)
|
\node [block, right of=decision_start, text width=7em, node distance=4cm] (feed_no_branch)
|
||||||
{Feed starter twice:\par \qty{48}{\hour} before\par \qtyrange{6}{12}{\hour} before};
|
{Feed starter twice:\par \qty{48}{\hour} before\par \qtyrange{6}{12}{\hour} before};
|
||||||
|
|||||||
@@ -302,13 +302,16 @@ pockets of air on the sides of your container. Use your nose to smell the
|
|||||||
starter. It should have a mild smell. It also tends to smell much more
|
starter. It should have a mild smell. It also tends to smell much more
|
||||||
alcoholic than the other starters.
|
alcoholic than the other starters.
|
||||||
|
|
||||||
When using a stiff starter, use around \qtyrange{1}{20}{\percent} starter for your
|
When using a stiff starter, use around \qtyrange{1}{20}{\percent} starter in terms of
|
||||||
|
baker's math for your
|
||||||
dough. This depends on the ripeness of your starter.
|
dough. This depends on the ripeness of your starter.
|
||||||
In summer I~typically use around
|
In summer I~typically use around
|
||||||
\qty{10}{\percent} and in winter around \qty{20}{\percent}. This way you can
|
\qtyrange{1}{10}{\percent} and in winter around \qty{20}{\percent}. This way you can
|
||||||
also control the fermentation speed.
|
also control the fermentation speed. If it is very hot where you live, consider
|
||||||
Mixing the starter can be a little bit annoying as it hardly homogenizes with
|
lowering the starter amount to \qtyrange{1}{5}{\percent}. If it is very cold in your
|
||||||
the rest of the dough. In this case you can try to dissolve the starter in the
|
area consider increasing the starter amount up to \qty{30}{\percent}.
|
||||||
|
Mixing the stiff starter can be a little bit annoying as it hardly homogenizes with
|
||||||
|
the rest of the dough. In this case, you can try to dissolve the starter in the
|
||||||
water you are about to use for your dough. This will make mixing a lot easier.
|
water you are about to use for your dough. This will make mixing a lot easier.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -480,6 +480,10 @@ nav.TOC span:hover, nav.TOC span:hover *, nav.TOC span.chapterToc.selected, nav.
|
|||||||
p.flowchart-image-wrapper {
|
p.flowchart-image-wrapper {
|
||||||
background: white;
|
background: white;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
border-radius: var(--border-radius);
|
||||||
|
border: 2px solid var(--c-black);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu-items .menu-group:last-of-type .menu-arrow {
|
.menu-items .menu-group:last-of-type .menu-arrow {
|
||||||
@@ -585,4 +589,8 @@ blockquote {
|
|||||||
background-color: var(--c-black-background);
|
background-color: var(--c-black-background);
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
|
.mobile-banner a img {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,74 +1,90 @@
|
|||||||
Abu,
|
Abu,
|
||||||
Adam,
|
Adam,
|
||||||
|
Adele Schmitz,
|
||||||
|
Agatha,
|
||||||
|
Alanblue,
|
||||||
|
Albert,
|
||||||
Alicia,
|
Alicia,
|
||||||
|
Amanda M.,
|
||||||
|
Amanor,
|
||||||
|
Andail,
|
||||||
Andreas Schmid,
|
Andreas Schmid,
|
||||||
|
Andrzej Mitelski,
|
||||||
Anna G.,
|
Anna G.,
|
||||||
anonnn,
|
Anonnn,
|
||||||
aomanor,
|
Anthony Atkinson,
|
||||||
Aurore,
|
Aurore,
|
||||||
|
BTSkete,
|
||||||
Beatriz,
|
Beatriz,
|
||||||
Bee,
|
Bee,
|
||||||
|
Ben Davies,
|
||||||
BigWullie,
|
BigWullie,
|
||||||
Blixikan,
|
Blixikan,
|
||||||
Blusie,
|
Blusie,
|
||||||
Brigitta,
|
Brigitta,
|
||||||
Brockman,
|
Brockman,
|
||||||
BTSkete,
|
|
||||||
C Fazio,
|
C Fazio,
|
||||||
Cal Kotz,
|
Cal Kotz,
|
||||||
Case,
|
Case,
|
||||||
|
Cédric Andrieu,
|
||||||
Charlene Adkins,
|
Charlene Adkins,
|
||||||
|
Chin Pui Ling,
|
||||||
Chris DuBosq,
|
Chris DuBosq,
|
||||||
Chris G,
|
Chris G,
|
||||||
|
Chris Toph,
|
||||||
Christiane B,
|
Christiane B,
|
||||||
Christine,
|
Christine,
|
||||||
Chrysanna,
|
Chrysanna,
|
||||||
Colleen Guidone,
|
Colleen Guidone,
|
||||||
|
DKitSeattle,
|
||||||
Danieel,
|
Danieel,
|
||||||
Daniel,
|
Daniel,
|
||||||
David,
|
David,
|
||||||
Dee,
|
Dee,
|
||||||
Desiree S,
|
Desiree S,
|
||||||
DKitSeattle,
|
Douglas Penna,
|
||||||
dlenkes,
|
Drey,
|
||||||
douglas.penna,
|
|
||||||
DRey,
|
|
||||||
Duivelsjong,
|
Duivelsjong,
|
||||||
|
Elaine Leung,
|
||||||
Ellie,
|
Ellie,
|
||||||
Ethan,
|
Ethan,
|
||||||
Francois le Danois,
|
François le Danois,
|
||||||
|
Fredrik,
|
||||||
Geoff,
|
Geoff,
|
||||||
Guillermo,
|
Guillermo,
|
||||||
HansAndreManfredsson,
|
Hansandremanfredsson,
|
||||||
Heather Currier,
|
Heather Currier,
|
||||||
Hito,
|
Hito,
|
||||||
IlseFA,
|
Ilsefa,
|
||||||
Inma McLeish,
|
Inma Mcleish,
|
||||||
Jackie,
|
Jackie,
|
||||||
|
Jacques Lucke,
|
||||||
Jan Chrillesen,
|
Jan Chrillesen,
|
||||||
|
Jan-Pieter Van Den Wittenboer,
|
||||||
Jane,
|
Jane,
|
||||||
|
Jc Bell,
|
||||||
Jenny,
|
Jenny,
|
||||||
Jessicat,
|
Jessicat,
|
||||||
JimJo,
|
Jimjo,
|
||||||
John E Bergman,
|
John E Bergman,
|
||||||
Jonathan,
|
Jonathan,
|
||||||
JorisBelmans,
|
|
||||||
Jose Lausuch,
|
Jose Lausuch,
|
||||||
Judith Roth,
|
Judith Roth,
|
||||||
Julian,
|
Julian,
|
||||||
Justin Dybedahl,
|
Justin Dybedahl,
|
||||||
JZ,
|
Jz,
|
||||||
Kankiti,
|
Kankiti,
|
||||||
Kathy Goldstein,
|
Kathy Goldstein,
|
||||||
kathy word,
|
Kathy Word,
|
||||||
Ken Miller,
|
Ken Miller,
|
||||||
Kirill Sivy,
|
Kirill Sivy,
|
||||||
Kuchengnom,
|
Kuchengnom,
|
||||||
|
Laurent Bouguetaïa,
|
||||||
Leon,
|
Leon,
|
||||||
Lili1232000,
|
Lili1232000,
|
||||||
Lise W,
|
Lise W,
|
||||||
Lizabeth Kelly,
|
Lizabeth Kelly,
|
||||||
lou,
|
Lou,
|
||||||
Lukasz G,
|
Lukasz G,
|
||||||
Manse,
|
Manse,
|
||||||
Marcel,
|
Marcel,
|
||||||
@@ -77,51 +93,57 @@ Marie,
|
|||||||
Marijke,
|
Marijke,
|
||||||
Mark,
|
Mark,
|
||||||
Martin,
|
Martin,
|
||||||
|
Matthew Nowosiadly,
|
||||||
Medea,
|
Medea,
|
||||||
Meghann,
|
Meghann,
|
||||||
Melissa,
|
Melissa,
|
||||||
Michaela,
|
|
||||||
Michaela Gáliková,
|
Michaela Gáliková,
|
||||||
mieke,
|
Michaela,
|
||||||
|
Mieke,
|
||||||
Mimi,
|
Mimi,
|
||||||
moj shar,
|
Moj Shar,
|
||||||
MonicaKS,
|
Monicaks,
|
||||||
Nancy Anne Martin,
|
Nancy Anne Martin,
|
||||||
Nancy Keary,
|
Nancy Keary,
|
||||||
|
Nic Lecloux,
|
||||||
Nick,
|
Nick,
|
||||||
nirpf,
|
Nirpf,
|
||||||
|
Paaskus,
|
||||||
Pascal H,
|
Pascal H,
|
||||||
Paula Jean McKenney Valadez,
|
Paul Will,
|
||||||
|
Paula Jean Mckenney Valadez,
|
||||||
Pauline Roberts (Capyboppy),
|
Pauline Roberts (Capyboppy),
|
||||||
Pitdepitis,
|
Pitdepitis,
|
||||||
Rachelle and Omar,
|
Rachelle And Omar,
|
||||||
RaptorRich,
|
Raptorrich,
|
||||||
Rich,
|
Rich,
|
||||||
RiztheBread,
|
Rizthebread,
|
||||||
RoijalBaker,
|
Roijalbaker,
|
||||||
Rori,
|
Rori,
|
||||||
|
Ruben August Fischer,
|
||||||
Sander,
|
Sander,
|
||||||
Sandy,
|
Sandy,
|
||||||
Sarah,
|
Sarah,
|
||||||
Scooter,
|
Scooter,
|
||||||
Scott Mattson,
|
Scott Mattson,
|
||||||
SebastianKlocke,
|
Sebastianklocke,
|
||||||
Sharon Eicher,
|
Sharon Eicher,
|
||||||
ShelleyMierle,
|
Shelleymierle,
|
||||||
SheriK,
|
Sherik,
|
||||||
|
Smirnov,
|
||||||
Spencer,
|
Spencer,
|
||||||
strambinha,
|
Strambinha,
|
||||||
Sue,
|
|
||||||
Sue,
|
Sue,
|
||||||
Sune,
|
Sune,
|
||||||
Susan,
|
Susan,
|
||||||
Sven,
|
Sven,
|
||||||
tbonewilly,
|
Tbonewilly,
|
||||||
Thales Mello,
|
Thales Mello,
|
||||||
TheRealBruce,
|
Therealbruce,
|
||||||
|
Tracy \& Paul Will,
|
||||||
Usliv,
|
Usliv,
|
||||||
Vassil Dichev,
|
Vassil Dichev,
|
||||||
Vladimir Smirnov,
|
Vladimir Smirnov,
|
||||||
Voicu,
|
Voicu,
|
||||||
Zika,
|
Zika,
|
||||||
Zoltan
|
Zoltan.
|
||||||
|
|||||||
|
Can't render this file because it has a wrong number of fields in line 149.
|
@@ -392,7 +392,7 @@ class ModifyBuild
|
|||||||
|
|
||||||
def build_header_html
|
def build_header_html
|
||||||
%Q{
|
%Q{
|
||||||
<div class="header"><img src="banner.png"></div>
|
<div class="header"><a href="/"><img src="banner.png"></a></div>
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -629,7 +629,9 @@ class ModifyBuild
|
|||||||
to everyone, I have decided to make it available as a free digital download.
|
to everyone, I have decided to make it available as a free digital download.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<a href="bread.jpg">
|
||||||
<img alt="One of my best Sourdough Breads" class="home-bread" src="bread.jpg" />
|
<img alt="One of my best Sourdough Breads" class="home-bread" src="bread.jpg" />
|
||||||
|
</a>
|
||||||
|
|
||||||
<p class="noindent">
|
<p class="noindent">
|
||||||
However, producing and maintaining resources like this requires
|
However, producing and maintaining resources like this requires
|
||||||
@@ -780,7 +782,7 @@ class ModifyBuild
|
|||||||
def insert_mobile_header_graphic(text)
|
def insert_mobile_header_graphic(text)
|
||||||
doc = build_doc(text)
|
doc = build_doc(text)
|
||||||
content = doc.css(".TOC.menu")[0]
|
content = doc.css(".TOC.menu")[0]
|
||||||
content.after('<div class="mobile-banner"><img src="banner.png" /></div>')
|
content.after('<div class="mobile-banner"><a href="/"><img src="banner.png" /></a></div>')
|
||||||
doc.to_html
|
doc.to_html
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user