forked from LibraryCarpentry/lc-open-refine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
base_path.html
41 lines (35 loc) · 1.55 KB
/
base_path.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{%- comment -%}
When the website is built by GitHub Pages,
'site.url' is set to 'https://username.github.io'
'site.baseurl' is set to '/lesson-name'
When we start a local server using `jekyll serve`,
'site.url' is set to 'http://localhost:4000' and
'site.baseurl' is empty.
In both of the above cases we set 'relative_root_path' to 'site.baseurl'.
When we build a website locally with `jekyll build`,
both 'site.url' and 'site.baseurl' are empty.
This case is handled by the last 'else' in the code below.
The logic there follows the (adapted) instructions found at:
https://ricostacruz.com/til/relative-paths-in-jekyll
`page.url` gives the URL of the current page with a leading /:
- when the URL ends with an extension (e.g., /foo/bar.html),
we can get the 'depth' of the page by counting the number of
forward slashes ('/') and subtracting 1
- when the URL ends with a forward slash (e.g. /foo/bar/),
we can get the depth of the page by counting the number of /
{%- endcomment -%}
{% if site.url %}
{% assign relative_root_path = site.baseurl %}
{% else %}
{% assign last_char = page.url | slice: -1 %}
{% if last_char == "/" %}
{% assign offset = 0 %}
{% else %}
{% assign offset = 1 %}
{% endif %}
{% assign depth = page.url | split: '/' | size | minus: offset %}
{% if depth <= 1 %}{% assign relative_root_path = '.' %}
{% elsif depth == 2 %}{% assign relative_root_path = '..' %}
{% else %}{% capture relative_root_path %}..{% for i in (3..depth) %}/..{% endfor %}{% endcapture %}
{% endif %}
{% endif %}