Sha256: 85167dbe83a98e3071b929788c4a5cb719811448d365bcfcd190fb45de3777a6

Contents?: true

Size: 1.19 KB

Versions: 8

Compression:

Stored size: 1.19 KB

Contents

module Pupa
  # A real person, alive or dead.
  class Person
    include Model

    self.schema = 'popolo/person'

    include Concerns::Timestamps
    include Concerns::Sourceable
    include Concerns::Nameable
    include Concerns::Identifiable
    include Concerns::Contactable
    include Concerns::Linkable

    attr_accessor :name, :email, :gender, :birth_date, :death_date, :image, :summary, :biography, :national_identity,
      :family_name, :given_name, :additional_name, :honorific_prefix, :honorific_suffix, :patronymic_name, :sort_name
    dump          :name, :email, :gender, :birth_date, :death_date, :image, :summary, :biography, :national_identity,
      :family_name, :given_name, :additional_name, :honorific_prefix, :honorific_suffix, :patronymic_name, :sort_name

    # Returns the person's name.
    #
    # @return [String] the person's name
    def to_s
      name
    end

    # @todo This will obviously need to be scoped as in Python Pupa, to a
    #  jurisdiction, post, etc.
    def fingerprint
      if name
        {
          '$or' => [
            {'name' => name},
            {'other_names.name' => name},
          ],
        }
      else
        {}
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pupa-0.2.3 lib/pupa/models/person.rb
pupa-0.2.2 lib/pupa/models/person.rb
pupa-0.2.1 lib/pupa/models/person.rb
pupa-0.2.0 lib/pupa/models/person.rb
pupa-0.1.11 lib/pupa/models/person.rb
pupa-0.1.10 lib/pupa/models/person.rb
pupa-0.1.9 lib/pupa/models/person.rb
pupa-0.1.8 lib/pupa/models/person.rb