Class: AcademicBenchmarks::Api::Standards

Inherits:
Object
  • Object
show all
Defined in:
lib/academic_benchmarks/api/standards.rb

Constant Summary collapse

DEFAULT_PER_PAGE =
100
STANDARDS_FIELDS =
%w[
  guid
  education_levels.grades.code
  label
  level
  section.guid
  section.descr
  number.prefix_enhanced
  status
  disciplines.subjects.code
  document.guid
  document.descr
  document.adopt_year
  document.publication.descr
  document.publication.guid
  document.publication.authorities
  statement.descr
  utilizations.type
  parent
]

Instance Method Summary collapse

Constructor Details

#initialize(handle) ⇒ Standards

Returns a new instance of Standards.



32
33
34
# File 'lib/academic_benchmarks/api/standards.rb', line 32

def initialize(handle)
  @handle = handle
end

Instance Method Details

#authoritiesObject



43
44
45
46
47
# File 'lib/academic_benchmarks/api/standards.rb', line 43

def authorities
  raw_facet("document.publication.authorities").map do |a|
    AcademicBenchmarks::Standards::Authority.from_hash(a["data"])
  end
end

#authority_publications(authority_or_auth_code_guid_or_desc) ⇒ Object



55
56
57
58
# File 'lib/academic_benchmarks/api/standards.rb', line 55

def authority_publications(authority_or_auth_code_guid_or_desc)
  authority = auth_from_code_guid_or_desc(authority_or_auth_code_guid_or_desc)
  publications(authority_guid: authority.guid)
end

#authority_tree(authority_or_auth_code_guid_or_desc, include_obsolete_standards: true, exclude_examples: false) ⇒ Object



60
61
62
63
64
65
66
# File 'lib/academic_benchmarks/api/standards.rb', line 60

def authority_tree(authority_or_auth_code_guid_or_desc, include_obsolete_standards: true, exclude_examples: false)
  authority = auth_from_code_guid_or_desc(authority_or_auth_code_guid_or_desc)
  auth_children = raw_search(authority: authority.guid, include_obsoletes: include_obsolete_standards, exclude_examples: exclude_examples)
  AcademicBenchmarks::Standards::StandardsForest.new(
    auth_children
  ).consolidate_under_root(authority)
end

#publication_tree(publication_or_pub_code_guid_or_desc, include_obsolete_standards: true, exclude_examples: false) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/academic_benchmarks/api/standards.rb', line 68

def publication_tree(publication_or_pub_code_guid_or_desc, include_obsolete_standards: true, exclude_examples: false)
  publication = pub_from_guid(publication_or_pub_code_guid_or_desc)
  pub_children = raw_search(publication: publication.guid, include_obsoletes: include_obsolete_standards, exclude_examples: exclude_examples)
  AcademicBenchmarks::Standards::StandardsForest.new(
    pub_children
  ).consolidate_under_root(publication)
end

#publications(authority_guid: nil) ⇒ Object



49
50
51
52
53
# File 'lib/academic_benchmarks/api/standards.rb', line 49

def publications(authority_guid: nil)
  raw_facet("document.publication", authority: authority_guid).map do |a|
    AcademicBenchmarks::Standards::Publication.from_hash(a["data"])
  end
end

#search(authority_guid: nil, publication_guid: nil) ⇒ Object

TODO: in the future, support OData filtering for flexible querying



37
38
39
40
41
# File 'lib/academic_benchmarks/api/standards.rb', line 37

def search(authority_guid: nil, publication_guid: nil)
  raw_search(authority: authority_guid, publication: publication_guid).map do |standard|
    AcademicBenchmarks::Standards::Standard.new(standard)
  end
end