role 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: []