# -*- coding: utf-8 -*-
"""
Created on Sun Oct 6 18:42:38 2024
@author: Arnd Helmut Hafner
"""
import re
from re import compile, search
from tags import Tags
tags = Tags()
def searchpreparation(string,sufflate,prefix = '',suffix = ''):
'''
Inserts regex into strings in order to suppress
interference of irregular symbols during search
Parameters
----------
string : str
searched string
sufflate : str
Regex inserted between the constituent characters of the string
prefix : str, optional
Regex inserted before the string. The default is ''.
suffix : str, optional
Regex inserted behind the string. The default is ''.
Returns
-------
string: str
'''
#記号交じりの原文から文字列を検索するために、文字列を正規表現に置き換える
#string = 検索したい文字列
#prefex = 原文では検索したい文字列の前にあり得る記号のリストの正規表現
#sufflate = 検索したい文字列の間に出現しうる記号のリストの正規表現
#suffix = 検索したい文字列の後ろに出現しうる記号のリストの正規表現
string = re.findall('.',string)
tempstring = prefix + string[0]
for c in range(1,len(string)):
tempstring += sufflate + string[c]
string = tempstring + suffix
return(string)
def suppliedillegchar(char):
"""
文脈に基づいて補釈された文字のエンコーディングを行う
Parameters
----------
char : str
一文字
Returns
-------
char : str
'字'
"""
char = tags.tagdict['suppliedillegb'] + char + tags.tagdict['suppliede']
return(char)
def hyphenjokyo(string,tag1b,tag1e,tag2b ='',tag2e = ''):
"""
字1(字2-字3)における"字2-字3"の部分にタグを付ける
Parameters
----------
string : str
タグ付け対象文字列
tag1b : str
字2を記述するタグ(始め)
tag1e : str
字2を表現するタグ(終り)
tag2b : str, optional
字3を記述するタグ(始め). The default is ''.
tag2e : str, optional
字3を記述するタグ(終り). The default is ''.
Returns
-------
string = str
"""
okikae = compile('(.)\\-(.)')
string = okikae.sub('{}{}\\g<1>{}{}\\g<2>{}{}'.format(tags.tagdict['choiceb'],tag1b,tag1e,tag2b,tag2e,tags.tagdict['choicee']),string)
return(string)
def hatenashori(kakkomae,kakkonai):
"""
読み換え等において、 疑問符が注記に混じっている時に、
疑問のエンコーディングをした上で、 疑問符を削除する
Parameters
----------
kakkomae : str
釈読字
kakkonai : str
疑問符が混じっている読み換え等の注記
Returns
-------
kakkomae : str
kakkonai : str
"""
if re.search('^?', kakkonai):#釈読に対する疑問
kakkomae += tags.tagdict['certaintyreading']
kakkonai = re.sub('?','',kakkonai,1)
if re.search('?\\-',kakkonai):#読み換え等に対する疑問("-"あり,前半)
kakkonai = re.sub('?',tags.tagdict['certaintyreading'],kakkonai,1)
if re.search('?$',kakkonai):#読み換え等に対する疑問("-"の有無を問わず、末尾の字)
kakkonai = re.sub('?$',tags.tagdict['certaintyreading'],kakkonai,1)
return(kakkomae,kakkonai)
def kutoencoding(mojiretu):
regex = '([。,、?!:;])'
okikae = compile(regex)
return okikae.sub('{}\\g<1>{}'.format(tags.tagdict['suppliedregb'],tags.tagdict['suppliede']),mojiretu)