Sha256: 5b344772302fc368ab285e2fc8802c1ca831dc454d5eb813a6b539271e3b8e08

Contents?: true

Size: 1.5 KB

Versions: 11

Compression:

Stored size: 1.5 KB

Contents

module PersonName
  class ActiveRecordPersonName

    def initialize(naming_prefix, record)
      @naming_prefix = naming_prefix
      @record = record
    end

    def full_name
      NameSplitter::NAME_PARTS.collect { |p| self.send(p) }.compact.join " "
    end

    def full_name= new_name
      return if full_name == new_name # no changes
      old_values = {}
      NameSplitter::NAME_PARTS.collect { |p| old_values[p.to_sym] = self.send(p) }
      new_name = NameSplitter.split(new_name, old_values)

      # assignments
      NameSplitter::NAME_PARTS.each do |part|
        self.send "#{part}=", (new_name[part.to_sym] || "").blank? ? nil : new_name[part.to_sym]
      end
    end

    def full_last_name
      [:intercalation, :last_name, :suffix].collect { |p| self.send(p) }.compact.join " "
    end

    def short_name include_middle_names = true
      parts = []
      parts << "#{self.first_name[0,1].upcase}." if self.first_name
      if include_middle_names and self.middle_name
        names = self.middle_name.split(" ")
        names.each do |name|
          parts << "#{name[0,1].upcase}."
        end
      end
      [parts.join, full_last_name] * " "
    end

    NameSplitter::NAME_PARTS.each do |part|
      define_method part do
        @record.send("#{@naming_prefix}_#{part}")
      end

      define_method "#{part}=" do |value|
        @record.send("#{@naming_prefix}_#{part}=", value)
      end
    end

    def to_s
      full_name
    end

    private

    attr_reader :naming_prefix, :record
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
person-name-0.2.13 lib/person_name/name.rb
person-name-0.2.12 lib/person_name/name.rb
person-name-0.2.11 lib/person_name/name.rb
person-name-0.2.10 lib/person_name/name.rb
person-name-0.2.9 lib/person_name/name.rb
person-name-0.2.8 lib/person_name/name.rb
person-name-0.2.7 lib/person_name/name.rb
person-name-0.2.6 lib/person_name/name.rb
person-name-0.2.5 lib/person_name/name.rb
person-name-0.2.4 lib/person_name/name.rb
person-name-0.2.3 lib/person_name/name.rb