kappa-maki 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/kappa-maki.rb +80 -0
  3. metadata +74 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1a3ce22d3ef8e5072b53567abe382e6cb770199a
4
+ data.tar.gz: ad838f6ce317d6f98bc6c45e225fbc59c4b336ab
5
+ SHA512:
6
+ metadata.gz: 76b0ddbb53c3dfe6a3b5b5af2adec537e9ef193bea191a7b9eec6d06d5e89d9c64042dcf1249ea826f8d77d44ff3e324df9d4b0ac1cbe491b8dad958eed8cdd4
7
+ data.tar.gz: 7e6f6a8c8193c7a5f5694dc3f10f587063e13ce04b7370642a88fb161c2cca661b92876bbb7f6ac81e693b32e8abea751aacc1b7c6fd4f6bcf79338625ca889d
@@ -0,0 +1,80 @@
1
+ require 'rspec'
2
+
3
+ module Cucumber
4
+ module Features
5
+ # This is the module where users will add their features.
6
+ end
7
+
8
+ class FeatureSteps
9
+ include RSpec::Matchers
10
+ def self.namespace
11
+ self.name.split('::').last
12
+ end
13
+
14
+ def self.underscore_step_name(step_string)
15
+ step_string.gsub(/[^a-zA-Z0-9!?]/, '_').downcase.to_sym
16
+ end
17
+
18
+ def self.camelize_feature_name(feature_name)
19
+ feature_name.gsub(/[^a-zA-Z0-9!?]/, '')
20
+ end
21
+
22
+ def self.namespace_step(step_string)
23
+ "[#{self.namespace}] #{step_string}"
24
+ end
25
+
26
+ def self.step(step_string, &block)
27
+ if step_string.class == Regexp
28
+ raise "Feature-scoped step definitions do not allow regular expressions. Use simple strings instead."
29
+ end
30
+
31
+ method_name = self.underscore_step_name(step_string)
32
+
33
+ if method_name.length < 3
34
+ raise "Step definition must be at least 3 characters long. Step: '#{step_string}'"
35
+ end
36
+
37
+ define_method(method_name, &block)
38
+
39
+ namespaced_step = self.namespace_step(step_string)
40
+
41
+ feature_class = self
42
+
43
+ delegate_block = Proc.new do
44
+ @instance ||= feature_class.new
45
+ @instance.send method_name
46
+ end
47
+
48
+ Cucumber::RbSupport::RbDsl.register_rb_step_definition(namespaced_step, delegate_block)
49
+ end
50
+ end
51
+ end
52
+
53
+ module SupportCode_NamespacedSteps
54
+ def find_match(test_step)
55
+ feature_name = test_step.source.first.short_name
56
+
57
+ feature_namespace = Cucumber::FeatureSteps.camelize_feature_name(feature_name)
58
+ underscored_step = Cucumber::FeatureSteps.underscore_step_name(test_step.name)
59
+
60
+ # Instantiate the feature steps class for the duration of the scenario, if not already.
61
+ # Instance variables will be scoped therein, and only usable for the life of the scenario.
62
+ feature_class = Cucumber::Features.const_get(feature_namespace)
63
+ @feature ||= feature_class.new
64
+
65
+ begin
66
+ # Local (namespaced) step definitions override global ones, if both are defined.
67
+ step_match(feature_class.namespace_step(test_step.name))
68
+ rescue Cucumber::Undefined
69
+ super
70
+ end
71
+ end
72
+ end
73
+
74
+ module Cucumber
75
+ class Runtime
76
+ class SupportCode
77
+ prepend SupportCode_NamespacedSteps
78
+ end
79
+ end
80
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kappa-maki
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Allan Tokuda
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cucumber-ruby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.1'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.1'
41
+ description: Provide Cucumber users the ability to create locally scoped step definitions
42
+ and methods such that they are only usable from within one feature. In the style
43
+ of Spinach.
44
+ email: praetis@gmail.com
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - lib/kappa-maki.rb
50
+ homepage: http://rubygems.org/gems/kappa-maki
51
+ licenses:
52
+ - MIT
53
+ metadata: {}
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ requirements: []
69
+ rubyforge_project:
70
+ rubygems_version: 2.2.2
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: Kappa Maki
74
+ test_files: []