Skip to content

Commit 4aaec9f

Browse files
committed
Extract slug from file name
To recap what has happened, by prepending the file name with the problem id (commit 6fc400e), we have two new file names together with two old ones: - (old style) `slug.ext`, e.g. `two_sum.cpp` - (old style) `slug.submission_id.ext`, e.g. `two_sum.12345.cpp` - (new style) `id.slug.ext`, e.g. `1.two_sum.cpp` - (new style) `id.slug.submission_id.ext`, e.g. `1.two_sum.12345.cpp` We need to handle all of them properly.
1 parent 0f553ba commit 4aaec9f

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

autoload/leetcode.vim

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,25 @@ function! s:SlugToFileName(slug) abort
435435
return substitute(a:slug, '-', '_', 'g')
436436
endfunction
437437

438+
function! s:ProblemSlugFromFileName() abort
439+
let parts = split(expand('%:t:r'), '\.') " Filename without the extension
440+
if len(parts) == 1
441+
" Old style, e.g. two-sum
442+
return s:FileNameToSlug(parts[0])
443+
elseif len(parts) == 2 && parts[0] =~ '\v^[0-9]+$'
444+
" New style, e.g. 1.two-sum
445+
return s:FileNameToSlug(parts[1])
446+
elseif len(parts) == 2
447+
" Old style with submission id, e.g. two-sum.1234
448+
return s:FileNameToSlug(parts[0])
449+
elseif len(parts) == 3
450+
" New style with submission id, e.g. 1.two-sum.1234
451+
return s:FileNameToSlug(parts[1])
452+
else
453+
throw 'leetcode: invalid file name: ' . expand('%:t:r')
454+
endif
455+
endfunction
456+
438457
function! s:HandleProblemListCR() abort
439458
" Parse the problem number from the line
440459
let line_nr = line('.')
@@ -490,7 +509,8 @@ function! s:HandleProblemListCR() abort
490509
let problem = s:GetProblem(problem_id)
491510
let problem_slug = problem['slug']
492511
let problem_ext = s:SolutionFileExt(g:leetcode_solution_filetype)
493-
let problem_file_name = printf('%s.%s.%s', problem_id, s:SlugToFileName(problem_slug),
512+
let problem_file_name = printf('%s.%s.%s', problem_id,
513+
\ s:SlugToFileName(problem_slug),
494514
\ problem_ext)
495515

496516
if buflisted(problem_file_name)
@@ -632,13 +652,7 @@ function! leetcode#ResetSolution(with_latest_submission) abort
632652
return
633653
endif
634654

635-
let problem_file_name = expand('%:t:r')
636-
let problem_file_names = split(problem_file_name, '\.')
637-
let problem_name = problem_file_names[0]
638-
if len(problem_file_names) > 1
639-
let problem_name = problem_file_names[1]
640-
endif
641-
let problem_slug = s:FileNameToSlug(problem_name)
655+
let problem_slug = s:ProblemSlugFromFileName()
642656
let expr = printf('leetcode.get_problem("%s")', problem_slug)
643657
let problem = py3eval(expr)
644658
if type(problem) != v:t_dict
@@ -780,13 +794,7 @@ function! leetcode#TestSolution() abort
780794
return
781795
endif
782796

783-
let file_name = s:FileNameToSlug(expand('%:t:r'))
784-
if file_name == ''
785-
echo 'no file name'
786-
return
787-
endif
788-
789-
let slug = split(file_name, '\.')[0]
797+
let slug = s:ProblemSlugFromFileName()
790798
let filetype = s:GuessFileType()
791799

792800
if exists('b:leetcode_problem')
@@ -889,13 +897,7 @@ function! leetcode#SubmitSolution() abort
889897
return
890898
endif
891899

892-
let file_name = s:FileNameToSlug(expand('%:t:r'))
893-
if file_name == ''
894-
echo 'no file name'
895-
return
896-
endif
897-
898-
let slug = split(file_name, '\.')[0]
900+
let slug = s:ProblemSlugFromFileName()
899901
let filetype = s:GuessFileType()
900902

901903
if has('timers')
@@ -1174,7 +1176,9 @@ function! s:HandleSubmissionsCR() abort
11741176
return
11751177
endif
11761178

1177-
let file_name = printf('%s.%s.%s', s:SlugToFileName(submission['slug']),
1179+
let file_name = printf('%s.%s.%s.%s',
1180+
\ submission['problem_id'],
1181+
\ s:SlugToFileName(submission['slug']),
11781182
\ submission_id, s:SolutionFileExt(submission['filetype']))
11791183

11801184
if bufexists(file_name)

0 commit comments

Comments
 (0)