From f469f3dbdab3c7d19aad38f6c1f747f5fd3ca382 Mon Sep 17 00:00:00 2001 From: David Eisinger Date: Thu, 6 Nov 2025 11:21:16 -0500 Subject: [PATCH] Refactor links script --- bin/links | 54 ++++++++++++++++++++++++------------------------------ 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/bin/links b/bin/links index e3cc77a..fb6b421 100755 --- a/bin/links +++ b/bin/links @@ -5,46 +5,40 @@ require "open-uri" FEED_URL = "https://bookmarks.davideisinger.com/u:dce.json" -index = (ARGV.pop || 1).to_i +# Mutable state +index = (ARGV.pop || 1).to_i content = [] -links = [] -refs = [] +links = [] +refs = [] -item_content = ->(item) do - title = "[#{item["title"]}][#{index}]" +# Helpers +archive_url = ->(url) { `bin/archive "#{url}"`.sub("references:\n", "") } + +link_def = ->(i, url) { "[#{i}]: #{url}" } + +item_content = ->(item, i) do + title = "[#{item["title"]}][#{i}]" + title += " ([via][#{i + 1}])" if item["referrer"] + + desc = (item["description"] || "").to_s.tr("\n", " ").squeeze(" ") - if item["referrer"] - title += " ([via][#{index + 1}])" - end - <<~OUT * #{title} - > #{item["description"].tr("\n", " ").squeeze(" ")} + > #{desc} OUT end -item_link = ->(item) do - "[#{index}]: #{item["url"]}" +add_url = ->(url) do + links << link_def[index, url] + refs << archive_url[url] + index += 1 end add_item = ->(item) do - ref = `bin/archive "#{item["url"]}"`.gsub("references:\n", "") - - content << item_content[item] - links << item_link[item] - refs << ref - - index += 1 - - if item["referrer"] - ref = `bin/archive "#{item["referrer"]}"`.gsub("references:\n", "") - - links << "[#{index}]: #{item["referrer"]}" - refs << ref - - index += 1 - end + content << item_content[item, index] + add_url[item["url"]] + add_url[item["referrer"]] if item["referrer"] end result = -> do @@ -61,8 +55,8 @@ end process_item = ->(item) do puts <<~OUT - #{item_content[item]} - #{item_link[item]} + #{item_content[item, index]} + #{link_def[index, item["url"]]} OUT