class PerseusMatch::List
Public Class Methods
new(phrases = [], pm_options = {}, list_options = {})
click to toggle source
# File lib/perseus_match/list.rb 71 def initialize(phrases = [], pm_options = {}, list_options = {}) 72 self.class.pair(phrases, pm_options, list_options) { |pm| add(pm) } 73 end
pair(phrases, pm_options = {}, list_options = {}) { |pm| ... }
click to toggle source
# File lib/perseus_match/list.rb 37 def pair(phrases, pm_options = {}, list_options = {}) 38 phrases.uniq! 39 40 pairs = [] unless block_given? 41 42 unless list_options[:minimal] 43 # => pairs.size = phrases.size ** 2 44 45 phrases.each { |phrase| 46 phrases.each { |target| 47 pm = PerseusMatch.new(phrase, target, pm_options) 48 block_given? ? yield(pm) : pairs << pm 49 } 50 } 51 else 52 # => pairs.size = (phrases.size ** 2 - phrases.size) / 2 53 54 size = phrases.size 55 56 1.upto(size) { |i| 57 phrase = phrases[i - 1] 58 59 i.upto(size - 1) { |j| 60 pm = PerseusMatch.new(phrase, phrases[j], pm_options) 61 block_given? ? yield(pm) : pairs << pm 62 } 63 } 64 end 65 66 pairs || phrases 67 end