Add Sculpin talk snippets
This commit is contained in:
parent
f2407795a8
commit
5221d941d0
154
lua/opdavies/snippets/talks/sculpin.lua
Normal file
154
lua/opdavies/snippets/talks/sculpin.lua
Normal file
|
@ -0,0 +1,154 @@
|
||||||
|
local should_load = false
|
||||||
|
|
||||||
|
if not should_load then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local fmt = require("luasnip.extras.fmt").fmt
|
||||||
|
local ls = require "luasnip"
|
||||||
|
|
||||||
|
local s = ls.snippet
|
||||||
|
local t = ls.text_node
|
||||||
|
|
||||||
|
ls.add_snippets("twig", {
|
||||||
|
s(
|
||||||
|
"sortdate",
|
||||||
|
fmt(
|
||||||
|
[[
|
||||||
|
{{% set speakersAndDates = [] %}}
|
||||||
|
|
||||||
|
{{% for speaker in speakers %}}
|
||||||
|
{{% set talksForSpeaker = talks|default([])|filter(talk =>> talk.speaker == speaker.name) %}}
|
||||||
|
|
||||||
|
{{% set mostRecentTalk = talksForSpeaker|first %}}
|
||||||
|
|
||||||
|
{{% set speakersAndDates = speakersAndDates|merge([{{
|
||||||
|
date: mostRecentTalk.date,
|
||||||
|
speaker,
|
||||||
|
}}]) %}}
|
||||||
|
{{% endfor %}}
|
||||||
|
|
||||||
|
{{% set sortedSpeakers = speakersAndDates|sort((a, b) => b.date <=> a.date) %}}
|
||||||
|
|
||||||
|
{{% for speaker in sortedSpeakers|column('speaker') %}}
|
||||||
|
]],
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
s("sortname", { t "{% for speaker in site.speakers|sort((a, b) => a.name <=> b.name) %}" }),
|
||||||
|
|
||||||
|
s(
|
||||||
|
"speakerpage",
|
||||||
|
fmt(
|
||||||
|
[[
|
||||||
|
{{% block content_wrapper %}}
|
||||||
|
<h1 class="text-3xl font-bold text-center md:text-left">{{{{ page.name }}}}</h1>
|
||||||
|
|
||||||
|
<div class="mt-6">
|
||||||
|
<img
|
||||||
|
alt="Photo of {{{{ page.name }}}}"
|
||||||
|
class="object-cover flex-shrink-0 rounded-full shadow-lg size-40"
|
||||||
|
src="{{{{ page.imageUrl }}}}"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-10">
|
||||||
|
<em>{{{{ block('content') }}}}</em>
|
||||||
|
</div>
|
||||||
|
{{% endblock %}}
|
||||||
|
]],
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
s(
|
||||||
|
"speaker",
|
||||||
|
fmt(
|
||||||
|
[[
|
||||||
|
<div>
|
||||||
|
<a href="#" class="flex flex-col-reverse gap-3 items-center group">
|
||||||
|
<div class="text-center">
|
||||||
|
<p class="text-base group-hover:underline">{{{{ speaker.name }}}}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<img
|
||||||
|
alt="Photo of {{{{ speaker.name }}}}"
|
||||||
|
class="object-cover flex-shrink-0 rounded-full shadow-lg size-20 lg:size-32 xl:size-24"
|
||||||
|
src="{{{{ speaker.imageUrl }}}}" /> </div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
]],
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
s(
|
||||||
|
"speakers",
|
||||||
|
fmt(
|
||||||
|
[[
|
||||||
|
<section>
|
||||||
|
<h2 class="text-3xl font-bold text-center">Speakers</h2>
|
||||||
|
|
||||||
|
<div class="mt-8">
|
||||||
|
<div class="grid grid-cols-2 gap-10 px-4 mx-auto max-w-sm md:grid-cols-3 md:max-w-md lg:grid-cols-4 lg:gap-8 lg:max-w-full xl:grid-cols-6">
|
||||||
|
{{% for speaker in site.speakers %}}
|
||||||
|
|
||||||
|
{{% endfor %}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
]],
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
),
|
||||||
|
})
|
||||||
|
|
||||||
|
ls.add_snippets("yaml", {
|
||||||
|
s(
|
||||||
|
"talks",
|
||||||
|
fmt(
|
||||||
|
[[
|
||||||
|
talks:
|
||||||
|
- title: Building Static Websites with PHP and Sculpin
|
||||||
|
speaker: Oliver Davies
|
||||||
|
date: 2024-02-14
|
||||||
|
- title: 'FPGA^2: An open-source FPGA'
|
||||||
|
speaker: Robin Hodson
|
||||||
|
date: 2024-02-14
|
||||||
|
- title: Introducing Domain Driven Design
|
||||||
|
speaker: Rob Allen
|
||||||
|
date: 2024-01-10
|
||||||
|
- title: Building Better TUIs (with PHP)
|
||||||
|
speaker: Dan Leech
|
||||||
|
date: 2023-11-08
|
||||||
|
- title: Thoughts on Ubiquitous Language
|
||||||
|
speaker: Rob Allen
|
||||||
|
date: 2023-11-08
|
||||||
|
- title: Testing Legacy
|
||||||
|
speaker: Mike Karthauser
|
||||||
|
date: 2023-11-08
|
||||||
|
- title: Building "Build Configs"
|
||||||
|
speaker: Oliver Davies
|
||||||
|
date: 2023-11-08
|
||||||
|
- title: Terraform from a dev’s perspective
|
||||||
|
speaker: Nigel Dunn
|
||||||
|
date: 2023-10-11
|
||||||
|
- title: What is TDD and why should I care?
|
||||||
|
speaker: Naomi Gotts
|
||||||
|
date: 2023-07-12
|
||||||
|
- title: Go for PHP
|
||||||
|
speaker: Dan Leech
|
||||||
|
date: 2023-02-08
|
||||||
|
- title: What's new in PHP 8.*
|
||||||
|
speaker: Derick Rethans
|
||||||
|
date: 2023-02-11
|
||||||
|
- title: Behaviour Driven Development (BDD) in Practice
|
||||||
|
speaker: Ciaran McNulty
|
||||||
|
date: 2022-09-14
|
||||||
|
]],
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
),
|
||||||
|
})
|
|
@ -123,6 +123,11 @@ ls.add_snippets("js", snippets.javascript)
|
||||||
ls.add_snippets("typescript", snippets.javascript)
|
ls.add_snippets("typescript", snippets.javascript)
|
||||||
ls.add_snippets("vue", snippets.javascript)
|
ls.add_snippets("vue", snippets.javascript)
|
||||||
|
|
||||||
|
-- Include any snippets to use in presentations.
|
||||||
|
for _, ft_path in ipairs(vim.api.nvim_get_runtime_file("lua/opdavies/snippets/talks/*.lua", true)) do
|
||||||
|
loadfile(ft_path)()
|
||||||
|
end
|
||||||
|
|
||||||
require("luasnip.loaders.from_vscode").lazy_load()
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
|
|
||||||
ls.config.set_config {
|
ls.config.set_config {
|
||||||
|
|
Reference in a new issue