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