글 수 429
랄까 어느새인가 개행처리가 아니라
텍스트 처리 필터가 되어있습니다만[......]
(CmdFilter는 텍스트와 텍스트 바깥을 구분하고, 이건 텍스트 내부를 처리하는 느낌?)
우선 입력 받을 내용은
MaxLine
MaxWord (MaxChar?)
개행 기호 문자열(또는 Hex)
그리고 함수 세트를 받고
다음과 같이 입력을 받습니다.
" " - 문자열
' ' - HexCode
* - 내부글자(글자 셈)
^ - 내부글자(글자 세지 않음)
또한 이함수를 받고, 이 녀석의 길이를 설정해 줍니다.
전에 논의했던 루비 태그는 이렇게 등록됩니다.
내용 : "{" ^ "/" * "}"
길이 : n+6
(n은 *의 길이입니다)
또 다른 예를 들면
내용 : "<b>" * "</b>"
길이 : n+7
단일 컨트롤 문자라면
내용 : "@x1"
길이 : 0
내용 : "⑤"
길이 : 2
부가 기능으로,
1. 반각 기호 처리 -> 2바이트로, 1바이트로
2. 띄어쓰기 처리 -> 띄어쓰기 함, 띄어쓰기 안함
3. 줄 채우기 -> 한, 안함
4. 개행 기호로 끝내기 -> 함, 안함
일단 옵션값으로 받은 내용은 여기까지 하고, 실제 처리 과정으로 들어가자면,
-전처리-
덧 - 함수의 시작부분을 발견하고 함수의 끝부분을 발견하면, 아까 입력받은 길이대로 길이를 추정합니다.
1. MaxWord를 기준으로 가득 찬 줄인지 가득 차지 않은 줄인지 확인합니다.
왜 이걸 구분하냐면,
가득 찼다면 그 문장이 아직 끝나지 않을 확률이 높기 때문이죠.
가득 차지 않았다면, 그 문장에 마침표 찍고 끝났을 확률이 높을거구요.
2. 가득 찼다면 그 줄의 개행기호를 날립니다.
-번역!-
-후처리-
1. MaxWord대로 글자를 잘라대기 시작합니다만, 개행 기호를 만난다면 당연히 엔터를 한것으로 간주하고 넘어갑니다.
이때 줄 채우기에 선택이 되어 있다면, 공백 기호로 남은 칸 수를 메꿉니다.
2. 이때, 함수 부분의 길이를 계산하고, 남은 줄 길이를 초과한다면, 그냥 엔터치고 그 다음줄에 넣습니다.
쪼갤까 생각해봤습니다만, 쪼개도 될놈이 있고 쪼개면 안될놈이 있을 것 같아 그냥[...]
또, 아예 함수 자체의 길이가 문장 길이보다 길어버린다면,
함수 내의 문자열을 문장 길이에 맞게 자른 후 넣어버립니다.
3. 줄수가 MaxLine이 될때까지 계속 자르고, 그 이후를 넘어가 버리면,
그 다음은 몽땅 날립니다.
-끝?-
대충 이렇게 되겠네요.
텍스트 처리 필터가 되어있습니다만[......]
(CmdFilter는 텍스트와 텍스트 바깥을 구분하고, 이건 텍스트 내부를 처리하는 느낌?)
우선 입력 받을 내용은
MaxLine
MaxWord (MaxChar?)
개행 기호 문자열(또는 Hex)
그리고 함수 세트를 받고
다음과 같이 입력을 받습니다.
" " - 문자열
' ' - HexCode
* - 내부글자(글자 셈)
^ - 내부글자(글자 세지 않음)
또한 이함수를 받고, 이 녀석의 길이를 설정해 줍니다.
전에 논의했던 루비 태그는 이렇게 등록됩니다.
내용 : "{" ^ "/" * "}"
길이 : n+6
(n은 *의 길이입니다)
또 다른 예를 들면
내용 : "<b>" * "</b>"
길이 : n+7
단일 컨트롤 문자라면
내용 : "@x1"
길이 : 0
내용 : "⑤"
길이 : 2
부가 기능으로,
1. 반각 기호 처리 -> 2바이트로, 1바이트로
2. 띄어쓰기 처리 -> 띄어쓰기 함, 띄어쓰기 안함
3. 줄 채우기 -> 한, 안함
4. 개행 기호로 끝내기 -> 함, 안함
일단 옵션값으로 받은 내용은 여기까지 하고, 실제 처리 과정으로 들어가자면,
-전처리-
덧 - 함수의 시작부분을 발견하고 함수의 끝부분을 발견하면, 아까 입력받은 길이대로 길이를 추정합니다.
1. MaxWord를 기준으로 가득 찬 줄인지 가득 차지 않은 줄인지 확인합니다.
왜 이걸 구분하냐면,
가득 찼다면 그 문장이 아직 끝나지 않을 확률이 높기 때문이죠.
가득 차지 않았다면, 그 문장에 마침표 찍고 끝났을 확률이 높을거구요.
2. 가득 찼다면 그 줄의 개행기호를 날립니다.
-번역!-
-후처리-
1. MaxWord대로 글자를 잘라대기 시작합니다만, 개행 기호를 만난다면 당연히 엔터를 한것으로 간주하고 넘어갑니다.
이때 줄 채우기에 선택이 되어 있다면, 공백 기호로 남은 칸 수를 메꿉니다.
2. 이때, 함수 부분의 길이를 계산하고, 남은 줄 길이를 초과한다면, 그냥 엔터치고 그 다음줄에 넣습니다.
쪼갤까 생각해봤습니다만, 쪼개도 될놈이 있고 쪼개면 안될놈이 있을 것 같아 그냥[...]
또, 아예 함수 자체의 길이가 문장 길이보다 길어버린다면,
함수 내의 문자열을 문장 길이에 맞게 자른 후 넣어버립니다.
3. 줄수가 MaxLine이 될때까지 계속 자르고, 그 이후를 넘어가 버리면,
그 다음은 몽땅 날립니다.
-끝?-
대충 이렇게 되겠네요.