-
Notifications
You must be signed in to change notification settings - Fork 1
/
assignCurrentModule.html
37 lines (37 loc) · 1.54 KB
/
assignCurrentModule.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
{%- assign best_match = "" -%}
{%- for mod_hash in site.data.modules -%}
{%- assign mod = mod_hash[1] -%}
{%- if mod.basepath -%}
{%- assign idx = 0 -%}
{%- assign url_segments = page.url | split: '/' -%}
{%- for segment in url_segments -%}
{%- comment -%}
For some very strange reason "assign idx = idx | plus: segment.size | plus: 1" at this point causes
an "Liquid Exception: no implicit conversion of nil into String" eventhough the same statement
works ok a few lines later (!?). So doing this absurd addition-by-for-loop below instead:
{%- endcomment -%}
{%- for i in (0..segment.size) -%}
{%- assign idx = idx | plus: 1 -%}
{%- endfor -%}
{%- assign to_match = page.url | slice: idx, mod.basepath.size -%}
{%- if mod.basepath == to_match -%}
{%- if mod.basepath.size > best_match.size -%}
{%- assign current_module = mod -%}
{%- assign best_match = mod.basepath -%}
{%- assign basepath_end_index = idx | plus: best_match.size | plus: 1 -%}
{%- break -%}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{%- endfor -%}
{%- if current_module and current_module.versions -%}
{%- assign to_match = page.url | slice: basepath_end_index, page.url.size -%}
{%- assign to_match = to_match | split: "/" -%}
{%- for ver in current_module.versions -%}
{%- if ver.path == to_match[0] -%}
{%- assign current_module_version = ver -%}
{%- break -%}
{%- endif -%}
{%- endfor -%}
{%- endif -%}