Sha256: 5a4976df8500c0ed47d29c7e22c783cff97226173fd0b9d4a94e8b1b054b7347

Contents?: true

Size: 1.01 KB

Versions: 21

Compression:

Stored size: 1.01 KB

Contents

require 'sourcify'

module CanTango
  class Ability
    class Cache
      class Kompiler
        class CacheMarshallError < StandardError; end

        def compile! rules_raw
          return if !rules_raw
          rules_compiled = rules_raw.map do |rule|
            rule.block = rule.block.to_source if rule.block.class == Proc && sourcify?
            rule
          end
        end

        def decompile! rules_compiled
          return if !rules_compiled
          rules_raw = rules_compiled.map do |rule|
            compiler_check! rule
            rule.block = eval("#{rule.block}") if sourcify?
            rule
          end
        end

        protected

        def sourcify?
          @sourcify ||= Proc.new {}.respond_to?(:to_source)
        end

        def compiler_check! rule
          if rule.block && !CanTango.config.adapters.registered?(:compiler)
            raise "You can NOT marshal dynamic rules (with Procs) unless you register the :compiler adapter"
          end
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
cantango-0.9.4.7 lib/cantango/ability/cache/kompiler.rb
cantango-0.9.4.6 lib/cantango/ability/cache/kompiler.rb
cantango-0.9.4.5 lib/cantango/ability/cache/kompiler.rb
cantango-0.9.4.3 lib/cantango/ability/cache/kompiler.rb
cantango-0.9.4.2 lib/cantango/ability/cache/kompiler.rb
cantango-0.9.4.1 lib/cantango/ability/cache/kompiler.rb
cantango-0.9.4 lib/cantango/ability/cache/kompiler.rb
cantango-0.9.3.2 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.9.5 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.9.4 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.9.3 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.9.2 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.9.1 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.9 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.8.1 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.8 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.7 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.6.2 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.6.1 lib/cantango/ability/cache/kompiler.rb
cantango-0.8.6 lib/cantango/ability/cache/kompiler.rb