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



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

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



39
40
41
# File 'lib/lutaml/uml_repository/query_dsl/conditions/block_condition.rb', line 39

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