aboutsummaryrefslogtreecommitdiffstats
path: root/epy.py
diff options
context:
space:
mode:
authorbenadha <benawiadha@gmail.com>2021-01-30 07:30:42 +0700
committerbenadha <benawiadha@gmail.com>2021-01-30 07:30:42 +0700
commit5ccbf846984a97d7c30149c7f44d00d265284dbb (patch)
treed9325510df05b76927795126e387be1b5a114e4f /epy.py
parent9dc269dbc05d19eace32ceec27d7740ed4201c6f (diff)
downloadepy-5ccbf846984a97d7c30149c7f44d00d265284dbb.tar.gz
Inline format: bold
Diffstat (limited to 'epy.py')
-rwxr-xr-xepy.py46
1 files changed, 44 insertions, 2 deletions
diff --git a/epy.py b/epy.py
index f3a754e..e759e4f 100755
--- a/epy.py
+++ b/epy.py
@@ -399,6 +399,7 @@ class HTMLtoLines(HTMLParser):
bull = {"li"}
hide = {"script", "style", "head"}
ital = {"i", "em"}
+ bold = {"b"}
# hide = {"script", "style", "head", ", "sub}
def __init__(self, sects={""}):
@@ -417,6 +418,7 @@ class HTMLtoLines(HTMLParser):
self.sects = sects
self.sectsindex = {}
self.initital = []
+ self.initbold = []
def handle_starttag(self, tag, attrs):
if re.match("h[1-6]", tag) is not None:
@@ -441,6 +443,8 @@ class HTMLtoLines(HTMLParser):
self.imgs.append(unquote(i[1]))
elif tag in self.ital:
self.initital.append([len(self.text)-1, len(self.text[-1])])
+ elif tag in self.bold:
+ self.initbold.append([len(self.text)-1, len(self.text[-1])])
if self.sects != {""}:
for i in attrs:
if i[0] == "id" and i[1] in self.sects:
@@ -493,6 +497,8 @@ class HTMLtoLines(HTMLParser):
self.text.append("")
elif tag in self.ital:
self.initital[-1] += [len(self.text)-1, len(self.text[-1])]
+ elif tag in self.bold:
+ self.initbold[-1] += [len(self.text)-1, len(self.text[-1])]
def handle_data(self, raw):
if raw and not self.ishidden:
@@ -517,7 +523,8 @@ class HTMLtoLines(HTMLParser):
def get_lines(self, width=0):
text, sect = [], {}
formatting = {
- "italic": []
+ "italic": [],
+ "bold": []
}
tmpital = []
for i in self.initital:
@@ -531,6 +538,18 @@ class HTMLtoLines(HTMLParser):
for j in range(i[0]+1, i[2]):
tmpital.append([j, 0, len(self.text[j])])
tmpital.append([i[2], 0, i[3]])
+ tmpbold = []
+ for i in self.initbold:
+ if i[0] == i[2]:
+ tmpbold.append([i[0], i[1], i[3]-i[1]])
+ elif i[0] == i[2]-1:
+ tmpbold.append([i[0], i[1], len(self.text[i[0]])-i[1]])
+ tmpbold.append([i[2], 0, i[3]])
+ elif i[2]-i[0] > 1:
+ tmpbold.append([i[0], i[1], len(self.text[i[0]])-i[1]])
+ for j in range(i[0]+1, i[2]):
+ tmpbold.append([j, 0, len(self.text[j])])
+ tmpbold.append([i[2], 0, i[3]])
if width == 0:
return self.text
@@ -563,7 +582,7 @@ class HTMLtoLines(HTMLParser):
else:
text += textwrap.wrap(i, width) + [""]
- # TODO
+ # TODO: inline formats for indents
endline = len(text) # -1
tmp_filtered = [j for j in tmpital if j[0] == n]
for j in tmp_filtered:
@@ -586,6 +605,27 @@ class HTMLtoLines(HTMLParser):
for l in range(tmp_start[0]+1, tmp_end[0]):
formatting["italic"].append([l, 0, len(text[l])])
formatting["italic"].append([tmp_end[0], 0, tmp_end[1]])
+ tmp_filtered = [j for j in tmpbold if j[0] == n]
+ for j in tmp_filtered:
+ tmp_count = 0
+ # for k in text[startline:endline]:
+ for k in range(startline, endline):
+ if tmp_count <= j[1]:
+ tmp_start = [k, j[1]-tmp_count]
+ if tmp_count <= j[1]+j[2]:
+ tmp_end = [k, j[1]+j[2]-tmp_count]
+ tmp_count += len(text[k]) + 1
+ if tmp_start[0] == tmp_end[0]:
+ formatting["bold"].append(tmp_start + [tmp_end[1]-tmp_start[1]])
+ elif tmp_start[0] == tmp_end[0]-1:
+ formatting["bold"].append(tmp_start + [len(text[tmp_start[0]])-tmp_start[1]+1])
+ formatting["bold"].append([tmp_end[0], 0, tmp_end[1]])
+ # elif tmp_start[0]-tmp_end[1] > 1:
+ else:
+ formatting["bold"].append(tmp_start + [len(text[tmp_start[0]])-tmp_start[1]+1])
+ for l in range(tmp_start[0]+1, tmp_end[0]):
+ formatting["bold"].append([l, 0, len(text[l])])
+ formatting["bold"].append([tmp_end[0], 0, tmp_end[1]])
return text, self.imgs, sect, formatting
@@ -611,6 +651,8 @@ class Board:
def format(self):
for i in self.formatting["italic"]:
self.pad.chgat(i[0], i[1], i[2], curses.A_ITALIC)
+ for i in self.formatting["bold"]:
+ self.pad.chgat(i[0], i[1], i[2], curses.A_BOLD)
def getch(self):
return self.pad.getch()