Skip to content

Commit 885c06c

Browse files
authored
Merge pull request #1231 from wakatime/develop
Release v1.130.4
2 parents 1b610ef + 54dcfe8 commit 885c06c

File tree

4 files changed

+38
-1
lines changed

4 files changed

+38
-1
lines changed

pkg/language/language.go

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ func detectSpecialCases(ctx context.Context, fp string) (heartbeat.Language, boo
125125
return heartbeat.LanguageObjectiveCPP, true
126126
}
127127

128+
if ext == ".pas" && folderContainsDelphiFiles(ctx, dir) {
129+
return heartbeat.LanguageDelphi, true
130+
}
131+
128132
return heartbeat.LanguageUnknown, false
129133
}
130134

@@ -186,7 +190,7 @@ func folderContainsCFiles(ctx context.Context, dir string) bool {
186190
return false
187191
}
188192

189-
// folderContainsCFiles returns true, if filder contains c++ files.
193+
// folderContainsCPPFiles returns true, if filder contains c++ files.
190194
func folderContainsCPPFiles(ctx context.Context, dir string) bool {
191195
if dir == "" {
192196
return false
@@ -212,6 +216,32 @@ func folderContainsCPPFiles(ctx context.Context, dir string) bool {
212216
return false
213217
}
214218

219+
// folderContainsDelphiFiles returns true, if filder contains Delphi files.
220+
func folderContainsDelphiFiles(ctx context.Context, dir string) bool {
221+
if dir == "" {
222+
return false
223+
}
224+
225+
logger := log.Extract(ctx)
226+
227+
extensions, err := loadFolderExtensions(dir)
228+
if err != nil {
229+
logger.Warnf("failed loading folder extensions: %s", err)
230+
return false
231+
}
232+
233+
expectedExtensions := []string{".fmx", ".dfm", ".dproj"}
234+
for _, ext := range expectedExtensions {
235+
for _, e := range extensions {
236+
if e == ext {
237+
return true
238+
}
239+
}
240+
}
241+
242+
return false
243+
}
244+
215245
// correspondingFileExists returns true if corresponding file with the provided extension exists.
216246
// E.g. will return true, if called with "/tmp/file.go" and "txt" and /tmp/file.txt existis.
217247
func correspondingFileExists(fp string, extension string) bool {

pkg/language/language_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,13 @@ func TestDetect_FSharp_Over_Forth(t *testing.T) {
257257
assert.Equal(t, heartbeat.LanguageFSharp, lang)
258258
}
259259

260+
func TestDetect_Delphi_FMX_FileInFolder(t *testing.T) {
261+
lang, err := language.Detect(t.Context(), "testdata/codefiles/pas_with_fmx_file/delphi.pas", false)
262+
require.NoError(t, err)
263+
264+
assert.Equal(t, heartbeat.LanguageDelphi, lang)
265+
}
266+
260267
func TestDetect_ChromaTopLanguagesRetrofit(t *testing.T) {
261268
err := lexer.RegisterAll()
262269
require.NoError(t, err)

pkg/language/testdata/codefiles/pas_with_fmx_file/delphi.fmx

Whitespace-only changes.

pkg/language/testdata/codefiles/pas_with_fmx_file/delphi.pas

Whitespace-only changes.

0 commit comments

Comments
 (0)