Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

feat: generate sub category summary #1699

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
yanglbme merged 17 commits into main from dev-category
Sep 26, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion main.js
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,34 @@ const isEn = () => location.hash.includes('README_EN');

const isRoot = () => ['', '#/', '#/README', '#/README_EN'].includes(location.hash);

const sidebar = () => (isRoot() ? false : isEn() ? 'summary_en.md' : 'summary.md');
const getSolutionPrefix = url => {
['javascript_', 'database_', 'shell_'].forEach(prefix => {
if (url.includes(prefix + 'solution')) {
return prefix;
}
});
return '';
};

const sidebar = () => {
if (isRoot()) {
return false;
}
const prefix = getSolutionPrefix(location.hash);
return isEn() ? `${prefix}summary_en.md` : `${prefix}summary.md`;
};

const cleanedHtml = html => {
return html.replace(/<pre>([\s\S]*?)<\/pre>/g, (_, group) => {
return '<pre>' + group.replace(/<code>([\s\S]*?)<\/code>/g, '1ドル') + '</pre>';
});
};

const replaceHref = html => {
const replacement = getSolutionPrefix(location.hash) + 'solution';
return replacement ? html.replace(/\/solution\//g, `/${replacement}/`) : html;
};

const getLang = () => (isEn() ? 'en' : 'zh-CN');

const giscusTheme = () =>
Expand All @@ -34,6 +54,9 @@ window.$docsify = {
auto2top: true,
subMaxLevel: 2,
alias: {
'^/javascript_solution/(.*)': '/solution/1ドル',
'^/shell_solution/(.*)': '/solution/1ドル',
'^/database_solution/(.*)': '/solution/1ドル',
'/lcs/.*/summary.md': '/lcs/summary.md',
'/lcp/.*/summary.md': '/lcp/summary.md',
'/lcci/.*/summary.md': '/lcci/summary.md',
Expand Down Expand Up @@ -128,6 +151,7 @@ window.$docsify = {
const github = `[GitHub](${url})`;
const gitee = `[Gitee](${url.replace('github', 'gitee')})`;
html = cleanedHtml(html);
html = replaceHref(html);
const editHtml = isEn()
? `:memo: Edit on ${github} / ${gitee}\n`
: `:memo: 在 ${github} / ${gitee} 编辑\n`;
Expand Down
67 changes: 67 additions & 0 deletions solution/javascript_summary.md
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
- [2618.检查是否是类的对象实例](/javascript_solution/2600-2699/2618.Check%20if%20Object%20Instance%20of%20Class/README.md)
- [2619.数组原型对象的最后一个元素](/javascript_solution/2600-2699/2619.Array%20Prototype%20Last/README.md)
- [2620.计数器](/javascript_solution/2600-2699/2620.Counter/README.md)
- [2621.睡眠函数](/javascript_solution/2600-2699/2621.Sleep/README.md)
- [2622.有时间限制的缓存](/javascript_solution/2600-2699/2622.Cache%20With%20Time%20Limit/README.md)
- [2623.记忆函数](/javascript_solution/2600-2699/2623.Memoize/README.md)
- [2624.蜗牛排序](/javascript_solution/2600-2699/2624.Snail%20Traversal/README.md)
- [2625.扁平化嵌套数组](/javascript_solution/2600-2699/2625.Flatten%20Deeply%20Nested%20Array/README.md)
- [2626.数组归约运算](/javascript_solution/2600-2699/2626.Array%20Reduce%20Transformation/README.md)
- [2627.函数防抖](/javascript_solution/2600-2699/2627.Debounce/README.md)
- [2628.完全相等的 JSON 字符串](/javascript_solution/2600-2699/2628.JSON%20Deep%20Equal/README.md)
- [2629.复合函数](/javascript_solution/2600-2699/2629.Function%20Composition/README.md)
- [2630.记忆函数 II](/javascript_solution/2600-2699/2630.Memoize%20II/README.md)
- [2631.分组](/javascript_solution/2600-2699/2631.Group%20By/README.md)
- [2632.柯里化](/javascript_solution/2600-2699/2632.Curry/README.md)
- [2633.将对象转换为 JSON 字符串](/javascript_solution/2600-2699/2633.Convert%20Object%20to%20JSON%20String/README.md)
- [2634.过滤数组中的元素](/javascript_solution/2600-2699/2634.Filter%20Elements%20from%20Array/README.md)
- [2635.转换数组中的每个元素](/javascript_solution/2600-2699/2635.Apply%20Transform%20Over%20Each%20Element%20in%20Array/README.md)
- [2636.Promise 对象池](/javascript_solution/2600-2699/2636.Promise%20Pool/README.md)
- [2637.有时间限制的 Promise 对象](/javascript_solution/2600-2699/2637.Promise%20Time%20Limit/README.md)
- [2648.生成斐波那契数列](/javascript_solution/2600-2699/2648.Generate%20Fibonacci%20Sequence/README.md)
- [2649.嵌套数组生成器](/javascript_solution/2600-2699/2649.Nested%20Array%20Generator/README.md)
- [2650.设计可取消函数](/javascript_solution/2600-2699/2650.Design%20Cancellable%20Function/README.md)
- [2665.计数器 II](/javascript_solution/2600-2699/2665.Counter%20II/README.md)
- [2666.只允许一次函数调用](/javascript_solution/2600-2699/2666.Allow%20One%20Function%20Call/README.md)
- [2667.创建 Hello World 函数](/javascript_solution/2600-2699/2667.Create%20Hello%20World%20Function/README.md)
- [2675.将对象数组转换为矩阵](/javascript_solution/2600-2699/2675.Array%20of%20Objects%20to%20Matrix/README.md)
- [2676.节流](/javascript_solution/2600-2699/2676.Throttle/README.md)
- [2677.分块数组](/javascript_solution/2600-2699/2677.Chunk%20Array/README.md)
- [2690.无穷方法对象](/javascript_solution/2600-2699/2690.Infinite%20Method%20Object/README.md)
- [2691.不可变辅助工具](/javascript_solution/2600-2699/2691.Immutability%20Helper/README.md)
- [2692.使对象不可变](/javascript_solution/2600-2699/2692.Make%20Object%20Immutable/README.md)
- [2693.使用自定义上下文调用函数](/javascript_solution/2600-2699/2693.Call%20Function%20with%20Custom%20Context/README.md)
- [2694.事件发射器](/javascript_solution/2600-2699/2694.Event%20Emitter/README.md)
- [2695.包装数组](/javascript_solution/2600-2699/2695.Array%20Wrapper/README.md)
- [2700.两个对象之间的差异](/javascript_solution/2700-2799/2700.Differences%20Between%20Two%20Objects/README.md)
- [2703.返回传递的参数的长度](/javascript_solution/2700-2799/2703.Return%20Length%20of%20Arguments%20Passed/README.md)
- [2704.相等还是不相等](/javascript_solution/2700-2799/2704.To%20Be%20Or%20Not%20To%20Be/README.md)
- [2705.精简对象](/javascript_solution/2700-2799/2705.Compact%20Object/README.md)
- [2715.执行可取消的延迟函数](/javascript_solution/2700-2799/2715.Timeout%20Cancellation/README.md)
- [2721.并行执行异步函数](/javascript_solution/2700-2799/2721.Execute%20Asynchronous%20Functions%20in%20Parallel/README.md)
- [2722.根据 ID 合并两个数组](/javascript_solution/2700-2799/2722.Join%20Two%20Arrays%20by%20ID/README.md)
- [2723.添加两个 Promise 对象](/javascript_solution/2700-2799/2723.Add%20Two%20Promises/README.md)
- [2724.排序方式](/javascript_solution/2700-2799/2724.Sort%20By/README.md)
- [2725.间隔取消](/javascript_solution/2700-2799/2725.Interval%20Cancellation/README.md)
- [2726.使用方法链的计算器](/javascript_solution/2700-2799/2726.Calculator%20with%20Method%20Chaining/README.md)
- [2727.判断对象是否为空](/javascript_solution/2700-2799/2727.Is%20Object%20Empty/README.md)
- [2754.将函数绑定到上下文](/javascript_solution/2700-2799/2754.Bind%20Function%20to%20Context/README.md)
- [2755.深度合并两个对象](/javascript_solution/2700-2799/2755.Deep%20Merge%20of%20Two%20Objects/README.md)
- [2756.批处理查询](/javascript_solution/2700-2799/2756.Query%20Batching/README.md)
- [2757.生成循环数组的值](/javascript_solution/2700-2799/2757.Generate%20Circular%20Array%20Values/README.md)
- [2758.下一天](/javascript_solution/2700-2799/2758.Next%20Day/README.md)
- [2759.将 JSON 字符串转换为对象](/javascript_solution/2700-2799/2759.Convert%20JSON%20String%20to%20Object/README.md)
- [2774.数组的上界](/javascript_solution/2700-2799/2774.Array%20Upper%20Bound/README.md)
- [2775.将 undefined 转为 null](/javascript_solution/2700-2799/2775.Undefined%20to%20Null/README.md)
- [2776.转换回调函数为 Promise 函数](/javascript_solution/2700-2799/2776.Convert%20Callback%20Based%20Function%20to%20Promise%20Based%20Function/README.md)
- [2777.日期范围生成器](/javascript_solution/2700-2799/2777.Date%20Range%20Generator/README.md)
- [2794.从两个数组中创建对象](/javascript_solution/2700-2799/2794.Create%20Object%20from%20Two%20Arrays/README.md)
- [2795.并行执行 Promise 以获取独有的结果](/javascript_solution/2700-2799/2795.Parallel%20Execution%20of%20Promises%20for%20Individual%20Results%20Retrieval/README.md)
- [2796.重复字符串](/javascript_solution/2700-2799/2796.Repeat%20String/README.md)
- [2797.带有占位符的部分函数](/javascript_solution/2700-2799/2797.Partial%20Function%20with%20Placeholders/README.md)
- [2803.阶乘生成器](/javascript_solution/2800-2899/2803.Factorial%20Generator/README.md)
- [2804.数组原型的 forEach 方法](/javascript_solution/2800-2899/2804.Array%20Prototype%20ForEach/README.md)
- [2805.自定义间隔](/javascript_solution/2800-2899/2805.Custom%20Interval/README.md)
- [2821.延迟每个 Promise 对象的解析](/javascript_solution/2800-2899/2821.Delay%20the%20Resolution%20of%20Each%20Promise/README.md)
- [2822.对象反转](/javascript_solution/2800-2899/2822.Inversion%20of%20Object/README.md)
- [2823.深度对象筛选](/javascript_solution/2800-2899/2823.Deep%20Object%20Filter/README.md)
67 changes: 67 additions & 0 deletions solution/javascript_summary_en.md
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
- [2618.Check if Object Instance of Class](/javascript_solution/2600-2699/2618.Check%20if%20Object%20Instance%20of%20Class/README_EN.md)
- [2619.Array Prototype Last](/javascript_solution/2600-2699/2619.Array%20Prototype%20Last/README_EN.md)
- [2620.Counter](/javascript_solution/2600-2699/2620.Counter/README_EN.md)
- [2621.Sleep](/javascript_solution/2600-2699/2621.Sleep/README_EN.md)
- [2622.Cache With Time Limit](/javascript_solution/2600-2699/2622.Cache%20With%20Time%20Limit/README_EN.md)
- [2623.Memoize](/javascript_solution/2600-2699/2623.Memoize/README_EN.md)
- [2624.Snail Traversal](/javascript_solution/2600-2699/2624.Snail%20Traversal/README_EN.md)
- [2625.Flatten Deeply Nested Array](/javascript_solution/2600-2699/2625.Flatten%20Deeply%20Nested%20Array/README_EN.md)
- [2626.Array Reduce Transformation](/javascript_solution/2600-2699/2626.Array%20Reduce%20Transformation/README_EN.md)
- [2627.Debounce](/javascript_solution/2600-2699/2627.Debounce/README_EN.md)
- [2628.JSON Deep Equal](/javascript_solution/2600-2699/2628.JSON%20Deep%20Equal/README_EN.md)
- [2629.Function Composition](/javascript_solution/2600-2699/2629.Function%20Composition/README_EN.md)
- [2630.Memoize II](/javascript_solution/2600-2699/2630.Memoize%20II/README_EN.md)
- [2631.Group By](/javascript_solution/2600-2699/2631.Group%20By/README_EN.md)
- [2632.Curry](/javascript_solution/2600-2699/2632.Curry/README_EN.md)
- [2633.Convert Object to JSON String](/javascript_solution/2600-2699/2633.Convert%20Object%20to%20JSON%20String/README_EN.md)
- [2634.Filter Elements from Array](/javascript_solution/2600-2699/2634.Filter%20Elements%20from%20Array/README_EN.md)
- [2635.Apply Transform Over Each Element in Array](/javascript_solution/2600-2699/2635.Apply%20Transform%20Over%20Each%20Element%20in%20Array/README_EN.md)
- [2636.Promise Pool](/javascript_solution/2600-2699/2636.Promise%20Pool/README_EN.md)
- [2637.Promise Time Limit](/javascript_solution/2600-2699/2637.Promise%20Time%20Limit/README_EN.md)
- [2648.Generate Fibonacci Sequence](/javascript_solution/2600-2699/2648.Generate%20Fibonacci%20Sequence/README_EN.md)
- [2649.Nested Array Generator](/javascript_solution/2600-2699/2649.Nested%20Array%20Generator/README_EN.md)
- [2650.Design Cancellable Function](/javascript_solution/2600-2699/2650.Design%20Cancellable%20Function/README_EN.md)
- [2665.Counter II](/javascript_solution/2600-2699/2665.Counter%20II/README_EN.md)
- [2666.Allow One Function Call](/javascript_solution/2600-2699/2666.Allow%20One%20Function%20Call/README_EN.md)
- [2667.Create Hello World Function](/javascript_solution/2600-2699/2667.Create%20Hello%20World%20Function/README_EN.md)
- [2675.Array of Objects to Matrix](/javascript_solution/2600-2699/2675.Array%20of%20Objects%20to%20Matrix/README_EN.md)
- [2676.Throttle](/javascript_solution/2600-2699/2676.Throttle/README_EN.md)
- [2677.Chunk Array](/javascript_solution/2600-2699/2677.Chunk%20Array/README_EN.md)
- [2690.Infinite Method Object](/javascript_solution/2600-2699/2690.Infinite%20Method%20Object/README_EN.md)
- [2691.Immutability Helper](/javascript_solution/2600-2699/2691.Immutability%20Helper/README_EN.md)
- [2692.Make Object Immutable](/javascript_solution/2600-2699/2692.Make%20Object%20Immutable/README_EN.md)
- [2693.Call Function with Custom Context](/javascript_solution/2600-2699/2693.Call%20Function%20with%20Custom%20Context/README_EN.md)
- [2694.Event Emitter](/javascript_solution/2600-2699/2694.Event%20Emitter/README_EN.md)
- [2695.Array Wrapper](/javascript_solution/2600-2699/2695.Array%20Wrapper/README_EN.md)
- [2700.Differences Between Two Objects](/javascript_solution/2700-2799/2700.Differences%20Between%20Two%20Objects/README_EN.md)
- [2703.Return Length of Arguments Passed](/javascript_solution/2700-2799/2703.Return%20Length%20of%20Arguments%20Passed/README_EN.md)
- [2704.To Be Or Not To Be](/javascript_solution/2700-2799/2704.To%20Be%20Or%20Not%20To%20Be/README_EN.md)
- [2705.Compact Object](/javascript_solution/2700-2799/2705.Compact%20Object/README_EN.md)
- [2715.Timeout Cancellation](/javascript_solution/2700-2799/2715.Timeout%20Cancellation/README_EN.md)
- [2721.Execute Asynchronous Functions in Parallel](/javascript_solution/2700-2799/2721.Execute%20Asynchronous%20Functions%20in%20Parallel/README_EN.md)
- [2722.Join Two Arrays by ID](/javascript_solution/2700-2799/2722.Join%20Two%20Arrays%20by%20ID/README_EN.md)
- [2723.Add Two Promises](/javascript_solution/2700-2799/2723.Add%20Two%20Promises/README_EN.md)
- [2724.Sort By](/javascript_solution/2700-2799/2724.Sort%20By/README_EN.md)
- [2725.Interval Cancellation](/javascript_solution/2700-2799/2725.Interval%20Cancellation/README_EN.md)
- [2726.Calculator with Method Chaining](/javascript_solution/2700-2799/2726.Calculator%20with%20Method%20Chaining/README_EN.md)
- [2727.Is Object Empty](/javascript_solution/2700-2799/2727.Is%20Object%20Empty/README_EN.md)
- [2754.Bind Function to Context](/javascript_solution/2700-2799/2754.Bind%20Function%20to%20Context/README_EN.md)
- [2755.Deep Merge of Two Objects](/javascript_solution/2700-2799/2755.Deep%20Merge%20of%20Two%20Objects/README_EN.md)
- [2756.Query Batching](/javascript_solution/2700-2799/2756.Query%20Batching/README_EN.md)
- [2757.Generate Circular Array Values](/javascript_solution/2700-2799/2757.Generate%20Circular%20Array%20Values/README_EN.md)
- [2758.Next Day](/javascript_solution/2700-2799/2758.Next%20Day/README_EN.md)
- [2759.Convert JSON String to Object](/javascript_solution/2700-2799/2759.Convert%20JSON%20String%20to%20Object/README_EN.md)
- [2774.Array Upper Bound](/javascript_solution/2700-2799/2774.Array%20Upper%20Bound/README_EN.md)
- [2775.Undefined to Null](/javascript_solution/2700-2799/2775.Undefined%20to%20Null/README_EN.md)
- [2776.Convert Callback Based Function to Promise Based Function](/javascript_solution/2700-2799/2776.Convert%20Callback%20Based%20Function%20to%20Promise%20Based%20Function/README_EN.md)
- [2777.Date Range Generator](/javascript_solution/2700-2799/2777.Date%20Range%20Generator/README_EN.md)
- [2794.Create Object from Two Arrays](/javascript_solution/2700-2799/2794.Create%20Object%20from%20Two%20Arrays/README_EN.md)
- [2795.Parallel Execution of Promises for Individual Results Retrieval](/javascript_solution/2700-2799/2795.Parallel%20Execution%20of%20Promises%20for%20Individual%20Results%20Retrieval/README_EN.md)
- [2796.Repeat String](/javascript_solution/2700-2799/2796.Repeat%20String/README_EN.md)
- [2797.Partial Function with Placeholders](/javascript_solution/2700-2799/2797.Partial%20Function%20with%20Placeholders/README_EN.md)
- [2803.Factorial Generator](/javascript_solution/2800-2899/2803.Factorial%20Generator/README_EN.md)
- [2804.Array Prototype ForEach](/javascript_solution/2800-2899/2804.Array%20Prototype%20ForEach/README_EN.md)
- [2805.Custom Interval](/javascript_solution/2800-2899/2805.Custom%20Interval/README_EN.md)
- [2821.Delay the Resolution of Each Promise](/javascript_solution/2800-2899/2821.Delay%20the%20Resolution%20of%20Each%20Promise/README_EN.md)
- [2822.Inversion of Object](/javascript_solution/2800-2899/2822.Inversion%20of%20Object/README_EN.md)
- [2823.Deep Object Filter](/javascript_solution/2800-2899/2823.Deep%20Object%20Filter/README_EN.md)
40 changes: 38 additions & 2 deletions solution/util.py
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ def generate_question_readme(result):
item["title_cn"],
item["url_cn"],
item["relative_path_en"],
item["content_cn"].replace('leetcode-cn.com', 'leetcode.cn'),
item["content_cn"].replace("leetcode-cn.com", "leetcode.cn"),
)
)

Expand Down Expand Up @@ -202,6 +202,42 @@ def generate_summary(result):
f.write(summary_en)


def generate_category_summary(result, category=""):
"""generate category summary files"""
summary_cn = summary_en = ""
category = category.lower() if category else ""
sub_category = category + "_" if category else ""
m = {int(item["frontend_question_id"]): item for item in result}
for file in sorted(os.listdir("./"), key=lambda x: x.lower()):
if os.path.isdir("./" + file) and file != "__pycache__":
for sub in sorted(os.listdir("./" + file), key=lambda x: x.lower()):
sub = sub.replace("`", " ")
enc = quote(sub)
if not sub[:4].isdigit():
continue
data = m.get(int(sub[:4]))
if not data or (category and data["category"].lower() != category):
continue
sub_cn = sub
if data:
sub_cn = sub[:5] + data["title_cn"]

summary_cn += (
f" - [{sub_cn}](/{sub_category}solution/{file}/{enc}/README.md)\n"
)
summary_en += (
f" - [{sub}](/{sub_category}solution/{file}/{enc}/README_EN.md)\n"
)

# generate summary.md
with open(f"./{sub_category}summary.md", "w", encoding="utf-8") as f:
f.write(summary_cn)

# generate summary_en.md
with open(f"./{sub_category}summary_en.md", "w", encoding="utf-8") as f:
f.write(summary_en)


def refresh(result):
"""update problems"""
pattern = re.compile('src="(.*?)"')
Expand Down Expand Up @@ -248,7 +284,7 @@ def refresh(result):
)
cn_content = cn_content.replace(url, new_url)

cn_content = cn_content.replace('leetcode-cn.com', 'leetcode.cn')
cn_content = cn_content.replace("leetcode-cn.com", "leetcode.cn")
with open(path_cn, "w", encoding="utf-8") as f1:
f1.write(cn_content)

Expand Down

AltStyle によって変換されたページ (->オリジナル) /