# File lib/rubytorrent/typedstruct.rb, line 104 def parse(dict) @required.each do |f, reqd| flabel = @label[f] raise TypedStructError, "missing required parameter #{flabel} (dict has #{dict.keys.join(', ')})" if reqd && !(dict.member? flabel) if dict.member? flabel v = dict[flabel] if @coerce.member? f v = @coerce[f][v] end if @array[f] raise TypeError, "for #{flabel}, expecting Array, got #{v.class} instead" unless v.kind_of? ::Array end self.send("#{f}=", v) end end ## disabled the following line as applications seem to put tons of ## weird fields in their .torrent files. # dict.each { |k, v| raise TypedStructError, %{unknown field "#{k}"} unless @field.member?(k.to_sym) || @label.values.member?(k) } end