[1.9.15] - Added 'check' process for bcodes, quotes and paragraphs

This commit is contained in:
Cyrille L 2023-10-02 09:19:20 +02:00
parent 2a8cdf0084
commit 17495bd7af
6 changed files with 67 additions and 58 deletions

View File

@ -9,8 +9,13 @@ Tyto - Littérateur
# CURRENTLY IN DEV ! # CURRENTLY IN DEV !
## [1.9.15]
- Added 'check' process for bcodes, quotes and paragraphs + stats
- - Their contents must be indented
- - replace with empty lines for bcodes and quotes
## [1.9.14] ## [1.9.14]
- added 'check' process on block-codes - added 'check' process for block-codes
## [1.9.13] ## [1.9.13]
- Check: One-Line needed tags, titles - Check: One-Line needed tags, titles

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# Version: 1.9.14 # Version: 1.9.15
# Updated: 2023-10-01 1696152727 # Updated: 2023-10-02 1696231003
# Tyto - Littérateur # Tyto - Littérateur
# Copyright (C) 2023 Cyrille Louarn <echolib+tyto@a-lec.org> # Copyright (C) 2023 Cyrille Louarn <echolib+tyto@a-lec.org>

View File

@ -73,12 +73,11 @@ def manage(action, target):
def is_article(target): def is_article(target):
valid(target) valid(target)
print("pass", post.error, args.targets)
print("chk_date", chk_date) print("chk_date", chk_date)
print()
print("Stats coms =", post.stats_tyto_coms, post.stats_html_coms) print("Final text_contents string")
print("Titles =", post.stats_titles) for ln, line in enumerate(post.text_contents.rsplit("\n"), post.head_lines):
print(">", ln, line)
#===========================================# #===========================================#
# Check full article contents (head + text) # # Check full article contents (head + text) #
@ -97,7 +96,9 @@ def valid(target):
# Text article # Text article
# ============ # ============
post.error == 0 and bcodes() or tools.exit(targets, post.error) post.error == 0 and sl_paired("bcodes") or tools.exit(targets, post.error)
post.error == 0 and sl_paired("quotes") or tools.exit(targets, post.error)
post.error == 0 and sl_paired("parags") or tools.exit(targets, post.error)
post.error == 0 and titles() or tools.exit(targets, post.error) post.error == 0 and titles() or tools.exit(targets, post.error)
@ -216,70 +217,68 @@ def is_valid_date(date):
# Create new post.text_contents # # Create new post.text_contents #
# Return True/False # # Return True/False #
#---------------------------------------# #---------------------------------------#
def bcodes(): def sl_paired(markers):
new_text_contents = "" new_text_contents = ""
opened = closed = False opened = closed = in_tag = False
closed_bcodes_nbr = 0 # To compare with post.stats_bcodes stats_opened = stats_closed = 0
tags = ()
for ln, line in enumerate(post.text_contents.rsplit("\n"), if markers == "bcodes" : tags = post.bcodes
post.head_lines + 1): elif markers == "quotes" : tags = post.quotes
elif markers == "parags" : tags = post.parags
# Opened tag # loop lines in text_contents
if line.startswith(post.bcodes[0]): for ln, line in enumerate(post.text_contents.rsplit("\n"), post.head_lines):
# Tag was closed, but not in_tag content line
if closed and in_tag:
in_tag = False
# Tag is opened
if line.startswith(tags[0]):
# Tag was already opened
if opened: if opened:
post.error = \ post.error = \
debug.out(53, "%s) %s ... %s"%( debug.out(53, "%s) %s ... %s"%(
ln, ln,
post.bcodes[0], post.bcodes[1] tags[0], tags[1]
), post.uri, True, 2, False) ), post.uri, True, 2, False)
return False return False
opened = in_tag = True
closed = False
stats_opened += 1
opened = True # Tag is closed
post.stats_bcodes += 1 if line.startswith(tags[1]):
continue # Tag was already closed
# Close tag
elif line.startswith(post.bcodes[1]):
if closed: if closed:
post.error = \ post.error = \
debug.out(53, "%s) %s ... %s"%( debug.out(53, "%s) %s ... %s"%(
ln, ln,
post.bcodes[0], post.bcodes[1] tags[0], tags[1]
), post.uri, True, 2, False) ), post.uri, True, 2, False)
return False return False
closed = True closed = True
closed_bcodes_nbr += 1 opened = False
stats_closed += 1
if not opened:
post.error = \
debug.out(53, "%s) %s ... %s"%(
ln,
post.bcodes[0], post.bcodes[1]
), post.uri, True, 2, False)
return False
# Contents must be indented if in_tag:
if opened and not closed: # Contents must be indented
if len(line) - len(line.lstrip()) < 3: if not line.startswith(tags):
post.error = \ if len(line) - len(line.lstrip()) < 3:
debug.out(54, "%s) %s..."%(ln, line[0:10]), post.uri, True, 2, False) post.error = \
return False debug.out(54, "%s) %s..."%(ln, line[0:10]), post.uri, True, 2, False)
return False
line = ""
# Create new string # Create new string, removing in_tag line if in bcodes or quotes
if not opened and not closed: if markers in post.raw_contents:
if not new_text_contents: new_text_contents = line if not new_text_contents: new_text_contents = line
else: new_text_contents = "%s\n%s"%(new_text_contents, line) else: new_text_contents = "%s\n%s"%(new_text_contents, line)
# Check if tags are paired post.text_contents = new_text_contents
if post.stats_bcodes != closed_bcodes_nbr:
post.error = \
debug.out(53, "%s ... %s"%(
post.bcodes[0], post.bcodes[1]
), post.uri, True, 2, False)
return False
post.text_contents = new_text_contents
return True return True

View File

@ -116,7 +116,7 @@ def is_tyto_format():
error = debug.out(23, "?", uri, True, 2, False) error = debug.out(23, "?", uri, True, 2, False)
return False return False
head_lines = len(head_contents.rsplit("\n")) head_lines = len(head_contents.rsplit("\n")) +1 # after separator
text_lines = lines - head_lines text_lines = lines - head_lines
return True return True
@ -180,6 +180,9 @@ bcodes = ("{{", "}}")
quotes = ("[[", "]]") quotes = ("[[", "]]")
parags = ("((", "))") parags = ("((", "))")
# markers with "protected" contents
raw_contents = ("bcodes", "quotes")
# Comments # Comments
text_comments = (";;", "<!--") text_comments = (";;", "<!--")
html_comment = { text_comments[0] : "<!-- %s -->" } html_comment = { text_comments[0] : "<!-- %s -->" }
@ -200,3 +203,5 @@ stats_tyto_coms = 0
stats_html_coms = 0 stats_html_coms = 0
stats_titles = 0 stats_titles = 0
stats_bcodes = 0 stats_bcodes = 0
stats_quotes = 0
stats_parags = 0