bestroi commited on
Commit
c23a4ee
·
verified ·
1 Parent(s): 0fa0faa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -6
app.py CHANGED
@@ -451,7 +451,10 @@ with tabs[1]:
451
  # Diplomatic Edition Tab
452
  # -------------------------------
453
 
454
- # Function to remove diacritics from text
 
 
 
455
  # Function to remove diacritics from text
456
  def remove_diacritics(text):
457
  """
@@ -476,11 +479,16 @@ def render_diplomatic(text_elem):
476
  def process_element(elem):
477
  if elem.tag == 'lb':
478
  finalize_current_line()
 
 
 
479
  elif elem.tag == 'expan':
480
  abbr_elem = elem.find('abbr')
481
  if abbr_elem is not None and abbr_elem.text:
482
  current_line.append(abbr_elem.text)
483
  # Do not process <ex> or any other children within <expan>
 
 
484
  else:
485
  if elem.text:
486
  current_line.append(elem.text)
@@ -513,7 +521,8 @@ def render_diplomatic(text_elem):
513
  # Join all lines with newline characters
514
  return '\n'.join(lines)
515
 
516
- # Assuming 'tabs' and 'df' are already defined in your Streamlit app
 
517
  with tabs[2]:
518
  st.subheader("Diplomatic Edition")
519
 
@@ -523,10 +532,14 @@ with tabs[2]:
523
  selected_inscription = df[df['Number'] == selected_inscription_num].iloc[0]
524
 
525
  # Parse the selected inscription's XML to get the Text element
526
- tree = ET.ElementTree(ET.fromstring(inscriptions_content))
527
- root = tree.getroot()
528
- inscription_elem = root.find(f".//inscription[@n='{selected_inscription_num}']")
529
- text_element = inscription_elem.find("Text") if inscription_elem is not None else None
 
 
 
 
530
 
531
  if text_element is not None:
532
  diplomatic_text = render_diplomatic(text_element)
@@ -534,6 +547,7 @@ with tabs[2]:
534
  else:
535
  st.warning("No text found for the selected inscription.")
536
 
 
537
  # -------------------------------
538
  # Editor Edition Tab
539
  # -------------------------------
 
451
  # Diplomatic Edition Tab
452
  # -------------------------------
453
 
454
+ import streamlit as st
455
+ import xml.etree.ElementTree as ET
456
+ import unicodedata
457
+
458
  # Function to remove diacritics from text
459
  def remove_diacritics(text):
460
  """
 
479
  def process_element(elem):
480
  if elem.tag == 'lb':
481
  finalize_current_line()
482
+ if elem.tail:
483
+ # After <lb>, the tail text is the start of the new line
484
+ current_line.append(elem.tail)
485
  elif elem.tag == 'expan':
486
  abbr_elem = elem.find('abbr')
487
  if abbr_elem is not None and abbr_elem.text:
488
  current_line.append(abbr_elem.text)
489
  # Do not process <ex> or any other children within <expan>
490
+ if elem.tail:
491
+ current_line.append(elem.tail)
492
  else:
493
  if elem.text:
494
  current_line.append(elem.text)
 
521
  # Join all lines with newline characters
522
  return '\n'.join(lines)
523
 
524
+ # Streamlit Application
525
+ # Ensure that 'tabs' and 'df' are properly defined in your Streamlit app context
526
  with tabs[2]:
527
  st.subheader("Diplomatic Edition")
528
 
 
532
  selected_inscription = df[df['Number'] == selected_inscription_num].iloc[0]
533
 
534
  # Parse the selected inscription's XML to get the Text element
535
+ try:
536
+ tree = ET.ElementTree(ET.fromstring(inscriptions_content))
537
+ root = tree.getroot()
538
+ inscription_elem = root.find(f".//inscription[@n='{selected_inscription_num}']")
539
+ text_element = inscription_elem.find("Text") if inscription_elem is not None else None
540
+ except ET.ParseError:
541
+ st.error("Failed to parse the XML content. Please check the XML structure.")
542
+ text_element = None
543
 
544
  if text_element is not None:
545
  diplomatic_text = render_diplomatic(text_element)
 
547
  else:
548
  st.warning("No text found for the selected inscription.")
549
 
550
+
551
  # -------------------------------
552
  # Editor Edition Tab
553
  # -------------------------------