|
1 | 1 | #!/usr/bin/env python3 |
2 | | - |
3 | | -import re |
4 | | -from dataclasses import dataclass |
5 | | -from pathlib import Path |
6 | | - |
7 | 2 | import fire |
8 | 3 |
|
9 | | -project_dir = Path('.') |
10 | | - |
11 | | - |
12 | | -@dataclass |
13 | | -class ProblemInfo: |
14 | | - id: int |
15 | | - title: str |
16 | | - |
17 | | - def title_slug(self): |
18 | | - title_parts = re.split(r'\s+', self.title) |
19 | | - return f'{self.id:04d}-' + '-'.join(title_parts) |
20 | | - |
21 | | - |
22 | | -@dataclass |
23 | | -class Article: |
24 | | - problem: ProblemInfo |
25 | | - path: Path |
26 | | - |
27 | | - @classmethod |
28 | | - def create(cls, problem: ProblemInfo, path: Path): |
29 | | - article = Article(problem, path) |
30 | | - article._create_dirs() |
31 | | - article._create_doc() |
32 | | - return article |
33 | | - |
34 | | - def _create_dirs(self): |
35 | | - for d in ('Animation', 'Article', 'Code'): |
36 | | - (self.path / d).mkdir() |
37 | | - |
38 | | - def _create_doc(self): |
39 | | - doc_file = self.path / 'Article' / (self.problem.title_slug() + '.md') |
40 | | - with doc_file.open('w') as f: |
41 | | - pass |
42 | | - |
43 | | - |
44 | | -def create_article_r(directory: Path, paths) -> None: |
45 | | - if isinstance(paths, str): |
46 | | - (directory / paths).mkdir() |
47 | | - elif isinstance(paths, list): |
48 | | - for path in paths: |
49 | | - create_article_r(directory, path) |
50 | | - |
51 | | - |
52 | | -def create_article(problem_id: int, problem_title: str) -> None: |
53 | | - problem = ProblemInfo(problem_id, problem_title) |
54 | | - article_dir = project_dir / problem.title_slug() |
55 | | - |
56 | | - if article_dir.exists(): |
57 | | - print(f'创建失败,文件夹 {article_dir} 已存在') |
58 | | - exit(1) |
59 | | - article_dir.mkdir() |
60 | | - |
61 | | - article = Article.create(problem, article_dir) |
62 | | - print(f'题解框架创建完毕,位于文件夹 {article_dir}') |
63 | | - |
64 | | - |
65 | | -class Anima: |
66 | | - """ |
67 | | - LeetCode Animation Manager |
68 | | - """ |
69 | | - |
70 | | - def new(self, id: str, title: str): |
71 | | - create_article(id, title) |
72 | | - |
| 4 | +import anima |
73 | 5 |
|
74 | 6 | if __name__ == '__main__': |
75 | | - anima = Anima() |
76 | | - fire.Fire(anima) |
| 7 | + fire.Fire(anima.Anima()) |
0 commit comments