100 lines
No EOL
4.8 KiB
JSON
100 lines
No EOL
4.8 KiB
JSON
{{/* TODO: read the spec and write this template layout */}}
|
|
{
|
|
"version": "https://jsonfeed.org/version/1.1",
|
|
"title": {{ .Title | jsonify }},
|
|
"home_page_url": "{{ .Permalink }}",
|
|
"feed_url": "{{ (.OutputFormats.Get "jsonfeed").Permalink }}"
|
|
{{- with (.Summary | jsonify) }},
|
|
"description": {{.}}
|
|
{{- end }},
|
|
"user_comment": "does anyone even use jsonfeed lmao",
|
|
{{- /* next_url = allows for pagination but i don't think i have to worry about that yet. TODO:?*/}}
|
|
"icon": "https://trwnh.com/.assets/icon.png", {{- /* TODO: make this variable (512x512?) */}}
|
|
"favicon": "https://trwnh.com/.assets/icon.png", {{- /* TODO: make this variable and also 64x64 */}}
|
|
"authors": [ {{- /* TODO: make this variable and also loopable? */}}
|
|
{
|
|
"name": {{ (or .Params.author.name .Site.Params.author.name ) | jsonify }},
|
|
"url": {{ (or .Params.author.url .Site.Params.author.url .Site.Home.Permalink .Site.BaseURL) | jsonify }},
|
|
"icon": "https://trwnh.com/.assets/icon.png" {{- /* TODO: make this variable (512x512?) */}}
|
|
}
|
|
],
|
|
"author": { {{- /* TODO: make this variable */}}
|
|
"name": {{ (or .Params.author.name .Site.Params.author.name ) | jsonify }},
|
|
"url": {{ (or .Params.author.url .Site.Params.author.url .Site.Home.Permalink .Site.BaseURL) | jsonify }},
|
|
"icon": "https://trwnh.com/.assets/icon.png" {{- /* TODO: make this variable (512x512?) */}}
|
|
},
|
|
"language": {{ (or .Language.LanguageCode .Site.Language.LanguageCode) | jsonify }},
|
|
"expired": false, {{- /* TODO: allow for marking feeds as disabled? */}}
|
|
"hubs": [], {{- /* TODO: allow defining rsscloud or websub hub with `type` and `url` */}}
|
|
"items": [
|
|
{{- range $index, $item := .RegularPages }} {{- /* TODO: if/when i paginate this i need to range over the paginator instead of pages */}}
|
|
{
|
|
"id": "{{.Permalink}}",
|
|
"url": "{{.Permalink}}"
|
|
{{- with "" }}, {{- /* TODO: "this is useful for linkblogs" -- wtf is a linkblog exactly? look into this. is it more or less the same as inReplyTo? */}}
|
|
"external_url": "{{.}}"
|
|
{{- end }}
|
|
{{- with .Title }},
|
|
"title": {{ . | jsonify }}
|
|
{{- end }}
|
|
{{- with .Content }},
|
|
"content_html": {{. | jsonify}} {{- /* TODO: handle the content_text case for plaintext content. (how to detect if content is plainifyable? just do it always? when to omit content_html? never?) */}}
|
|
{{ else }}, {{- /* if there isn't any content, we still have to put something bc it's a required field */}}
|
|
"content_text": ""
|
|
{{- end }}
|
|
{{- if isset .Params "summary" }}
|
|
{{- with .Summary }},
|
|
"summary": {{ . | jsonify }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- with "" }}, {{- /* TODO: handle featured images */}}
|
|
"image": "{{.}}"
|
|
{{- end }}
|
|
{{- with "" }}, {{- /* TODO: wtf is this */}}
|
|
"banner_image": "{{.}}"
|
|
{{- end }}
|
|
{{- with .Date }},
|
|
"date_published": "{{.Format "2006-01-02T15:04:05-07:00"}}"
|
|
{{- end }}
|
|
{{- with .Lastmod }}, {{- /* TODO: should this only be present if the post was edited? */}}
|
|
"date_modified": "{{.Format "2006-01-02T15:04:05-07:00"}}"
|
|
{{- end }},
|
|
"authors": [ {{- /* TODO: make this variable and also loopable? or should this be omitted since it's implied by the top-level prop? maybe omit it only when it's equal? */}}
|
|
{
|
|
"name": {{ (or .Params.author.name .Site.Params.author.name ) | jsonify }},
|
|
"url": {{ (or .Params.author.url .Site.Params.author.url .Site.Home.Permalink .Site.BaseURL) | jsonify }},
|
|
"icon": "https://trwnh.com/.assets/icon.png" {{- /* TODO: make this variable (512x512?) */}}
|
|
}
|
|
],
|
|
"author": { {{- /* TODO: make this variable? or should this be omitted since it's implied by the top-level prop? maybe omit it only when it's equal? */}}
|
|
"name": {{ (or .Params.author.name .Site.Params.author.name ) | jsonify }},
|
|
"url": {{ (or .Params.author.url .Site.Params.author.url .Site.Home.Permalink .Site.BaseURL) | jsonify }},
|
|
"icon": "https://trwnh.com/.assets/icon.png" {{- /* TODO: make this variable (512x512?) */}}
|
|
}
|
|
{{- with .Params.tags }},
|
|
"tags": {{. | jsonify}}
|
|
{{- end }}
|
|
{{- with (or .Language.LanguageCode .Site.Language.LanguageCode) }}, {{- /* TODO: should this only be present if it differs from top-level feed language? */}}
|
|
"language": {{. | jsonify}}
|
|
{{- end }}
|
|
} {{- if ne $index (sub (len $.RegularPages) 1)}},{{end}}
|
|
{{- end }}
|
|
]
|
|
{{- with "" }},
|
|
"attachments": [ {{- /* TODO: what to use for this? detect "podcast" or similar cases where there are "related resources" to be listed */}}
|
|
{{- range . }}
|
|
"url": {{.Permalink|jsonify}},
|
|
"mime_type": "application/octet-stream" {{- /* TODO: detect this. it's required. */}}
|
|
{{- with .Name }},
|
|
"title": {{.|jsonify}}
|
|
{{- end }}
|
|
{{- with "" }}, {{- /* TODO: detect this optionally. */}}
|
|
"size_in_bytes": {{.|jsonify}}
|
|
{{- end }}
|
|
{{- with "" }}, {{- /* TODO: detect this optionally. */}}
|
|
"duration_in_seconds": {{.|jsonify}}
|
|
{{- end }}
|
|
{{- end }}
|
|
]
|
|
{{- end }}
|
|
} |