commit f469f3dbdab3c7d19aad38f6c1f747f5fd3ca382
parent b2fba968be557cc4b1ce593a9b97527e63187a7d
Author: David Eisinger <[email protected]>
Date: Thu, 6 Nov 2025 11:21:16 -0500
Refactor links script
Diffstat:
| M | bin/links | | | 54 | ++++++++++++++++++++++++------------------------------ |
1 file changed, 24 insertions(+), 30 deletions(-)
diff --git 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