bodyguards 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3b8399f246039d405046a89377cd96757d6f8fa
4
- data.tar.gz: 2d65cff4a7ae3e48f5ae1b32672d0ebd2a9d0000
3
+ metadata.gz: fe0d81a346b01441cb46d00d4192c6d03e1e43ae
4
+ data.tar.gz: d8cf062ce185810c3971b007eb6732cfef9aa0e2
5
5
  SHA512:
6
- metadata.gz: 352f3ea2963a40db2e2d08bb7c0bd7a8b1339aeca27140548a2dfea37c5d3a39f79d53ae0ec59498403f75b73399c763b95dbfe5222b86d0d5a4875234f64fcd
7
- data.tar.gz: 8afb5659886c7fa0cc384d46d2588bee82b1b3d7ef546ce9136428c807e6352218f4c881502b4fc7696317d4cfd750568a326c613cb22aa0f122f86b21f152f2
6
+ metadata.gz: f1ede92743fef419236dea82dcd08e3297f2c7b68e7b4dd9c2cd2e57cf757c1b2053af62551244dcbca0bd42c0684a81e8c39fabad2ae3e7e91954347078b690
7
+ data.tar.gz: 0589e19253fa51fa0fe1a6edef6822544d4feb67dd3a2baea248e3202ba22bb8274f18043cb7dbab2c502bb22e808ec6779e2acee5d03949700ccc2a64806904
@@ -0,0 +1,20 @@
1
+ require './lib/bodyguards/rule_set'
2
+ require './lib/bodyguards/rule'
3
+
4
+ module Bodyguards
5
+ class Base
6
+ class << self
7
+ def rule_set
8
+ @rule_set ||= RuleSet.new
9
+ end
10
+
11
+ def permit_to(feature_name, &block)
12
+ rule_set.add_rule_for(feature_name, Rule.new(evaluator: block))
13
+ end
14
+
15
+ def permission_to?(feature_name, subject)
16
+ rule_set.evaluate(feature_name, subject)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ module Bodyguards
2
+ class Rule
3
+ def initialize(evaluator:)
4
+ @evaluator = evaluator
5
+ end
6
+
7
+ def evaluate(subject)
8
+ subject.instance_exec(&@evaluator)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ module Bodyguards
2
+ class RuleSet
3
+ def initialize
4
+ @rules = {}
5
+ end
6
+
7
+ def add_rule_for(feature_name, rule)
8
+ rules[feature_name.to_sym] = rule
9
+ end
10
+
11
+ def evaluate(feature_name, subject)
12
+ rules.fetch(feature_name.to_sym).evaluate(subject)
13
+ end
14
+
15
+ private
16
+
17
+ attr_reader :rules
18
+ end
19
+ end
data/lib/bodyguards.rb ADDED
@@ -0,0 +1 @@
1
+ require './lib/bodyguards/base'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bodyguards
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Bilharz
@@ -15,7 +15,11 @@ email: sbilharz@heilmannsoftware.de
15
15
  executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
- files: []
18
+ files:
19
+ - lib/bodyguards.rb
20
+ - lib/bodyguards/base.rb
21
+ - lib/bodyguards/rule.rb
22
+ - lib/bodyguards/rule_set.rb
19
23
  homepage:
20
24
  licenses:
21
25
  - MIT