This commit is contained in:
Cyrille L 2023-04-18 12:32:14 +02:00
parent 49adf951ef
commit 1b13f8e1df
7 changed files with 84 additions and 56 deletions

View File

@ -6,6 +6,11 @@ Tyto - Littérateur
- Changelog: https://git.a-lec.org/echolib/tyto-litterateur/-/blob/master/CHANGELOG.md
- License: https://git.a-lec.org/echolib/tyto-litterateur/-/blob/master/LICENSE
## [0.10.2]
- Citer dans un texte > `[_` + `_]`
- Italique `<em>` > `;_` + `_;`
- Italique `<i>` > {_:_` + `_:`
## [0.10.1]
- Fix with try in check for static page

View File

@ -149,10 +149,10 @@ Vous pouvez avoir un Nom identique pour les marqueurs `file:` et `link:`
```
*_très gras_* # <strong>
+_gras léger_+ # <b>
/_en italique_/ # <em>
;_en italique_; # <em>
:_en italique_: # <i>
~_texte barré_~ # <del>
@_Citation rapide_@ # <cite>
[_Citation rapide_] # <cite>
%_Classe personnalisée_% >>> <span class="custom">
._Souligné_. # <u>
{_Code_} # <code>

2
debian/control vendored
View File

@ -1,5 +1,5 @@
Package: tyto
Version: 0.10.1
Version: 0.10.2
Section: custom
Priority: optional
Architecture: all

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python3
# Version: 0.10.1
# Version: 0.10.2
# Tyto - Littérateur
#
# Copyright (C) 2023 Cyrille Louarn <echolib+tyto@a-lec.org>

View File

@ -343,19 +343,19 @@ def if_icodes_bcodes_quotes(post_bottom):
continue
# quotes
elif line.startswith(tyto.words_tags[11][0]) and not in_bcode:
elif line.startswith(tyto.block_tags[1][0]) and not in_bcode:
quote = in_quote = in_bq = True
continue
elif line.startswith(tyto.words_tags[11][1]):
elif line.startswith(tyto.block_tags[1][1]):
in_quote = False
nbr_quotes += 1
continue
# bcode
elif line.startswith(tyto.words_tags[12][0]) and not in_quote:
elif line.startswith(tyto.block_tags[2][0]) and not in_quote:
bcode = in_bcode = in_bq = True
continue
elif line.startswith(tyto.words_tags[12][1]):
elif line.startswith(tyto.block_tags[2][1]):
in_bcode = False
nbr_bcodes += 1
continue
@ -781,14 +781,29 @@ def check_content(post_bottom):
for tag in tyto.words_tags:
c_opened = c_closed = 0
if tag[5] == 'w':
c_opened = post_bottom.count(tag[0])
c_closed = post_bottom.count(tag[1])
# Useless tag now, replace
post_bottom = post_bottom.replace(tag[0], '')
post_bottom = post_bottom.replace(tag[1], '')
elif tag[5] == 't':
for line in post_bottom.rsplit('\n'):
c_opened = post_bottom.count(tag[0])
c_closed = post_bottom.count(tag[1])
# Useless tag now, replace
post_bottom = post_bottom.replace(tag[0], '')
post_bottom = post_bottom.replace(tag[1], '')
if c_opened != c_closed:
logs.out("8", '%s "%s" + "%s" > %s'%(
tag[4], tag[0], tag[1], db.uri_file
), False)
post_err = True
else:
globals()['post_%s'%tag[4]] = int(c_opened)
# Check block tags paragraphs, qyotes...)
# Set stats for each one
#-------------------------------------------
for tag in tyto.block_tags:
c_opened = c_closed = 0
for line in post_bottom.rsplit('\n'):
if line.startswith(tag[0]): c_opened += 1
if line.startswith(tag[1]): c_closed += 1
@ -797,7 +812,7 @@ def check_content(post_bottom):
tag[4], tag[0], tag[1], db.uri_file
), False)
post_err = True
return # Useless and could code errors to check nexts
else:
globals()['post_%s'%tag[4]] = int(c_opened)
@ -813,10 +828,10 @@ def check_content(post_bottom):
if post_lists > 0:
inlist = False
for ln, line in enumerate(post_bottom.rsplit('\n'), 1):
if line.startswith(tyto.words_tags[13][0]):
if line.startswith(tyto.block_tags[3][0]):
inlist = True
continue
elif line.startswith(tyto.words_tags[13][1]):
elif line.startswith(tyto.block_tags[3][1]):
inlist = False
if not inlist:
@ -825,7 +840,7 @@ def check_content(post_bottom):
if inlist and not line or not line[0] in tyto.markers_lists:
logs.out("3", 'L=%s. %s %s > %s'%(
ln + ln_header,
tyto.words_tags[13][4],
tyto.block_tags[3][4],
tyto.markers_lists,
db.uri_file
), False)

