codeannex 0.3.0__tar.gz → 0.3.2__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 (25) hide show
  1. {codeannex-0.3.0 → codeannex-0.3.2}/PKG-INFO +1 -1
  2. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/__main__.py +18 -4
  3. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/core/pdf_builder.py +12 -2
  4. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex.egg-info/PKG-INFO +1 -1
  5. {codeannex-0.3.0 → codeannex-0.3.2}/pyproject.toml +1 -1
  6. {codeannex-0.3.0 → codeannex-0.3.2}/LICENSE +0 -0
  7. {codeannex-0.3.0 → codeannex-0.3.2}/README.md +0 -0
  8. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/__init__.py +0 -0
  9. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/core/__init__.py +0 -0
  10. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/core/config.py +0 -0
  11. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/interface/__init__.py +0 -0
  12. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/interface/cli.py +0 -0
  13. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/io/__init__.py +0 -0
  14. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/io/file_utils.py +0 -0
  15. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/io/git_utils.py +0 -0
  16. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/renderer/__init__.py +0 -0
  17. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/renderer/fonts.py +0 -0
  18. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/renderer/highlight.py +0 -0
  19. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex/renderer/text_utils.py +0 -0
  20. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex.egg-info/SOURCES.txt +0 -0
  21. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex.egg-info/dependency_links.txt +0 -0
  22. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex.egg-info/entry_points.txt +0 -0
  23. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex.egg-info/requires.txt +0 -0
  24. {codeannex-0.3.0 → codeannex-0.3.2}/codeannex.egg-info/top_level.txt +0 -0
  25. {codeannex-0.3.0 → codeannex-0.3.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeannex
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Generates a professional PDF source code annex with Smart Index, Images and Emoji support.
5
5
  License: MIT
6
6
  Project-URL: Repository, https://github.com/tanhleno/codeannex
@@ -112,11 +112,25 @@ def main():
112
112
  if fp.resolve() in (script_path, output_path): continue
113
113
  except: pass
114
114
  if not fp.is_file(): continue
115
+
115
116
  ext = fp.suffix.lower()
116
- if ext == ".svg": included += [(fp, "image"), (fp, "text")]
117
- elif ext in IMAGE_EXTENSIONS: included.append((fp, "image"))
118
- elif ext in BINARY_EXTENSIONS: continue
119
- elif classify_file(fp) == "text": included.append((fp, "text"))
117
+ if ext == ".svg":
118
+ included += [(fp, "image"), (fp, "text")]
119
+ continue
120
+ elif ext in IMAGE_EXTENSIONS:
121
+ included.append((fp, "image"))
122
+ continue
123
+ elif ext in BINARY_EXTENSIONS:
124
+ rel_path = fp.relative_to(root).as_posix()
125
+ print(f"⚠️ Skipping binary/unsupported file: {rel_path}")
126
+ continue
127
+
128
+ file_type = classify_file(fp)
129
+ if file_type == "text":
130
+ included.append((fp, "text"))
131
+ else:
132
+ rel_path = fp.relative_to(root).as_posix()
133
+ print(f"⚠️ Skipping binary file: {rel_path}")
120
134
 
121
135
  if not included:
122
136
  print("❌ No compatible files found."); return
@@ -214,10 +214,20 @@ class ModernAnnexPDF:
214
214
  bookmark_parts, total_parts = f"{bookmark_key}__parts", self.summary_data.get(f"{bookmark_key}__parts", None)
215
215
  header_suffix = self.config.file_part_format.replace("{current}", "1").replace("{total}", str(total_parts)) if total_parts else ""
216
216
  self._draw_file_header(display_name, continuation=header_suffix)
217
- try: lexer = get_lexer_for_filename(str(fpath), stripnl=False)
217
+ try:
218
+ ext = fpath.suffix.lower()
219
+ if ext == ".svg":
220
+ from pygments.lexers import XmlLexer
221
+ lexer = XmlLexer(stripnl=False)
222
+ elif fpath.name in [".gitignore", "LICENSE", "README"]:
223
+ lexer = TextLexer(stripnl=False)
224
+ else:
225
+ lexer = get_lexer_for_filename(str(fpath), stripnl=False)
218
226
  except ClassNotFound:
219
- if not self.is_simulation: print(f"ℹ️ Highlighting fallback: No lexer for '{fpath.name}'. Using plain text.")
227
+ if not self.is_simulation:
228
+ print(f"ℹ️ Highlighting fallback: No lexer for '{fpath.name}'. Using plain text.")
220
229
  lexer = TextLexer(stripnl=False)
230
+
221
231
  self._render_tokens_to_lines(lexer.get_tokens(content or " "), display_name, bookmark_parts, total_parts)
222
232
  self.y -= 4*mm
223
233
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeannex
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Generates a professional PDF source code annex with Smart Index, Images and Emoji support.
5
5
  License: MIT
6
6
  Project-URL: Repository, https://github.com/tanhleno/codeannex
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codeannex"
7
- version = "0.3.0"
7
+ version = "0.3.2"
8
8
  description = "Generates a professional PDF source code annex with Smart Index, Images and Emoji support."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
File without changes
File without changes
File without changes