r_kit 0.4.2 → 0.4.3
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.
- checksums.yaml +4 -4
- data/lib/r_kit/active_record_utility/active_record_extend.rb +31 -4
- data/lib/r_kit/active_record_utility/base/pool.rb +29 -0
- data/lib/r_kit/active_record_utility/base/publisher.rb +28 -0
- data/lib/r_kit/active_record_utility/base/series.rb +141 -0
- data/lib/r_kit/active_record_utility/base/tag.rb +17 -0
- data/lib/r_kit/active_record_utility/base.rb +70 -0
- data/lib/r_kit/active_record_utility/database_schema_error.rb +4 -4
- data/lib/r_kit/active_record_utility.rb +12 -3
- data/lib/r_kit/backtrace.rb +4 -0
- data/lib/r_kit/core/loader/dependency.rb +26 -0
- data/lib/r_kit/core/loader/load_path.rb +58 -0
- data/lib/r_kit/core/loader.rb +3 -89
- data/lib/r_kit/core.rb +10 -0
- data/lib/r_kit/css/lib/assets/stylesheets/r_kit/components/btn.scss +8 -0
- data/lib/r_kit/css/lib/assets/stylesheets/r_kit/components/pagination.scss +3 -0
- data/lib/r_kit/css/lib/assets/stylesheets/r_kit/components.scss +1 -0
- data/lib/r_kit/css/lib/assets/stylesheets/r_kit/variables/colors.scss +1 -1
- data/lib/r_kit/css.rb +12 -5
- data/lib/r_kit/{decorator → decoration}/action_view_base_extend.rb +2 -2
- data/lib/r_kit/{decorator → decoration}/active_record_extend.rb +16 -9
- data/lib/r_kit/decoration/base.rb +35 -0
- data/lib/r_kit/decoration/class.rb +22 -0
- data/lib/r_kit/decoration.rb +19 -0
- data/lib/r_kit/dsl/base/local_params.rb +13 -0
- data/lib/r_kit/dsl/base/params.rb +38 -0
- data/lib/r_kit/dsl/base/readonly.rb +16 -0
- data/lib/r_kit/dsl/base/thrust.rb +67 -0
- data/lib/r_kit/dsl/base.rb +68 -0
- data/lib/r_kit/dsl/dsl_definition_error.rb +10 -0
- data/lib/r_kit/dsl/dsl_extend.rb +10 -0
- data/lib/r_kit/dsl/dsl_standard_error.rb +9 -0
- data/lib/r_kit/dsl/module_extend.rb +22 -0
- data/lib/r_kit/dsl/no_lambda_error.rb +10 -0
- data/lib/r_kit/dsl.rb +21 -0
- data/lib/r_kit/pagination/active_record_extend.rb +23 -0
- data/lib/r_kit/pagination/base/page.rb +53 -0
- data/lib/r_kit/pagination/base.rb +153 -0
- data/lib/r_kit/pagination.rb +23 -0
- data/lib/r_kit/struct/collection_delegator.rb +24 -0
- data/lib/r_kit/struct/safe_struct.rb +35 -0
- data/lib/r_kit/struct/strong_struct.rb +17 -0
- data/lib/r_kit/struct.rb +8 -0
- data/lib/r_kit/utility/active_record_extend.rb +7 -0
- data/lib/r_kit/utility/array_extend.rb +10 -1
- data/lib/r_kit/utility/module_extend.rb +43 -0
- data/lib/r_kit/utility/object_extend.rb +33 -0
- data/lib/r_kit/utility/proc_extend.rb +41 -0
- data/lib/r_kit/utility/simple_delegator_extend.rb +12 -0
- data/lib/r_kit/utility/string_extend.rb +20 -0
- data/lib/r_kit/utility/symbol_extend.rb +1 -1
- data/lib/r_kit/utility.rb +4 -1
- data/lib/r_kit/version.rb +1 -1
- data/lib/r_kit.rb +9 -0
- data/r_kit.gemspec +1 -1
- metadata +41 -9
- data/lib/r_kit/active_record_utility/utility/tag.rb +0 -14
- data/lib/r_kit/active_record_utility/utility.rb +0 -53
- data/lib/r_kit/decorator/base.rb +0 -34
- data/lib/r_kit/decorator.rb +0 -13
@@ -0,0 +1,153 @@
|
|
1
|
+
class RKit::Pagination::Base < SimpleDelegator
|
2
|
+
|
3
|
+
# TODO: use collection delegator newly done in 'strcut'
|
4
|
+
|
5
|
+
alias :collection :__getobj__
|
6
|
+
alias :collection= :__setobj__
|
7
|
+
|
8
|
+
attr_accessor :page, :per_page
|
9
|
+
|
10
|
+
# TODO: should raise an error if has "limit" or "offset" values
|
11
|
+
def initialize collection, **options
|
12
|
+
raise if collection.values.keys.include_one? [:limit, :offset]
|
13
|
+
|
14
|
+
super collection
|
15
|
+
|
16
|
+
@page = options.fetch :page, 1
|
17
|
+
@per_page = options.fetch :per_page, RKit::Pagination.config.per_page[collection.klass]
|
18
|
+
end
|
19
|
+
|
20
|
+
def method_missing method_name, *args, &block
|
21
|
+
closure = super
|
22
|
+
|
23
|
+
case closure
|
24
|
+
when collection.class
|
25
|
+
self.collection = closure
|
26
|
+
self
|
27
|
+
else
|
28
|
+
closure
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
tap_attr_accessor :page
|
33
|
+
tap_attr_accessor :per_page
|
34
|
+
|
35
|
+
def total_pages
|
36
|
+
(collection.count / per_page.to_f).ceil
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
# TODO: limit & offset should raise a custom made error
|
41
|
+
def limit
|
42
|
+
raise
|
43
|
+
end
|
44
|
+
|
45
|
+
def offset
|
46
|
+
raise
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
include Enumerable
|
51
|
+
|
52
|
+
def limited_collection
|
53
|
+
collection
|
54
|
+
.limit(per_page)
|
55
|
+
.offset((page-1) * per_page)
|
56
|
+
end
|
57
|
+
|
58
|
+
def each &block
|
59
|
+
limited_collection.each &block
|
60
|
+
end
|
61
|
+
|
62
|
+
delegate :inspect, to: :limited_collection
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
def pages
|
67
|
+
(1..total_pages).map do |page|
|
68
|
+
RKit::Pagination::Base::Page.new self, page: page
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def previous_page
|
73
|
+
pages.find{ |page| page.page == (self.page - 1) } || pages.first
|
74
|
+
end
|
75
|
+
|
76
|
+
def next_page
|
77
|
+
pages.find{ |page| page.page == (self.page + 1) } || pages.last
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
extend RKit::Decoration::ActiveRecordExtend
|
83
|
+
acts_as_decorables do
|
84
|
+
|
85
|
+
include Enumerable
|
86
|
+
|
87
|
+
def each &block
|
88
|
+
limited_collection.decorate.each &block
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
def pagination_tag
|
93
|
+
view.content_tag :nav, class: :pagination do
|
94
|
+
[previous_page_tag, pages_tag, next_page_tag].reduce(:safe_concat)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def previous_page_tag
|
99
|
+
previous_page.decorate.page_tag "<"
|
100
|
+
end
|
101
|
+
|
102
|
+
def pages_tag
|
103
|
+
pages.map(&:decorate).map(&:page_tag).reduce(:safe_concat)
|
104
|
+
end
|
105
|
+
|
106
|
+
def next_page_tag
|
107
|
+
next_page.decorate.page_tag ">"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
# TODO: limited_collection, total_pages & pages can change, based on scopes or "page & per_page" config
|
115
|
+
# So we need a "@loaded" instance_variable
|
116
|
+
# that will have the same role as in AR::Relation
|
117
|
+
# -> either, can't scope if loaded
|
118
|
+
# -> either, empty the 3 "based on scope/config" variables
|
119
|
+
# --
|
120
|
+
# or, we don't memoize the 3 problematic vars
|
121
|
+
# wich will be my choice right now
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
# I need
|
127
|
+
# collection, records/instances/results/paginated_collection/limited_collection(as we use SQL 'limit')
|
128
|
+
# current page, total nb items, total pages
|
129
|
+
|
130
|
+
# calling could be : Articles.paginate(page: 2, per_page: 15).published
|
131
|
+
# note that published is _after_, but we still want to display 15 records
|
132
|
+
# Alternative call Articles.paginate.page(2).per_page(15)
|
133
|
+
# --
|
134
|
+
# the "per_page" will be settable either by an arg in the method,
|
135
|
+
# or by an option, per model, in the dsl (access by Article.all.instance_variable_get "@klass")
|
136
|
+
# or in the "pagination" config
|
137
|
+
# the "current page" will be 1 by default
|
138
|
+
|
139
|
+
# Raise an error if the collection has a "limit" or an "offset" (before or after pagination initialization)
|
140
|
+
# here is the pagination method scope : Paginator::Collection.new(scoped).limit(per).offset((page-1) * per)
|
141
|
+
|
142
|
+
|
143
|
+
# We also need a method "pagination_tag", in the view
|
144
|
+
# maybe use a decorator to do so.
|
145
|
+
|
146
|
+
# Define an option to use pagination based on instance, in this case, the "per_page" is set to one
|
147
|
+
# and the "pagination_tag" accept a block to display the "page number"
|
148
|
+
|
149
|
+
|
150
|
+
# Idea, the "current_page" info (to disable the current page link) could be an instance of a class (pagination::Page)
|
151
|
+
# so in that class, (or in her decorator), we could define the "link_to_page" method
|
152
|
+
# (and the "disabled_link_to", wich we will alias on self)
|
153
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class RKit::Pagination
|
2
|
+
|
3
|
+
dependency :decoration
|
4
|
+
dependency :utility
|
5
|
+
|
6
|
+
|
7
|
+
load_path __FILE__, 'base.rb'
|
8
|
+
load_path __FILE__, 'base/page.rb'
|
9
|
+
|
10
|
+
load_path __FILE__, 'active_record_extend.rb'
|
11
|
+
|
12
|
+
# TODO: add a "wrap" option to the config method, that will be used like this
|
13
|
+
# config :per_page, 16, wrap: ->(value){ Hash.new(value) }
|
14
|
+
# in this case: this allow the user to only set a default number
|
15
|
+
# but we, in the code, need a hash with that default value
|
16
|
+
# so, in our use, the value "16" will be wrapped in a hash, as the default value of this hash
|
17
|
+
# and to the user, he only see a default "per_page" number. (he does not want to know that we use a hash in fact)
|
18
|
+
# --
|
19
|
+
# To do this, I think that we will need a serious rework of the "configurer" core class
|
20
|
+
# and consider each config value to be an instance of a "config_value" class (under the configurer namespace)
|
21
|
+
# (we did it once for "loader", we can do it again!)
|
22
|
+
config :per_page, Hash.new(16)
|
23
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class CollectionDelegator < SimpleDelegator
|
2
|
+
|
3
|
+
alias :collection :__getobj__
|
4
|
+
alias :collection= :__setobj__
|
5
|
+
|
6
|
+
def method_missing method_name, *args, &block
|
7
|
+
closure = super
|
8
|
+
|
9
|
+
case closure
|
10
|
+
when collection.class
|
11
|
+
self.collection = closure
|
12
|
+
self
|
13
|
+
else
|
14
|
+
closure
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
include Enumerable
|
20
|
+
|
21
|
+
def each &block
|
22
|
+
collection.each &block
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class SafeStruct
|
2
|
+
|
3
|
+
def self.new allowed:, defaults: {}
|
4
|
+
Class.new do
|
5
|
+
@allowed = allowed.map(&:ivar)
|
6
|
+
@defaults = defaults
|
7
|
+
|
8
|
+
def self.allowed() @allowed end
|
9
|
+
def self.defaults() @defaults end
|
10
|
+
|
11
|
+
|
12
|
+
attr_reader *allowed, default: proc{ |_, name| defaults[name] }
|
13
|
+
attr_writer *allowed
|
14
|
+
|
15
|
+
def initialize **options
|
16
|
+
options.keys.each do |name|
|
17
|
+
instance_variable_set "@#{ name }", options[name]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def instance_variable_set name, value
|
22
|
+
super if __class__.allowed.include? name
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
def to_hash
|
27
|
+
instance_variables.reduce({}) do |options, name|
|
28
|
+
options[name.lvar] = instance_variable_get name
|
29
|
+
options
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class StrongStruct < SafeStruct
|
2
|
+
|
3
|
+
def self.new allowed:, defaults: {}
|
4
|
+
super.tap do |klass|
|
5
|
+
|
6
|
+
klass.send :define_method, :instance_variable_set, ->(name, value) do
|
7
|
+
if __class__.allowed.include? name
|
8
|
+
super(name, value)
|
9
|
+
else
|
10
|
+
raise NameError.new("unsafe key `#{ name }' for #{ __class__ }")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
data/lib/r_kit/struct.rb
ADDED
@@ -1,7 +1,16 @@
|
|
1
1
|
class Array
|
2
2
|
|
3
3
|
def include_all? values
|
4
|
-
(self & Array(values)).size == size
|
4
|
+
(self & Array(values)).size == Array(values).size
|
5
|
+
end
|
6
|
+
|
7
|
+
def include_one? values
|
8
|
+
(self & Array(values)).size > 0
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
def rotate_left
|
13
|
+
push shift
|
5
14
|
end
|
6
15
|
|
7
16
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class Module
|
2
|
+
|
3
|
+
delegate :underscore, :demodulize,
|
4
|
+
to: :name
|
5
|
+
|
6
|
+
|
7
|
+
alias :basic_attr_reader :attr_reader
|
8
|
+
def attr_reader *names, default: nil
|
9
|
+
if default
|
10
|
+
names.each do |name|
|
11
|
+
define_method name do
|
12
|
+
instance_variable_get("@#{ name }") ||
|
13
|
+
instance_variable_set("@#{ name }", default.is_a?(Proc) ? default.call(self, name) : default)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
else
|
17
|
+
basic_attr_reader *names
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
# TODO: these writter are called like ".name(value)" to set and return self
|
23
|
+
# or like ".name" to read
|
24
|
+
# TODO: to be used in 'pagination', these need an "after" callback (to set @limited_collection to nil)
|
25
|
+
# TODO: and to be used in 'grid (base.rb, binding_accessor)', these need an "to" delegation object
|
26
|
+
def tap_attr_accessor *names
|
27
|
+
names.each do |name|
|
28
|
+
define_method name, ->(value = nil) do
|
29
|
+
if value
|
30
|
+
instance_variable_set "@#{ name }", value
|
31
|
+
self
|
32
|
+
else
|
33
|
+
instance_variable_get "@#{ name }"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
def singleton_attr_reader *args, **options
|
41
|
+
singleton_class.send :attr_reader, *args, **options
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class Object
|
2
|
+
|
3
|
+
# TODO: I do not know is this is a good idea or a terrible idea
|
4
|
+
# But in either cases, the method names are probably bad, cause too generic (I know it's the hole point)
|
5
|
+
# And may collapse with subclasses
|
6
|
+
|
7
|
+
# TODO: And btw, it is not even used in rkit, as it doens not fullfiled our needs
|
8
|
+
|
9
|
+
# TODO: return self if statement (or block), else, return "value"
|
10
|
+
def fetch statement = nil, value = nil, &block
|
11
|
+
state(statement, &block) ? self : value
|
12
|
+
end
|
13
|
+
|
14
|
+
def reverse_fetch statement = nil, value = nil, &block
|
15
|
+
!state(statement, &block) ? self : value
|
16
|
+
end
|
17
|
+
|
18
|
+
def state statement = nil, &block
|
19
|
+
if statement
|
20
|
+
case self
|
21
|
+
when statement
|
22
|
+
true
|
23
|
+
else
|
24
|
+
false
|
25
|
+
end
|
26
|
+
elsif block_given?
|
27
|
+
!!block.call(self)
|
28
|
+
else
|
29
|
+
raise ArgumentError, 'Must send either "statement" or "&block" argument.'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class Proc
|
2
|
+
|
3
|
+
def extract_parameters *args, **options, &block
|
4
|
+
before_rest = true
|
5
|
+
|
6
|
+
parameters.reduce({}) do |params, (type, name)|
|
7
|
+
value = case type
|
8
|
+
when :opt
|
9
|
+
# TODO: default_value? -> this will be set to nil, must define a warning, or raise an error
|
10
|
+
# TODO: this is a problem with declaration like: (arg1, arg2 = nil, *args, arg4)
|
11
|
+
# we can do smthng like:
|
12
|
+
# first proccess 'block'
|
13
|
+
# then process 'options'
|
14
|
+
# then process 'args'
|
15
|
+
# -> first process all req at the begining
|
16
|
+
# -> then process all req at the end
|
17
|
+
# -> then process all opt at the begining
|
18
|
+
# -> then process rest
|
19
|
+
# TODO: or, find thehow to access the default value
|
20
|
+
before_rest ? args.shift : args.pop
|
21
|
+
when :req
|
22
|
+
before_rest ? args.shift : args.pop
|
23
|
+
when :rest
|
24
|
+
before_rest = false
|
25
|
+
args
|
26
|
+
when :key
|
27
|
+
options.delete name # TODO: default_value? -> this will be set to nil
|
28
|
+
when :keyreq
|
29
|
+
options.delete name
|
30
|
+
when :keyrest
|
31
|
+
options
|
32
|
+
when :block
|
33
|
+
block
|
34
|
+
end
|
35
|
+
|
36
|
+
params[name] = value
|
37
|
+
params
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class SimpleDelegator
|
2
|
+
|
3
|
+
# TODO: get some methods from decorator, like "class", "==="
|
4
|
+
# TODO: and add some custom like "inspect"
|
5
|
+
|
6
|
+
def self.getobj_attr_reader *names
|
7
|
+
names.each do |name|
|
8
|
+
define_method name, ->(){ __getobj__.instance_variable_get(name.ivar) }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
data/lib/r_kit/utility.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
class RKit::Utility
|
2
|
-
|
2
|
+
# TODO: this 'dir' line could be a utility extend
|
3
|
+
UTILITIES = Dir[File.join(File.dirname(__FILE__), "utility", "*.rb")].map do |file|
|
4
|
+
File.basename file, "_extend.rb"
|
5
|
+
end
|
3
6
|
|
4
7
|
|
5
8
|
config :extends, true
|
data/lib/r_kit/version.rb
CHANGED
data/lib/r_kit.rb
CHANGED
@@ -6,7 +6,16 @@ module RKit
|
|
6
6
|
# some kind of "--help" of unix commands
|
7
7
|
end
|
8
8
|
|
9
|
+
delegate :loaded, to: 'RKit::Core::Loader'
|
9
10
|
|
11
|
+
|
12
|
+
# TODO: add a load priority order based on dependencies
|
13
|
+
# so if :X depend on :Y
|
14
|
+
# and I load like ".load :x, :y"
|
15
|
+
# it does not trigger the warn msg of dependency cause we first try to load :x, and :y is still not loaded
|
16
|
+
# instead, we detect that dependencie, and reorder the loading (so we just "require the core descriptive file")
|
17
|
+
# to put :y before :x
|
18
|
+
# (double profit, this will keep config on :y, that iserwise would be lost)
|
10
19
|
def load *services
|
11
20
|
load_service_from Array.wrap(services)
|
12
21
|
end
|
data/r_kit.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |gem|
|
|
9
9
|
gem.authors = ["Thomas Petrachi"]
|
10
10
|
gem.email = ["thomas.petrachi@vodeclic.com"]
|
11
11
|
gem.description = %q{Rails tools box}
|
12
|
-
gem.summary = %q{Rails tools box : Core extentions, Pagination,
|
12
|
+
gem.summary = %q{Rails tools box : Core extentions, Pagination, Decoration, CSS, Javascript, and others comming. A flexible gem that hold a number of basics services for rails applications.}
|
13
13
|
gem.homepage = "https://github.com/petrachi/r_kit"
|
14
14
|
gem.license = 'MIT'
|
15
15
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: r_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Petrachi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Rails tools box
|
14
14
|
email:
|
@@ -25,15 +25,20 @@ files:
|
|
25
25
|
- lib/r_kit.rb
|
26
26
|
- lib/r_kit/active_record_utility.rb
|
27
27
|
- lib/r_kit/active_record_utility/active_record_extend.rb
|
28
|
+
- lib/r_kit/active_record_utility/base.rb
|
29
|
+
- lib/r_kit/active_record_utility/base/pool.rb
|
30
|
+
- lib/r_kit/active_record_utility/base/publisher.rb
|
31
|
+
- lib/r_kit/active_record_utility/base/series.rb
|
32
|
+
- lib/r_kit/active_record_utility/base/tag.rb
|
28
33
|
- lib/r_kit/active_record_utility/database_schema_error.rb
|
29
|
-
- lib/r_kit/active_record_utility/utility.rb
|
30
|
-
- lib/r_kit/active_record_utility/utility/tag.rb
|
31
34
|
- lib/r_kit/backtrace.rb
|
32
35
|
- lib/r_kit/backtrace/kernel_extend.rb
|
33
36
|
- lib/r_kit/core.rb
|
34
37
|
- lib/r_kit/core/configurer.rb
|
35
38
|
- lib/r_kit/core/engineer.rb
|
36
39
|
- lib/r_kit/core/loader.rb
|
40
|
+
- lib/r_kit/core/loader/dependency.rb
|
41
|
+
- lib/r_kit/core/loader/load_path.rb
|
37
42
|
- lib/r_kit/css.rb
|
38
43
|
- lib/r_kit/css/lib/assets/stylesheets/r_kit.scss
|
39
44
|
- lib/r_kit/css/lib/assets/stylesheets/r_kit/base.scss
|
@@ -47,6 +52,7 @@ files:
|
|
47
52
|
- lib/r_kit/css/lib/assets/stylesheets/r_kit/base/typography/titles.scss
|
48
53
|
- lib/r_kit/css/lib/assets/stylesheets/r_kit/components.scss
|
49
54
|
- lib/r_kit/css/lib/assets/stylesheets/r_kit/components/btn.scss
|
55
|
+
- lib/r_kit/css/lib/assets/stylesheets/r_kit/components/pagination.scss
|
50
56
|
- lib/r_kit/css/lib/assets/stylesheets/r_kit/mixins.scss
|
51
57
|
- lib/r_kit/css/lib/assets/stylesheets/r_kit/mixins/animation.scss
|
52
58
|
- lib/r_kit/css/lib/assets/stylesheets/r_kit/mixins/box-shadows.scss
|
@@ -58,10 +64,22 @@ files:
|
|
58
64
|
- lib/r_kit/css/lib/assets/stylesheets/r_kit/variables.scss
|
59
65
|
- lib/r_kit/css/lib/assets/stylesheets/r_kit/variables/colors.scss
|
60
66
|
- lib/r_kit/css/sass_extend.rb
|
61
|
-
- lib/r_kit/
|
62
|
-
- lib/r_kit/
|
63
|
-
- lib/r_kit/
|
64
|
-
- lib/r_kit/
|
67
|
+
- lib/r_kit/decoration.rb
|
68
|
+
- lib/r_kit/decoration/action_view_base_extend.rb
|
69
|
+
- lib/r_kit/decoration/active_record_extend.rb
|
70
|
+
- lib/r_kit/decoration/base.rb
|
71
|
+
- lib/r_kit/decoration/class.rb
|
72
|
+
- lib/r_kit/dsl.rb
|
73
|
+
- lib/r_kit/dsl/base.rb
|
74
|
+
- lib/r_kit/dsl/base/local_params.rb
|
75
|
+
- lib/r_kit/dsl/base/params.rb
|
76
|
+
- lib/r_kit/dsl/base/readonly.rb
|
77
|
+
- lib/r_kit/dsl/base/thrust.rb
|
78
|
+
- lib/r_kit/dsl/dsl_definition_error.rb
|
79
|
+
- lib/r_kit/dsl/dsl_extend.rb
|
80
|
+
- lib/r_kit/dsl/dsl_standard_error.rb
|
81
|
+
- lib/r_kit/dsl/module_extend.rb
|
82
|
+
- lib/r_kit/dsl/no_lambda_error.rb
|
65
83
|
- lib/r_kit/grid.rb
|
66
84
|
- lib/r_kit/grid/base.rb
|
67
85
|
- lib/r_kit/grid/base/grid.rb
|
@@ -75,10 +93,24 @@ files:
|
|
75
93
|
- lib/r_kit/grid/lib/assets/stylesheets/r_kit/mixins/gris.scss
|
76
94
|
- lib/r_kit/grid/lib/assets/stylesheets/r_kit/variables/grid.scss
|
77
95
|
- lib/r_kit/grid/sass_extend.rb
|
96
|
+
- lib/r_kit/pagination.rb
|
97
|
+
- lib/r_kit/pagination/active_record_extend.rb
|
98
|
+
- lib/r_kit/pagination/base.rb
|
99
|
+
- lib/r_kit/pagination/base/page.rb
|
100
|
+
- lib/r_kit/struct.rb
|
101
|
+
- lib/r_kit/struct/collection_delegator.rb
|
102
|
+
- lib/r_kit/struct/safe_struct.rb
|
103
|
+
- lib/r_kit/struct/strong_struct.rb
|
78
104
|
- lib/r_kit/utility.rb
|
105
|
+
- lib/r_kit/utility/active_record_extend.rb
|
79
106
|
- lib/r_kit/utility/array_extend.rb
|
80
107
|
- lib/r_kit/utility/hash_extend.rb
|
81
108
|
- lib/r_kit/utility/kernel_extend.rb
|
109
|
+
- lib/r_kit/utility/module_extend.rb
|
110
|
+
- lib/r_kit/utility/object_extend.rb
|
111
|
+
- lib/r_kit/utility/proc_extend.rb
|
112
|
+
- lib/r_kit/utility/simple_delegator_extend.rb
|
113
|
+
- lib/r_kit/utility/string_extend.rb
|
82
114
|
- lib/r_kit/utility/symbol_extend.rb
|
83
115
|
- lib/r_kit/version.rb
|
84
116
|
- r_kit.gemspec
|
@@ -105,7 +137,7 @@ rubyforge_project:
|
|
105
137
|
rubygems_version: 2.3.0
|
106
138
|
signing_key:
|
107
139
|
specification_version: 4
|
108
|
-
summary: 'Rails tools box : Core extentions, Pagination,
|
140
|
+
summary: 'Rails tools box : Core extentions, Pagination, Decoration, CSS, Javascript,
|
109
141
|
and others comming. A flexible gem that hold a number of basics services for rails
|
110
142
|
applications.'
|
111
143
|
test_files: []
|
@@ -1,14 +0,0 @@
|
|
1
|
-
class RKit::ActiveRecordUtility::Utility::Tag < RKit::ActiveRecordUtility::Utility
|
2
|
-
|
3
|
-
def can_interfere?
|
4
|
-
base.table_exists? && base.column_names.include?("tag")
|
5
|
-
end
|
6
|
-
|
7
|
-
def interfere!
|
8
|
-
base.validates_presence_of :tag
|
9
|
-
base.validates_uniqueness_of :tag
|
10
|
-
|
11
|
-
base.send :define_method, :to_param, ->{ tag }
|
12
|
-
base.send :define_singleton_method, :tagged, ->(tag){ find_by tag: tag }
|
13
|
-
end
|
14
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
class RKit::ActiveRecordUtility::Utility
|
2
|
-
|
3
|
-
attr_accessor :base, :method
|
4
|
-
|
5
|
-
def initialize base, method:;
|
6
|
-
@base = base
|
7
|
-
@method = method
|
8
|
-
end
|
9
|
-
|
10
|
-
|
11
|
-
def interfere
|
12
|
-
if can_interfere?
|
13
|
-
interfere!
|
14
|
-
interfered!
|
15
|
-
else
|
16
|
-
raise DatabaseSchemaError.new(base, method: method) unless running_script? /^rake db:/
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
# TODO: private/protected ?
|
22
|
-
def can_interfere?
|
23
|
-
raise NotImplementedError, 'Subclasses must implement this method'
|
24
|
-
end
|
25
|
-
|
26
|
-
def interfere!
|
27
|
-
raise NotImplementedError, 'Subclasses must implement this method'
|
28
|
-
end
|
29
|
-
|
30
|
-
def interfered!
|
31
|
-
__class__.interfered base
|
32
|
-
end
|
33
|
-
|
34
|
-
|
35
|
-
module SingletonInheritance
|
36
|
-
def self.extended base
|
37
|
-
base.instance_variable_set :@extended, []
|
38
|
-
end
|
39
|
-
|
40
|
-
def interfered? base
|
41
|
-
@extended.include? base
|
42
|
-
end
|
43
|
-
|
44
|
-
def interfered base
|
45
|
-
@extended << base
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.inherited(subclass)
|
50
|
-
subclass.extend SingletonInheritance
|
51
|
-
super
|
52
|
-
end
|
53
|
-
end
|