Class: Entitlements::Data::People::YAML
- Inherits:
-
Object
- Object
- Entitlements::Data::People::YAML
show all
- Includes:
- Contracts::Core
- Defined in:
- lib/entitlements.rb,
lib/entitlements/data/people/yaml.rb
Constant Summary
collapse
- C =
::Contracts
- PARAMETERS =
{
"filename" => { required: true, type: String }
}
Class Method Summary
collapse
Instance Method Summary
collapse
common, extended, included
Constructor Details
#initialize(filename:, people: nil) ⇒ YAML
Returns a new instance of YAML.
65
66
67
68
69
|
# File 'lib/entitlements/data/people/yaml.rb', line 65
def initialize(filename:, people: nil)
@filename = filename
@people = people
@people_downcase = nil
end
|
Class Method Details
.fingerprint(config) ⇒ Object
25
26
27
|
# File 'lib/entitlements/data/people/yaml.rb', line 25
def self.fingerprint(config)
PARAMETERS.keys.map { |key| config[key].inspect }.join("||")
end
|
.new_from_config(config) ⇒ Object
38
39
40
|
# File 'lib/entitlements/data/people/yaml.rb', line 38
def self.new_from_config(config)
new(filename: config.fetch("filename"))
end
|
.validate_config!(key, config) ⇒ Object
51
52
53
54
|
# File 'lib/entitlements/data/people/yaml.rb', line 51
def self.validate_config!(key, config)
text = "YAML people configuration for data source #{key.inspect}"
Entitlements::Util::Util.validate_attr!(PARAMETERS, config, text)
end
|
Instance Method Details
#read(uid = nil) ⇒ Object
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/entitlements/data/people/yaml.rb', line 77
def read(uid = nil)
@people ||= begin
Entitlements.logger.debug "Loading people from #{filename.inspect}"
raw_person_data = if RubyVersionCheck.ruby_version2?
::YAML.load(File.read(filename)).to_h
else
::YAML.load(File.read(filename), permitted_classes: [Date]).to_h
end
raw_person_data.map do |id, data|
[id, Entitlements::Models::Person.new(uid: id, attributes: data)]
end.to_h
end
return @people if uid.nil?
@people_downcase ||= @people.map { |person_uid, data| [person_uid.downcase, person_uid] }.to_h
unless @people_downcase.key?(uid.downcase)
raise Entitlements::Data::People::NoSuchPersonError, "read(#{uid.inspect}) matched no known person"
end
@people[@people_downcase[uid.downcase]]
end
|