diff --git a/src/var/lib/tyto/program/args.py b/src/var/lib/tyto/program/args.py
index a7bb3e8..62c9b7c 100644
--- a/src/var/lib/tyto/program/args.py
+++ b/src/var/lib/tyto/program/args.py
@@ -54,6 +54,7 @@ pass_db = \
'edit-wip',
'edit-www',
'publish',
+ 'show',
'show-db',
'show-wip',
'show-www',
diff --git a/src/var/lib/tyto/program/check.py b/src/var/lib/tyto/program/check.py
index ce5ea7f..fe5bbd8 100644
--- a/src/var/lib/tyto/program/check.py
+++ b/src/var/lib/tyto/program/check.py
@@ -35,7 +35,7 @@ def manage_check(target):
# target needed
if not target: logs.out("5", '', True)
- global date_wip, hash_wip, date_www, hash_www
+ global date_wip, hash_wip, date_www, hash_www, post_bottom
date_wip = hash_wip = date_www = hash_www = ''
# Article has DB
@@ -98,28 +98,30 @@ def manage_check(target):
# Start checking processes
#-------------------------
file_to_string(db.uri_file)
-
+
# Specific to inline-code: check markers on same line
- check_icodes(article.rsplit('\n'))
+ if_icodes_bcodes_quotes(post_bottom)
+
+ # Protect block-codes and quotes
+ if bcode or quote:
+ tyto.protect_bcodes_quotes('check', post_bottom)
+ post_bottom = tyto.protect_article
# Protect inline-codes
- tyto.protect_icodes(post_bottom, article_bottom)
- post_bottom = tyto.protect_article.rsplit('\n')
- article_bottom = tyto.protect_article
-
- # Protect block-codes and quotes
- tyto.protect_bcodes_quotes('check', post_bottom, article_bottom)
- post_bottom = tyto.protect_article.rsplit('\n')
- article_bottom = tyto.protect_article
+ if icode:
+ tyto.protect_icodes(post_bottom)
+ post_bottom = tyto.protect_article
+
# Count words in article. Quotes, block-codes, icode = 1 per each
- post_words = len(article_bottom.strip().split(" "))
-
+ post_words = len(post_bottom.strip().split(" "))
+
# Check for valid contents
check_content(post_bottom)
- post_bottom = article_bottom.rsplit('\n')
+ post_bottom = post_bottom.rsplit('\n')
- check_headers(post_header)
+ #post_header = post_header.rsplit('\n')
+ check_headers(post_header.rsplit('\n'))
# Exit if unused needed tags
if post_err:
@@ -131,62 +133,81 @@ def manage_check(target):
create_database()
-#=====================#
-# Find in post_bottom #
-#---------------------#
-def isin(term, post_bottom):
- for x in post_bottom:
- if re.search(r'%s'%term, x):
- return True
- return False
-
-
#=================================#
# Create string article from file #
# Check if separator or exit #
#---------------------------------#
def file_to_string(post_file):
global article
- global article_header, article_bottom
global post_header, post_bottom
+ post_header = post_bottom = ''
+ sep = False
article = open(post_file, 'r').read()
+ for line in article.rsplit('\n'):
+ if line.startswith('-----'):
+ sep = True
+ continue
+
+ if sep:
+ if not post_bottom: post_bottom = line
+ else: post_bottom = '%s\n%s'%(post_bottom, line)
+ else:
+ if not post_header: post_header = line
+ else: post_header = '%s\n%s'%(post_header, line)
+
# Check if separator or exit
- if not '-----' in article: logs.out("6", '-----', True)
-
- # Set from separator, NOT splitted by new line
- article_header = article.rsplit('-----')[0]
- article_bottom = article.rsplit('-----')[1]
-
- # Set from separator, splitted by new line
- post_header = article.rsplit('-----')[0].rsplit('\n')
- post_bottom = article.rsplit('-----')[1].rsplit('\n')
+ if not sep:
+ logs.out("6", '-----', True)
#=============================================#
+# Check if bcodes and quotes #
# Check inline code, for markers on same line #
+# Stats for titles, quotes, bcodes, uniq_ancs #
#---------------------------------------------#
-def check_icodes(article):
- quote = bcode = False
+def if_icodes_bcodes_quotes(post_bottom):
+ global icode, quote, bcode
+ global nbr_titles, nbr_quotes, nbr_bcodes, nbr_ancs
+ icode = quote = in_quote = bcode = in_bcode = False
+ nbr_titles = nbr_quotes = nbr_bcodes = nbr_ancs = 0
- for ln, line in enumerate(article, 1):
- icode_m1 = icode_m2 = 0
-
- # Pass Comments
- if line.startswith('#'): continue
+ for ln, line in enumerate(post_bottom.rsplit('\n'), 1):
+ # Pass Comments, count titles
+ # Count titles
+ if not line:
+ continue
+ elif line.startswith(tyto.titles_tags):
+ nbr_titles += 1
+ continue
+ elif line.startswith('#'):
+ continue
# Pass quotes
- if line.startswith(tyto.words_tags[11][0]): quote = True
- if line.startswith(tyto.words_tags[11][1]): quote = False
+ elif line.startswith(tyto.words_tags[11][0]) and not in_bcode:
+ quote = in_quote = True
+ nbr_quotes += 1
+ continue
+ elif line.startswith(tyto.words_tags[11][1]):
+ in_quote = False
+ continue
# Pass bcode
- if line.startswith(tyto.words_tags[12][0]): bcode = True
- if line.startswith(tyto.words_tags[12][1]): bcode = False
+ elif line.startswith(tyto.words_tags[12][0]) and not in_quote:
+ bcode = in_bcode = True
+ nbr_bcodes += 1
+ continue
+ elif line.startswith(tyto.words_tags[12][1]):
+ in_bcode = False
+ continue
- if bcode or quote: continue
-
- if tyto.words_tags[9][0] or tyto.words_tags[9][1] in line:
+ if in_bcode or in_quote:
+ continue
+ elif line.startswith(tyto.single_tags[1][0]):
+ nbr_ancs += 1
+ elif tyto.words_tags[9][0] or tyto.words_tags[9][1] in line:
+ icode_m1 = icode_m2 = 0
icode_m1 = line.count(tyto.words_tags[9][0])
icode_m2 = line.count(tyto.words_tags[9][1])
if icode_m1 != icode_m2:
@@ -194,6 +215,8 @@ def check_icodes(article):
tyto.words_tags[9][0], tyto.words_tags[9][1]
), True
)
+ else:
+ icode = True
#==================================#
@@ -226,7 +249,6 @@ def check_headers(post_header):
# Read articles lines, till separator #
#-------------------------------------#
for ln, line in enumerate(post_header, 1):
-
# Set each needed tag #
# Only the first one is set #
#---------------------------#
@@ -283,7 +305,7 @@ def check_headers(post_header):
# Check if set needed tags
for tag in need_headers:
if not need_headers[tag]:
- logs_out("6", tag, False)
+ logs.out("6", tag, False)
post_err = True
@@ -573,7 +595,6 @@ def check_file_uri(filetype, filename, ln):
#---------------------------#
def check_content(post_bottom):
global post_err
- global article_bottom
# Check tags for words (strongs, italics...)
# Set stats for each one
@@ -582,13 +603,13 @@ def check_content(post_bottom):
c_opened = c_closed = 0
if tag[5] == 'w':
- c_opened = article_bottom.count(tag[0])
- c_closed = article_bottom.count(tag[1])
+ c_opened = post_bottom.count(tag[0])
+ c_closed = post_bottom.count(tag[1])
# Useless tag now, replace
- article_bottom = article_bottom.replace(tag[0], '')
- article_bottom = article_bottom.replace(tag[1], '')
+ post_bottom = post_bottom.replace(tag[0], '')
+ post_bottom = post_bottom.replace(tag[1], '')
elif tag[5] == 't':
- for line in post_bottom:
+ for line in post_bottom.rsplit('\n'):
if line.startswith(tag[0]): c_opened += 1
if line.startswith(tag[1]): c_closed += 1
@@ -602,12 +623,9 @@ def check_content(post_bottom):
# Check if anchor has target
# Count anchors target
- #---------------------------
- global stat_ancs
- stat_ancs = 0
-
- for line in post_bottom:
- if line.startswith(tyto.single_tags[1][0]): stat_ancs += 1
+ #---------------------------
+ for line in post_bottom.rsplit('\n'):
+ # Anchor link
if tyto.words_tags[0][0] and tyto.words_tags[0][1] in line:
anchors = re.findall(r">_(.*?)_<", line)
for anchor in anchors:
@@ -616,6 +634,16 @@ def check_content(post_bottom):
if not tag in post_bottom:
logs.out("6", 'anchor, %s'%tag, False)
post_err = True
+
+ # Anchor source "->"
+ elif line.startswith(tyto.single_tags[1][0]):
+ set_css = tyto.get_css(line)
+ is_uniq_anchor = "%s %s"%(tyto.single_tags[1][0], set_css)
+ c_uniq_anchor = post_bottom.count(is_uniq_anchor)
+ if c_uniq_anchor > 1:
+ logs.out("15", '%s "%s"'%(c_uniq_anchor, is_uniq_anchor), False)
+ post_err = True
+ break
# Lists: check if contents are valid
@@ -663,8 +691,8 @@ def check_content(post_bottom):
# Template Tags (warning for not paired symbols)
#-----------------------------------------------
for tag in tyto.tpl_tags:
- tpl1 = article_bottom.count(tag[0])
- tpl2 = article_bottom.count(tag[1])
+ tpl1 = post_bottom.count(tag[0])
+ tpl2 = post_bottom.count(tag[1])
if tpl1 != tpl2:
logs.out("22", '"%s", "%s"'%(tag[0], tag[1]), False)
@@ -735,7 +763,7 @@ def create_database():
)
db_stats = '\n# Statistics from optional tags\n' + \
- 'uniq_anchors = %d\n'%stat_ancs + \
+ 'uniq_anchors = %d\n'%nbr_ancs + \
'uniq_abbrs = %d\n'%stat_abbrs + \
'uniq_links = %d\n'%stat_links + \
'uniq_images = %d\n'%stat_images + \
@@ -744,7 +772,7 @@ def create_database():
'\n# Statistics from post content\n' + \
'stat_tags = %d\n'%post_tags + \
'stat_words = %d\n'%post_words + \
- 'stat_titles = %d\n'%tyto.nbr_titles + \
+ 'stat_titles = %d\n'%nbr_titles + \
'stat_paragraphs = %d\n'%post_paragraphs + \
'stat_anchors = %d\n'%post_anchors + \
'stat_strongs = %d\n'%post_strongs + \
@@ -756,10 +784,23 @@ def create_database():
'stat_cites = %d\n'%post_cites + \
'stat_customs = %d\n'%post_customs + \
'stat_icodes = %d\n'%tyto.nbr_icodes + \
- 'stat_bcodes = %d\n'%tyto.nbr_bcodes + \
- 'stat_quotes = %d\n'%tyto.nbr_quotes + \
+ 'stat_bcodes = %d\n'%nbr_bcodes + \
+ 'stat_quotes = %d\n'%nbr_quotes + \
'stat_lists = %d\n'%post_lists
+ '''
+
+ '''
database = '%s\n%s'%(database, db_stats)
tyto.set_file(db.post_db, 'new', database)
logs.out("21", '', True)
+
+
+#=====================#
+# Find in post_bottom #
+#---------------------#
+def isin(term, post_bottom):
+ for x in post_bottom:
+ if re.search(r'%s'%term, x):
+ return True
+ return False
diff --git a/src/var/lib/tyto/program/logs.py b/src/var/lib/tyto/program/logs.py
index 50185ab..0400829 100644
--- a/src/var/lib/tyto/program/logs.py
+++ b/src/var/lib/tyto/program/logs.py
@@ -44,6 +44,7 @@ def out(nbr, value, out):
'12' : ':< %sUnused "%s"%s in article\'s header'%(CR, value, CS),
'13' : ':< %sNo file or directory%s here (deleted ?)'%(CR, CS),
'14' : ':< %sMismatch%s program start'%(CR, CS),
+ '15' : ':< Anchor %snot uniq%s: %s'%(CR, CS, value),
'19' : ':D Article %swip%s on: %s'%(CG, CS, value),
'20' : ':D Article %scheck%s on: %s'%(CG, CS, value),
'21' : ':D Article %sValid%s. Ready to wip'%(CG, CS),
diff --git a/src/var/lib/tyto/program/tyto.py b/src/var/lib/tyto/program/tyto.py
index 15df944..d8aba7e 100644
--- a/src/var/lib/tyto/program/tyto.py
+++ b/src/var/lib/tyto/program/tyto.py
@@ -244,137 +244,149 @@ def get_css(line):
return set_css
+#=============================================#
+# First check process to protect contents #
+# Protect block-Codes, quotes #
+# Also remove empty/commented lines #
+# Used in check and wip #
+# check: create string without quotes, bcodes #
+# wip: remplace quotes, bcode with base64 #
+#---------------------------------------------#
+def protect_bcodes_quotes(process, post_bottom):
+ global protect_article
+ global nbr_titles, nbr_bcodes, nbr_quotes # Stats for DB
+
+ in_bcode = in_quote = False
+ protect_article = ''
+ bcode = quote = '' # Only for wip process
+
+ for line in post_bottom.rsplit('\n'):
+ start_bcode = close_bcode = False
+ start_quote = close_quote = False
+
+ # Settings and counters
+ #----------------------
+ # Bcode (at close, replace with base64)
+ if not in_quote:
+ if line.startswith(words_tags[12][0]): # Open
+ start_bcode = True
+ in_bcode = True
+ elif line.startswith(words_tags[12][1]): # Close
+ close_bcode = True
+ in_bcode = False
+ if process == "wip":
+ bcode = '%s\n%s'%(bcode, line)
+ b64_bcode = b64('Encode', bcode, 'B64.', '.B64')
+ line = b64_bcode
+
+ # Quote (at close, replace with base64)
+ if not in_bcode:
+ if line.startswith(words_tags[11][0]): # Open
+ start_quote = True
+ in_quote = True
+ elif line.startswith(words_tags[11][1]): # Close
+ close_quote = True
+ in_quote = False
+ if process == "wip":
+ quote = '%s\n%s'%(quote, line)
+ b64_quote = b64('Encode', quote, 'Q64.', '.Q64')
+ line = b64_quote
+
+ if not in_quote and not in_bcode:
+ if not line: continue
+ if line.startswith('#') and not line.startswith(titles_tags):
+ continue
+
+
+ # Counters and keep tags for check process
+ #-----------------------------------------
+ if process == "check":
+ if in_bcode and not start_bcode \
+ or in_quote and not start_quote :
+ continue
+
+
+ # Set new article content for wip process
+ #----------------------------------------
+ elif process == "wip":
+ # bcode convertion to base64
+ if in_bcode:
+ # Convert lines to b64
+ if not bcode: bcode = line
+ else: bcode = '%s\n%s'%(bcode, line)
+ line = ''
+ elif in_quote:
+ # Convert lines to b64
+ if not quote: quote = line
+ else: quote = '%s\n%s'%(quote, line)
+ line = ''
+
+
+ # Set new content
+ #----------------
+ # check: remove quote/bcode, keep tags
+ # wip: replace close tag with quote/bcode (keep in open tag)
+ if not line: continue
+ if not protect_article: protect_article = line
+ else: protect_article = '%s\n%s'%(protect_article, line)
+
+
+ # Clean in wip process for new quote/bcode
+ if process == "wip":
+ if close_bcode: bcode = b64_bcode = ''
+ if close_quote: quote = b64_quote = ''
+
+
#=======================#
# Protec iCodes #
# Used in check and wip #
#-----------------------~
-def protect_icodes(post_bottom, article_bottom):
+def protect_icodes(post_bottom):
global protect_article
global nbr_icodes
- nbr_icodes = 0 # Stats here for DB as content will change
- protect_article = article_bottom
- incode = False
+ nbr_icodes = 0 # Stats here for DB as content will change
+ protect_article = post_bottom
+ in_icode = False
src_code = rep_code = ''
# Get only lines that contains code
- for ln, line in enumerate(post_bottom):
- if words_tags[9][0] and words_tags[9][1] in line:
-
- # Iterate in line
- for i, c in enumerate(line):
- c_b = c_bb = c_a = ""
- if c == '_':
- c_b = line[i-1] # before
- c_bb = line[i-2] # before, before
- c_a = line[i+1] # after
-
- # incode if
- if c_b == '{' and not c_bb == '\\':
- incode = True
- nbr_icodes += 1
- code = words_tags[9][2]
- continue
-
- # No more in code if
- if c_a == '}' and not c_b == '\\':
- incode = False
- code = '%s%s%s'%(code, src_code, words_tags[9][3])
- b64_code = b64('Encode', code, 'I64.', '.I64')
- rep_code = "%s%s%s"%(
- words_tags[9][0], rep_code, words_tags[9][1]
- )
- temp_post = protect_article.replace(rep_code, b64_code)
- protect_article = temp_post
-
- src_code = rep_code = b64_code = ''
- continue
+ for ln, line in enumerate(post_bottom.rsplit('\n')):
+ if not words_tags[9][0] in line: continue
+
+ # Iterate (c)haracter in line
+ for i, c in enumerate(line):
+ c_b = c_bb = c_a = ""
+ if c == '_':
+ c_b = line[i-1] # before
+ c_bb = line[i-2] # before, before
+ c_a = line[i+1] # after
- # Construct original replacement code and source code
- if incode:
- rep_code = '%s%s'%(rep_code, c)
- if c == '\\': continue
- src_code = '%s%s'%(src_code, c)
-
-
-#=============================================#
-# Protect block-Codes, quotes #
-# Also remove commented lines #
-# Used in check and wip #
-# check: create string without quotes, bcode #
-# wip: remplace quotes, bcode with base64 #
-#---------------------------------------------#
-def protect_bcodes_quotes(process, post_bottom, article_bottom):
- global protect_article
- global nbr_titles, nbr_bcodes, nbr_quotes # Stats for DB
-
- in_bcode = in_quote = False
- end_bcode = end_quote = False
- protect_article = ''
- temp_article = article_bottom
- nbr_titles = nbr_bcodes = nbr_quotes = 0
- bcode = quote = ''
-
-
- for line in post_bottom:
- # Bcode
- if not in_quote:
- if line.startswith(words_tags[12][0]):
- in_bcode = True
- if process == 'check':
- if not protect_article: protect_article = line
- else: protect_article = '%s\n%s'%(protect_article, line)
- nbr_bcodes += 1
- elif line.startswith(words_tags[12][1]):
- if process == "wip":
- bcode = '%s\n%s'%(bcode, line)
- b64_bcode = b64('Encode', bcode, 'B64.', '.B64')
- line = b64_bcode
- end_bcode = True
- in_bcode = False
-
- # Quote
- if not in_bcode:
- if line.startswith(words_tags[11][0]):
- in_quote = True
- if process == 'check':
- if not protect_article: protect_article = line
- else: protect_article = '%s\n%s'%(protect_article, line)
- nbr_quotes += 1
- elif line.startswith(words_tags[11][1]):
- if process == "wip":
- quote = '%s\n%s'%(quote, line)
- b64_quote = b64('Encode', quote, 'Q64.', '.Q64')
- line = b64_quote
- end_quote = True
- in_quote = False
-
- # Count titles for check
- # Pass if line is a comment
- if not in_bcode and not in_quote:
- if line.startswith(titles_tags):
- if process == 'check':
- nbr_titles += 1
- elif line.startswith('#'):
- continue
-
- if in_bcode:
- if not bcode: bcode = line
- else: bcode = '%s\n%s'%(bcode, line)
-
- elif in_quote:
- if line.startswith('#'): continue
- if not quote: quote = line
- else: quote = '%s\n%s'%(quote, line)
-
- if end_bcode: bcode = ''; end_bcode = False ; in_bcode = False
- elif end_quote: quote = ''; end_quote = False ; in_quote = False
-
- if in_quote or in_bcode:
- continue
- else:
- if not protect_article: protect_article = line
- else: protect_article = '%s\n%s'%(protect_article, line)
+ # incode if
+ if c_b == '{' and not c_bb == '\\':
+ in_icode = True
+ nbr_icodes += 1
+ code = words_tags[9][2]
+ continue
+
+ # No more in code if
+ if c_a == '}' and not c_b == '\\':
+ in_icode = False
+ code = '%s%s%s'%(code, src_code, words_tags[9][3])
+ b64_code = b64('Encode', code, 'I64.', '.I64')
+ rep_code = "%s%s%s"%(
+ words_tags[9][0], rep_code, words_tags[9][1]
+ )
+ protect_article = protect_article.replace(rep_code, b64_code)
+
+ src_code = rep_code = b64_code = ''
+ continue
+
+ # Construct original replacement code and source code
+ if in_icode:
+ rep_code = '%s%s'%(rep_code, c)
+ if c == '\\': continue
+ src_code = '%s%s'%(src_code, c)
#=====================================#
diff --git a/src/var/lib/tyto/program/wip.py b/src/var/lib/tyto/program/wip.py
index b9e7052..70395d0 100644
--- a/src/var/lib/tyto/program/wip.py
+++ b/src/var/lib/tyto/program/wip.py
@@ -30,6 +30,8 @@ def manage_wip(target):
# Check if can process
domain.domain_needed()
+ wip_article(db.post_src)
+ return
# Option 'all' to wip again, based on DB
#---------------------------------------
@@ -106,18 +108,19 @@ def wip_article(target):
# Convert file to strings
file_to_string(target)
- global post_header, article_header
- global post_bottom, article_bottom
-
+ global post_header
+ global post_bottom
+
# Protect block-codes and quotes
- tyto.protect_bcodes_quotes('wip', post_bottom, article_bottom)
- post_bottom = tyto.protect_article.rsplit('\n')
- article_bottom = tyto.protect_article
+ if db.stat_bcodes or db.stat_quotes > 0:
+ tyto.protect_bcodes_quotes('wip', post_bottom)
+ post_bottom = tyto.protect_article
# Protect inline-codes
- tyto.protect_icodes(post_bottom, article_bottom)
- post_bottom = tyto.protect_article.rsplit('\n')
- article_bottom = tyto.protect_article
+ if db.stat_icodes > 0:
+ tyto.protect_icodes(post_bottom)
+ post_bottom = tyto.protect_article
+
# Convert contents from modules
wip_single_tags() # br /, anchors
@@ -139,7 +142,7 @@ def wip_article(target):
tyto.replace_in_db(db.post_db, 'wip', db.hash_post)
# Get article DB in html.py
- html.set_page(db.uri_file, article_bottom)
+ html.set_page(db.uri_file, post_bottom)
#print(html.main_page)
# Create wip file
@@ -156,48 +159,52 @@ def wip_article(target):
# post is string splitted '\n' #
# article is string not splitted #
#---------------------------------#
-def file_to_string(target):
+def file_to_string(post_file):
global article
- global article_header, article_bottom
global post_header, post_bottom
- article = open(target, 'r').read()
+ post_header = post_bottom = ''
+ sep = False
+ article = open(post_file, 'r').read()
- # Set from separator, NOT splitted by new line
- article_header = article.rsplit('-----')[0]
- article_bottom = article.rsplit('-----')[1]
-
- # Set from separator, splitted by new line
- post_header = article.rsplit('-----')[0].rsplit('\n')
- post_bottom = article.rsplit('-----')[1].rsplit('\n')
+ for line in article.rsplit('\n'):
+ if line.startswith('-----'):
+ sep = True
+ continue
+
+ if sep:
+ if not post_bottom: post_bottom = line
+ else: post_bottom = '%s\n%s'%(post_bottom, line)
+ else:
+ if not post_header: post_header = line
+ else: post_header = '%s\n%s'%(post_header, line)
#=============================#
# Convert tags (br /, anchor) #
#-----------------------------#
def wip_single_tags():
- global article_bottom
+ global post_bottom
#
from "|"
- article_bottom = article_bottom.replace(
- tyto.single_tags[0][0], tyto.single_tags[0][1]
- )
+ post_bottom = post_bottom.replace(tyto.single_tags[0][0],
+ tyto.single_tags[0][1]
+ )
- for line in article_bottom.rsplit('\n'):
+ for line in post_bottom.rsplit('\n'):
if line.startswith(tyto.single_tags[1][0]):
set_css = tyto.get_css(line)
- article_bottom = article_bottom.replace(
- line,
- tyto.single_tags[1][1]%set_css
- )
-
+ post_bottom = post_bottom.replace(line,
+ tyto.single_tags[1][1]%set_css
+ )
+
#==================================#
# Convert tags (strong, icodes...) #
# Convert Paragraphs #
#----------------------------------#
def wip_words_tags():
- global article_bottom
+ global post_bottom
# Strongs, italics...
# (Stop after 8 tags)
@@ -207,40 +214,40 @@ def wip_words_tags():
if m == 0:
m += 1
# Close anchor (generic)
- article_bottom = article_bottom.replace(tag[1], tag[3])
+ post_bottom = post_bottom.replace(tag[1], tag[3])
continue
elif m > 8: break
# Open tag
- article_bottom = article_bottom.replace(tag[0], tag[2])
+ post_bottom = post_bottom.replace(tag[0], tag[2])
# Close tag
- article_bottom = article_bottom.replace(tag[1], tag[3])
+ post_bottom = post_bottom.replace(tag[1], tag[3])
m += 1
- for ln, line in enumerate(article_bottom.rsplit('\n')):
+ for ln, line in enumerate(post_bottom.rsplit('\n')):
# Paragraphs
# Open tag
- if line.startswith(tyto.words_tags[10][0]):
- set_css = tyto.get_css(line)
- article_bottom = article_bottom.replace(
- article_bottom.rsplit('\n')[ln],
- tyto.words_tags[10][2]%set_css
- )
- # Close tag
- elif line.startswith(tyto.words_tags[10][1]):
- article_bottom = article_bottom.replace(
- line,
- tyto.words_tags[10][3]
- )
+ if db.stat_paragraphs > 0:
+ if line.startswith(tyto.words_tags[10][0]):
+ set_css = tyto.get_css(line)
+ post_bottom = post_bottom.replace(post_bottom.rsplit('\n')[ln],
+ tyto.words_tags[10][2]%set_css
+ )
+ # Close tag
+ elif line.startswith(tyto.words_tags[10][1]):
+ post_bottom = post_bottom.replace(line,
+ tyto.words_tags[10][3]
+ )
# Open anchors
+ if db.stat_anchors == 0: continue
anchor_links = re.findall(r'>_(.+?):', line)
for item in anchor_links:
- anchor_id = '%s%s:'%(tyto.words_tags[0][0], item)
- article_bottom = article_bottom.replace(
- anchor_id, tyto.words_tags[0][2]%item
- )
-
+ anchor_id = '%s%s:'%(tyto.words_tags[0][0], item)
+ post_bottom = post_bottom.replace(anchor_id,
+ tyto.words_tags[0][2]%item
+ )
+
#=======================#
# Convert links from DB #
@@ -248,28 +255,28 @@ def wip_words_tags():
# - file_%i #
#-----------------------#
def wip_links():
- global article_bottom
+ global post_bottom
# Doing files, first, becase of similar marker
if db.uniq_files > 0:
for i in range(1, db.uniq_files + 1):
file = 'db.file_%s'%i
- article_bottom = article_bottom.replace(
- eval(file)[0]+'+', eval(file)[1]%('_blank')
- )
- article_bottom = article_bottom.replace(
- eval(file)[0], eval(file)[1]%('_self')
- )
+ post_bottom = post_bottom.replace(eval(file)[0]+'+',
+ eval(file)[1]%('_blank')
+ )
+ post_bottom = post_bottom.replace(eval(file)[0],
+ eval(file)[1]%('_self')
+ )
if db.uniq_links > 0:
for i in range(1, db.uniq_links + 1):
link = 'link_%s'%i
- article_bottom = article_bottom.replace(
- eval(link)[0]+'+', eval(link)[1]%('_blank')
- )
- article_bottom = article_bottom.replace(
- eval(link)[0], eval(link)[1]%('_self')
- )
+ post_bottom = post_bottom.replace(eval(link)[0]+'+',
+ eval(link)[1]%('_blank')
+ )
+ post_bottom = post_bottom.replace(eval(link)[0],
+ eval(link)[1]%('_self')
+ )
#===============#
@@ -278,14 +285,13 @@ def wip_links():
def wip_abbrs():
if db.uniq_abbrs == 0: return
- global article_bottom
+ global post_bottom
for i in range(1, db.uniq_abbrs + 1):
abbr = 'abbr_%s'%i
- article_bottom = article_bottom.replace(
- eval(abbr)[0],
- eval(abbr)[1]
- )
+ post_bottom = post_bottom.replace(eval(abbr)[0],
+ eval(abbr)[1]
+ )
#---------------------------------------#
@@ -304,12 +310,12 @@ def get_wh_image(value):
def wip_images():
if db.uniq_images == 0: return
- global article_bottom
+ global post_bottom
image_link = '%s'
image_show = ''
# Check each line
- for ln, line in enumerate(article_bottom.rsplit('\n')):
+ for ln, line in enumerate(post_bottom.rsplit('\n')):
# match line
if line.startswith('_image:'):
values = line.rsplit(' ')
@@ -368,9 +374,9 @@ def wip_images():
# Set HTML to replace line number
image_html = image_tgt%image_src
- article_bottom = article_bottom.replace(
- article_bottom.rsplit('\n')[ln], image_html
- )
+ post_bottom = post_bottom.replace(post_bottom.rsplit('\n')[ln],
+ image_html
+ )
#--------------------------------------------#
@@ -388,10 +394,10 @@ def quote_params(qline):
def wip_quotes() :
if db.stat_quotes == 0: return
- global article_bottom
+ global post_bottom
global author, link, lang, book, date
- for ln, line in enumerate(article_bottom.rsplit('\n')):
+ for ln, line in enumerate(post_bottom.rsplit('\n')):
# Decode from base64
if line.startswith('Q64'):
line = line.replace('Q64.', '')
@@ -424,9 +430,9 @@ def wip_quotes() :
else: tab_c = tab_c + 2
# Replace opened paragrph with html line
- qline_html = '%s%s'%(
- tab_p * ' ', tyto.words_tags[10][2]%par_css
- )
+ qline_html = '%s%s'%(tab_p * ' ',
+ tyto.words_tags[10][2]%par_css
+ )
# Add line to quote_html
if quote_html:
@@ -518,9 +524,9 @@ def wip_quotes() :
''
# Replace line with final HTML Quote
- article_bottom = article_bottom.replace(
- 'Q64.%s.Q64'%line, quote_html
- )
+ post_bottom = post_bottom.replace('Q64.%s.Q64'%line,
+ quote_html
+ )
#==========================#
@@ -530,13 +536,13 @@ def wip_quotes() :
def wip_icodes():
if db.stat_icodes == 0: return
- global article_bottom
+ global post_bottom
- matches = re.findall(r'I64.(.*?).I64', article_bottom)
+ matches = re.findall(r'I64.(.*?).I64', post_bottom)
for match in matches:
rep_icode = 'I64.' + match + '.I64'
src_icode = tyto.b64("Decode", match, 'I64.', '.I64')
- article_bottom = article_bottom.replace(rep_icode, src_icode)
+ post_bottom = post_bottom.replace(rep_icode, src_icode)
#==================================================#
@@ -546,9 +552,9 @@ def wip_icodes():
def wip_bcodes():
if db.stat_bcodes == 0: return
- global article_bottom
+ global post_bottom
- matches = re.findall(r'B64.(.*?).B64', article_bottom)
+ matches = re.findall(r'B64.(.*?).B64', post_bottom)
for match in matches:
rep_bcode = 'B64.' + match + '.B64'
src_bcode = tyto.b64("Decode", match, 'B64.', '.B64')
@@ -566,9 +572,11 @@ def wip_bcodes():
''
# Block-code content per line
else:
- html_bcode = '%s\n %s'%(html_bcode, line)
+ html_bcode = '%s\n %s'%(html_bcode,
+ line
+ )
- article_bottom = article_bottom.replace(rep_bcode, html_bcode)
+ post_bottom = post_bottom.replace(rep_bcode, html_bcode)
#========================================#
@@ -578,11 +586,11 @@ def wip_bcodes():
def wip_titles():
if db.stat_titles == 0: return
- global article_bottom
- article_temp = article_bottom
+ global post_bottom
+ article_temp = post_bottom
article_tmp2 = '' # Construct article, without empty lines
- for line in article_bottom.rsplit('\n'):
+ for line in post_bottom.rsplit('\n'):
if line.startswith('#'):
hx = line[1]
title_cont = line[2: len(line)].lstrip()
@@ -635,7 +643,7 @@ def wip_titles():
article_temp = '%s\n'%article_temp
# Replace article with new contents
- article_bottom = article_temp
+ post_bottom = article_temp
#==============================================#
@@ -671,7 +679,7 @@ def wip_raws(target):
# Make HTML tabulations #
#-----------------------#
def wip_tabs():
- global article_bottom
+ global post_bottom
article_temp = ''
tab = tab_start = 6 # From tag
indiv = False
@@ -685,7 +693,7 @@ def wip_tabs():
'6' : '16'
}
- for line in article_bottom.rsplit('\n'):
+ for line in post_bottom.rsplit('\n'):
# Titles
if line.startswith('