Class: Lutaml::UmlRepository::QueryDSL::Conditions::BlockCondition

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

Overview

Block-based condition for custom filtering logic

Allows arbitrary filtering logic to be specified using a Ruby block. The block receives each object and should return true/false.

Examples:

Filter by attribute count

condition = BlockCondition.new { |c| c.attributes.size > 10 }
filtered = condition.apply(classes)

Complex filtering

condition = BlockCondition.new do |c|
  c.attributes.any? && c.associations.empty?
end
filtered = condition.apply(classes)

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ BlockCondition

Initialize with a filtering block

Parameters:

  • block (Proc)

    The block to use for filtering

Raises:

  • (ArgumentError)

    if no block provided



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

def initialize(&block)
  super()
  raise ArgumentError, "Block required" unless block

  @block = block
end

Instance Method Details

#apply(results) ⇒ Array

Apply block-based filtering to results

Parameters:

  • results (Array)

    The collection to filter

Returns:

  • (Array)

    Objects for which block returns true



37
38
39
# File 'lib/lutaml/uml_repository/query_dsl/conditions/block_condition.rb', line 37

def apply(results)
  results.select(&@block)
end