Merge pull request #186 from openvenues/degree_symbol_ordinal_suffix
Degree symbol ordinal suffix
This commit is contained in:
@@ -1,3 +1,3 @@
|
|||||||
federico|fco|fcº
|
federico|fco|fcº|fc°
|
||||||
francisco|fco|fcº|franc
|
francisco|fco|fcº|franc|fc°
|
||||||
maria|mª|m.a|m.ª
|
maria|mª|m.a|m.ª
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
exterior|ext|ex
|
exterior|ext|ex
|
||||||
número exterior|no ext|# ext|nº ext|n.º ext|núm ext|númr ext|numr ext|númro ext|numro ext|núm.ro ext|nr ext|num.ro ext|nro ext|n.ro ext|no ex|# ex|nº ex|n.º ex|núm ex|númr ex|numr ex|númro ex|numro ex|núm.ro ex|nr ex|num.ro ex|nro ex|n.ro ex
|
número exterior|no ext|# ext|nº ext|n° ext|n.º ext|n.° ext|núm ext|númr ext|numr ext|númro ext|numro ext|núm.ro ext|nr ext|num.ro ext|nro ext|n.ro ext|no ex|# ex|nº ex|n.º ex|n.° ex|núm ex|númr ex|numr ex|númro ex|numro ex|núm.ro ex|nr ex|num.ro ex|nro ex|n.ro ex
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
bajo|bjo|bo|bº
|
bajo|bjo|bo|bº|b°
|
||||||
bajos|bjos|bjs
|
bajos|bjos|bjs
|
||||||
planta baja|pb|pl baja
|
planta baja|pb|pl baja
|
||||||
planta primera|pl primera
|
planta primera|pl primera
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
sin número|s / n|sin numero|s.n.|s.n|s n|sn|s / nº|s.nº|snº|s / no
|
sin número|s / n|sin numero|s.n.|s.n|s n|sn|s / nº|s / n°|s.nº|s.n°|snº|sn°|s / no
|
||||||
@@ -1 +1 @@
|
|||||||
número|#|num|núm|no|numero|№|nº|n.º|númr|numr|númro|numro|núm.ro|nr|num.ro|nro|n.ro|nr.º|nmro|nmr.o|nmrº|nmr.º
|
número|#|num|núm|no|numero|№|nº|n°|n.º|n.°|númr|numr|númro|numro|núm.ro|nr|num.ro|nro|n.ro|nrº|nr°|nr.º|nr.°|nmro|nmr.o|nmrº|nmr°|nmr.º|nmr.°
|
||||||
@@ -105,7 +105,7 @@ reyes
|
|||||||
san|s
|
san|s
|
||||||
santa|stª|st.ª|sta|st.a
|
santa|stª|st.ª|sta|st.a
|
||||||
sant|st
|
sant|st
|
||||||
santo|stº|sto|st.o|st.º
|
santo|stº|st°|sto|st.o|st.º|st.°
|
||||||
sargento|sarg|sgto|sargto
|
sargento|sarg|sgto|sargto
|
||||||
sargento ayudante|sarg ay|sgto ay|sargto ay
|
sargento ayudante|sarg ay|sgto ay|sargto ay
|
||||||
sargento mayor|sm|s.m.|s.m|s m|sarg my|sgto my|sargto my
|
sargento mayor|sm|s.m.|s.m|s m|sarg my|sgto my|sargto my
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ aldea
|
|||||||
ampliación|amplicacion|ampl|amp
|
ampliación|amplicacion|ampl|amp
|
||||||
auzoa
|
auzoa
|
||||||
barriada|barda
|
barriada|barda
|
||||||
barrio|bo|brio|brrio|bº|b.º|b /|br
|
barrio|bo|brio|brrio|bº|b°|b.º|b.°|b /|br
|
||||||
barrios|bos|brios|brrios
|
barrios|bos|brios|brrios
|
||||||
bloque|blque|bloq|blq|bl|bq|blo
|
bloque|blque|bloq|blq|bl|bq|blo
|
||||||
colonia|col
|
colonia|col
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ particular|parti
|
|||||||
partida|ptda
|
partida|ptda
|
||||||
pasadizo|pzo
|
pasadizo|pzo
|
||||||
pasaje|psaje|psj
|
pasaje|psaje|psj
|
||||||
paseo|pº|po|pso|pseo|pas|ps|p|p.o|p.º
|
paseo|pº|p°|po|pso|pseo|pas|ps|p|p.o|p.º|p.°
|
||||||
paseo maritimo|psmar|ps mar
|
paseo maritimo|psmar|ps mar
|
||||||
paso
|
paso
|
||||||
pasillo|psllo
|
pasillo|psllo
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ casa
|
|||||||
consultorio|cn
|
consultorio|cn
|
||||||
departamento|dpto|dept|dep|dto|depto
|
departamento|dpto|dept|dep|dto|depto
|
||||||
interior|int|in
|
interior|int|in
|
||||||
número interior|no int|# int|nº int|№ int|n.º int|núm int|númr int|numr int|númro int|numro int|núm.ro int|nr int|num.ro int|nro int|n.ro int|no in|# in|nº in|№ in|n.º in|núm in|númr in|numr in|númro in|numro in|núm.ro in|nr in|num.ro in|nro in|n.ro in
|
número interior|no int|# int|nº int|n° int|№ int|n.º int|n.° int|núm int|númr int|numr int|númro int|numro int|núm.ro int|nr int|num.ro int|nro int|n.ro int|no in|# in|nº in|n° in|№ in|n.º in|n.° in|núm in|númr in|numr in|númro in|numro in|núm.ro in|nr in|num.ro in|nro in|n.ro in
|
||||||
letra
|
letra
|
||||||
lote|lt
|
lote|lt
|
||||||
oficina|of|ofc
|
oficina|of|ofc
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
numéro|nº|#|№|n.º|no|num|numero|numr|num.ro|nr|nro|n.ro
|
numéro|nº|n°|#|№|n.º|n.°|no|num|numero|numr|num.ro|nr|nro|n.ro
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
livello
|
livello
|
||||||
piano|pº|p.º|p.o|p.nº|p.no|pnº|pno
|
piano|pº|p°|p.º|p.°|p.o|p.nº|p.n°|p.no|pnº|pn°|pno
|
||||||
@@ -1 +1 @@
|
|||||||
numero|nº|no|n.º|n.o|n|#|№
|
numero|nº|n°|no|n.º|n.°|n.o|n|#|№
|
||||||
@@ -1 +1 @@
|
|||||||
sem número|sem numero|sn|s.n.|s.n|s / n|s n|s / nº|s.nº|snº|s / no
|
sem número|sem numero|sn|s.n.|s.n|s / n|s n|s / nº|s / n°|s.nº|s.n°|snº|sn°|s / no
|
||||||
@@ -1 +1 @@
|
|||||||
número|#|num|núm|no|numero|№|nº|n.º|númr|numr|númro|numro|núm.ro|nr|num.ro|nro|n.ro|nr.º|nmro|nmr.o|nmrº|nmr.º
|
número|#|num|núm|no|numero|№|nº|n°|n.º|n.°|númr|numr|númro|numro|núm.ro|nr|num.ro|nro|n.ro|nr.º|nr.°|nrº|nr°|nmro|nmr.o|nmrº|nmr°|nmr.º|nmr.°
|
||||||
@@ -35,20 +35,20 @@ embaixador|emb
|
|||||||
eminencia|ema|em.a
|
eminencia|ema|em.a
|
||||||
eminentissimo|emmo|em.mo
|
eminentissimo|emmo|em.mo
|
||||||
enfermeira|enfª|enfa|enf.ª|enf.a
|
enfermeira|enfª|enfa|enf.ª|enf.a
|
||||||
enfermeiro|enfº|enfo|enf|enf.º|enf.o
|
enfermeiro|enfº|enf°|enfo|enf|enf.º|enf.°|enf.o
|
||||||
engenheira|engª|enga|eng.ª|eng.a
|
engenheira|engª|enga|eng.ª|eng.a
|
||||||
engenheiro|engº|eng.º|eng|engo|eng.o
|
engenheiro|engº|eng°|eng.º|eng.°|eng|engo|eng.o
|
||||||
excelencia|exª|exa|ex.ª|ex.a
|
excelencia|exª|exa|ex.ª|ex.a
|
||||||
excelentissima|exmª|exma|ex.mª|ex.ma
|
excelentissima|exmª|exma|ex.mª|ex.ma
|
||||||
excelentissimo|exmº|exmo|ex.mº|ex.mo
|
excelentissimo|exmº|exm°|exmo|ex.mº|ex.m°|ex.mo
|
||||||
frei|fr
|
frei|fr
|
||||||
general|gen|gal|g.al
|
general|gen|gal|g.al
|
||||||
governador|gov|govdor|govd.or|gov.dor
|
governador|gov|govdor|govd.or|gov.dor
|
||||||
ilustrissima|ilmª|ilma|il.mª|il.ma
|
ilustrissima|ilmª|ilma|il.mª|il.ma
|
||||||
ilustrissimo|ilmº|ilmo|il.mº|il.mo
|
ilustrissimo|ilmº|ilm°|ilmo|il.mº|il.m°|il.mo
|
||||||
infante|inf
|
infante|inf
|
||||||
irmã|irma|imª|ima|im
|
irmã|irma|imª|ima|im
|
||||||
irmão|irmao|imº|imo|im
|
irmão|irmao|imº|im°|imo|im
|
||||||
juiz|jz
|
juiz|jz
|
||||||
maestra|mta|mtra|mstra
|
maestra|mta|mtra|mstra
|
||||||
maestro|mto|mtro|mstro
|
maestro|mto|mtro|mstro
|
||||||
@@ -69,7 +69,7 @@ padre|pe|p.e
|
|||||||
pastor|pr
|
pastor|pr
|
||||||
prefeito|pref
|
prefeito|pref
|
||||||
presidente|presid|pres
|
presidente|presid|pres
|
||||||
professor|prof|profº
|
professor|prof|profº|prof°
|
||||||
professora|profa|prof.a|profª|prof.ª
|
professora|profa|prof.a|profª|prof.ª
|
||||||
professoras|profas
|
professoras|profas
|
||||||
professores|profs
|
professores|profs
|
||||||
@@ -78,7 +78,7 @@ reverendo|revdo|rev.do
|
|||||||
reverendissima|revma|rev.ma
|
reverendissima|revma|rev.ma
|
||||||
reverendissimo|revmo|rev.mo
|
reverendissimo|revmo|rev.mo
|
||||||
santa|stª|sta|st.ª|st.a
|
santa|stª|sta|st.ª|st.a
|
||||||
santo|stº|sto|st|st.º|st.o
|
santo|stº|st°|sto|st|st.º|st.°|st.o
|
||||||
são|sao|s
|
são|sao|s
|
||||||
sargento|sarg|sgto|sargto
|
sargento|sarg|sgto|sargto
|
||||||
sargento ajudante|sarg ajte|sarg aj.te
|
sargento ajudante|sarg ajte|sarg aj.te
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
bairro|b|bº|bo|brº|bro
|
bairro|b|bº|b°|bo|brº|br°|bro
|
||||||
distrito|dtto|dist
|
distrito|dtto|dist
|
||||||
divisao|div
|
divisao|div
|
||||||
quadra|q|qd
|
quadra|q|qd
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ autoestrada|auto estrada|auto estr|autoestr
|
|||||||
avenida|av|ava|ave
|
avenida|av|ava|ave
|
||||||
avenida marginal|ave marg|av marg|ava marg
|
avenida marginal|ave marg|av marg|ava marg
|
||||||
azinhaga|az
|
azinhaga|az
|
||||||
bairro|b|bº|bo|brº|bro
|
bairro|b|bº|b°|bo|brº|br°|bro
|
||||||
beco|bc|bco
|
beco|bc|bco
|
||||||
calçada|calcada|cc
|
calçada|calcada|cc
|
||||||
calçadinha|caclcadinha|ccnh
|
calçadinha|caclcadinha|ccnh
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
număr|numar|nr|nº|#|№|no
|
număr|numar|nr|nº|n°|#|№|no
|
||||||
@@ -722,6 +722,7 @@
|
|||||||
- ".º"
|
- ".º"
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"1":
|
"1":
|
||||||
- "ᵉʳ"
|
- "ᵉʳ"
|
||||||
- "er"
|
- "er"
|
||||||
@@ -730,10 +731,12 @@
|
|||||||
- ".º"
|
- ".º"
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"2":
|
"2":
|
||||||
- ".º"
|
- ".º"
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"3":
|
"3":
|
||||||
- "ᵉʳ"
|
- "ᵉʳ"
|
||||||
- "er"
|
- "er"
|
||||||
@@ -742,30 +745,37 @@
|
|||||||
- ".º"
|
- ".º"
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"4":
|
"4":
|
||||||
- ".º"
|
- ".º"
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"5":
|
"5":
|
||||||
- ".º"
|
- ".º"
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"6":
|
"6":
|
||||||
- ".º"
|
- ".º"
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"7":
|
"7":
|
||||||
- ".º"
|
- ".º"
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"8":
|
"8":
|
||||||
- ".º"
|
- ".º"
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"9":
|
"9":
|
||||||
- ".º"
|
- ".º"
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
-
|
-
|
||||||
gender: "f"
|
gender: "f"
|
||||||
suffixes:
|
suffixes:
|
||||||
|
|||||||
@@ -749,33 +749,43 @@
|
|||||||
"0":
|
"0":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"1":
|
"1":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"2":
|
"2":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"3":
|
"3":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"4":
|
"4":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"5":
|
"5":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"6":
|
"6":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"7":
|
"7":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"8":
|
"8":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"9":
|
"9":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
-
|
-
|
||||||
gender: "f"
|
gender: "f"
|
||||||
suffixes:
|
suffixes:
|
||||||
|
|||||||
@@ -884,33 +884,43 @@
|
|||||||
"0":
|
"0":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"1":
|
"1":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"2":
|
"2":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"3":
|
"3":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"4":
|
"4":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"5":
|
"5":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"6":
|
"6":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"7":
|
"7":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"8":
|
"8":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
"9":
|
"9":
|
||||||
- "º"
|
- "º"
|
||||||
- "o"
|
- "o"
|
||||||
|
- "°"
|
||||||
-
|
-
|
||||||
gender: "f"
|
gender: "f"
|
||||||
suffixes:
|
suffixes:
|
||||||
|
|||||||
@@ -764,10 +764,20 @@ static inline bool expand_affixes(string_tree_t *tree, char *str, char *lang, to
|
|||||||
return add_affix_expansions(tree, str, lang, token, prefix, suffix, options);
|
return add_affix_expansions(tree, str, lang, token, prefix, suffix, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool normalize_ordinal_suffixes(string_tree_t *tree, char *str, char *lang, token_t token, libpostal_normalize_options_t options) {
|
static inline bool normalize_ordinal_suffixes(string_tree_t *tree, char *str, char *lang, token_t token, size_t i, token_t prev_token, libpostal_normalize_options_t options) {
|
||||||
|
size_t token_digit_len = possible_ordinal_digit_len(str + token.offset, token.len);
|
||||||
size_t len_ordinal_suffix = ordinal_suffix_len(str + token.offset, token.len, lang);
|
size_t len_ordinal_suffix = ordinal_suffix_len(str + token.offset, token.len, lang);
|
||||||
|
|
||||||
if (len_ordinal_suffix == 0) return false;
|
bool ret = false;
|
||||||
|
|
||||||
|
if (len_ordinal_suffix == 0 || token_digit_len + len_ordinal_suffix < token.len) {
|
||||||
|
return false;
|
||||||
|
} else if (len_ordinal_suffix == token.len && i > 0 && prev_token.len > 0) {
|
||||||
|
size_t prev_token_digit_len = possible_ordinal_digit_len(str + prev_token.offset, prev_token.len);
|
||||||
|
ret = prev_token_digit_len == prev_token.len;
|
||||||
|
} else {
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
|
||||||
cstring_array *strings = tree->strings;
|
cstring_array *strings = tree->strings;
|
||||||
// Add the original form first. When this function returns true,
|
// Add the original form first. When this function returns true,
|
||||||
@@ -779,12 +789,14 @@ static inline bool normalize_ordinal_suffixes(string_tree_t *tree, char *str, ch
|
|||||||
char *expansion = char_array_get_string(key);
|
char *expansion = char_array_get_string(key);
|
||||||
cstring_array_add_string(strings, expansion);
|
cstring_array_add_string(strings, expansion);
|
||||||
char_array_destroy(key);
|
char_array_destroy(key);
|
||||||
return true;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void add_normalized_strings_tokenized(string_tree_t *tree, char *str, token_array *tokens, libpostal_normalize_options_t options) {
|
static inline void add_normalized_strings_tokenized(string_tree_t *tree, char *str, token_array *tokens, libpostal_normalize_options_t options) {
|
||||||
cstring_array *strings = tree->strings;
|
cstring_array *strings = tree->strings;
|
||||||
|
|
||||||
|
token_t prev_token = (token_t){0, 0, 0};
|
||||||
|
|
||||||
for (size_t i = 0; i < tokens->n; i++) {
|
for (size_t i = 0; i < tokens->n; i++) {
|
||||||
token_t token = tokens->a[i];
|
token_t token = tokens->a[i];
|
||||||
bool have_phrase = false;
|
bool have_phrase = false;
|
||||||
@@ -803,7 +815,7 @@ static inline void add_normalized_strings_tokenized(string_tree_t *tree, char *s
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (normalize_ordinal_suffixes(tree, str, lang, token, options)) {
|
if (normalize_ordinal_suffixes(tree, str, lang, token, i, prev_token, options)) {
|
||||||
have_ordinal = true;
|
have_ordinal = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -814,6 +826,7 @@ static inline void add_normalized_strings_tokenized(string_tree_t *tree, char *s
|
|||||||
}
|
}
|
||||||
|
|
||||||
string_tree_finalize_token(tree);
|
string_tree_finalize_token(tree);
|
||||||
|
prev_token = token;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
11
src/numex.c
11
src/numex.c
@@ -1009,7 +1009,7 @@ static char *get_ordinal_suffix(char *numeric_string, size_t len, char *lang, ge
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t possible_ordinal_digit_len(char *str, size_t len) {
|
size_t possible_ordinal_digit_len(char *str, size_t len) {
|
||||||
uint8_t *ptr = (uint8_t *)str;
|
uint8_t *ptr = (uint8_t *)str;
|
||||||
size_t idx = 0;
|
size_t idx = 0;
|
||||||
|
|
||||||
@@ -1053,11 +1053,6 @@ size_t ordinal_suffix_len(char *str, size_t len, char *lang) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t ordinal_digit_len = possible_ordinal_digit_len(str, len);
|
|
||||||
if (ordinal_digit_len == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (numex_table == NULL) {
|
if (numex_table == NULL) {
|
||||||
log_error(NUMEX_SETUP_ERROR);
|
log_error(NUMEX_SETUP_ERROR);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1081,8 +1076,8 @@ size_t ordinal_suffix_len(char *str, size_t len, char *lang) {
|
|||||||
|
|
||||||
phrase_t phrase = trie_search_suffixes_from_index(trie, str, len, prefix.node_id);
|
phrase_t phrase = trie_search_suffixes_from_index(trie, str, len, prefix.node_id);
|
||||||
|
|
||||||
if (phrase.len == len - ordinal_digit_len) {
|
if (phrase.len + phrase.start == len) {
|
||||||
return len - ordinal_digit_len;
|
return phrase.len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,6 +149,7 @@ VECTOR_INIT(numex_result_array, numex_result_t)
|
|||||||
char *replace_numeric_expressions(char *str, char *lang);
|
char *replace_numeric_expressions(char *str, char *lang);
|
||||||
numex_result_array *convert_numeric_expressions(char *str, char *lang);
|
numex_result_array *convert_numeric_expressions(char *str, char *lang);
|
||||||
size_t ordinal_suffix_len(char *s, size_t len, char *lang);
|
size_t ordinal_suffix_len(char *s, size_t len, char *lang);
|
||||||
|
size_t possible_ordinal_digit_len(char *str, size_t len);
|
||||||
|
|
||||||
bool numex_table_write(FILE *file);
|
bool numex_table_write(FILE *file);
|
||||||
bool numex_table_save(char *filename);
|
bool numex_table_save(char *filename);
|
||||||
|
|||||||
Reference in New Issue
Block a user