Use Weirich-style blocks: braces for values, do/end for effects
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LG4iASZnHb1yEM1JAASiWn
diff --git a/lib/rank_king/google.rb b/lib/rank_king/google.rb
index cc813d5..ff0a4a3 100644
--- a/lib/rank_king/google.rb
+++ b/lib/rank_king/google.rb
@@ -60,9 +60,9 @@ module RankKing
# out Watch Later and Liked videos.
#: (String access_token) -> Array[[String, String]]
def self.playlists(access_token)
- pages(access_token, PLAYLISTS_URL, { part: "snippet", mine: "true" }).map do |item|
+ pages(access_token, PLAYLISTS_URL, { part: "snippet", mine: "true" }).map { |item|
[item.fetch("id"), item.dig("snippet", "title").to_s] #: [String, String]
- end
+ }
end
# The videos in a playlist, in playlist order, as [video id, title].
@@ -71,12 +71,12 @@ module RankKing
#: (String access_token, String playlist_id) -> Array[[String, String]]
def self.playlist_videos(access_token, playlist_id)
items = pages(access_token, PLAYLIST_ITEMS_URL, { part: "snippet", playlistId: playlist_id })
- items.filter_map do |item|
+ items.filter_map { |item|
snippet = item.fetch("snippet")
next unless snippet["videoOwnerChannelTitle"]
[snippet.dig("resourceId", "videoId"), snippet.fetch("title")] #: [String, String]
- end
+ }
end
# Every item of a YouTube list endpoint, following its pages.
@@ -105,7 +105,9 @@ module RankKing
def self.request(method, url, params, access_token)
uri = URI(url)
request = if method == :post
- Net::HTTP::Post.new(uri).tap { |post| post.set_form_data(params) }
+ Net::HTTP::Post.new(uri).tap do |post|
+ post.set_form_data(params)
+ end
else
uri.query = URI.encode_www_form(params)
Net::HTTP::Get.new(uri)
diff --git a/lib/rank_king/sources/text.rb b/lib/rank_king/sources/text.rb
index 7445d07..bcb9e20 100644
--- a/lib/rank_king/sources/text.rb
+++ b/lib/rank_king/sources/text.rb
@@ -24,7 +24,9 @@ module RankKing
names = params["items"].to_s.lines.map(&:strip).reject(&:empty?)
return false if names.size < 2
- names.each { |name| Item.create(list_id: list.id, name:) }
+ names.each do |name|
+ Item.create(list_id: list.id, name:)
+ end
true
end
@@ -60,7 +62,9 @@ module RankKing
end
end
- added.each {|name| Item.create(list_id: @list.id, name:) }
+ added.each do |name|
+ Item.create(list_id: @list.id, name:)
+ end
end
end
end
diff --git a/lib/rank_king/sources/youtube_playlist.rb b/lib/rank_king/sources/youtube_playlist.rb
index c91eb97..66277a7 100644
--- a/lib/rank_king/sources/youtube_playlist.rb
+++ b/lib/rank_king/sources/youtube_playlist.rb
@@ -78,9 +78,9 @@ module RankKing
#: () -> Hash[String, Item]
def items_by_key
video_ids = DB[ITEMS].where(item_id: Item.where(list_id: @list.id).select(:id)).to_hash(:item_id, :video_id)
- Item.where(id: video_ids.keys).all.to_h do |item|
+ Item.where(id: video_ids.keys).all.to_h { |item|
[video_ids.fetch(item.id).to_s, item] #: [String, Item]
- end
+ }
end
#: (Item item, Entry entry) -> void
diff --git a/lib/rank_king/views/list/new.rb b/lib/rank_king/views/list/new.rb
index 6bb5ba3..1025ae7 100644
--- a/lib/rank_king/views/list/new.rb
+++ b/lib/rank_king/views/list/new.rb
@@ -29,7 +29,9 @@ module RankKing
label(class: "field") do
plain "Source"
select(name: "source") do
- @sources.each { |kind, title, _fields| option(value: kind) { title } }
+ @sources.each do |kind, title, _fields|
+ option(value: kind) { title }
+ end
end
small { "A list keeps its source." }
end
diff --git a/lib/rank_king/views/sources/youtube_playlist.rb b/lib/rank_king/views/sources/youtube_playlist.rb
index 63fe2a8..d100da2 100644
--- a/lib/rank_king/views/sources/youtube_playlist.rb
+++ b/lib/rank_king/views/sources/youtube_playlist.rb
@@ -24,7 +24,9 @@ module RankKing
label(class: "field") do
plain "Playlist"
select(name: "playlist", required: true) do
- @playlists.each { |id, title| option(value: id) { title } }
+ @playlists.each do |id, title|
+ option(value: id) { title }
+ end
end
small { "Private playlists are listed too. YouTube does not share Watch Later." }
end
diff --git a/lib/rank_king/web.rb b/lib/rank_king/web.rb
index c2b8be4..982fd9b 100644
--- a/lib/rank_king/web.rb
+++ b/lib/rank_king/web.rb
@@ -92,13 +92,15 @@ module RankKing
# The source fills the list from its own fields, or turns it
# down and nothing is made.
- list = DB.transaction do
+ list = DB.transaction {
l = List.create(name: name, user_id: user.id, source_kind: source_kind)
raise Sequel::Rollback unless Sources.fetch(source_kind).create(l, r.params)
- axis_names.each { |n| Axis.create(list_id: l.id, name: n) }
+ axis_names.each do |n|
+ Axis.create(list_id: l.id, name: n)
+ end
l
- end
+ }
r.halt 422 unless list
r.redirect "/lists/#{list.id}"
@@ -106,10 +108,10 @@ module RankKing
end
r.get "new" do
- kinds = Sources::KINDS.map do |kind|
+ kinds = Sources::KINDS.map { |kind|
source = Sources.fetch(kind)
[kind, source.title, source.fields(user)] #: [String, String, Sources::_Component]
- end
+ }
Views::ListViews::New.new(sources: kinds, csrf: method(:csrf_token)).call
end