Sha256: 114c233598dc3fc3099731aaef94bb3ca2f327317b9231e143e1f12278ed4d47
Contents?: true
Size: 1.67 KB
Versions: 3
Compression:
Stored size: 1.67 KB
Contents
require 'aquarium/aspects/pointcut' require 'aquarium/utils/array_utils' # == Pointcut (composition) # Since Pointcuts are queries, they can be composed, _i.e.,_ unions and intersections of # them can be computed, yielding new Pointcuts. class Aquarium::Aspects::Pointcut def or pointcut2 result = Aquarium::Aspects::Pointcut.new result.specification = specification.or(pointcut2.specification) do |value1, value2| value1.union_using_eql_comparison value2 end result.join_points_matched = join_points_matched.union_using_eql_comparison pointcut2.join_points_matched result.join_points_not_matched = join_points_not_matched.union_using_eql_comparison pointcut2.join_points_not_matched result.candidate_types = candidate_types.union pointcut2.candidate_types result.candidate_objects = candidate_objects.union pointcut2.candidate_objects result end alias :union :or def and pointcut2 result = Aquarium::Aspects::Pointcut.new result.specification = specification.and(pointcut2.specification) do |value1, value2| value1.intersection_using_eql_comparison value2 end result.join_points_matched = join_points_matched.intersection_using_eql_comparison pointcut2.join_points_matched result.join_points_not_matched = join_points_not_matched.intersection_using_eql_comparison pointcut2.join_points_not_matched result.candidate_types = candidate_types.intersection pointcut2.candidate_types result.candidate_objects = candidate_objects.intersection pointcut2.candidate_objects result end alias :intersection :and end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
aquarium-0.1.0 | lib/aquarium/aspects/pointcut_composition.rb |
aquarium-0.1.5 | lib/aquarium/aspects/pointcut_composition.rb |
aquarium-0.1.6 | lib/aquarium/aspects/pointcut_composition.rb |