Koster commited on
Commit
64c9080
·
verified ·
1 Parent(s): d61bee4

Upload folder using huggingface_hub

Browse files
ScriptureReference.py CHANGED
@@ -304,6 +304,10 @@ class ScriptureReference:
304
  self.reference = reference
305
  self._structured_ref = self.parse_scripture_reference(reference)
306
 
 
 
 
 
307
  @classmethod
308
  def parse_scripture_reference(cls, input_ref):
309
  normalized_input = re.sub(r"\s+", "", input_ref).upper()
@@ -322,13 +326,32 @@ class ScriptureReference:
322
  bookCode = code
323
  break
324
 
325
- startChap = int(startChapter) if startChapter else 0
326
- endChap = int(endChapterOrVerse) if endChapterOrVerse and endVerse else startChap
327
- startVer = int(startVerse) if startVerse else 0
328
- endVer = int(endVerse) if endVerse else int(endChapterOrVerse) if endChapterOrVerse and not endVerse else startVer
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
 
330
- if startVer != 0 and endVer == 0:
331
- endVer = startVer
 
 
 
 
 
332
 
333
  return {
334
  'bookCode': bookCode,
 
304
  self.reference = reference
305
  self._structured_ref = self.parse_scripture_reference(reference)
306
 
307
+ @property
308
+ def is_valid(self):
309
+ return bool(self._structured_ref['bookCode'] and self._structured_ref['startChapter'] and self._structured_ref['startVerse'])
310
+
311
  @classmethod
312
  def parse_scripture_reference(cls, input_ref):
313
  normalized_input = re.sub(r"\s+", "", input_ref).upper()
 
326
  bookCode = code
327
  break
328
 
329
+ # startChap = int(startChapter) if startChapter else 0
330
+ # endChap = int(endChapterOrVerse) if endChapterOrVerse and endVerse else startChap
331
+ # startVer = int(startVerse) if startVerse else 0
332
+ # endVer = int(endVerse) if endVerse else int(endChapterOrVerse) if endChapterOrVerse and not endVerse else startVer
333
+
334
+ # if startVer != 0 and endVer == 0:
335
+ # endVer = startVer
336
+
337
+ if bookCode:
338
+ num_chapters = len(cls.book_codes[bookCode]['verses'])
339
+ startChap = min(int(startChapter), num_chapters) if startChapter else 0
340
+ endChap = min(int(endChapterOrVerse), num_chapters) if endChapterOrVerse and endVerse else startChap
341
+
342
+ if startChap > 0:
343
+ num_verses_in_start_chap = cls.book_codes[bookCode]['verses'][startChap - 1]
344
+ startVer = min(int(startVerse), num_verses_in_start_chap) if startVerse else 0
345
+ else:
346
+ startVer = 0
347
 
348
+ if endChap > 0:
349
+ num_verses_in_end_chap = cls.book_codes[bookCode]['verses'][endChap - 1]
350
+ endVer = min(int(endVerse), num_verses_in_end_chap) if endVerse else startVer
351
+ else:
352
+ endVer = startVer
353
+ else:
354
+ startChap = endChap = startVer = endVer = 0
355
 
356
  return {
357
  'bookCode': bookCode,
__pycache__/ScriptureReference.cpython-312.pyc CHANGED
Binary files a/__pycache__/ScriptureReference.cpython-312.pyc and b/__pycache__/ScriptureReference.cpython-312.pyc differ
 
main_gradio_js.py CHANGED
@@ -1,6 +1,7 @@
1
  import gradio as gr
2
  # from TranslationNoteFinder import TranslationNoteFinder
3
  from TranslationNoteFinderLLMOnly import TranslationNoteFinder
 
4
 
5
  # Updated dictionary mapping language codes to URLs of Bible text files
6
  bible_urls = {
@@ -20,6 +21,13 @@ def load_resources(api_key, lang_code):
20
  tnf = TranslationNoteFinder(bible_text_url, api_key, lang_code=lang_code)
21
  return "Language resources loaded successfully.", "", "", ""
22
 
 
 
 
 
 
 
 
23
 
24
  with gr.Blocks(css="highlightNote.css") as app:
25
 
@@ -67,17 +75,30 @@ with gr.Blocks(css="highlightNote.css") as app:
67
  # Since HTML component is used, all outputs must be strings
68
  return verse_ref_formatted, target_text, line_number, ngrams_formatted
69
 
70
-
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  api_key_input = gr.Textbox(label="API Key", type='password')
72
  with gr.Row():
73
  lang_dropdown = gr.Dropdown(choices=list(bible_urls.keys()), label="Language Code")
74
  load_btn = gr.Button("Load Language")
75
- verse_input = gr.Textbox(label="Verse Reference")
76
- translate_btn = gr.Button("Translate")
77
-
78
  verse_ref_output = gr.Textbox(label="Verse Reference")
 
79
  target_text_output = gr.HTML(label="Target Verse Text", elem_classes=["verse-text"])
80
- line_number_output = gr.Textbox(label="Line Number")
81
  notes_output = gr.HTML(label="N-grams") # needs elem_classes?
82
 
83
  load_btn.click(
@@ -92,6 +113,13 @@ with gr.Blocks(css="highlightNote.css") as app:
92
  notes_output
93
  ]
94
  )
 
 
 
 
 
 
 
95
  translate_btn.click(
96
  fn=find_notes,
97
  inputs=verse_input,
 
1
  import gradio as gr
2
  # from TranslationNoteFinder import TranslationNoteFinder
3
  from TranslationNoteFinderLLMOnly import TranslationNoteFinder
4
+ from ScriptureReference import ScriptureReference as SR
5
 
6
  # Updated dictionary mapping language codes to URLs of Bible text files
7
  bible_urls = {
 
21
  tnf = TranslationNoteFinder(bible_text_url, api_key, lang_code=lang_code)
22
  return "Language resources loaded successfully.", "", "", ""
23
 
24
+ def validate_verse_ref(verse_ref):
25
+ verse_ref = SR(verse_ref)
26
+ is_valid = verse_ref.is_valid
27
+ print(f"Verse reference is valid: {is_valid}")
28
+ # return gr.Button.update(interactive=is_valid)
29
+ return gr.Button("Translate", interactive=is_valid)
30
+
31
 
32
  with gr.Blocks(css="highlightNote.css") as app:
33
 
 
75
  # Since HTML component is used, all outputs must be strings
76
  return verse_ref_formatted, target_text, line_number, ngrams_formatted
77
 
78
+ gr.Markdown(
79
+ """
80
+ # Translation Note Finder
81
+ ## Purpose
82
+ To align the Greek terms in Unfolding Word's translation notes with the corresponding terms in any target language verse.
83
+ ## Value
84
+ This tool demonstrates the capability to localize translation resources faster or even on the fly.
85
+ ## How to Use
86
+ 1. Enter the API key for the OpenAI API.
87
+ 2. Select the language code for the Bible text. Load the language.
88
+ 3. Enter a verse reference and click "Translate".
89
+ 4. Hover over the translation notes to see the equivalent terms highlighted in the target language.
90
+ """
91
+ )
92
  api_key_input = gr.Textbox(label="API Key", type='password')
93
  with gr.Row():
94
  lang_dropdown = gr.Dropdown(choices=list(bible_urls.keys()), label="Language Code")
95
  load_btn = gr.Button("Load Language")
96
+ verse_input = gr.Textbox(label="Verse Reference", placeholder="e.g. jhn3:16")
97
+ translate_btn = gr.Button("Translate", interactive=False)
 
98
  verse_ref_output = gr.Textbox(label="Verse Reference")
99
+ line_number_output = gr.Textbox(label="Line Number", visible=False)
100
  target_text_output = gr.HTML(label="Target Verse Text", elem_classes=["verse-text"])
101
+
102
  notes_output = gr.HTML(label="N-grams") # needs elem_classes?
103
 
104
  load_btn.click(
 
113
  notes_output
114
  ]
115
  )
116
+
117
+ verse_input.change(
118
+ fn=validate_verse_ref,
119
+ inputs=verse_input,
120
+ outputs=translate_btn
121
+ )
122
+
123
  translate_btn.click(
124
  fn=find_notes,
125
  inputs=verse_input,