mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-20 03:35:51 +00:00
FAQ filter: Start on making text expandable
This commit is contained in:
@@ -8,24 +8,49 @@
|
||||
from bs4 import NavigableString
|
||||
|
||||
Q_TAG = "h4"
|
||||
SECTION_TAG = "h2"
|
||||
|
||||
def append_chevron(el):
|
||||
"""
|
||||
Adds markup for a CSS-animated chevron to an element, in the form of:
|
||||
<span class="chevron">
|
||||
<span></span>
|
||||
<span></span>
|
||||
</span>
|
||||
"""
|
||||
chev = el.new_tag("span")
|
||||
chev["class"] = "chevron"
|
||||
chev.extend([chev.new_tag("span")] for i in range(2))
|
||||
el.append(chev)
|
||||
|
||||
def filter_soup(soup, **kwargs):
|
||||
qs = soup.find_all(Q_TAG)
|
||||
|
||||
for q in qs:
|
||||
for qi, q in enumerage(qs):
|
||||
stuff_to_wrap = []
|
||||
el = q
|
||||
while el.next_sibling:
|
||||
el = el.next_sibling
|
||||
if isinstance(el, NavigableString):
|
||||
stuff_to_wrap.append(el)
|
||||
elif el.name != Q_TAG:
|
||||
stuff_to_wrap.append(el)
|
||||
else:
|
||||
elif el.name == Q_TAG:
|
||||
# We probably found the next question, stop here
|
||||
break
|
||||
elif el.name == SECTION_TAG:
|
||||
# End of the section, definitely stop here
|
||||
break
|
||||
else:
|
||||
stuff_to_wrap.append(el)
|
||||
|
||||
wrapper = soup.new_tag("div", class_="q-wrapper")
|
||||
[wrapper.append(el) for el in stuff_to_wrap]
|
||||
q.replace_with(wrapper)
|
||||
answer_wrapper = soup.new_tag("div")
|
||||
answer_wrapper["id"] = "a{qi}".format(qi=qi)
|
||||
answer_wrapper["class"] = "a-wrapper"
|
||||
|
||||
[answer_wrapper.append(el) for el in stuff_to_wrap]
|
||||
|
||||
q_wrapper = soup.new_tag("div")
|
||||
q_wrapper.append(answer_wrapper)
|
||||
q_wrapper["class"]="q-wrapper"
|
||||
q.replace_with(q_wrapper)
|
||||
append_chevron(q)
|
||||
wrapper.insert(0, q)
|
||||
|
||||
Reference in New Issue
Block a user