Module: Langue::Japanese::MorphemeFilter

Defined in:
lib/langue/japanese/words/morpheme_filter.rb

Class Method Summary collapse

Class Method Details

.included(object) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/langue/japanese/words/morpheme_filter.rb', line 4

def self.included(object)
  return if object.respond_to?(:filter)

  object.class_eval do
    def body_morphemes
      @body_morphemes ||= self.class.filters.inject(self) { |morphemes, filter| filter[self, morphemes] }
    end

    class << self
      def filters
        @filters ||= []
      end

      def filter(&filter)
        remove_instance_variable(:@body_morphemes) if instance_variable_defined?(:@body_morphemes)
        filters << filter
      end
    end
  end
end