mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-19 03:05:49 +00:00
De-duplicate FAQs
This commit is contained in:
@@ -10,7 +10,7 @@ from bs4 import NavigableString
|
||||
Q_TAG = "h4"
|
||||
SECTION_TAG = "h2"
|
||||
|
||||
def append_chevron(el):
|
||||
def append_chevron(soup, el):
|
||||
"""
|
||||
Adds markup for a CSS-animated chevron to an element, in the form of:
|
||||
<span class="chevron">
|
||||
@@ -18,21 +18,59 @@ def append_chevron(el):
|
||||
<span></span>
|
||||
</span>
|
||||
"""
|
||||
chev = el.new_tag("span")
|
||||
chev = soup.new_tag("span")
|
||||
chev["class"] = "chevron"
|
||||
chev.extend([chev.new_tag("span")] for i in range(2))
|
||||
chev.extend([soup.new_tag("span") for i in range(2)])
|
||||
el.append(chev)
|
||||
|
||||
def wrap_question(soup, qi, q, elements):
|
||||
q_wrapper = soup.new_tag("div")
|
||||
q_wrapper["class"] = "q-wrapper"
|
||||
q.replace_with(q_wrapper)
|
||||
|
||||
answer_wrapper = soup.new_tag("div")
|
||||
answer_wrapper["id"] = "a{qi}".format(qi=qi)
|
||||
answer_wrapper["class"] = "answer-wrapper collapse"
|
||||
answer_wrapper["aria-labelledby"] = "a{qi}".format(qi=qi)
|
||||
#answer_wrapper["data-parent"] = "#faqs-accordion"
|
||||
|
||||
for i,el in enumerate(elements):
|
||||
# if i==0:
|
||||
# el.replace_with(answer_wrapper)
|
||||
answer_wrapper.append(el.extract())
|
||||
q_wrapper.append(answer_wrapper)
|
||||
|
||||
q_toggler = soup.new_tag("a")
|
||||
q_toggler["data-toggle"] = "collapse"
|
||||
q_toggler["href"] = "#{qid}".format(qid=q["id"])
|
||||
q_toggler["data-target"] = "#a{qi}".format(qi=qi)
|
||||
q_toggler["aria-controls"] = "a{qi}".format(qi=qi)
|
||||
q_toggler["aria-expanded"] = "false"
|
||||
q_toggler["class"] = "expander collapsed"
|
||||
|
||||
# Strip out permalinks since that would be a link inside a link (invalid)
|
||||
[a.decompose() for a in q.find_all("a")]
|
||||
|
||||
append_chevron(soup, q)
|
||||
q_toggler.insert(0, q)
|
||||
q_wrapper.insert(0, q_toggler)
|
||||
return q_wrapper
|
||||
|
||||
def wrap_section(soup, elements):
|
||||
section = soup.new_tag("section")
|
||||
section["class"] = "py-26"
|
||||
section.extend([el.extract() for el in elements])
|
||||
|
||||
def filter_soup(soup, **kwargs):
|
||||
qs = soup.find_all(Q_TAG)
|
||||
|
||||
for qi, q in enumerage(qs):
|
||||
stuff_to_wrap = []
|
||||
for qi, q in enumerate(qs):
|
||||
current_answer = []
|
||||
el = q
|
||||
while el.next_sibling:
|
||||
el = el.next_sibling
|
||||
if isinstance(el, NavigableString):
|
||||
stuff_to_wrap.append(el)
|
||||
current_answer.append(el)
|
||||
elif el.name == Q_TAG:
|
||||
# We probably found the next question, stop here
|
||||
break
|
||||
@@ -40,17 +78,6 @@ def filter_soup(soup, **kwargs):
|
||||
# End of the section, definitely stop here
|
||||
break
|
||||
else:
|
||||
stuff_to_wrap.append(el)
|
||||
current_answer.append(el)
|
||||
|
||||
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)
|
||||
wrap_question(soup, qi, q, current_answer)
|
||||
|
||||
Reference in New Issue
Block a user