r_kit 0.2.1.1 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/LICENSE.txt +1 -1
- data/lib/r_kit/backtrace/kernel_extend.rb +20 -0
- data/lib/r_kit/backtrace.rb +5 -0
- data/lib/r_kit/core/configurer.rb +69 -0
- data/lib/r_kit/core/engineer.rb +42 -0
- data/lib/r_kit/core/loader.rb +132 -0
- data/lib/r_kit/core.rb +60 -6
- data/lib/{assets/stylesheets/r_kit/css → r_kit/css/lib/assets/stylesheets/r_kit/base}/alignments.scss +0 -0
- data/lib/{assets/stylesheets/r_kit/css → r_kit/css/lib/assets/stylesheets/r_kit/base}/displays.scss +0 -0
- data/lib/{assets/stylesheets/r_kit/css → r_kit/css/lib/assets/stylesheets/r_kit/base}/html.scss +0 -0
- data/lib/{assets/stylesheets/r_kit/css → r_kit/css/lib/assets/stylesheets/r_kit/base}/typography/links.scss +1 -1
- data/lib/{assets/stylesheets/r_kit/css → r_kit/css/lib/assets/stylesheets/r_kit/base}/typography/lists.scss +0 -0
- data/lib/{assets/stylesheets/r_kit/css → r_kit/css/lib/assets/stylesheets/r_kit/base}/typography/paragraphs.scss +0 -0
- data/lib/{assets/stylesheets/r_kit/css → r_kit/css/lib/assets/stylesheets/r_kit/base}/typography/titles.scss +0 -0
- data/lib/{assets/stylesheets/r_kit/css → r_kit/css/lib/assets/stylesheets/r_kit/base}/typography.scss +0 -0
- data/lib/r_kit/css/lib/assets/stylesheets/r_kit/base.scss +4 -0
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/components/btn.scss +2 -2
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/components.scss +0 -0
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/mixins/animation.scss +0 -0
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/mixins/box-shadows/curved-shadows.scss +0 -0
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/mixins/box-shadows/straight-shadows.scss +0 -0
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/mixins/box-shadows.scss +0 -0
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/mixins/keyframes.scss +0 -0
- data/lib/r_kit/css/lib/assets/stylesheets/r_kit/mixins/links.scss +5 -0
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/mixins/titles.scss +0 -0
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/mixins.scss +1 -0
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/variables/colors.scss +10 -16
- data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/variables.scss +0 -0
- data/lib/{assets/stylesheets/r_kit.scss → r_kit/css/lib/assets/stylesheets/r_kit.scss.erb} +1 -3
- data/lib/r_kit/css/sass_extend.rb +8 -0
- data/lib/r_kit/css.rb +35 -0
- data/lib/r_kit/decorator/active_record_extend.rb +59 -0
- data/lib/r_kit/decorator/base.rb +8 -13
- data/lib/r_kit/decorator.rb +8 -6
- data/lib/r_kit/grid/base/grid.rb +31 -0
- data/lib/r_kit/grid/base/grid_col.rb +26 -0
- data/lib/r_kit/grid/base/grid_row.rb +29 -0
- data/lib/r_kit/grid/base.rb +48 -0
- data/lib/r_kit/grid/binding.rb +80 -0
- data/lib/r_kit/grid/enumerable_extend.rb +5 -0
- data/lib/r_kit/grid/kernel_extend.rb +14 -0
- data/lib/r_kit/grid/lib/assets/stylesheets/r_kit/base/grid.scss +27 -0
- data/lib/{assets/stylesheets/r_kit/css → r_kit/grid/lib/assets/stylesheets/r_kit}/grid.scss +34 -4
- data/lib/{assets/.gitkeep → r_kit/grid/lib/assets/stylesheets/r_kit/mixins/gris.scss} +0 -0
- data/lib/r_kit/grid/lib/assets/stylesheets/r_kit/variables/grid.scss +1 -0
- data/lib/r_kit/grid/sass_extend.rb +13 -0
- data/lib/r_kit/grid.rb +23 -6
- data/lib/r_kit/version.rb +1 -1
- data/lib/r_kit.rb +34 -22
- data/r_kit.gemspec +1 -1
- metadata +44 -36
- data/lib/assets/javascripts/r_kit/base.js +0 -2
- data/lib/assets/javascripts/r_kit/dom_manipulation/class_manipulation.js +0 -14
- data/lib/assets/javascripts/r_kit/dom_manipulation.js +0 -1
- data/lib/assets/javascripts/r_kit.js +0 -3
- data/lib/assets/stylesheets/r_kit/animations/fast_load.scss +0 -11
- data/lib/assets/stylesheets/r_kit/animations.scss +0 -1
- data/lib/assets/stylesheets/r_kit/css.scss +0 -5
- data/lib/r_kit/core/object.rb +0 -15
- data/lib/r_kit/core/object_extension.rb +0 -7
- data/lib/r_kit/decorator/active_record_extension.rb +0 -25
- data/lib/r_kit/engine.rb +0 -4
- data/lib/r_kit/grid/action_view_extension.rb +0 -89
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NzI3YjZmMTFhMzI4YjgyYTUyZDJkZmQ1NGJmZDljZDc0MzI2ZGQ0Ng==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjU4NWE1ODdjYjg2ZjYyZWQwZmJjNjYxMjFlMGYwYmI5YzcwYzFmNA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZGM4MGZlNzNhZTY5MTRhZWUyMmQzMGU3MTNkNWI4MmI2MjNkYTMzMDM3Y2U4
|
10
|
+
YmRhMmVjNDI5MWQwYjA4MzZmMjYzNTIyMWNiNWFjMjdiZmNhYzk1NTlhNDJj
|
11
|
+
OTg3ZTgwMTc1NGU3Zjc0OWFiYzgyZWFhM2ZjMDRmZGNjMzNkNmU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODYyYjk2MzEwOTU0N2U4YmNiNWNkMzliYzA2YWRmM2YxODQzNzYzZjBmNDM2
|
14
|
+
ZDZmNWUzNDdjOGFkMDJkMWZhMmQ0MTA3YzAwMzBiZDc5MDFiZDA5MzMyZTRm
|
15
|
+
OGU3N2Q5ZmZkYTcyMGFiNGUxMGE1Y2I2NTM3Y2JjOTNlOWU2YmE=
|
data/LICENSE.txt
CHANGED
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
19
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
20
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
21
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'continuation'
|
2
|
+
|
3
|
+
module Kernel
|
4
|
+
|
5
|
+
def backtrace &block
|
6
|
+
cc = nil
|
7
|
+
block ||= ->(obj){ obj != self }
|
8
|
+
|
9
|
+
tracer = TracePoint.trace(:return) do |tp|
|
10
|
+
if tp.self != self && block.call(tp.self)
|
11
|
+
tracer.disable
|
12
|
+
cc.call tp.self
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
backtrace = callcc { |cont| cc = cont }
|
17
|
+
backtrace unless backtrace.is_a? Continuation
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
class RKit::Core::Configurer
|
2
|
+
attr_accessor :_base, :_config, :_presets, :_aliases
|
3
|
+
|
4
|
+
def initialize base, config = {}
|
5
|
+
@_base = base
|
6
|
+
@_config = config
|
7
|
+
@_presets = Hash.new{ |hash, key| hash[key] = self.class.new(_base) }
|
8
|
+
@_aliases = []
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
def preset name, config
|
13
|
+
_presets[name] = self.class.new(_base, config)
|
14
|
+
end
|
15
|
+
|
16
|
+
def load_preset! name
|
17
|
+
_config.deep_merge! _presets[name]._config
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def config *name, default
|
22
|
+
_config.deep_merge! [*name, default].reverse.inject{ |nested, key| Hash[key, nested] }
|
23
|
+
end
|
24
|
+
|
25
|
+
def load_config! config_options
|
26
|
+
_config.deep_merge! config_options
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def alias_config *name, old_name
|
31
|
+
_aliases << [name, old_name]
|
32
|
+
end
|
33
|
+
|
34
|
+
def alias *name, old_name
|
35
|
+
new_name = name.pop
|
36
|
+
config = name.inject(_config){ |config, nested| config = config[nested] }
|
37
|
+
|
38
|
+
config[new_name] = config[old_name] if config[new_name].blank?
|
39
|
+
end
|
40
|
+
|
41
|
+
def load_alias!
|
42
|
+
_aliases.each do |(name, old_name)|
|
43
|
+
self.alias *name, old_name
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
def load_public_accessor!
|
49
|
+
_base.const_set :CONFIG, OpenStruct.new(_config)
|
50
|
+
_base.define_singleton_method("config"){ self::CONFIG }
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
def load! config
|
55
|
+
load_preset! config.delete(:preset)
|
56
|
+
load_config! config
|
57
|
+
load_alias!
|
58
|
+
load_public_accessor!
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
def inspect
|
63
|
+
_config.inspect
|
64
|
+
end
|
65
|
+
|
66
|
+
def fingerprint
|
67
|
+
_config.sort.join
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class RKit::Core::Engineer
|
2
|
+
attr_accessor :_base, :pathname, :sprockets
|
3
|
+
|
4
|
+
def initialize base
|
5
|
+
@_base = base
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
def load_engine?
|
10
|
+
@pathname
|
11
|
+
end
|
12
|
+
|
13
|
+
def load_engine!
|
14
|
+
pathname = @pathname
|
15
|
+
|
16
|
+
Class.new(Rails::Engine) do
|
17
|
+
paths.path = pathname
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def load_sprockets?
|
23
|
+
@sprockets
|
24
|
+
end
|
25
|
+
|
26
|
+
def load_sprockets!
|
27
|
+
digest = _base.digest
|
28
|
+
sprockets_extend = Module.new do
|
29
|
+
define_method "digest" do
|
30
|
+
super().update(digest)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
Sprockets::Base.send :prepend, sprockets_extend
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def load!
|
39
|
+
load_engine! if load_engine?
|
40
|
+
load_sprockets! if load_sprockets?
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,132 @@
|
|
1
|
+
class RKit::Core::Loader
|
2
|
+
attr_accessor :_base, :load_paths, :dependencies
|
3
|
+
|
4
|
+
@@loaded = []
|
5
|
+
|
6
|
+
def initialize base
|
7
|
+
@_base = base
|
8
|
+
@load_paths = []
|
9
|
+
@dependencies = []
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
def dependency dependency
|
14
|
+
dependencies << Dependency.new(_base, str: dependency)
|
15
|
+
end
|
16
|
+
|
17
|
+
def dependencies!
|
18
|
+
dependencies.each &:load!
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def load_path file, path, options = {}
|
23
|
+
load_path = LoadPath.new _base, file: file, path: path
|
24
|
+
load_path.conditions = options.slice :if, :unless
|
25
|
+
|
26
|
+
load_paths << load_path
|
27
|
+
end
|
28
|
+
|
29
|
+
def load_paths!
|
30
|
+
load_paths.each &:load!
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
def loaded!
|
35
|
+
@@loaded << _base.name.demodulize.underscore
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
def load!
|
40
|
+
dependencies!
|
41
|
+
load_paths!
|
42
|
+
loaded!
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
class LoadPath
|
47
|
+
attr_accessor :_base,
|
48
|
+
:file, :path, :conditions
|
49
|
+
|
50
|
+
def initialize base, file:, path:;
|
51
|
+
@_base = base
|
52
|
+
|
53
|
+
@file = file
|
54
|
+
@path = path
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
def extname
|
59
|
+
File.extname(file)
|
60
|
+
end
|
61
|
+
|
62
|
+
def fullpath
|
63
|
+
file.chomp! File.extname(file)
|
64
|
+
File.expand_path(path, file)
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
def should_load?
|
69
|
+
conditions.inject(true) do |should_load, (statement, condition)|
|
70
|
+
should_load && exec_condition(statement, condition)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def load_path!
|
75
|
+
require fullpath
|
76
|
+
end
|
77
|
+
|
78
|
+
def load!
|
79
|
+
load_path! if should_load?
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
def exec_condition statement, condition
|
84
|
+
condition = case condition
|
85
|
+
when Proc
|
86
|
+
condition.call _base::CONFIG
|
87
|
+
when Symbol, String
|
88
|
+
_base::CONFIG.send condition
|
89
|
+
end
|
90
|
+
|
91
|
+
exec_statement statement, condition
|
92
|
+
end
|
93
|
+
|
94
|
+
def exec_statement statement, condition
|
95
|
+
case statement
|
96
|
+
when :if
|
97
|
+
!!condition
|
98
|
+
when :unless
|
99
|
+
!condition
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
class Dependency < String
|
106
|
+
attr_accessor :_base
|
107
|
+
|
108
|
+
def initialize base, str: ""
|
109
|
+
@_base = base
|
110
|
+
|
111
|
+
super str.to_s
|
112
|
+
end
|
113
|
+
|
114
|
+
def should_load?
|
115
|
+
!RKit::Core::Loader.class_variable_get(:@@loaded).include? self
|
116
|
+
end
|
117
|
+
|
118
|
+
def dependency!
|
119
|
+
warn %Q{
|
120
|
+
WARNING - RKit::#{ classify } was implicitly loaded,
|
121
|
+
As a dependency for #{ _base }.
|
122
|
+
You may want to load it explicitly.
|
123
|
+
}
|
124
|
+
RKit.const_get(classify).load
|
125
|
+
end
|
126
|
+
|
127
|
+
def load!
|
128
|
+
dependency! if should_load?
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
data/lib/r_kit/core.rb
CHANGED
@@ -1,8 +1,62 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
class RKit::Core
|
2
|
+
|
3
|
+
class << self
|
4
|
+
def init!
|
5
|
+
@_config = Configurer.new self
|
6
|
+
@_engine = Engineer.new self
|
7
|
+
@_load = Loader.new self
|
8
|
+
end
|
9
|
+
|
10
|
+
def inherited base
|
11
|
+
base.init!
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def with_engine file
|
17
|
+
@_engine.pathname = Pathname.new(File.dirname(file)) + name.demodulize.underscore
|
18
|
+
end
|
19
|
+
|
20
|
+
def with_sprockets file
|
21
|
+
@_engine.sprockets = true
|
22
|
+
load_path file, 'sass_extend.rb'
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
delegate :config, :alias_config, :preset,
|
27
|
+
to: :@_config
|
28
|
+
|
29
|
+
|
30
|
+
delegate :load_path, :dependency,
|
31
|
+
to: :@_load
|
32
|
+
|
33
|
+
|
34
|
+
def load config = {}
|
35
|
+
@_config.load! config
|
36
|
+
@_engine.load!
|
37
|
+
@_load.load!
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
def inspect
|
43
|
+
"#{ name } config_w/#{ @_config.inspect }"
|
44
|
+
# TODO: add link to doc
|
45
|
+
end
|
46
|
+
|
47
|
+
def digest
|
48
|
+
Digest::MD5.hexdigest @_config.fingerprint
|
49
|
+
end
|
7
50
|
end
|
51
|
+
|
52
|
+
|
53
|
+
require 'r_kit/core/configurer.rb'
|
54
|
+
require 'r_kit/core/engineer.rb'
|
55
|
+
require 'r_kit/core/loader.rb'
|
56
|
+
|
57
|
+
require 'r_kit/backtrace.rb'
|
58
|
+
require 'r_kit/css.rb'
|
59
|
+
require 'r_kit/decorator.rb'
|
60
|
+
require 'r_kit/grid.rb'
|
61
|
+
|
8
62
|
end
|
File without changes
|
data/lib/{assets/stylesheets/r_kit/css → r_kit/css/lib/assets/stylesheets/r_kit/base}/displays.scss
RENAMED
File without changes
|
data/lib/{assets/stylesheets/r_kit/css → r_kit/css/lib/assets/stylesheets/r_kit/base}/html.scss
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/mixins/box-shadows/curved-shadows.scss
RENAMED
File without changes
|
data/lib/{assets → r_kit/css/lib/assets}/stylesheets/r_kit/mixins/box-shadows/straight-shadows.scss
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
|
-
$primary-color:
|
2
|
-
$secondary-color:
|
1
|
+
$primary-color: primary-color() !default;
|
2
|
+
// $secondary-color: secondary-color() !default;
|
3
3
|
|
4
4
|
// need here defaults colors
|
5
5
|
// colors needed : success - warning - danger - info - muted
|
@@ -7,31 +7,25 @@ $secondary-color: skyblue !default;
|
|
7
7
|
// look into theeses colors : cornflowerblue, firebrick, gold, limegreen
|
8
8
|
|
9
9
|
/*
|
10
|
-
$success-color
|
11
|
-
$warning-color
|
12
|
-
$danger-color
|
13
|
-
$info-color
|
10
|
+
$success-color ?greenyellow
|
11
|
+
$warning-color ?gold
|
12
|
+
$danger-color ?firebrick
|
13
|
+
$info-color ?cornflowerblue
|
14
14
|
$muted-color
|
15
15
|
*/
|
16
|
-
$text-color:
|
17
|
-
$link-color:
|
16
|
+
$text-color: text-color() !default;
|
17
|
+
$link-color: link-color() !default;
|
18
18
|
/*$text-success-color
|
19
19
|
$text-warning-color
|
20
20
|
$text-danger-color
|
21
21
|
$text-info-color
|
22
22
|
$text-muted-color
|
23
23
|
*/
|
24
|
-
$background-color:
|
25
|
-
$background-alt-color: #181818 !default;
|
24
|
+
$background-color: background-color() !default;
|
25
|
+
// $background-alt-color: #181818 !default;
|
26
26
|
/*$background-success-color
|
27
27
|
$background-warning-color
|
28
28
|
$background-danger-color
|
29
29
|
$background-info-color
|
30
30
|
$background-muted-color
|
31
31
|
*/
|
32
|
-
|
33
|
-
// constants
|
34
|
-
$white: #fbfbfb !default;
|
35
|
-
$black: #111 !default;
|
36
|
-
|
37
|
-
$shadow: rgba(black, .6) !default;
|
File without changes
|
data/lib/r_kit/css.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
class RKit::Css < RKit::Core
|
2
|
+
|
3
|
+
with_engine __FILE__
|
4
|
+
with_sprockets __FILE__
|
5
|
+
|
6
|
+
config :colors, :primary_color, '#b62b2b'
|
7
|
+
config :colors, :text_color, '#888'
|
8
|
+
config :colors, :background_color, '#111'
|
9
|
+
|
10
|
+
|
11
|
+
alias_config :colors, :link_color, :background_color
|
12
|
+
alias_config :colors, :link_background_color, :primary_color
|
13
|
+
|
14
|
+
# unused colors
|
15
|
+
# config :colors, :secondary_color, 'cornflowerblue'
|
16
|
+
# config :colors, :background_alt_color, '#181818'
|
17
|
+
|
18
|
+
preset :light_colors,
|
19
|
+
colors: {
|
20
|
+
text_color: '#444',
|
21
|
+
background_color: '#f9f9f9'
|
22
|
+
|
23
|
+
# $background-alt-color: #e6e6e6;
|
24
|
+
# border color #eee
|
25
|
+
# code color (grey on grey) #a0a0a0
|
26
|
+
# title color: #666
|
27
|
+
# btn : #ededed 38% #dedede
|
28
|
+
|
29
|
+
}
|
30
|
+
|
31
|
+
|
32
|
+
# preset :dark_theme, colors: {primary_color: '#456', secondary_color: '#123', youpi_color: "#012"}
|
33
|
+
# this dark theme is beatifull with youpi in bg and primary for links
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module RKit::Decorator::ActiveRecordExtend
|
2
|
+
attr_accessor :decorator_klass
|
3
|
+
|
4
|
+
def acts_as_decorables base = nil, &block
|
5
|
+
define_decorator base || block
|
6
|
+
define_instance_methods
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
def define_decorator arg
|
11
|
+
@decorator_klass = decorator_klass_from arg
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
def decorator_klass_from arg
|
16
|
+
send "decorator_klass_from_#{ arg.class.name.underscore }", arg
|
17
|
+
end
|
18
|
+
|
19
|
+
def decorator_klass_from_nil_class *args
|
20
|
+
decorator_klass_from "#{ name }Decorator".constantize
|
21
|
+
end
|
22
|
+
|
23
|
+
def decorator_klass_from_class base
|
24
|
+
if base <=> RKit::Decorator::Base
|
25
|
+
base
|
26
|
+
else
|
27
|
+
base.send :include, Module.new{ include refine(RKit::Decorator::Base){} }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def decorator_klass_from_module mod
|
32
|
+
namespace = (mod.name.deconstantize.presence || "Object").constantize
|
33
|
+
const_name = mod.name.demodulize
|
34
|
+
|
35
|
+
namespace.send :remove_const, const_name
|
36
|
+
namespace.const_set const_name, Class.new(RKit::Decorator::Base){ include mod }
|
37
|
+
end
|
38
|
+
|
39
|
+
def decorator_klass_from_proc block
|
40
|
+
(name.deconstantize.presence || "Object")
|
41
|
+
.constantize
|
42
|
+
.const_set "#{ name.demodulize }Decorator", Class.new(RKit::Decorator::Base, &block)
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
def decorate_all
|
47
|
+
all.map(&:decorate)
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
def define_instance_methods
|
52
|
+
define_method "decorate" do
|
53
|
+
self.class.decorator_klass.new self
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
ActiveRecord::Base.extend self
|
59
|
+
end
|
data/lib/r_kit/decorator/base.rb
CHANGED
@@ -1,22 +1,17 @@
|
|
1
1
|
require 'delegate'
|
2
2
|
|
3
3
|
class RKit::Decorator::Base < SimpleDelegator
|
4
|
-
alias :
|
5
|
-
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
instance_variables.each do |key, value|
|
10
|
-
instance_variable_set "@#{ key }", value
|
11
|
-
end
|
12
|
-
|
13
|
-
super(base)
|
4
|
+
alias :_obj :__getobj__
|
5
|
+
|
6
|
+
def view_context
|
7
|
+
backtrace{ |obj| obj.is_a? ActionView::Base } || backtrace{ |obj| obj.respond_to? :view_context }.view_context
|
14
8
|
end
|
15
|
-
|
9
|
+
|
10
|
+
|
16
11
|
def _h
|
17
|
-
@view_context
|
12
|
+
@view_context ||= view_context
|
18
13
|
end
|
19
|
-
|
14
|
+
|
20
15
|
def === object
|
21
16
|
self == object || __getobj__ == object
|
22
17
|
end
|
data/lib/r_kit/decorator.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
class RKit::Decorator < RKit::Core
|
2
|
+
|
3
|
+
dependency :backtrace
|
4
|
+
|
5
|
+
|
6
|
+
load_path __FILE__, 'base.rb'
|
7
|
+
|
8
|
+
load_path __FILE__, 'active_record_extend.rb'
|
5
9
|
|
6
|
-
ActiveRecord::Base.extend ActiveRecordExtension
|
7
|
-
end
|
8
10
|
end
|