module Abstractor::Methods::Models::AbstractorAbstractionSource

Public Class Methods

included(base) click to toggle source
# 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

Public Instance Methods

normalize_from_method_to_sources(about) click to toggle source
# 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