From 788bb641e13ece3df4ecb472f83477a41a7a49af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Costa?= Date: Tue, 26 May 2026 17:25:05 +0100 Subject: [PATCH] Strip whitespace from property names and types when parsing CSV When spreadsheet entries have spaces around the colon separator (e.g. "fromScreen: SideGameFromScreen"), the type retained a leading space, causing double spaces in generated Swift code. Co-Authored-By: Claude Opus 4.6 (1M context) --- lib/evva/google_sheet.rb | 4 ++-- spec/fixtures/sample_public_events.csv | 1 + spec/lib/evva/google_sheet_spec.rb | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/evva/google_sheet.rb b/lib/evva/google_sheet.rb index d303be8..64aabff 100644 --- a/lib/evva/google_sheet.rb +++ b/lib/evva/google_sheet.rb @@ -101,8 +101,8 @@ def hash_parser(property_array) unless property_array.nil? || property_array.empty? property_array.split(",").each do |prop| split_prop = prop.split(":") - prop_name = split_prop[0].to_sym - prop_type = split_prop[1].to_s + prop_name = split_prop[0].strip.to_sym + prop_type = split_prop[1].to_s.strip h[prop_name] = prop_type end end diff --git a/spec/fixtures/sample_public_events.csv b/spec/fixtures/sample_public_events.csv index 8edab13..b490a0e 100644 --- a/spec/fixtures/sample_public_events.csv +++ b/spec/fixtures/sample_public_events.csv @@ -2,3 +2,4 @@ Event Name,Event Properties,Event Destination cp_page_view,"course_id:Long,course_name:String","firebase,custom destination" nav_feed_tap,, cp_view_scorecard,"course_id:Long,course_name:String","custom destination" +side_game_delete,"fromScreen: SideGameFromScreen,round_group_creation_token:String",firebase diff --git a/spec/lib/evva/google_sheet_spec.rb b/spec/lib/evva/google_sheet_spec.rb index 4d6e1b1..820e21a 100644 --- a/spec/lib/evva/google_sheet_spec.rb +++ b/spec/lib/evva/google_sheet_spec.rb @@ -26,6 +26,7 @@ Evva::AnalyticsEvent.new("cp_page_view", { course_id: "Long", course_name: "String" }, ["firebase", "custom destination"]), Evva::AnalyticsEvent.new("nav_feed_tap", {}, []), Evva::AnalyticsEvent.new("cp_view_scorecard", { course_id: "Long", course_name: "String" }, ["custom destination"]), + Evva::AnalyticsEvent.new("side_game_delete", { fromScreen: "SideGameFromScreen", round_group_creation_token: "String" }, ["firebase"]), ] expect(events).to eq(expected) end