Module: GovukDocumentTypes

Defined in:
lib/govuk_document_types.rb,
lib/govuk_document_types/version.rb,
lib/govuk_document_types/translations_railtie.rb

Defined Under Namespace

Classes: TranslationsRailtie

Constant Summary collapse

SUPERTYPES =
YAML.load_file("#{File.dirname(__FILE__)}/../data/supertypes.yml")
SUPERGROUPS =
YAML.load_file("#{File.dirname(__FILE__)}/../data/supergroups.yml")
VERSION =
"3.0.0".freeze

Class Method Summary collapse

Class Method Details

.subgroup_document_types(*subgroup_ids) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/govuk_document_types.rb', line 43

def self.subgroup_document_types(*subgroup_ids)
  SUPERTYPES
    .dig("content_purpose_subgroup", "items")
    .select { |subgroup| subgroup_ids.include?(subgroup["id"]) }
    .map { |subgroup| subgroup["document_types"] }
    .flatten
    .uniq
    .sort
end

.supergroup_document_types(*supergroup_ids) ⇒ Object



39
40
41
# File 'lib/govuk_document_types.rb', line 39

def self.supergroup_document_types(*supergroup_ids)
  subgroup_document_types(*supergroup_subgroups(*supergroup_ids))
end

.supergroup_subgroups(*supergroup_ids) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/govuk_document_types.rb', line 29

def self.supergroup_subgroups(*supergroup_ids)
  SUPERGROUPS
    .dig("content_purpose_supergroup", "items")
    .select { |supergroup| supergroup_ids.include?(supergroup["id"]) }
    .map { |supergroup| supergroup["subgroups"] }
    .flatten
    .uniq
    .sort
end

.supergroups(ids:) ⇒ Object



24
25
26
27
# File 'lib/govuk_document_types.rb', line 24

def self.supergroups(ids:)
  groups = SUPERGROUPS["content_purpose_supergroup"]["items"]
  groups.select { |g| ids.include?(g["id"]) }
end

.supertypes(document_type:) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/govuk_document_types.rb', line 9

def self.supertypes(document_type:)
  types = {}

  SUPERTYPES.each do |name, definition|
    group_data = definition["items"].find do |supertype|
      supertype["document_types"].include?(document_type)
    end

    type = (group_data && group_data["id"]) || definition["default"]
    types.merge!(name => type)
  end

  types
end