diff --git a/.travis.yml b/.travis.yml index 82ccc7e..06350f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,10 +16,6 @@ matrix: env: TEST="test/test_*" - rvm: 1.9.3 env: TEST="test/test_standard.rb" - - rvm: 2.0.0 - env: TEST="test/test_*" - - rvm: 2.0.0 - env: TEST="test/test_standard.rb" - rvm: jruby-19mode env: TEST="test/test_*" - rvm: jruby-19mode diff --git a/lib/pattern-match/core.rb b/lib/pattern-match/core.rb index 5b15bdb..a2c7119 100644 --- a/lib/pattern-match/core.rb +++ b/lib/pattern-match/core.rb @@ -1,5 +1,7 @@ require 'pattern-match/deconstructor' +using PatternMatch if respond_to?(:using, true) + module PatternMatch module HasOrderedSubPatterns private @@ -200,8 +202,6 @@ class PatternDeconstructor < PatternElement class PatternObjectDeconstructor < PatternDeconstructor include HasOrderedSubPatterns - using PatternMatch if respond_to?(:using, true) - def initialize(deconstructor, *subpatterns) super(*subpatterns) @deconstructor = deconstructor @@ -524,8 +524,6 @@ def _(*vals) when 0 uscore = PatternVariable.new(:_) class << uscore - using PatternMatch if respond_to?(:using, true) - def [](*args) Array.(*args) end diff --git a/lib/pattern-match/deconstructor.rb b/lib/pattern-match/deconstructor.rb index 6acea66..9985a57 100644 --- a/lib/pattern-match/deconstructor.rb +++ b/lib/pattern-match/deconstructor.rb @@ -8,10 +8,12 @@ def pattern_matcher(*subpatterns) PatternObjectDeconstructor.new(self, *subpatterns) end end +end - module Deconstructable - using PatternMatch if respond_to?(:using, true) +using PatternMatch if respond_to?(:using, true) +module PatternMatch + module Deconstructable def call(*subpatterns) pattern_matcher(*subpatterns) end diff --git a/lib/pattern-match/experimental.rb b/lib/pattern-match/experimental.rb index 2c0461f..3251b4d 100644 --- a/lib/pattern-match/experimental.rb +++ b/lib/pattern-match/experimental.rb @@ -4,6 +4,8 @@ raise LoadError, 'Module#prepend required' unless Module.respond_to?(:prepend, true) +using PatternMatch if respond_to?(:using, true) + module PatternMatch class Pattern module Backtrackable @@ -50,8 +52,6 @@ def restore_choice_point end module Deconstructable - using PatternMatch if respond_to?(:using, true) - remove_method :call def call(*subpatterns) if Object == self @@ -180,8 +180,6 @@ class Hash end class Object - using PatternMatch if respond_to?(:using, true) - def assert_pattern(pattern) match(self) do Kernel.eval("with(#{pattern}) { self }", Kernel.binding)