163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
# File 'lib/udb/idl/condition_to_udb.rb', line 163
def to_udb_h(symtab)
case name
when "implemented?"
type_error "Bad argument to implemented?" unless args.fetch(0).text_value =~ /^ExtensionName::[A-Z][a-z0-9]*$/
{
"extension" => {
"name" => args.fetch(0).text_value.gsub("ExtensionName::", "")
}
}
when "implemented_version?"
type_error "Bad first argument to implemented_version?" unless args.fetch(0).text_value =~ /^ExtensionName::[A-Z][a-z0-9]*$/
type_error "Bad second argument to implemented_version?" unless args.fetch(1).text_value =~ /((?:>=)|(?:>)|(?:~>)|(?:<)|(?:<=)|(?:!=)|(?:=))\s*([0-9]+)(?:\.([0-9]+)(?:\.([0-9]+)(?:-(pre))?)?)?/
{
"extension" => {
"name" => args.fetch(0).text_value.gsub("ExtensionName::", ""),
"version" => args.fetch(1).text_value.gsub('"', "")
}
}
when "xlen"
{
"xlen" => args.fetch(0).value(symtab)
}
else
type_error "unsupported function in an IDL condition: #{name}"
end
end
|