From caf99ae22c885e97f993a3a148e51c609794f098 Mon Sep 17 00:00:00 2001 From: Bradley Taunt Date: Mon, 9 Mar 2026 09:53:28 -0400 Subject: Rework member website structure - Use data sites yaml for listing all members, remove site_listings files - Update submission page to reflect updates - Include required gems in Gemfile - Include build file for auto formatting sites.yml --- scripts/sites-yml-generator.rb | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 scripts/sites-yml-generator.rb (limited to 'scripts') diff --git a/scripts/sites-yml-generator.rb b/scripts/sites-yml-generator.rb new file mode 100644 index 0000000..2085179 --- /dev/null +++ b/scripts/sites-yml-generator.rb @@ -0,0 +1,46 @@ +#!/usr/bin/env ruby +# Parses all *.md files in _site_listings/ and outputs a combined sites.yml. + +LISTINGS_DIR = "_site_listings" +OUTPUT_FILE = "_data/sites.yml" + +def parse_frontmatter(filepath) + content = File.read(filepath, encoding: "utf-8") + blocks = content.scan(/---\s*\n(.*?)\n---/m) + + meta = {} + blocks.each do |block,| + block.strip.each_line do |line| + key, value = line.strip.split(":", 2) + meta[key.strip] = value.strip if key && value + end + end + + meta +end + +def format_entry(meta) + lines = [] + lines << "- domain: #{meta["pageurl"]}" + lines << " size: #{meta["size"]}" if meta["size"] + lines << " http: true" if meta["http"] == "true" + lines << " hof: true" if meta["hof"] == "true" + lines.join("\n") +end + +files = Dir.glob(File.join(LISTINGS_DIR, "*.md")).sort + +abort "No .md files found in '#{LISTINGS_DIR}/'" if files.empty? + +entries = files.filter_map do |filepath| + meta = parse_frontmatter(filepath) + if meta.empty? + warn "Warning: no frontmatter found in #{filepath}" + nil + else + format_entry(meta) + end +end + +File.write(OUTPUT_FILE, entries.join("\n\n") + "\n") +puts "Written #{entries.size} entries to #{OUTPUT_FILE}" \ No newline at end of file -- cgit v1.3.1