feat(license): render_header for slash/block/html comment styles (ref #81)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-05-12 09:38:20 +02:00
parent f08eb38073
commit 70ac535e68
2 changed files with 46 additions and 0 deletions

View File

@ -21,6 +21,14 @@ HEADER_LINES = (
def render_header(style: str) -> str:
if style == "hash":
return "".join(f"# {line}\n" for line in HEADER_LINES)
if style == "slash":
return "".join(f"// {line}\n" for line in HEADER_LINES)
if style == "block":
body = "".join(f" * {line}\n" for line in HEADER_LINES)
return f"/*\n{body} */\n"
if style == "html":
body = "".join(f" {line}\n" for line in HEADER_LINES)
return f"<!--\n{body}-->\n"
raise ValueError(f"unknown comment style: {style}")

View File

@ -31,3 +31,41 @@ EXPECTED_HASH_HEADER = (
def test_render_header_hash():
assert license_headers.render_header("hash") == EXPECTED_HASH_HEADER
EXPECTED_SLASH_HEADER = (
"// SPDX-License-Identifier: LicenseRef-CMSD-1.0\n"
"// Copyright (c) 2026 CyberMind — Gérald Kerma <devel@cybermind.fr>\n"
"// Source-Disclosed License — All rights reserved except as expressly granted.\n"
"// See LICENCE-CMSD-1.0.md for terms.\n"
)
EXPECTED_BLOCK_HEADER = (
"/*\n"
" * SPDX-License-Identifier: LicenseRef-CMSD-1.0\n"
" * Copyright (c) 2026 CyberMind — Gérald Kerma <devel@cybermind.fr>\n"
" * Source-Disclosed License — All rights reserved except as expressly granted.\n"
" * See LICENCE-CMSD-1.0.md for terms.\n"
" */\n"
)
EXPECTED_HTML_HEADER = (
"<!--\n"
" SPDX-License-Identifier: LicenseRef-CMSD-1.0\n"
" Copyright (c) 2026 CyberMind — Gérald Kerma <devel@cybermind.fr>\n"
" Source-Disclosed License — All rights reserved except as expressly granted.\n"
" See LICENCE-CMSD-1.0.md for terms.\n"
"-->\n"
)
def test_render_header_slash():
assert license_headers.render_header("slash") == EXPECTED_SLASH_HEADER
def test_render_header_block():
assert license_headers.render_header("block") == EXPECTED_BLOCK_HEADER
def test_render_header_html():
assert license_headers.render_header("html") == EXPECTED_HTML_HEADER