View File

@ -105,21 +105,29 @@ headers = \
# [6] = Check content differently. 't' = startswith
#-------------------------------------------------------------
words_tags = [
('>_', '_<', '<a class="anchor_link" href="#%s">', '</a>', 'anchors', 'w'),
('>_', '_<',
'<a class="anchor_link" href="#%s">',
'</a>', 'anchors', 'w'
),
('*_', '_*', '<strong class="strong">', '</strong>', 'strongs', 'w'),
('+_', '_+', '<b class="bold">', '</b>', 'bolds', 'w'),
('/_', '_/', '<em class="em">', '</em>', 'emphasis', 'w'),
(';_', '_;', '<em class="em">', '</em>', 'emphasis', 'w'),
(':_', '_:', '<i class="italic">', '</i>', 'italics', 'w'),
('~_', '_~', '<del class="del">', '</del>', 'dels', 'w'),
('._', '_.', '<u class="underline">', '</u>', 'underlines', 'w'),
('@_', '_@', '<cite class="cite">', '</cite>', 'cites', 'w'),
('[_', '_]', '<cite class="cite">', '</cite>', 'cites', 'w'),
('%_', '_%', '<span class="custom">', '</span>', 'customs', 'w'),
('{_', '_}', '<code class="icode">', '</code>', 'codes', 'w'),
('((', '))', '<p class="%s">', '</p>', 'paragraphs', 't'),
('[[', ']]', '[[', ']]', 'quotes', 't'),
('{{', '}}', '{{', '}}', 'bcodes', 't'),
('-(', '-)', '-(', '-)', 'lists', 't'),
('<<', '>>', '<div class="%s">', '</div>', 'div', 't')
]
# At begining line, create block contents
block_tags = \
[
('((', '))', '<p class="%s">', '</p>', 'paragraphs'),
('[[', ']]', '[[', ']]', 'quotes'),
('{{', '}}', '{{', '}}', 'bcodes'),
('-(', '-)', '-(', '-)', 'lists'),
('<<', '>>', '<div class="%s">', '</div>', 'div'),
]
# Tags that do not need to be paired
@ -132,10 +140,10 @@ single_tags = [
# When counting words, do no count line starting with:
nolinewords = \
(
words_tags[10][0], words_tags[10][1], # paragraphs
words_tags[11][0], words_tags[11][1], # quotes
words_tags[12][0], words_tags[12][1], # bcodes
words_tags[13][0], words_tags[13][1], # lists
block_tags[0][0], block_tags[0][1], # paragraphs
block_tags[1][0], block_tags[1][1], # quotes
block_tags[2][0], block_tags[2][1], # bcodes
block_tags[3][0], block_tags[3][1], # lists
single_tags[0][0], single_tags[1][0], # New line, anchor
'_%s:'%opt_header_tags[1], '_%s:'%opt_header_tags[4], # _image:, _raw:
'_%s:'%opt_header_tags[5] # _code
@ -328,10 +336,10 @@ def protect_bcodes_quotes(process, post_bottom):
#----------------------
# Bcode (at close, replace with base64)
if not in_quote:
if line.startswith(words_tags[12][0]): # Open
if line.startswith(block_tags[2][0]): # Open
start_bcode = True
in_bcode = True
elif line.startswith(words_tags[12][1]): # Close
elif line.startswith(block_tags[2][1]): # Close
close_bcode = True
in_bcode = False
if process == "wip":
@ -342,10 +350,10 @@ def protect_bcodes_quotes(process, post_bottom):
# Quote (at close, replace with base64)
if not in_bcode:
if line.startswith(words_tags[11][0]): # Open
if line.startswith(block_tags[1][0]): # Open
start_quote = True
in_quote = True
elif line.startswith(words_tags[11][1]): # Close
elif line.startswith(block_tags[1][1]): # Close
close_quote = True
in_quote = False
if process == "wip":

View File

@ -311,27 +311,27 @@ def wip_words_tags():
for ln, line in enumerate(post_bottom.rsplit('\n')):
# Paragraphs Open tag
if db.paragraphs > 0:
if line.startswith(tyto.words_tags[10][0]):
if line.startswith(tyto.block_tags[0][0]):
set_css = tyto.get_css(line)
replace_in_post(post_bottom.rsplit('\n')[ln],
tyto.words_tags[10][2]%set_css
tyto.block_tags[0][2]%set_css
)
# Close paragraph tag
elif line.startswith(tyto.words_tags[10][1]):
elif line.startswith(tyto.block_tags[0][1]):
replace_in_post(line,
tyto.words_tags[10][3]
tyto.block_tags[0][3]
)
# div Open tag
if line.startswith(tyto.words_tags[14][0]):
if line.startswith(tyto.block_tags[4][0]):
set_css = tyto.get_css(line)
replace_in_post(post_bottom.rsplit('\n')[ln],
tyto.words_tags[14][2]%set_css
tyto.block_tags[4][2]%set_css
)
# Close paragraph tag
elif line.startswith(tyto.words_tags[14][1]):
elif line.startswith(tyto.block_tags[4][1]):
replace_in_post(line,
tyto.words_tags[14][3]
tyto.block_tags[4][3]
)
# Open anchors link
@ -541,7 +541,7 @@ def wip_quotes() :
for qline in quote:
# Begin marker quote [11]
if qline.startswith(tyto.words_tags[11][0]):
if qline.startswith(tyto.block_tags[1][0]):
set_css = tyto.get_css(qline)
continue
@ -550,7 +550,7 @@ def wip_quotes() :
# Paragraph [10] Open
# Construct quote_html
if qline.startswith(tyto.words_tags[10][0]):
if qline.startswith(tyto.block_tags[0][0]):
par_css = tyto.get_css(qline)
# Set tabulation for paragraphs and content
@ -559,7 +559,7 @@ def wip_quotes() :
# Replace opened paragrph with html line
qline_html = '%s%s'%(
tab_p * ' ', tyto.words_tags[10][2]%par_css
tab_p * ' ', tyto.block_tags[0][2]%par_css
)
# Add line to quote_html
@ -570,16 +570,16 @@ def wip_quotes() :
continue
# Paragraph Close
if qline.startswith(tyto.words_tags[10][1]):
if qline.startswith(tyto.block_tags[0][1]):
# Replace closed paragrph with html line
qline_html = tyto.words_tags[10][3]
qline_html = tyto.block_tags[0][3]
quote_html = '%s\n%s%s'%(
quote_html, int(tab_p) * ' ', qline_html
)
continue
# End of marker quote
if qline.startswith(tyto.words_tags[11][1]):
if qline.startswith(tyto.block_tags[1][1]):
continue
# Add other lines
@ -694,14 +694,14 @@ def wip_bcodes():
# Convert src_bcode
for line in src_bcode.rsplit('\n'):
# CSS + opened marker
if line.startswith(tyto.words_tags[12][0]):
if line.startswith(tyto.block_tags[2][0]):
set_css = tyto.get_css(line)
html_bcode = \
'<code class="%s">\n'%set_css + \
' <pre class="bcode">'
# closed marker
elif line.startswith(tyto.words_tags[12][1]):
elif line.startswith(tyto.block_tags[2][1]):
html_bcode = \
'%s\n </pre>\n'%html_bcode + \
'</code>'
@ -829,7 +829,7 @@ def wip_lists():
for line in post_bottom.rsplit('\n'):
# Open list
if line.startswith(tyto.words_tags[13][0]):
if line.startswith(tyto.block_tags[3][0]):
block_list = content_list = ''
css = tyto.get_css(line)
in_list = True
@ -837,7 +837,7 @@ def wip_lists():
continue
# Close list
elif line.startswith(tyto.words_tags[13][1]):
elif line.startswith(tyto.block_tags[3][1]):
in_list = False
block_list = '%s\n%s'%(block_list, line)
html_list = convert_list(
@ -909,8 +909,8 @@ def convert_list(markdown_str):
work_str = ""
for i in range(len(items)):
if tyto.words_tags[13][0] in items[i] or \
tyto.words_tags[13][1] in items[i]:
if tyto.block_tags[3][0] in items[i] or \
tyto.block_tags[3][1] in items[i]:
continue
rank = cur_rank