]> Kevux Git Server - fll/commit
Update: Fixes and changes resulting from f_fss unit tests.
authorKevin Day <thekevinday@gmail.com>
Thu, 2 Jun 2022 04:07:33 +0000 (23:07 -0500)
committerKevin Day <thekevinday@gmail.com>
Thu, 2 Jun 2022 04:36:52 +0000 (23:36 -0500)
commit608c743a3dac28f657a4d84d2cb9f20e22d7c236
treee3ded36720d83ed92865e9ce16701f98b6dca9f6
parentd645e4677a7b27a009b71c66f6a628af7201268c
Update: Fixes and changes resulting from f_fss unit tests.

After reviewing the code I found that the logic is outdated.
The logic was written at the time when I was still far less familiar with Unicode.
The zero-width is being processed in the same way as combining characters.
This needs to change.

After reviewing the combining character logic, I realized that there are bigger problems.
The combining characters, for whatever reason, are processed from right to left.
This breaks normal streaming logic and requires post checks on all variables.
I am amazed that they let such a horrible idea get into the standard and I do not know why.
Regardless, the logic on many of these functions needs to change.
The logic is changed to more properly handle the combining characters and additional more explicit code comment documentation is added.
There will likely need to be follow up changes in the processing code but I am going to leave that for another time.

Change the code to be more consistent with how F_data_not is returned.
Rename functions to more consistently follow the naming strategy used (such as changing "_between" to "_range").
Add f_fss_is_combining() function.
Remove unused and unnecessary f_fss_shift_delimit() function.
Remove unused and unnecessary f_fss_skip_past_non_graph() function.
Update the FSS specifications to better clarify the combining character situation.

The combining character logic implies that I need to return status codes to designate that the return is happening at the start of some processing.
Create several "_start" status codes to address this need.

Fix a bug from a previous commit that is the result of a misplaced regex replace ("alphabeticbetic" should instead be "alphabetic").
Fix a bug where some files where missed when refactoring is_alpha() into is_alphabetic().
44 files changed:
level_0/f_fss/c/fss.c
level_0/f_fss/c/fss.h
level_0/f_fss/c/fss/delimit.h
level_0/f_fss/c/fss/named.c
level_0/f_fss/c/fss/nest.c
level_0/f_fss/c/fss/set.c
level_0/f_iki/c/iki/data.c
level_0/f_limit/c/limit/set.c
level_0/f_limit/c/limit/value.c
level_0/f_status/c/status.h
level_0/f_thread/c/thread.c
level_0/f_type_array/c/type_array/array_length.c
level_0/f_type_array/c/type_array/cell.c
level_0/f_type_array/c/type_array/fll_id.c
level_0/f_type_array/c/type_array/int128.c
level_0/f_type_array/c/type_array/int16.c
level_0/f_type_array/c/type_array/int32.c
level_0/f_type_array/c/type_array/int64.c
level_0/f_type_array/c/type_array/int8.c
level_0/f_type_array/c/type_array/state.c
level_0/f_type_array/c/type_array/status.c
level_0/f_type_array/c/type_array/uint128.c
level_0/f_type_array/c/type_array/uint16.c
level_0/f_type_array/c/type_array/uint32.c
level_0/f_type_array/c/type_array/uint64.c
level_0/f_type_array/c/type_array/uint8.c
level_0/f_utf/c/private-utf.c
level_0/f_utf/c/private-utf.h
level_0/f_utf/c/private-utf_alphabetic.c
level_0/f_utf/c/private-utf_alphabetic.h
level_0/f_utf/c/utf/is.c
level_0/f_utf/c/utf/is.h
level_0/f_utf/c/utf/is_character.c
level_0/f_utf/c/utf/is_character.h
level_3/controller/c/controller/private-controller.c
level_3/controller/c/controller/private-controller.h
specifications/fss-0000.txt
specifications/fss-0001.txt
specifications/fss-0002.txt
specifications/fss-0003.txt
specifications/fss-0009.txt
specifications/fss-000a.txt
specifications/fss-000b.txt
specifications/fss.txt