Module: Abstractor::Methods::Models::AbstractorAbstractionSource

Included in:
AbstractorAbstractionSource
Defined in:
lib/abstractor/methods/models/abstractor_abstraction_source.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/abstractor/methods/models/abstractor_abstraction_source.rb', line 5

def self.included(base)
  base.send :include, SoftDelete

  # Associations
  base.send :belongs_to, :abstractor_subject
  base.send :belongs_to, :abstractor_rule_type
  base.send :belongs_to, :abstractor_abstraction_source_type
  base.send :belongs_to, :abstractor_abstraction_source_section_type
  base.send :has_many, :abstractor_suggestion_sources
  base.send :has_many, :abstractor_abstractions, :through => :abstractor_suggestion_sources
  base.send :has_many, :abstractor_indirect_sources
  base.send :has_many, :abstractor_abstraction_source_section_name_variants

  def base.abstractor_text(source)
    text = source[:source_type].find(source[:source_id]).send(source[:source_method])
    if !source[:section_name].blank?
      abstractor_section = Abstractor::AbstractorSection.where(source_type: source[:source_type], source_method: source[:source_method], name: source[:section_name]).first
      if text =~ prepare_section_regular_expression(abstractor_section)
        text = $2
      else
        if abstractor_section.return_note_on_empty_section
          text = text
        else
          text = ''
        end
      end
    end

    text
  end

  def base.prepare_section_regular_expression(abstractor_section)
    regular_expression = nil
    if abstractor_section.abstractor_section_type.name == Abstractor::Enum::ABSTRACTOR_SECTION_TYPE_CUSTOM
      regular_expression = abstractor_section.custom_regular_expression
    else
      regular_expression = abstractor_section.abstractor_section_type.regular_expression
    end
    regular_expression = regular_expression.gsub('section_name_variants', abstractor_section.prepare_section_name_variants)
    regular_expression = regular_expression.gsub('delimiter', abstractor_section.delimiter)
    Regexp.new(regular_expression, Regexp::IGNORECASE)
  end
end

Instance Method Details

#normalize_from_method_to_sources(about) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/abstractor/methods/models/abstractor_abstraction_source.rb', line 49

def normalize_from_method_to_sources(about)
  sources = []
  fm = nil
  fm = about.send(from_method) unless from_method.blank?
  if fm.is_a?(String) || fm.nil?
    sources = [{ source_type: about.class , source_id: about.id , source_method: from_method, section_name: section_name }]
  else
    sources = fm
  end
  sources
end