mirror of
				https://github.com/imfing/hextra.git
				synced 2025-10-31 08:24:51 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {{- /*
 | |
| Render Jupyter Notebook
 | |
| 
 | |
| @param {string} 0 The path of the Jupyter Notebook.
 | |
| 
 | |
| @example {{% jupyter "notebook.ipynb" %}}
 | |
| */ -}}
 | |
| 
 | |
| {{- $path := .Get 0 -}}
 | |
| {{- $data := "" -}}
 | |
| {{- $page := .Page -}}
 | |
| 
 | |
| {{- $isLocal := not (urls.Parse $path).Scheme -}}
 | |
| {{- $isPage := and (eq .Page.Kind "page") (not .Page.BundleType) -}}
 | |
| 
 | |
| {{/* https://gohugo.io/functions/transform/unmarshal/ */}}
 | |
| {{- if (not $isLocal) -}}
 | |
|   {{- with resources.GetRemote $path -}}
 | |
|     {{- with unmarshal .Content -}}{{- $data = . -}}{{- end -}}
 | |
|   {{- else -}}
 | |
|     {{- errorf "Remote resource not found: %s" $path -}}
 | |
|   {{- end -}}
 | |
| {{- else if (not $isPage) -}}
 | |
|   {{- with .Page.Resources.Get $path -}}
 | |
|     {{- with unmarshal .Content -}}{{- $data = . -}}{{- end -}}
 | |
|   {{- else -}}
 | |
|     {{- errorf "Local resource not found: %s" $path -}}
 | |
|   {{- end -}}
 | |
| {{- else -}}
 | |
|   {{- with resources.Get $path -}}
 | |
|     {{- with unmarshal .Content -}}{{- $data = . -}}{{- end -}}
 | |
|   {{- else -}}
 | |
|     {{- errorf "Local resource not found: %s" $path -}}
 | |
|   {{- end -}}
 | |
| {{- end -}}
 | |
| 
 | |
| {{- $language := index $data "metadata" "language_info" "name" | default "python" -}}
 | |
| 
 | |
| {{- with index $data "cells" -}}
 | |
|   {{- range $cell := . -}}
 | |
|     {{- if eq (index $cell "cell_type") "code" -}}
 | |
|       {{- $source := index $cell "source" -}}
 | |
|       {{- $sourceContent := (cond (reflect.IsSlice $source) (delimit $source "") $source) -}}
 | |
| {{- with ($sourceContent | strings.Chomp) -}}
 | |
| {{ (printf "\n\n```%s\n%s\n```\n" $language .) | safeHTML -}}
 | |
| {{- end -}}
 | |
| 
 | |
|       <div class="hextra-jupyter-code-cell hextra-scrollbar">
 | |
|         {{- $outputs := index $cell "outputs" -}}
 | |
|         {{- with $outputs -}}
 | |
|           <div class="hextra-jupyter-code-cell-outputs-container">
 | |
|             <div class="hextra-jupyter-code-cell-outputs">
 | |
|               {{- range $output := . -}}
 | |
|                 {{- if eq (index $output "output_type") "display_data" -}}
 | |
|                   {{- $data := index $output "data" -}}
 | |
|                   {{- $image := index $data "image/png" -}}
 | |
|                   {{- if $image -}}
 | |
|                     <img src="data:image/png;base64,{{- $image -}}" alt="image" />
 | |
|                   {{- end -}}
 | |
|                 {{- else if eq (index $output "output_type") "stream" -}}
 | |
|                   {{- $text := index $output "text" -}}
 | |
|                   {{- $textContent := (cond (reflect.IsSlice $text) (delimit $text "") $text) -}}
 | |
|                   <pre class="not-prose">{{- $textContent -}}</pre>
 | |
|                 {{- else if eq (index $output "output_type") "execute_result" -}}
 | |
|                   {{- $data := index $output "data" -}}
 | |
|                   {{- $text := index $data "text/plain" -}}
 | |
|                   {{- $textContent := (cond (reflect.IsSlice $text) (delimit $text "") $text) -}}
 | |
|                   <pre class="not-prose">{{- $textContent -}}</pre>
 | |
|                   {{- $html := index $data "text/html" -}}
 | |
|                   {{- if $html -}}
 | |
|                     {{- $htmlText := delimit $html "" -}}
 | |
|                     <div>
 | |
|                       {{- $htmlText | safeHTML -}}
 | |
|                     </div>
 | |
|                   {{- end -}}
 | |
|                 {{- end -}}
 | |
|               {{- end -}}
 | |
|             </div>
 | |
|           </div>
 | |
|         {{- end -}}
 | |
|       </div>
 | |
|     {{- else if eq (index $cell "cell_type") "markdown" -}}
 | |
|         {{- $source := index $cell "source" }}
 | |
|         {{- $sourceContent := (cond (reflect.IsSlice $source) (delimit $source "") $source) }}
 | |
| {{ (printf "\n%s\n" $sourceContent) | safeHTML }}
 | |
|     {{- end -}}
 | |
|   {{- end -}}
 | |
| {{- end -}}
 | 
