role 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 (4) hide show
  1. data/lib/role.rb +2 -0
  2. data/lib/role/context.rb +11 -0
  3. data/lib/role/role.rb +29 -0
  4. metadata +47 -0
@@ -0,0 +1,2 @@
1
+ require 'role/role'
2
+ require 'role/context'
@@ -0,0 +1,11 @@
1
+ module Role
2
+ module Context
3
+ def context
4
+ @context
5
+ end
6
+
7
+ def context=(ctx)
8
+ @context = ctx
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,29 @@
1
+ module Role
2
+ def self.included(base)
3
+ base.extend ClassMethods
4
+ end
5
+
6
+ def role(mod)
7
+ extend mod
8
+ mod.cast self if mod.respond_to? :cast
9
+ roles << mod.name
10
+ end
11
+
12
+ def roles
13
+ @roles ||= []
14
+ end
15
+
16
+ def role?(mod)
17
+ roles.include? mod.name
18
+ end
19
+
20
+ module ClassMethods
21
+ def role(mod, context=nil)
22
+ instance = new
23
+ instance.role mod
24
+ instance.context = context if instance.respond_to?(:context=) && context
25
+
26
+ instance
27
+ end
28
+ end
29
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: role
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - The Sans Collective
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-04-21 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description:
15
+ email:
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/role/context.rb
21
+ - lib/role/role.rb
22
+ - lib/role.rb
23
+ homepage: https://github.com/Sans/role
24
+ licenses: []
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: 1.9.2
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 1.8.25
44
+ signing_key:
45
+ specification_version: 3
46
+ summary: Role Library
47
+ test_files: []