aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/skype/skype.c
diff options
context:
space:
mode:
authordequis <dx@dxzone.com.ar>2015-04-05 10:54:41 -0300
committerdequis <dx@dxzone.com.ar>2015-04-05 11:09:37 -0300
commit71abe93dc62c54489a3c5973377fd1e9d1e514ec (patch)
tree7fb48f3c75f48223883ec07cf9d284cfbf5c1234 /protocols/skype/skype.c
parent4543b6bd3b333905bc22dd11cd2ffefd0ad04d27 (diff)
proxy: minor refactor, simplify error handling
Diffstat (limited to 'protocols/skype/skype.c')
0 files changed, 0 insertions, 0 deletions
ix/0.19.1 Unnamed repository; edit this file 'description' to name the repository.MimesBrønn
aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/plugins/rspec/lib/spec/story/step.rb
blob: 1d596e92c0aa3c2151f2721cae85201311b743ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
module Spec
  module Story
    class Step
      PARAM_PATTERN = /(\$\w*)/
      PARAM_OR_GROUP_PATTERN = /(\$\w*)|\(.*?\)/
      
      attr_reader :name
      def initialize(name, &block)
        @name = name
        assign_expression(name)
        init_module(name, &block)
      end

      def perform(instance, *args)
        instance.extend(@mod)
        instance.__send__(sanitize(@name), *args)
      end

      def init_module(name, &block)
        sanitized_name = sanitize(name)
        @mod = Module.new do
          define_method(sanitized_name, &block)
        end
      end
      
      def sanitize(a_string_or_regexp)
        return a_string_or_regexp.source if Regexp == a_string_or_regexp
        a_string_or_regexp.to_s
      end
      

      def matches?(name)
        !(matches = name.match(@expression)).nil?
      end
            
      def parse_args(name)
        name.match(@expression)[1..-1]
      end

      private
      
        def assign_expression(name)
          expression = name.dup
          if String === expression
            expression.gsub! '(', '\('
            expression.gsub! ')', '\)'
            while expression =~ PARAM_PATTERN
              expression.gsub!($1, "(.*?)")
            end
          end
          @expression = Regexp.new("^#{expression}$")
        end

    end
  end
end