module LinkedRails::Policy::AttributeConditions::ClassMethods

Private Instance Methods

has_properties_shapes(properties) click to toggle source
# File lib/linked_rails/policy/attribute_conditions.rb, line 25
def has_properties_shapes(properties) # rubocop:disable Naming/PredicateName
  properties.map do |key, boolean|
    SHACL::PropertyShape.new(
      path: policy_class.predicate_for_key(key),
      max_count: boolean ? nil : 0,
      min_count: boolean ? 1 : nil
    )
  end
end
has_values_shapes(values) click to toggle source
# File lib/linked_rails/policy/attribute_conditions.rb, line 35
def has_values_shapes(values) # rubocop:disable Naming/PredicateName
  values.map do |key, value|
    enum = RDF::Serializers.serializer_for(policy_class).enum_options(key).try(:[], value)
    santized_value = enum ? -> { enum.iri } : value

    SHACL::PropertyShape.new(
      path: policy_class.predicate_for_key(key),
      has_value: santized_value
    )
  end
end
new_record_shapes(boolean) click to toggle source
# File lib/linked_rails/policy/attribute_conditions.rb, line 47
def new_record_shapes(boolean)
  has_properties_shapes(created_at: !boolean)
end