Skip to content

Commit ee27673

Browse files
authored
Merge pull request #8 from rulasg/allow-email-meeting-members
fix(Convert-NotesMeetingMembersToMarkdown): Parse emails only properly
2 parents 54943a4 + e5d6c7a commit ee27673

File tree

6 files changed

+110
-17
lines changed

6 files changed

+110
-17
lines changed

Test/public/convertMeetingMembersToMarkdown.test.ps1

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,46 @@ function Test_ConvertMeetingMembersToMarkdown_SingleMember {
116116
Assert-AreEqual -Expected $expected -Presented $result -Comment "Single member should work correctly"
117117
}
118118

119+
function Test_ConvertMeetingMembersToMarkdown_EmailOnlyFormat {
120+
121+
# Arrange
122+
$input = "john.doe@example.com, jane.smith@example.com, bob@alphatech.com"
123+
124+
# Act
125+
$result = Convert-NotesMeetingMembersToMarkdown -MeetingMembers $input
126+
127+
# Assert
128+
$expected = @"
129+
- Alphatech (1)
130+
- bob@alphatech.com
131+
- Example (2)
132+
- jane.smith@example.com
133+
- john.doe@example.com
134+
"@
135+
Assert-AreEqual -Expected $expected -Presented $result -Comment "Email-only format entries should be included and grouped by company"
136+
}
137+
138+
function Test_ConvertMeetingMembersToMarkdown_MixedEmailFormats {
139+
140+
# Arrange
141+
$input = "Alice Johnson <alice.johnson@alphatech.com>, bob.smith@alphatech.com, `"Charlie Chen`" <charlie.chen@betasoft.com>, david@betasoft.com"
142+
143+
# Act
144+
$result = Convert-NotesMeetingMembersToMarkdown -MeetingMembers $input
145+
146+
# Assert
147+
$expected = @"
148+
- Alphatech (2)
149+
- Alice Johnson <alice.johnson@alphatech.com>
150+
- bob.smith@alphatech.com
151+
- Betasoft (2)
152+
- "Charlie Chen" <charlie.chen@betasoft.com>
153+
- david@betasoft.com
154+
"@
155+
Assert-AreEqual -Expected $expected -Presented $result -Comment "Mixed email formats should work together, sorted alphabetically by company and member"
156+
}
157+
158+
119159
function Test_ConvertMeetingsMembersToMarkdown_Big_sample{
120160

121161
$imput = @"
@@ -124,26 +164,35 @@ function Test_ConvertMeetingsMembersToMarkdown_Big_sample{
124164

125165
$result = Convert-NotesMeetingMembersToMarkdown -MeetingMembers $imput
126166

127-
Assert-AreEqual -Presented $result -Expected @"
167+
$expected = @"
128168
- Alphatech (5)
129169
- "Grace (AlphaTech) Garcia" <grace.garcia@alphatech.com>
130170
- "Henry Harris" <henry.harris@alphatech.com>
131171
- "Kevin Kim" <kevin.kim@alphatech.com>
132172
- "Laura Lewis" <laura.lewis@alphatech.com>
133173
- "Mark Martinez" <mark.martinez@alphatech.com>
134-
- Betasoft (9)
174+
- Betasoft (13)
135175
- "Amy Adams (She/Her)" <amy.adams@betasoft.com>
136176
- "Bob Brown" <bob.brown@betasoft.com>
137177
- "Charlie Chen" <charlie.chen@betasoft.com>
138178
- "David Dennis" <david.dennis@betasoft.com>
179+
- david.davis@betasoft.com
180+
- emma.edwards@betasoft.com
181+
- george.garcia@betasoft.com
139182
- "Iris Ingram" <iris.ingram@betasoft.com>
140183
- "Jack Johnson" <jack.johnson@betasoft.com>
141184
- "James Jackson" <james.jackson@betasoft.com>
142185
- "Jennifer Jones" <jennifer.jones@betasoft.com>
143186
- "Kyle Knight" <kyle.knight@betasoft.com>
187+
- lisa.lee@betasoft.com
188+
- Bookings (1)
189+
- george.garcia@bookings.betasoft.com
144190
- Deltalab (3)
145191
- "Alice Anderson" <alice.anderson@deltalab.com>
146192
- "Emma Evans, Eric" <emma.evans@deltalab.com>
147193
- "Frank Fields, Fiona" <frank.fields@deltalab.com>
148194
"@
195+
196+
Assert-AreEqual -Presented $result -Expected $expected
197+
149198
}

Test/public/getNotes.test.ps1

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ function Test_GetNotes_Category{
1414
Assert-Count -Expected 4 -Presented $result
1515

1616
# Pick a random file to test
17-
$file = $result[1]
17+
$file = $result[2]
1818
Assert-AreEqual -Expected "name21-name22-name23.md" -Presented $file.Name
1919
Assert-AreEqual -Expected "name22" -Presented $file.Category
2020
Assert-AreEqualPath -Expected $file1 -Presented $file.FullName
2121

22-
$file = $result[3]
22+
$file = $result[0]
2323
Assert-AreEqual -Expected "name41-name42-name43.md" -Presented $file.Name
2424
Assert-AreEqual -Expected "name42" -Presented $file.Category
2525
Assert-AreEqualPath -Expected $file3 -Presented $file.FullName
@@ -48,22 +48,22 @@ function Test_GetNotes_Category_WithDots{
4848

4949
# Pick a random file to test
5050
# Pick a random file to test
51-
$file = $result[1]
51+
$file = $result[6]
5252
Assert-AreEqual -Expected "name11-name12-name13.md" -Presented $file.Name
5353
Assert-AreEqual -Expected "name12" -Presented $file.Category
5454
Assert-AreEqualPath -Expected $file1 -Presented $file.FullName
5555

56-
$file = $result[3]
56+
$file = $result[4]
5757
Assert-AreEqual -Expected "name31-name32-name33.md" -Presented $file.Name
5858
Assert-AreEqual -Expected "name32" -Presented $file.Category
5959
Assert-AreEqualPath -Expected $file3 -Presented $file.FullName
6060

61-
$file = $result[5]
61+
$file = $result[2]
6262
Assert-AreEqual -Expected "name51.name52.name53.md" -Presented $file.Name
6363
Assert-AreEqual -Expected "name52" -Presented $file.Category
6464
Assert-AreEqualPath -Expected $file5 -Presented $file.FullName
6565

66-
$file = $result[7]
66+
$file = $result[0]
6767
Assert-AreEqual -Expected "name71.name72.name73.md" -Presented $file.Name
6868
Assert-AreEqual -Expected "name72" -Presented $file.Category
6969
Assert-AreEqualPath -Expected $file7 -Presented $file.FullName

Test/public/newNotes.test.ps1

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ function Test_AddNotesToday_Client_Simple{
136136
Assert-AreEqual -Expected "Clients" -Presented $greatParent
137137
}
138138

139-
function Test_NewNotesToday_Failing{
139+
function Test_NewNotes_SUCCESS{
140140

141141
Reset-InvokeCommandMock
142142

@@ -147,11 +147,20 @@ function Test_NewNotesToday_Failing{
147147
$today = (Get-Date).ToString("yyMMdd")
148148

149149
# Act
150-
$result = note howto "someting that may be useful" -NoOpen
150+
$result = New-Note howto "someting that may be useful" -NoOpen
151+
152+
$expectedPath = "./TestNotesRoot/howto/howto-someting_that_may_be_useful/howto-someting_that_may_be_useful.md"
153+
154+
Assert-AreEqualPath -Expected $expectedPath -Presented $result
155+
156+
# With date
157+
158+
$result = New-Note howto "someting that may be useful" -NoOpen -Date $today
151159

152160
$expectedPath = "./TestNotesRoot/howto/$today-howto-someting_that_may_be_useful/$today-howto-someting_that_may_be_useful.md"
153161

154162
Assert-AreEqualPath -Expected $expectedPath -Presented $result
163+
155164
}
156165

157166
# ./TestNotesRoot/howto/250720-howto-someting_that_may_be_useful/250720-howto-someting_that_may_be_useful.md ]

private/parseMemberEmail.ps1

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,37 @@ function parseMemberEmail {
4545
}
4646
}
4747

48+
# Pattern: just an email address (email@domain.com)
49+
$emailPattern = '^([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})$'
50+
51+
if ($memberString -match $emailPattern) {
52+
$email = $memberString
53+
54+
# Extract domain from email
55+
$domain = ($email -split '@')[1]
56+
if ($domain) {
57+
# Get company name from domain (first part before any dots)
58+
$company = ($domain -split '\.')[0]
59+
# Capitalize first letter if company has content
60+
if ($company.Length -gt 0) {
61+
$company = $company.Substring(0, 1).ToUpper() + $company.Substring(1).ToLower()
62+
}
63+
else {
64+
$company = "Unknown"
65+
}
66+
}
67+
else {
68+
$company = "Unknown"
69+
}
70+
71+
return [PSCustomObject]@{
72+
DisplayName = $email
73+
Email = $email
74+
Company = $company
75+
OriginalFormat = $memberString
76+
}
77+
}
78+
4879
return $null
4980
}
5081
}
@@ -72,8 +103,9 @@ function groupMembersByCompany {
72103
$memberCount = $group.Group.Count
73104
$result += "- $($group.Name) ($memberCount)"
74105

75-
# Add members with 4-space indentation
76-
foreach ($member in $group.Group) {
106+
# Add members with 4-space indentation, sorted case-insensitively by DisplayName (without quotes)
107+
$sortedMembers = $group.Group | Sort-Object -Property { ($_.DisplayName.Trim('"')).ToLower() }
108+
foreach ($member in $sortedMembers) {
77109
$result += " - $($member.OriginalFormat)"
78110
}
79111
}

public/newNotes.ps1

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ function New-Note{
3030
return
3131
}
3232

33-
$fullTitle = getFullTitle $Category $Section $Title $Date
33+
$fullTitle = getFullTitle -Category $Category -Section $Section -Title $Title -Date $Date
3434

3535
# Create the note base folder
3636
if($AvoidChildFolder){
@@ -82,10 +82,10 @@ function New-Note{
8282
function getFullTitle{
8383
[CmdletBinding()]
8484
param(
85-
[Parameter(Mandatory,Position=0)][string] $Category,
86-
[Parameter(Mandatory,Position=1)][string] $Section,
87-
[Parameter(Mandatory,Position=2)][string] $Title,
88-
[Parameter(Position=3)][string] $Date
85+
[Parameter(Mandatory)][string] $Category,
86+
[Parameter(Mandatory)][string] $Title,
87+
[Parameter()][string] $Section,
88+
[Parameter()][string] $Date
8989
)
9090

9191
# Create FullTitle using folder name and title, replacing spaces with underscores

public/notes/templates/none.template.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@
22

33
> {issueurl}
44
5+
## Notes
6+
7+
{notes}

0 commit comments

Comments
 (0)