# File lib/arr-pm/file.rb, line 142 def relation(type) name = "#{type}name".to_sym flags = "#{type}flags".to_sym version = "#{type}version".to_sym # There is no data if we are missing all 3 tag types (name/flags/version) # FYI: 'tags.keys' is an array, Array#& does set intersection. return [] if (tags.keys & [name, flags, version]).size != 3 # Find tags <type>name, <type>flags, and <type>version, and return # an array of "name operator version" return tags[name].zip(tags[flags], tags[version]) \ .reduce([]) { |memo, (n,o,v)| memo << [n, operator(o), v] } end