Sha256: 18fc8a82adb26fc8fe897c8864f4a94e7d8daa66448414599db2e7d0a5656e12

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

require 'dry/validation'
require 'dry/validation/schema'

module Locabulary
  class Schema < Dry::Validation::Schema
    key(:predicate_name) { |predicate_name| predicate_name.format?(/\A[a-z_]+\Z/) & predicate_name.filled? }
    key(:values) do |values|
      values.array? do
        values.each do |value|
          value.hash? do
            value.key(:term_label) { |term_label| term_label.filled? }
            value.optional(:term_uri) { |term_label| term_label.none? | term_label.str?  }
            value.optional(:deposit_label) { |deposit_label| deposit_label.none? | deposit_label.str?  }
            value.optional(:description) { |description| description.none? | description.str?  }
            value.optional(:grouping) { |grouping| grouping.none? | grouping.str?  }
            value.optional(:affiliation) { |affiliation| affiliation.none? | affiliation.str?  }
            value.optional(:default_presentation_sequence) do |default_presentation_sequence|
              default_presentation_sequence.none? | default_presentation_sequence.int?
            end
            value.key(:activated_on) { |activated_on| activated_on.format?(/\A\d{4}-\d{2}-\d{2}\Z/) }
            value.optional(:deactivated_on) { |deactivated_on| deactivated_on.none? | deactivated_on.format?(/\A\d{4}-\d{2}-\d{2}\Z/) }
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
locabulary-0.2.0 lib/locabulary/schema.rb