From a1e48e1580b947fecab6e94346294b450a190e9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Costa?= Date: Fri, 21 Aug 2026 10:23:23 +0100 Subject: [PATCH 1/2] Fix native_type replacing Long/Boolean substrings in custom type names The gsub calls in native_type used plain strings, so "Long" inside type names like "FlyoverLongPressAction" was replaced with "Int", producing "FlyoverIntPressAction". Use word-boundary regex instead. Co-Authored-By: Claude Opus 4.6 (1M context) --- lib/evva/swift_generator.rb | 4 ++-- spec/lib/evva/swift_generator_spec.rb | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/evva/swift_generator.rb b/lib/evva/swift_generator.rb index 82bcfac..908325c 100644 --- a/lib/evva/swift_generator.rb +++ b/lib/evva/swift_generator.rb @@ -125,8 +125,8 @@ def template_from(path) def native_type(type) type - .gsub("Boolean","Bool") - .gsub("Long", "Int") + .gsub(/\bBoolean\b/, "Bool") + .gsub(/\bLong\b/, "Int") end def special_property?(type) diff --git a/spec/lib/evva/swift_generator_spec.rb b/spec/lib/evva/swift_generator_spec.rb index 8fe982f..293a705 100644 --- a/spec/lib/evva/swift_generator_spec.rb +++ b/spec/lib/evva/swift_generator_spec.rb @@ -10,6 +10,7 @@ Evva::AnalyticsEvent.new("cp_page_view_b", { course_id: "Long", course_name: "String", from_screen: "CourseProfileSource" }, []), Evva::AnalyticsEvent.new("cp_page_view_c", { course_id: "Long", course_name: "String", from_screen: "CourseProfileSource?" }, []), Evva::AnalyticsEvent.new("cp_page_view_d", { course_id: "Long?", course_name: "String" }, []), + Evva::AnalyticsEvent.new("flyover_long_press_action_selected", { action: "FlyoverLongPressAction" }, ["firebase"]), ] } let(:expected) { @@ -41,6 +42,7 @@ case cpPageViewB = "cp_page_view_b" case cpPageViewC = "cp_page_view_c" case cpPageViewD = "cp_page_view_d" + case flyoverLongPressActionSelected = "flyover_long_press_action_selected" var name: String { return rawValue } @@ -51,6 +53,7 @@ case .cpPageViewB: return [] case .cpPageViewC: return [] case .cpPageViewD: return [] + case .flyoverLongPressActionSelected: return [.firebase] } } } @@ -61,6 +64,7 @@ case cpPageViewB(course_id: Int, course_name: String, from_screen: CourseProfileSource) case cpPageViewC(course_id: Int, course_name: String, from_screen: CourseProfileSource?) case cpPageViewD(course_id: Int?, course_name: String) + case flyoverLongPressActionSelected(action: FlyoverLongPressAction) var data: EventData { switch self { @@ -97,6 +101,12 @@ "course_id": course_id as Any, "course_name": course_name as Any, ]) + + case let .flyoverLongPressActionSelected(action): + return EventData(type: .flyoverLongPressActionSelected, + properties: [ + "action": action.rawValue as Any, + ]) } } } From d5d9762327a91817790f9641a34dc85bf894a911 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Costa?= Date: Fri, 21 Aug 2026 10:28:19 +0100 Subject: [PATCH 2/2] Update changelog with native_type substring fix Co-Authored-By: Claude Opus 4.6 (1M context) --- changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog.md b/changelog.md index dffd52f..76fb08e 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,9 @@ # Change Log +## [Unreleased] + +- Fix `native_type` replacing `Long`/`Boolean` substrings inside custom type names (e.g. `FlyoverLongPressAction` → `FlyoverIntPressAction`) + ## [0.8.4] - 2026-06-25 - Add trailing commas to all generated Kotlin declarations