Class: Lutaml::UmlRepository::QueryDSL::Conditions::HashCondition

Inherits:
BaseCondition
  • Object
show all
Defined in:
lib/lutaml/uml_repository/query_dsl/conditions/hash_condition.rb

Overview

Hash-based condition for filtering query results

Filters results based on attribute-value pairs specified in a hash. All conditions must match for an object to be included in results.

Examples:

Filter by stereotype

condition = HashCondition.new(stereotype: 'featureType')
filtered = condition.apply(classes)

Multiple conditions

condition = HashCondition.new(
  stereotype: 'featureType',
  is_abstract: false
)
filtered = condition.apply(classes)

Instance Method Summary collapse

Constructor Details

#initialize(conditions) ⇒ HashCondition

Initialize with hash conditions

Parameters:

  • conditions (Hash)

    Attribute-value pairs to match



28
29
30
31
# File 'lib/lutaml/uml_repository/query_dsl/conditions/hash_condition.rb', line 28

def initialize(conditions)
  super()
  @conditions = conditions
end

Instance Method Details

#apply(results) ⇒ Array

Apply hash-based filtering to results

Parameters:

  • results (Array)

    The collection to filter

Returns:

  • (Array)

    Objects matching all conditions



37
38
39
40
41
42
43
# File 'lib/lutaml/uml_repository/query_dsl/conditions/hash_condition.rb', line 37

def apply(results)
  results.select do |obj|
    @conditions.all? do |key, value|
      matches_condition?(obj, key, value)
    end
  end
end