@@ -66,9 +66,10 @@ struct TermInfo
6666 numbers:: Dict{Symbol, Int}
6767 strings:: Dict{Symbol, String}
6868 extensions:: Union{Nothing, Set{Symbol}}
69+ aliases:: Dict{Symbol, Symbol}
6970end
7071
71- TermInfo () = TermInfo ([], Dict (), Dict (), Dict (), nothing )
72+ TermInfo () = TermInfo ([], Dict (), Dict (), Dict (), nothing , Dict () )
7273
7374function read (data:: IO , :: Type{TermInfoRaw} )
7475 # Parse according to `term(5)`
@@ -175,19 +176,20 @@ function TermInfo(raw::TermInfoRaw)
175176 flags = Dict {Symbol, Bool} ()
176177 numbers = Dict {Symbol, Int} ()
177178 strings = Dict {Symbol, String} ()
179+ aliases = Dict {Symbol, Symbol} ()
178180 extensions = nothing
179181 for (flag, value) in zip (TERM_FLAGS, raw. flags)
180- flags[flag. capname] = value
181182 flags[flag. name] = value
183+ aliases[flag. capname] = flag. name
182184 end
183185 for (num, value) in zip (TERM_NUMBERS, raw. numbers)
184- numbers[num. capname] = Int (value)
185186 numbers[num. name] = Int (value)
187+ aliases[num. capname] = num. name
186188 end
187189 for (str, value) in zip (TERM_STRINGS, raw. strings)
188190 if ! isnothing (value)
189- strings[str. capname] = value
190191 strings[str. name] = value
192+ aliases[str. capname] = str. name
191193 end
192194 end
193195 if ! isnothing (raw. extended)
@@ -201,26 +203,30 @@ function TermInfo(raw::TermInfoRaw)
201203 elseif value isa String
202204 strings[key] = value
203205 end
206+ if ! isnothing (long)
207+ aliases[short] = long
208+ end
204209 end
205210 end
206- TermInfo (raw. names, flags, numbers, strings, extensions)
211+ TermInfo (raw. names, flags, numbers, strings, extensions, aliases )
207212end
208213
209- get (ti:: TermInfo , key:: Symbol , default:: Bool ) = get (ti. flags, key, default)
210- get (ti:: TermInfo , key:: Symbol , default:: Int ) = get (ti. numbers, key, default)
211- get (ti:: TermInfo , key:: Symbol , default:: String ) = get (ti. strings, key, default)
214+ get (ti:: TermInfo , key:: Symbol , default:: Bool ) = get (ti. flags, get (ti . aliases, key, key) , default)
215+ get (ti:: TermInfo , key:: Symbol , default:: Int ) = get (ti. numbers, get (ti . aliases, key, key) , default)
216+ get (ti:: TermInfo , key:: Symbol , default:: String ) = get (ti. strings, get (ti . aliases, key, key) , default)
212217
213218haskey (ti:: TermInfo , key:: Symbol ) =
214- haskey (ti. flags, key) || haskey (ti. numbers, key) || haskey (ti. strings, key)
219+ haskey (ti. flags, key) || haskey (ti. numbers, key) || haskey (ti. strings, key) || haskey (ti . aliases, key)
215220
216221function getindex (ti:: TermInfo , key:: Symbol )
217222 haskey (ti. flags, key) && return ti. flags[key]
218223 haskey (ti. numbers, key) && return ti. numbers[key]
219224 haskey (ti. strings, key) && return ti. strings[key]
225+ haskey (ti. aliases, key) && return getindex (ti, ti. aliases[key])
220226 throw (KeyError (key))
221227end
222228
223- keys (ti:: TermInfo ) = keys (ti. flags) ∪ keys (ti. numbers) ∪ keys (ti. strings)
229+ keys (ti:: TermInfo ) = keys (ti. flags) ∪ keys (ti. numbers) ∪ keys (ti. strings) ∪ keys (ti . aliases)
224230
225231function show (io:: IO , :: MIME"text/plain" , ti:: TermInfo )
226232 print (io, " TermInfo(" , ti. names, " ; " , length (ti. flags), " flags, " ,
0 commit comments