From afa2546abbd5b5ec653e5cbcc03ea1f48b32536a Mon Sep 17 00:00:00 2001 From: Cyrille LOUARN Date: Fri, 6 Oct 2023 10:21:59 +0200 Subject: [PATCH] [1.9.20] - 'check', updated logo and added 'abbr:' processes --- CHANGELOG.md | 5 + src/usr/bin/tyto | 4 +- .../program/__pycache__/check.cpython-311.pyc | Bin 26438 -> 27806 bytes .../program/__pycache__/debug.cpython-311.pyc | Bin 3784 -> 3847 bytes .../program/__pycache__/post.cpython-311.pyc | Bin 5915 -> 5943 bytes src/var/lib/tyto/program/check.py | 111 +++++++++++------- src/var/lib/tyto/program/debug.py | 1 + src/var/lib/tyto/program/post.py | 2 +- .../__pycache__/logs_fr.cpython-311.pyc | Bin 3026 -> 3077 bytes src/var/lib/tyto/translations/logs_fr.py | 1 + 10 files changed, 81 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 697b74a..929980e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,11 @@ Tyto - Littérateur # CURRENTLY IN DEV ! +## [1.9.20] +- working on 'check' process +- - updated 'logo:' process +- - added 'abbr:' process + ## [1.9.19] - working on 'check' process - - Added post 'logo: URI' (for social network share + opt show on page) diff --git a/src/usr/bin/tyto b/src/usr/bin/tyto index fe0bf51..62062b9 100755 --- a/src/usr/bin/tyto +++ b/src/usr/bin/tyto @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# Version: 1.9.19 -# Updated: 2023-10-05 1696512944 +# Version: 1.9.20 +# Updated: 2023-10-06 1696580458 # Tyto - Littérateur # Copyright (C) 2023 Cyrille Louarn diff --git a/src/var/lib/tyto/program/__pycache__/check.cpython-311.pyc b/src/var/lib/tyto/program/__pycache__/check.cpython-311.pyc index 813b7d576c1b08fb347f34318cacd5d458d7ee8e..8af7c7ccc55a16cb14168d27a336499ee240c977 100644 GIT binary patch delta 5043 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 delta 3700 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 Kx+MOedfGov3h4C! diff --git a/src/var/lib/tyto/program/__pycache__/post.cpython-311.pyc b/src/var/lib/tyto/program/__pycache__/post.cpython-311.pyc index 1267ccd1127311219d0405afa37d28bdd643cedd..8d00bd165b04c526d5af953a3016223d3f49afc7 100644 GIT binary patch delta 135 zcmbQOw_T5SIWI340}vcMAfM_pkynz@ZKJv!BRfNsVTwwW(dG=s4T6lun@nqKwNxwvybS0 XMzI?rq8AthKJX|Aur%<1AXpawpYJ1E delta 80 zcmdn4H(QT)IWI340}$NllT9_B$ScX{v{BuTky$0maB~jh20=!n&9cH=Op`4|<+;j$ d${2yT`1s}|(fy19ANUjmSQ>ahut*gs4geCH5|RJ_ diff --git a/src/var/lib/tyto/program/check.py b/src/var/lib/tyto/program/check.py index 609e76f..db256b4 100644 --- a/src/var/lib/tyto/program/check.py +++ b/src/var/lib/tyto/program/check.py @@ -254,9 +254,11 @@ def is_valid_date(date): # Written using 3 lines # #----------------------------# def ml_tags(): + global value1 + + value1 = "" R_tag = post.ml_tags[3] # raw: C_tag = post.ml_tags[4] # code: - A_tag = post.ml_tags[5] # abbr: c = 0 # Continue for next x lines, as tags are 3 lines values for ln, line in enumerate(headers): @@ -265,7 +267,8 @@ def ml_tags(): continue if not line or line.isspace() or line.startswith("#"): continue - + + # link: if line.startswith(post.ml_tags[0]): post.stats_links += 1 if not ml_tag_values(ln, post.ml_tags[0], post.stats_links): @@ -273,19 +276,39 @@ def ml_tags(): c = 2 ; continue + # file: elif line.startswith(post.ml_tags[2]): - post.stats_files += 1 - if not ml_tag_values(ln, post.ml_tags[2], post.stats_files): - return False # value errors - - c = 2 ; continue - + post.stats_files += 1 + if not ml_tag_values(ln, post.ml_tags[2], post.stats_files): + return False # value errors + + c = 2 ; continue + + # image: elif line.startswith(post.ml_tags[1]): - post.stats_images += 1 - if not ml_tag_values(ln, post.ml_tags[1], post.stats_images): - return False # value errors + post.stats_images += 1 + if not ml_tag_values(ln, post.ml_tags[1], post.stats_images): + return False # value errors + # image: logo is reserved for post logo + if value1 == "logo": + debug.out(56, "%s) 'logo'"%(ln+1), post.uri, True, 2, False) + return False - c = 2 ; continue + c = 2 ; continue + + # ABBRS: + elif line.startswith(post.ml_tags[5]): + post.stats_abbrs += 1 + if not ml_tag_values(ln, post.ml_tags[5], post.stats_abbrs): + return False # value errors + + c = 2 ; continue + + + # value1 must not starts with "_", as used by Tyto + if value1.startswith("_"): + debug.out(56, "%s) '_...'"%(ln+1), post.uri, True, 2, False) + return False return True @@ -298,7 +321,7 @@ def ml_tags(): # Return True/False (if no value) # #----------------------------------------# def ml_tag_values(ln, tag, stats): - global value2 + global value1, value2 # Get 3 lines values value1 = headers[ln].rsplit(":")[1].lstrip() @@ -359,7 +382,14 @@ def ml_tag_values(ln, tag, stats): html_value = '%s'%( value2, "%%s", "%%s", value3, "%%s" ) - + + elif tag == post.ml_tags[5]: + section = "ABBRS" + post.stats_text_abbrs += post.text_contents.count(tyto_value) + html_value = '%s'%( + domain.css, value2, value3 + ) + post.cf.set(section, link_var, tyto_value) post.cf.set(section, html_var, html_value) @@ -376,8 +406,6 @@ def ml_tag_values(ln, tag, stats): def is_value2_file_exists(ln, tag, val2): global value2, src_uri - print("check: val2", tag, val2) - # uri "@..." means generic folders if val2[0].startswith("@"): if val2[1] == "/": val2 = val2[2:] @@ -549,14 +577,15 @@ def titles(): elif line.lstrip().startswith(post.text_comments): post.stats_html_coms += 1 - # Add stat for [] when user wants to show logo in post + # Add stat + html for [IMAGES] when user wants to show logo in post elif line.lstrip().startswith("_image:logo"): post.stats_text_images += 1 link_var = "image_%s"%(post.stats_images+1) link_val = "_image:logo" html_var = "html_%s"%(post.stats_images+1) html_val = '%s'%( - post.logo[1], "%%s", "%%s", post.title[1], "%%s") + post.logo[1], "%%s", "%%s", post.title[1], "%%s" + ) post.cf.set("IMAGES", link_var, link_val) post.cf.set("IMAGES", html_var, html_val) @@ -571,46 +600,48 @@ def cf_update_values(): post.cf.set("DOMAIN", "name", domain.name) - post.cf.set("FILE", "id", post.uri_id) - post.cf.set("FILE", "uri", post.uri) - post.cf.set("FILE", "db", post.cf_uri) + post.cf.set("FILE", "id", post.uri_id) + post.cf.set("FILE", "uri", post.uri) + post.cf.set("FILE", "db", post.cf_uri) post.cf.set("FILE", "target", post.wrk_target) - post.cf.set("HEADERS", "title", post.title[1]) - post.cf.set("HEADERS", "about", post.about[1]) - post.cf.set("HEADERS", "date", post.date[1]) - post.cf.set("HEADERS", "tags", post.tags[1]) + post.cf.set("HEADERS", "title", post.title[1]) + post.cf.set("HEADERS", "about", post.about[1]) + post.cf.set("HEADERS", "date", post.date[1]) + post.cf.set("HEADERS", "tags", post.tags[1]) post.cf.set("HEADERS", "authors", post.author[1]) post.cf.set("HEADERS", "sitemap", str(sitemap)) - post.cf.set("CHECK", "hash", post.wrk_id) - post.cf.set("CHECK", "date", chk_date) + post.cf.set("CHECK", "hash", post.wrk_id) + post.cf.set("CHECK", "date", chk_date) post.cf.set("CHECK", "static", str(domain.static)) post.cf.set("WIP", "web", "%s%s"%(domain.wip_url, post.wrk_target)) - post.cf.set("WIP", "uri", "%s%s"%(domain.wip, post.wrk_target)) + post.cf.set("WIP", "uri", "%s%s"%(domain.wip, post.wrk_target)) post.cf.set("WWW", "web", "%s%s"%(domain.www_url, post.wrk_target)) - post.cf.set("WWW", "uri", "%s%s"%(domain.www, post.wrk_target)) + post.cf.set("WWW", "uri", "%s%s"%(domain.www, post.wrk_target)) stats_tyto_all_coms = post.stats_tyto_text_coms + post.stats_tyto_head_coms - post.cf.set("STATS_FILE", "lines", str(post.lines)) + post.cf.set("STATS_FILE", "lines", str(post.lines)) post.cf.set("STATS_FILE", "tyto_coms", str(stats_tyto_all_coms)) - post.cf.set("STATS_FILE", "files", str(post.stats_total_files)) + post.cf.set("STATS_FILE", "files", str(post.stats_total_files)) - post.cf.set("STATS_HEADERS", "lines", str(post.head_lines)) + post.cf.set("STATS_HEADERS", "lines", str(post.head_lines)) post.cf.set("STATS_HEADERS", "tyto_coms", str(post.stats_tyto_head_coms)) - post.cf.set("STATS_HEADERS", "links", str(post.stats_links)) - post.cf.set("STATS_HEADERS", "files", str(post.stats_files)) - post.cf.set("STATS_HEADERS", "images", str(post.stats_images)) + post.cf.set("STATS_HEADERS", "links", str(post.stats_links)) + post.cf.set("STATS_HEADERS", "files", str(post.stats_files)) + post.cf.set("STATS_HEADERS", "images", str(post.stats_images)) + post.cf.set("STATS_HEADERS", "abbrs", str(post.stats_abbrs)) - post.cf.set("STATS_TEXTS", "lines", str(post.text_lines)) + post.cf.set("STATS_TEXTS", "lines", str(post.text_lines)) post.cf.set("STATS_TEXTS", "tyto_coms", str(post.stats_tyto_text_coms)) post.cf.set("STATS_TEXTS", "html_coms", str(post.stats_html_coms)) - post.cf.set("STATS_TEXTS", "titles", str(post.stats_titles)) - post.cf.set("STATS_TEXTS", "links", str(post.stats_text_links)) - post.cf.set("STATS_TEXTS", "files", str(post.stats_text_files)) - post.cf.set("STATS_TEXTS", "images", str(post.stats_text_images)) + post.cf.set("STATS_TEXTS", "titles", str(post.stats_titles)) + post.cf.set("STATS_TEXTS", "links", str(post.stats_text_links)) + post.cf.set("STATS_TEXTS", "files", str(post.stats_text_files)) + post.cf.set("STATS_TEXTS", "images", str(post.stats_text_images)) + post.cf.set("STATS_TEXTS", "abbrs", str(post.stats_text_abbrs)) with open(post.cf_uri, "w") as f: post.cf.write(f) diff --git a/src/var/lib/tyto/program/debug.py b/src/var/lib/tyto/program/debug.py index 6610481..6dedfca 100644 --- a/src/var/lib/tyto/program/debug.py +++ b/src/var/lib/tyto/program/debug.py @@ -94,6 +94,7 @@ def out(nbr, var, val, show, color, stop): 53 : langs.logs.err_post_paired, 54 : langs.logs.err_post_indent, 55 : langs.logs.err_post_in_tag, + 56 : langs.logs.err_post_datatag, # WARNINGS (100-200) 100 : langs.logs.warn_no_dom, 101 : langs.logs.domain_created, diff --git a/src/var/lib/tyto/program/post.py b/src/var/lib/tyto/program/post.py index 138628b..f75cbc6 100644 --- a/src/var/lib/tyto/program/post.py +++ b/src/var/lib/tyto/program/post.py @@ -227,7 +227,7 @@ stats_total_files = 0 stats_text_links = 0 stats_text_files = 0 stats_text_images = 0 - +stats_text_abbrs = 0 #=============================# diff --git a/src/var/lib/tyto/translations/__pycache__/logs_fr.cpython-311.pyc b/src/var/lib/tyto/translations/__pycache__/logs_fr.cpython-311.pyc index 1b0001d3dfcce7eb2eb95054455fa4eae0ca1095..380c9a19f8fa1c6a28a847ba6328e1a6c7fb014b 100644 GIT binary patch delta 133 zcmca4-YUVnoR^o20SGeB$)$!&uP5q6pe3-<9 zfa+ZG^YRX_OjRg4ys|j8s0_&5Y|6~d%Ba8Dkt3FoPaw6ZD83-SxFkL$u_STxEKW^E fZZn`ZMj$R`W}JMEYc7l01qOl1ncS%?CO|;|EvqGY delta 86 zcmZpbxFpWIoR^o20SIERNTupdTQnUh-KV-np2gL+Z3pY5r~WbGEDx>HFxqn?qn8YARhqL*cLnh diff --git a/src/var/lib/tyto/translations/logs_fr.py b/src/var/lib/tyto/translations/logs_fr.py index ad48ed9..ea11c38 100644 --- a/src/var/lib/tyto/translations/logs_fr.py +++ b/src/var/lib/tyto/translations/logs_fr.py @@ -65,6 +65,7 @@ err_post_data = "Donnée manquante" err_post_title = "Titre invalide" err_post_paired = "Marqueurs non apairés" err_post_in_tag = "Marqueurs sans contenu" +err_post_datatag= "Donnée réservée" err_post_indent = "Ligne non indentée" # Warnings