{{ $currentNode := . }} {{ $_ := newScratch }} {{ $debug := (slice) }} {{ $sandnameSingular := (slice) }} {{ $sandnamePlural := (slice) }} {{ range $k, $v := $.Site.Data.sandpointsnamegraph }} {{ $sandnameSingular = $sandnameSingular | append $k }} {{ $sandnamePlural = $sandnamePlural | append $v }} {{ end }} {{ $pPath := "" }} {{ range $p := .Site.RegularPages }} {{ $pPath = printf "/%s" $p.File }} {{ $pageDir := "" }} {{ with $p.File }} {{ $pageDir = (substr .Dir 0 -1)}} {{ end }} {{ $content := $p.Content }} {{ with $links := $p.Scratch.Get "links" }} {{ range $link := $links }} {{ $linkPath := printf "/%s" $link.File}} {{ with ($_.Get $linkPath) }} {{ $_.SetInMap $linkPath "backlinks" (uniq ((index ($_.Get $linkPath) "backlinks") | append $p)) }} {{ else }} {{ $_.SetInMap $linkPath "backlinks" (slice $p) }} {{ end }} {{ end }} {{ end }} {{ $paramsKeys := (slice) }} {{ range $k, $v := $p.Params }} {{ $paramsKeys = $paramsKeys | append $k }} {{ end }} {{ $mentions := intersect $paramsKeys $sandnamePlural }} {{ range $mention := $mentions }} {{ range $m := index $p.Params $mention }} {{ $mentionLink := printf "/%s/%s" (substr $mention 0 -1) $m }} {{ with ($_.Get $mentionLink) }} {{ $p.Scratch.Add "links" (uniq (($p.Scratch.Get "links")| append ($.GetPage $mentionLink))) }} {{ $_.SetInMap $mentionLink "backlinks" (uniq ((index ($_.Get $mentionLink) "backlinks") | append $p)) }} {{ else }} {{ $p.Scratch.Add "links" (uniq (($p.Scratch.Get "links")| append ($.GetPage $mentionLink))) }} {{ $_.SetInMap $mentionLink "backlinks" (slice $p) }} {{ end }} {{ end }} {{ end }} {{ $gp := $.GetPage $pPath }} {{ $gpPath := printf "/%s" $gp.File }} {{ range $k, $v := $gp.Params }} {{ with in $k "has_" }} {{ $s := index (split $k "has_") 1 }} {{ range $sin,$plur := $currentNode.Site.Data.sandpointsnamegraph }} {{ if eq $s $plur }} {{ range index $gp.Params $k }} {{ $cp := $.GetPage (printf "/%s/%s" $sin .) }} {{ $cpPath := printf "/%s" $cp.File }} {{ range $kcp, $vcp := $cp.Params }} {{ with in $kcp "has_" }} {{ $scp := index (split $kcp "has_") 1 }} {{ range $sincp,$plurcp := $currentNode.Site.Data.sandpointsnamegraph }} {{ if eq $scp $plurcp }} {{ $_.SetInMap $gpPath "depth" "core" }} {{ $_.SetInMap $gpPath "child_depth" "mantle" }} {{ $_.SetInMap $gpPath "has" $s }} {{ with $gp.File }} {{ $core := substr .Dir 0 -1 }} {{ with index ($_.Get $gpPath) "core" }} {{ $_.SetInMap $gpPath "core" (uniq ((index ($_.Get $gpPath) "core") | append $core)) }} {{ else }} {{ $_.SetInMap $gpPath "core" (slice $core) }} {{ end }} {{ $cor := $_.Get $cpPath }} {{ with $cor.core }} {{ $_.SetInMap $cpPath "core" (uniq ((index ($_.Get $cpPath) "core") | append $core)) }} {{ else }} {{ $_.SetInMap $cpPath "core" (slice $core) }} {{ end }} {{ end }} {{ with $cp.File }} {{ $mantle := substr .Dir 0 -1 }} {{ with index ($_.Get $gpPath) "mantle" }} {{ $_.SetInMap $gpPath "mantle" (uniq ((index ($_.Get $gpPath) "mantle") | append $mantle)) }} {{ else }} {{ $_.SetInMap $gpPath "mantle" (slice $mantle) }} {{ end }} {{ with index ($_.Get $cpPath) "mantle" }} {{ $_.SetInMap $cpPath "mantle" (uniq ((index ($_.Get $cpPath) "mantle") | append $mantle)) }} {{ else }} {{ $_.SetInMap $cpPath "mantle" (slice $mantle) }} {{ end }} {{ end }} {{ with $_.Get $gpPath }} {{ if .has_children }} {{ $hasChildren := index . "has_children" | append $cp }} {{ $_.SetInMap $gpPath "has_children" (uniq $hasChildren) }} {{ else }} {{ $_.SetInMap $gpPath "has_children" (slice $cp) }} {{ end }} {{ end }} {{ $_.SetInMap $cpPath "depth" "mantle" }} {{ $_.SetInMap $cpPath "child_depth" "crust" }} {{ $_.SetInMap $cpPath "plural" $plur }} {{ $_.SetInMap $cpPath "has" $scp }} {{ if isset $cp.Params $kcp }} {{ $_.SetInMap $cpPath "has_children" (slice) }} {{ with index ($_.Get $cpPath) "is_in" }} {{ $isincore := index ($_.Get $cpPath) "is_in" | append $gp}} {{ $_.SetInMap $cpPath "is_in" (uniq $isincore) }} {{ else }} {{ $_.SetInMap $cpPath "is_in" (slice $gp) }} {{ end }} {{ end }} {{ range index $cp.Params $kcp }} {{ $gcp := $.GetPage (printf "/%s/%s" $sincp .) }} {{ $gcpPath := printf "/%s" $gcp.File }} {{ with $_.Get $cpPath }} {{ if .has_children }} {{ $hasGChildren := index . "has_children" | append $gcp }} {{ $_.SetInMap $cpPath "has_children" (uniq $hasGChildren) }} {{ else }} {{ $_.SetInMap $cpPath "has_children" (slice $gcp) }} {{ end }} {{ end }} {{ $_.SetInMap $gcpPath "depth" "crust" }} {{ $_.SetInMap $gcpPath "plural" $plurcp }} {{ $_.SetInMap $gcpPath "in" (slice $sin $plur) }} {{ with $gp.File }} {{ $core := substr .Dir 0 -1 }} {{ with index ($_.Get $gcpPath) "core" }} {{ $_.SetInMap $gcpPath "core" (uniq ((index ($_.Get $gcpPath) "core") | append $core)) }} {{ else }} {{ $_.SetInMap $gcpPath "core" (slice $core) }} {{ end }} {{ end }} {{ with $cp.File }} {{ $mantle := substr .Dir 0 -1 }} {{ with index ($_.Get $gcpPath) "mantle" }} {{ $_.SetInMap $gcpPath "mantle" (uniq ((index ($_.Get $gcpPath) "mantle") | append $mantle)) }} {{ else }} {{ $_.SetInMap $gcpPath "mantle" (slice $mantle) }} {{ end }} {{ end }} {{ with $gcp.File }} {{ $crust := substr .Dir 0 -1 }} {{ with index ($_.Get $gpPath) "crust" }} {{ $_.SetInMap $gpPath "crust" (uniq ((index ($_.Get $gpPath) "crust") | append $crust)) }} {{ else }} {{ $_.SetInMap $gpPath "crust" (slice $crust) }} {{ end }} {{ with index ($_.Get $cpPath) "crust" }} {{ $_.SetInMap $cpPath "crust" (uniq ((index ($_.Get $cpPath) "crust") | append $crust)) }} {{ else }} {{ $_.SetInMap $cpPath "crust" (slice $crust) }} {{ end }} {{ with index ($_.Get $gcpPath) "crust" }} {{ $_.SetInMap $gcpPath "crust" (uniq ((index ($_.Get $gcpPath) "crust") | append $crust)) }} {{ else }} {{ $_.SetInMap $gcpPath "crust" (slice $crust) }} {{ end }} {{ end }} {{ with $_.Get $gcpPath }} {{ if .is_in }} {{ $isinmantle := index . "is_in" | append $cp}} {{ $_.SetInMap $gcpPath "is_in" (uniq $isinmantle) }} {{ else }} {{ $_.SetInMap $gcpPath "is_in" (slice $cp) }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ $_.SetInMap $pPath "debug" (printf "%#v" $debug) }} {{ end }} {{ return $_ }}