Module: Purist

Defined in:
lib/purist.rb,
lib/purist/errors.rb,
lib/purist/handler.rb,
lib/purist/matcher.rb,
lib/purist/version.rb,
lib/purist/configuration.rb,
lib/purist/trace_point_slice.rb,
lib/purist/integrations/rspec/be_pure.rb,
lib/purist/integrations/rspec/matchers.rb

Defined Under Namespace

Modules: Errors, Handler, Integrations Classes: Configuration, Matcher, TracePointSlice

Constant Summary collapse

TRACE_POINT_TYPES =
%i[call c_call].freeze
TRACE_HANDLER =
proc do |trace_point|
  next unless Purist::Matcher.match?(configuration.trace_targets, trace_point)

  Purist.handler.call(trace_point)
end
VERSION =
'1.0.0'

Class Method Summary collapse

Class Method Details

.configurationObject



29
30
31
# File 'lib/purist.rb', line 29

def self.configuration
  @configuration ||= Purist::Configuration.instance
end

.handlerObject



25
26
27
# File 'lib/purist.rb', line 25

def self.handler
  @handler ||= Purist::Handler.build(configuration.action_on_purity_violation)
end

.trace(&block) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/purist.rb', line 17

def self.trace(&block)
  return unless block

  TracePoint
    .new(*TRACE_POINT_TYPES, &TRACE_HANDLER)
    .enable(&block)
end