mkdocs-document-dates 3.7.3__tar.gz → 3.7.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. {mkdocs_document_dates-3.7.3/mkdocs_document_dates.egg-info → mkdocs_document_dates-3.7.4}/PKG-INFO +2 -1
  2. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/plugin.py +6 -1
  3. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/.DS_Store +0 -0
  4. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/templates/recently_updated_group.html +10 -2
  5. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/utils.py +30 -11
  6. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4/mkdocs_document_dates.egg-info}/PKG-INFO +2 -1
  7. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates.egg-info/requires.txt +1 -0
  8. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/pyproject.toml +3 -3
  9. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/setup.py +1 -1
  10. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/LICENSE +0 -0
  11. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/MANIFEST.in +0 -0
  12. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/README.md +0 -0
  13. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/__init__.py +0 -0
  14. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/cache_manager.py +0 -0
  15. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/hooks/pre-commit +0 -0
  16. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/hooks_installer.py +0 -0
  17. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/config/user.config.css +0 -0
  18. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/config/user.config.js +0 -0
  19. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/core/core.css +0 -0
  20. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/core/core.js +0 -0
  21. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/core/default.config.js +0 -0
  22. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/core/md5.min.js +0 -0
  23. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/core/timeago.full.min.js +0 -0
  24. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/core/timeago.min.js +0 -0
  25. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/core/utils.js +0 -0
  26. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/fonts/material-icons.css +0 -0
  27. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/fonts/materialicons.woff2 +0 -0
  28. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/templates/recently_updated_detail.html +0 -0
  29. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/templates/recently_updated_grid.html +0 -0
  30. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/templates/recently_updated_list.html +0 -0
  31. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/tippy/backdrop.css +0 -0
  32. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/tippy/light.css +0 -0
  33. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/tippy/material.css +0 -0
  34. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/tippy/popper.min.js +0 -0
  35. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/tippy/scale.css +0 -0
  36. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/tippy/shift-away.css +0 -0
  37. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/tippy/tippy.css +0 -0
  38. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates/static/tippy/tippy.umd.min.js +0 -0
  39. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates.egg-info/SOURCES.txt +0 -0
  40. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates.egg-info/dependency_links.txt +0 -0
  41. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates.egg-info/entry_points.txt +0 -0
  42. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/mkdocs_document_dates.egg-info/top_level.txt +0 -0
  43. {mkdocs_document_dates-3.7.3 → mkdocs_document_dates-3.7.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mkdocs-document-dates
3
- Version: 3.7.3
3
+ Version: 3.7.4
4
4
  Summary: A new generation MkDocs plugin for displaying exact creation date, last updated date, authors, email of documents
5
5
  Author-email: Aaron Wang <aaronwqt@gmail.com>
6
6
  License-Expression: MIT
@@ -13,6 +13,7 @@ Requires-Python: >=3.7
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
15
  Requires-Dist: mkdocs<=1.6.1,>=1.6
16
+ Requires-Dist: properdocs>=1.6.5
16
17
  Dynamic: license-file
17
18
 
18
19
  # mkdocs-document-dates
@@ -205,9 +205,14 @@ class DocumentDatesPlugin(BasePlugin):
205
205
  exclude_list = recently_updated_config.get('exclude', [])
206
206
  limit = recently_updated_config.get('limit', 10)
207
207
 
208
+ # 获取站点 URL 路径前缀
209
+ site_url = config.get("site_url", "")
210
+ base_path = urlparse(site_url).path.rstrip("/")
211
+ prefix = f"{base_path}/" if base_path else "/"
212
+
208
213
  # 获取最近更新的文档数据
209
214
  recent_exclude_patterns = compile_exclude_patterns(exclude_list)
210
- recently_updated_docs = get_recently_updated_files(self.last_updated_dates, files, recent_exclude_patterns, limit, self.recent_enable)
215
+ recently_updated_docs = get_recently_updated_files(self.last_updated_dates, files, recent_exclude_patterns, limit, self.recent_enable, prefix)
211
216
 
212
217
  # 将数据注入到 config['extra'] 中供全局访问
213
218
  if not config.get('extra', {}).get("recently_updated_docs", {}):
@@ -260,11 +260,19 @@
260
260
  --summary-lines-grid: {{ summary_lines.grid }};
261
261
  --summary-lines-detail: {{ summary_lines.detail }};
262
262
  ">
263
- {%- for mtime, rel_path, title, url, cover, summary, readtime, tags in recent_docs %}
263
+ {%- for doc in recent_docs %}
264
+ {%- set title = doc.title | default('') %}
265
+ {%- set url = doc.url | default('') %}
266
+ {%- set updated_dt = doc.updated_dt | default('') %}
267
+ {%- set updated = doc.updated | default(updated_dt[:10]) %}
268
+ {%- set cover = doc.cover | default('') %}
269
+ {%- set summary = doc.summary | default('') %}
270
+ {%- set readtime = doc.readtime | default(0) %}
271
+ {%- set tags = doc.tags | default([]) %}
264
272
  <div class="article-card">
265
273
  <a class="card-header" href="{{ url }}" target="_blank">
266
274
  <div class="card-title">{{ title }}</div>
267
- <time class="dd-timeago card-date" datetime="{{ mtime }}">{{ mtime[:10] }}</time>
275
+ <time class="dd-timeago card-date" datetime="{{ updated_dt }}">{{ updated }}</time>
268
276
  </a>
269
277
  <div class="card-body">
270
278
  {%- if cover %}
@@ -8,6 +8,7 @@ import fnmatch
8
8
  import re
9
9
  import math
10
10
  from pathlib import Path
11
+ from operator import itemgetter
11
12
  from datetime import datetime
12
13
  from collections import defaultdict
13
14
  from mkdocs.structure.files import Files
@@ -143,7 +144,7 @@ def load_git_last_updated_dates(docs_dir_path: Path):
143
144
  return doc_mtime_map
144
145
 
145
146
  # 建议在 on_page_markdown 之后的全局事件中调用,因为需要读取 page.meta 中的信息
146
- def get_recently_updated_files(existing_dates: dict, files: Files, exclude_list: list, limit: int = 10, recent_enable: bool = False):
147
+ def get_recently_updated_files(existing_dates: dict, files: Files, exclude_list: list, limit: int = 10, recent_enable: bool = False, prefix: str = ""):
147
148
  recently_updated_results = []
148
149
  if recent_enable:
149
150
  files_meta = []
@@ -163,8 +164,8 @@ def get_recently_updated_files(existing_dates: dict, files: Files, exclude_list:
163
164
 
164
165
  # 获取文档其它信息
165
166
  title = file.page.title if file.page and file.page.title else file.name
166
- url = file.page.url if file.page and file.page.url else file.url
167
- tags = file.page.meta.get("tags") or []
167
+ url = prefix + (file.page.url if file.page and file.page.url else file.url)
168
+ tags = (file.page.meta.get("tags") or []) if file.page else []
168
169
 
169
170
  cover = ''
170
171
  summary = ''
@@ -172,25 +173,43 @@ def get_recently_updated_files(existing_dates: dict, files: Files, exclude_list:
172
173
  # authors = []
173
174
  if file.page:
174
175
  cover = file.page.meta.get('cover', '')
176
+ if cover and not cover.startswith(('http', 'ftp')):
177
+ cover = prefix + cover.lstrip('/')
175
178
  # authors = file.page.meta.document_dates.authors
176
179
  if file.page.file:
177
180
  summary, readtime = analyze_markdown(file.page.file.content_string)
178
181
 
179
- meta_readtime = int(file.page.meta.get('readtime') or 0)
182
+ meta_readtime = int((file.page.meta.get('readtime') or 0) if file.page else 0)
180
183
  readtime = meta_readtime if meta_readtime > 0 else readtime
181
184
 
182
185
  # 存储信息(更新时间、路径、标题、URL、封面、摘要、阅读时间、标签)
183
- files_meta.append((mtime, rel_path, title, url, cover, summary, readtime, tags))
186
+ files_meta.append({
187
+ "updated_ts": mtime,
188
+ "rel_path": rel_path,
189
+ "title": title,
190
+ "url": url,
191
+ "cover": cover,
192
+ "summary": summary,
193
+ "readtime": readtime,
194
+ "tags": tags,
195
+ })
184
196
  # existing_map[rel_path] = mtime
185
197
 
186
198
  # 构建最近更新列表
187
199
  if files_meta:
200
+ fmt_full = "%Y-%m-%d %H:%M:%S"
201
+ fmt_date = "%Y-%m-%d"
188
202
  # heapq 取 top limit
189
- top_results = heapq.nlargest(limit, files_meta, key=lambda x: x[0])
190
- recently_updated_results = [
191
- (datetime.fromtimestamp(mtime).strftime("%Y-%m-%d %H:%M:%S"), *rest)
192
- for mtime, *rest in top_results
193
- ]
203
+ top_results = heapq.nlargest(limit, files_meta, key=itemgetter("updated_ts"))
204
+
205
+ for doc in top_results:
206
+ dt = datetime.fromtimestamp(doc["updated_ts"])
207
+
208
+ recently_updated_results.append({
209
+ **doc,
210
+ "updated_dt": dt.strftime(fmt_full),
211
+ "updated": dt.strftime(fmt_date),
212
+ })
194
213
 
195
214
  return recently_updated_results
196
215
 
@@ -503,4 +522,4 @@ def analyze_markdown(md: str) -> list:
503
522
  summary = MD_SYNTAX_RE.sub("", " ".join(summary_lines)).strip()
504
523
  minutes = max(1, math.ceil(seconds / 60))
505
524
 
506
- return summary, minutes
525
+ return summary, minutes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mkdocs-document-dates
3
- Version: 3.7.3
3
+ Version: 3.7.4
4
4
  Summary: A new generation MkDocs plugin for displaying exact creation date, last updated date, authors, email of documents
5
5
  Author-email: Aaron Wang <aaronwqt@gmail.com>
6
6
  License-Expression: MIT
@@ -13,6 +13,7 @@ Requires-Python: >=3.7
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
15
  Requires-Dist: mkdocs<=1.6.1,>=1.6
16
+ Requires-Dist: properdocs>=1.6.5
16
17
  Dynamic: license-file
17
18
 
18
19
  # mkdocs-document-dates
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mkdocs-document-dates"
7
- version = "3.7.3"
7
+ version = "3.7.4"
8
8
  description = "A new generation MkDocs plugin for displaying exact creation date, last updated date, authors, email of documents"
9
9
  readme = { file = "README.md", content-type = "text/markdown" }
10
10
  requires-python = ">=3.7"
11
11
  license = "MIT"
12
12
  authors = [{ name = "Aaron Wang", email = "aaronwqt@gmail.com" }]
13
13
  dependencies = [
14
- "mkdocs>=1.6,<=1.6.1"
15
- # "properdocs>=1.6.5"
14
+ "mkdocs>=1.6,<=1.6.1",
15
+ "properdocs>=1.6.5"
16
16
  ]
17
17
  classifiers = [
18
18
  "Programming Language :: Python :: 3",
@@ -4,7 +4,7 @@ from setuptools import find_packages, setup
4
4
  def legacy_setup():
5
5
  setup(
6
6
  name="mkdocs-document-dates",
7
- version="3.7.3",
7
+ version="3.7.4",
8
8
  author="Aaron Wang",
9
9
  author_email="aaronwqt@gmail.com",
10
10
  license="MIT",