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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/lib/r_kit/active_record_utility/active_record_extend.rb +31 -4
  3. data/lib/r_kit/active_record_utility/base/pool.rb +29 -0
  4. data/lib/r_kit/active_record_utility/base/publisher.rb +28 -0
  5. data/lib/r_kit/active_record_utility/base/series.rb +141 -0
  6. data/lib/r_kit/active_record_utility/base/tag.rb +17 -0
  7. data/lib/r_kit/active_record_utility/base.rb +70 -0
  8. data/lib/r_kit/active_record_utility/database_schema_error.rb +4 -4
  9. data/lib/r_kit/active_record_utility.rb +12 -3
  10. data/lib/r_kit/backtrace.rb +4 -0
  11. data/lib/r_kit/core/loader/dependency.rb +26 -0
  12. data/lib/r_kit/core/loader/load_path.rb +58 -0
  13. data/lib/r_kit/core/loader.rb +3 -89
  14. data/lib/r_kit/core.rb +10 -0
  15. data/lib/r_kit/css/lib/assets/stylesheets/r_kit/components/btn.scss +8 -0
  16. data/lib/r_kit/css/lib/assets/stylesheets/r_kit/components/pagination.scss +3 -0
  17. data/lib/r_kit/css/lib/assets/stylesheets/r_kit/components.scss +1 -0
  18. data/lib/r_kit/css/lib/assets/stylesheets/r_kit/variables/colors.scss +1 -1
  19. data/lib/r_kit/css.rb +12 -5
  20. data/lib/r_kit/{decorator → decoration}/action_view_base_extend.rb +2 -2
  21. data/lib/r_kit/{decorator → decoration}/active_record_extend.rb +16 -9
  22. data/lib/r_kit/decoration/base.rb +35 -0
  23. data/lib/r_kit/decoration/class.rb +22 -0
  24. data/lib/r_kit/decoration.rb +19 -0
  25. data/lib/r_kit/dsl/base/local_params.rb +13 -0
  26. data/lib/r_kit/dsl/base/params.rb +38 -0
  27. data/lib/r_kit/dsl/base/readonly.rb +16 -0
  28. data/lib/r_kit/dsl/base/thrust.rb +67 -0
  29. data/lib/r_kit/dsl/base.rb +68 -0
  30. data/lib/r_kit/dsl/dsl_definition_error.rb +10 -0
  31. data/lib/r_kit/dsl/dsl_extend.rb +10 -0
  32. data/lib/r_kit/dsl/dsl_standard_error.rb +9 -0
  33. data/lib/r_kit/dsl/module_extend.rb +22 -0
  34. data/lib/r_kit/dsl/no_lambda_error.rb +10 -0
  35. data/lib/r_kit/dsl.rb +21 -0
  36. data/lib/r_kit/pagination/active_record_extend.rb +23 -0
  37. data/lib/r_kit/pagination/base/page.rb +53 -0
  38. data/lib/r_kit/pagination/base.rb +153 -0
  39. data/lib/r_kit/pagination.rb +23 -0
  40. data/lib/r_kit/struct/collection_delegator.rb +24 -0
  41. data/lib/r_kit/struct/safe_struct.rb +35 -0
  42. data/lib/r_kit/struct/strong_struct.rb +17 -0
  43. data/lib/r_kit/struct.rb +8 -0
  44. data/lib/r_kit/utility/active_record_extend.rb +7 -0
  45. data/lib/r_kit/utility/array_extend.rb +10 -1
  46. data/lib/r_kit/utility/module_extend.rb +43 -0
  47. data/lib/r_kit/utility/object_extend.rb +33 -0
  48. data/lib/r_kit/utility/proc_extend.rb +41 -0
  49. data/lib/r_kit/utility/simple_delegator_extend.rb +12 -0
  50. data/lib/r_kit/utility/string_extend.rb +20 -0
  51. data/lib/r_kit/utility/symbol_extend.rb +1 -1
  52. data/lib/r_kit/utility.rb +4 -1
  53. data/lib/r_kit/version.rb +1 -1
  54. data/lib/r_kit.rb +9 -0
  55. data/r_kit.gemspec +1 -1
  56. metadata +41 -9
  57. data/lib/r_kit/active_record_utility/utility/tag.rb +0 -14
  58. data/lib/r_kit/active_record_utility/utility.rb +0 -53
  59. data/lib/r_kit/decorator/base.rb +0 -34
  60. data/lib/r_kit/decorator.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d98f71dcaea265f716ff792fad147279f44b4287
4
- data.tar.gz: 217d736a30a4f845b3d976b1c2c2ca1fbbb7df6b
3
+ metadata.gz: 26da20a8c0d5ca239f0b25a5bbd39a3f87a3a115
4
+ data.tar.gz: 20d9c76c01b2a7fbde0642e280c5ccbdf18fc77a
5
5
  SHA512:
6
- metadata.gz: 1ecb5dd37f794116e6128d7376b8ede61fb06e6d1f4cb41aa4285d894581d472cf0655477108841299b37a936bd2eadcf001f08eb46b7eb104002b1ffe3e6782
7
- data.tar.gz: f5da4ecd90a62e5256d531a2a5fad1b543478bfb7a0c8116c12624af626a19258ea773176df1ae401e61d081785ea21c5543c5cca2fbfc858b143f2e7d2e2a7f
6
+ metadata.gz: 9eb566e05f243773a8b3e3b5959510b3ea8ca9ca901843d22d19ec00200d984c198c571bfffdfe0b4c9ead1144e88d46ad00b3dd655b55778275e7c6e446c8fc
7
+ data.tar.gz: 24aa528db16c96d5b1cb6b8bc5989c498a4a3b60ab05775cfc231cbac63196f3fe72894ec47411d576f6c34e5293882eb096fc833f4edae86962b2f4c57b5fb2
@@ -1,18 +1,45 @@
1
1
  module RKit::ActiveRecordUtility::ActiveRecordExtend
2
2
 
3
3
  RKit::ActiveRecordUtility::UTILITIES.each do |utility, method_name|
4
-
5
- define_method method_name do
6
- RKit::ActiveRecordUtility::Utility.const_get(utility.classify).new(self, method: __method__).interfere
4
+ define_method method_name, ->(*args) do
5
+ RKit::ActiveRecordUtility::Base.const_get(utility.classify).new(self, method_name: __method__).interfere *args
7
6
  end
7
+ end
8
8
 
9
+
10
+ def interferences_options_set utility, **options
11
+ instance_variable_set "@_active_record_utilities_self", utility
12
+ instance_variable_set "@_active_record_utilities_#{ utility }_options", options
9
13
  end
10
14
 
15
+ def interferences_options_get utility = @_active_record_utilities_self
16
+ instance_variable_get "@_active_record_utilities_#{ utility }_options"
17
+ end
18
+
19
+
11
20
  def interfered? utility
12
- RKit::ActiveRecordUtility::Utility.const_get(utility.classify).interfered? model_klass
21
+ RKit::ActiveRecordUtility::Base.const_get(utility.classify).interfered? self
13
22
  rescue NameError
14
23
  false
15
24
  end
16
25
 
26
+
27
+ def collection_finder **options
28
+ collection = all
29
+ collection = collection.pool options[:pool] if interfered? :pool
30
+ collection = collection.published.publication_desc if interfered? :publisher
31
+ collection = collection.series options[:series] if interfered? :series
32
+ collection
33
+ end
34
+
35
+ def instance_finder **options
36
+ if interfered? :tag
37
+ tagged options[:tag]
38
+ else
39
+ find_by id: options[:id]
40
+ end
41
+ end
42
+
43
+
17
44
  ActiveRecord::Base.extend self
18
45
  end
@@ -0,0 +1,29 @@
1
+ class RKit::ActiveRecordUtility::Base::Pool < RKit::ActiveRecordUtility::Base
2
+
3
+ instance_interferences do
4
+ inclusion_in = interferences_options_get.fetch :in
5
+
6
+ validates_presence_of :pool
7
+ validates_inclusion_of :pool, in: inclusion_in if inclusion_in
8
+
9
+ scope :pool, ->(pool){ pool && where(pool: pool) }
10
+ scope :pools, ->{ group(:pool).pluck(:pool) }
11
+ end
12
+
13
+ decorator_interferences do
14
+ def pool_url
15
+ view.url_for [__class__, pool: pool]
16
+ end
17
+
18
+ def link_to_pool
19
+ view.link_to pool, pool_url, class: :btn
20
+ end
21
+ end
22
+
23
+
24
+ def can_interfere?
25
+ base.table_exists? &&
26
+ base.column_names.include?("pool") &&
27
+ base.columns_hash["pool"].type == :string
28
+ end
29
+ end
@@ -0,0 +1,28 @@
1
+ class RKit::ActiveRecordUtility::Base::Publisher < RKit::ActiveRecordUtility::Base
2
+
3
+ instance_interferences do
4
+ before_validation do
5
+ self.published_at = Time.now if !published_at && published
6
+ end
7
+
8
+ validates_presence_of :published_at, if: :published
9
+
10
+ scope :published, ->{ where(published: true) }
11
+ scope :publication_asc, ->{ order("published_at ASC") }
12
+ scope :publication_desc, ->{ order("published_at DESC") }
13
+ end
14
+
15
+ decorator_interferences do
16
+ def published_at
17
+ super().strftime "%a %e %b %Y"
18
+ end
19
+ end
20
+
21
+
22
+ def can_interfere?
23
+ base.table_exists? &&
24
+ base.column_names.include_all?(["published", "published_at"]) &&
25
+ base.columns_hash["published"].type == :boolean &&
26
+ base.columns_hash["published_at"].type == :datetime
27
+ end
28
+ end
@@ -0,0 +1,141 @@
1
+ class RKit::ActiveRecordUtility::Base::Series < RKit::ActiveRecordUtility::Base
2
+
3
+ instance_interferences do
4
+ has_one :followed, class_name: name, foreign_key: "following_id"
5
+ belongs_to :following, class_name: name
6
+
7
+ before_validation if: :following_id_changed? do
8
+ self.title ||= following.title if __class__.column_exists? "title"
9
+ self.series = following.series.name
10
+ end
11
+
12
+
13
+
14
+
15
+ # TODO: after save, if series change, all obj in series change
16
+
17
+ # TODO: we can add a conditionnal validation on 'inclusion_in' (like pool)
18
+
19
+ # TODO: validates presence of serie also on the followed record
20
+
21
+ # TODO: validates a record can only have one follower (or is it hadled by the "has_one" relation directly ?)
22
+
23
+ validates_presence_of :series, if: :following
24
+ validates_uniqueness_of :following_id, if: :following
25
+
26
+ scope :series, ->(series){ series && where(series: series) }
27
+
28
+ # TODO: adapter le scope pour intégrer les published (si interfered)
29
+ # je laisse en commentaire parceque j'aime pas le nom du scope,
30
+ # et j'ai pas d'idée là maintenant (à part 'pilotes', ou 'firsts')
31
+ # scope :firsts_of_series, ->{ where(following_id: nil) }
32
+
33
+ # TODO: scope pour l'ordre dans une serie (pour le decorator pagination_tag)
34
+
35
+ @@_active_record_utilities_series = {}
36
+ end
37
+
38
+ class_interferences do
39
+ def series
40
+ @@_active_record_utilities_series[read_attribute(:series)] ||= series_struct if read_attribute(:series)
41
+ # TODO: if series cg-hanges, or new element added, series must be re-calculated
42
+ # maybe pre-calc this in after save
43
+ end
44
+
45
+ def series_struct
46
+ OpenStruct.new.tap do |series_struct|
47
+ series_struct.name = read_attribute :series
48
+ series_struct.collection = __class__.series series_struct.name
49
+ series_struct.size = series_struct.collection.count
50
+ end
51
+ end
52
+
53
+ def position_in_series
54
+ following ? following.send(__method__) + 1 : 1
55
+ end
56
+ end
57
+
58
+ decorator_interferences do
59
+ after_initialize do
60
+ # TODO: this can't stay this way, if "serie" is pre-calculated
61
+ # & shared accros instances & kept in memory (class variable)
62
+
63
+ # series.collection = series.collection.decorate if series
64
+ # TODO: infinite loop, need a "unless" on the after_init, or smthng even more smart
65
+ # ps: i'm not happy with this current decorate
66
+ end
67
+
68
+ def series_url
69
+ view.url_for [__class__, series: series.name]
70
+ end
71
+
72
+ def link_to_series
73
+ view.link_to series.name, series_url, class: :btn
74
+ end
75
+
76
+ if decorated_klass.columns_hash["title"]
77
+ # I don't get this "showcase thing", we can delete that and just look into the view for the params
78
+ # Or in the collection, to see if the scope is applied (second solution is better)
79
+ def series_title
80
+ "#{ __getobj__.title } <small><i class='no-warp'>(vol #{ position_in_series })</i></small>".html_safe
81
+ end
82
+
83
+ def showcase_title
84
+ "#{ __getobj__.title } <small><i class='no-warp'>(#{ series.size } vols)</i></small>".html_safe
85
+ end
86
+
87
+ def title options = {}
88
+ if series and false # and showcase
89
+ showcase_title
90
+ elsif series
91
+ series_title
92
+ else
93
+ super()
94
+ end
95
+ end
96
+ end
97
+
98
+ # TODO: put default locales keys ("vol" is hard coded here) in cluster
99
+ # same for the 'title' methods before
100
+ # TODO: the "disabled" link for self doesn't work yet
101
+ # in fact, the collection does not use the "self" object, so the singleton_class is lost
102
+ def pagination_tag
103
+ disable_pagination_link self
104
+ series.collection.decorate.map(&:pagination_link_to).reduce(:safe_concat)
105
+ end
106
+
107
+ def pagination_link_to
108
+ view.link_to "vol #{ position_in_series }", self, class: :btn
109
+ end
110
+
111
+ def disabled_pagination_link_to
112
+ view.content_tag :span, "vol #{ position_in_series }", class: :'btn-disabled'
113
+ end
114
+
115
+ def disable_pagination_link seriable_instance
116
+ class << seriable_instance
117
+ alias :pagination_link_to :disabled_pagination_link_to
118
+ end
119
+ end
120
+
121
+
122
+ # TODO: put default locales keys (:previous, :next) in cluster
123
+ def navigation_tag
124
+ view.content_tag :p do
125
+ safe_buffer = ActiveSupport::SafeBuffer.new
126
+ safe_buffer += view.link_to view.t(:previous), following, class: :btn if following
127
+ safe_buffer += " "
128
+ safe_buffer += view.link_to view.t(:next), followed, class: :btn if followed
129
+ safe_buffer
130
+ end
131
+ end
132
+ end
133
+
134
+
135
+ def can_interfere?
136
+ base.table_exists? &&
137
+ base.column_names.include_all?(["following_id", "series"]) &&
138
+ base.columns_hash["following_id"].type == :integer &&
139
+ base.columns_hash["series"].type == :string
140
+ end
141
+ end
@@ -0,0 +1,17 @@
1
+ class RKit::ActiveRecordUtility::Base::Tag < RKit::ActiveRecordUtility::Base
2
+
3
+ instance_interferences do
4
+ validates_presence_of :tag
5
+ validates_uniqueness_of :tag
6
+
7
+ def tagged(tag) find_by tag: tag end
8
+ end
9
+
10
+ class_interferences{ def to_param() tag end }
11
+
12
+ def can_interfere?
13
+ base.table_exists? &&
14
+ base.column_names.include?("tag") &&
15
+ base.columns_hash["tag"].type == :string
16
+ end
17
+ end
@@ -0,0 +1,70 @@
1
+ class RKit::ActiveRecordUtility::Base
2
+
3
+ attr_accessor :base, :method_name
4
+
5
+ def initialize base, method_name:;
6
+ @base = base
7
+ @method_name = method_name
8
+ end
9
+
10
+ def to_s
11
+ __class__.demodulize.underscore
12
+ end
13
+
14
+
15
+ def interfere *args
16
+ if can_interfere?
17
+ interfere! *args
18
+ interfered!
19
+ else
20
+ raise DatabaseSchemaError.new(base, method_name: method_name) unless running_script? /^rake db:/
21
+ end
22
+ end
23
+
24
+
25
+ # TODO: private/protected ?
26
+ def can_interfere?
27
+ raise NotImplementedError, 'Subclasses must implement this method'
28
+ end
29
+
30
+ def interfere! **options
31
+ base.interferences_options_set self, **options
32
+
33
+ base.instance_eval &instance_interferences
34
+ base.class_eval &class_interferences
35
+ base.decorator_klass.class_eval &decorator_interferences if base.decorator_klass
36
+ end
37
+
38
+ interferences = %i{instance class decorator}
39
+ interferences.each do |interference|
40
+ define_method "#{ interference }_interferences" do
41
+ __class__.send "#{ interference }_interferences_proc"
42
+ end
43
+
44
+ singleton_class.send :attr_reader, "#{ interference }_interferences_proc", default: proc{ Proc.new{} }
45
+
46
+ define_singleton_method "#{ interference }_interferences", ->(&block) do
47
+ instance_variable_set "@#{ interference }_interferences_proc", block
48
+ end
49
+ end
50
+
51
+
52
+ def interfered!
53
+ __class__.interfered base
54
+ end
55
+
56
+ class << self
57
+ def interfered? base
58
+ @interfered.include? base
59
+ end
60
+
61
+ def interfered base
62
+ @interfered << base
63
+ end
64
+
65
+ def inherited subclass
66
+ subclass.instance_variable_set :@interfered, []
67
+ super
68
+ end
69
+ end
70
+ end
@@ -1,9 +1,9 @@
1
1
  class DatabaseSchemaError < StandardError
2
- def initialize base, method:;
2
+ def initialize base, method_name:;
3
3
  super %Q{
4
- WARNING - You tried to use the '#{ method }' DSL on '#{ base }',
5
- You may want to create a 'tag' column first.
6
- To do so, please refer to the 'RKit::ActiveRecordUtlity' documentation.
4
+ WARNING - You tried to use the '#{ method_name }' DSL on '#{ base }',
5
+ Your database is not ready for it yet,
6
+ You can refer to the 'RKit::ActiveRecordUtlity' documentation.
7
7
  }
8
8
  end
9
9
  end
@@ -1,15 +1,24 @@
1
1
  class RKit::ActiveRecordUtility
2
2
  dependency :utilities
3
3
 
4
- load_path __FILE__, 'active_record_extend.rb'
4
+ load_path __FILE__, 'base.rb'
5
5
  load_path __FILE__, 'database_schema_error.rb'
6
- load_path __FILE__, 'utility.rb'
6
+
7
+ load_path __FILE__, 'active_record_extend.rb'
8
+
7
9
 
8
10
  UTILITIES = {
11
+ pool: :acts_as_poolables,
12
+ publisher: :acts_as_publishables,
13
+ series: :acts_as_seriables,
9
14
  tag: :acts_as_taggables,
10
15
  }
11
16
 
17
+
18
+ config :all, true
19
+
12
20
  UTILITIES.each do |utility, _|
13
- load_path __FILE__, "utility/#{ utility }.rb"
21
+ alias_config utility, :all
22
+ load_path __FILE__, "base/#{ utility }.rb", if: utility
14
23
  end
15
24
  end
@@ -1,5 +1,9 @@
1
1
  class RKit::Backtrace
2
2
 
3
+ # TODO: continuation is problematic with views
4
+ # we may want to put a warning if the gem 'binding_of_caller' is not included
5
+ # or we could directly include the C enxtention, with permission of the owner of the gem
6
+
3
7
  load_path __FILE__, 'kernel_extend.rb'
4
8
 
5
9
  end
@@ -0,0 +1,26 @@
1
+ class Dependency
2
+ attr_accessor :base, :service
3
+
4
+ def initialize base, service:;
5
+ @base = base
6
+ @service = RKit.const_get(service.to_s.classify)
7
+ end
8
+
9
+ def should_load?
10
+ !service.loaded?
11
+ end
12
+
13
+ # TODO: The dependency warning msg should be in service object
14
+ def dependency!
15
+ warn %Q{
16
+ WARNING - #{ service.name } was implicitly loaded,
17
+ As a dependency for #{ base }.
18
+ You may want to load it explicitly.
19
+ }
20
+ service.load
21
+ end
22
+
23
+ def load!
24
+ dependency! if should_load?
25
+ end
26
+ end
@@ -0,0 +1,58 @@
1
+ class LoadPath
2
+ attr_accessor :_base,
3
+ :file, :path, :priority, :conditions
4
+
5
+ def initialize base, file:, path:, priority: 1/0.0
6
+ @_base = base
7
+
8
+ @file = file
9
+ @path = path
10
+ @priority = priority
11
+ end
12
+
13
+
14
+ def extname
15
+ File.extname(file)
16
+ end
17
+
18
+ def fullpath
19
+ file.chomp! File.extname(file)
20
+ File.expand_path(path, file)
21
+ end
22
+
23
+
24
+ def should_load?
25
+ conditions.inject(true) do |should_load, (statement, condition)|
26
+ should_load && exec_condition(statement, condition)
27
+ end
28
+ end
29
+
30
+ def load_path!
31
+ require fullpath
32
+ end
33
+
34
+ def load!
35
+ load_path! if should_load?
36
+ end
37
+
38
+
39
+ def exec_condition statement, condition
40
+ condition = case condition
41
+ when Proc
42
+ condition.call _base::CONFIG
43
+ when Symbol, String
44
+ _base::CONFIG.send condition
45
+ end
46
+
47
+ exec_statement statement, condition
48
+ end
49
+
50
+ def exec_statement statement, condition
51
+ case statement
52
+ when :if
53
+ !!condition
54
+ when :unless
55
+ !condition
56
+ end
57
+ end
58
+ end
@@ -28,15 +28,15 @@ class RKit::Core::Loader
28
28
  end
29
29
 
30
30
 
31
- def load_path file, path, options = {}
32
- load_path = LoadPath.new _base, file: file, path: path
31
+ def load_path file, path, **options
32
+ load_path = LoadPath.new _base, file: file, path: path, **options.slice(:priority)
33
33
  load_path.conditions = options.slice :if, :unless
34
34
 
35
35
  load_paths << load_path
36
36
  end
37
37
 
38
38
  def load_paths!
39
- load_paths.each &:load!
39
+ load_paths.sort{ |a, b| a.priority <=> b.priority }.each &:load!
40
40
  end
41
41
 
42
42
 
@@ -51,90 +51,4 @@ class RKit::Core::Loader
51
51
  loaded!
52
52
  end
53
53
 
54
-
55
- class LoadPath
56
- attr_accessor :_base,
57
- :file, :path, :conditions
58
-
59
- def initialize base, file:, path:;
60
- @_base = base
61
-
62
- @file = file
63
- @path = path
64
- end
65
-
66
-
67
- def extname
68
- File.extname(file)
69
- end
70
-
71
- def fullpath
72
- file.chomp! File.extname(file)
73
- File.expand_path(path, file)
74
- end
75
-
76
-
77
- def should_load?
78
- conditions.inject(true) do |should_load, (statement, condition)|
79
- should_load && exec_condition(statement, condition)
80
- end
81
- end
82
-
83
- def load_path!
84
- require fullpath
85
- end
86
-
87
- def load!
88
- load_path! if should_load?
89
- end
90
-
91
-
92
- def exec_condition statement, condition
93
- condition = case condition
94
- when Proc
95
- condition.call _base::CONFIG
96
- when Symbol, String
97
- _base::CONFIG.send condition
98
- end
99
-
100
- exec_statement statement, condition
101
- end
102
-
103
- def exec_statement statement, condition
104
- case statement
105
- when :if
106
- !!condition
107
- when :unless
108
- !condition
109
- end
110
- end
111
- end
112
-
113
-
114
- class Dependency
115
- attr_accessor :base, :service
116
-
117
- def initialize base, service:;
118
- @base = base
119
- @service = RKit.const_get(service.to_s.classify)
120
- end
121
-
122
- def should_load?
123
- !RKit::Core::Loader.class_variable_get(:@@loaded).include? @service.name
124
- end
125
-
126
- def dependency!
127
- warn %Q{
128
- WARNING - #{ @service.name } was implicitly loaded,
129
- As a dependency for #{ base }.
130
- You may want to load it explicitly.
131
- }
132
- @service.load
133
- end
134
-
135
- def load!
136
- dependency! if should_load?
137
- end
138
- end
139
-
140
54
  end
data/lib/r_kit/core.rb CHANGED
@@ -1,5 +1,9 @@
1
1
  class RKit::Core
2
2
 
3
+ # TODO: add a "warn" method, with a required 'if', that will display a warning msg if the condition is not fullfiled
4
+
5
+ # TODO: add a "description" method, wich will contain a descriptive text about the service
6
+
3
7
  class << self
4
8
  def init!
5
9
  @_config = Configurer.new self
@@ -23,6 +27,8 @@ class RKit::Core
23
27
  end
24
28
 
25
29
 
30
+ # TODO: define a method "config_get" that retreive the rkit config
31
+ # to do so, we will iterate throug the namespaces until we find somthing that inherit from RKit::Core
26
32
  delegate :config, :alias_config, :preset,
27
33
  to: :@_config
28
34
 
@@ -60,7 +66,11 @@ class RKit::Core
60
66
 
61
67
 
62
68
  require 'r_kit/core/configurer.rb'
69
+
63
70
  require 'r_kit/core/engineer.rb'
71
+
64
72
  require 'r_kit/core/loader.rb'
73
+ require 'r_kit/core/loader/dependency.rb'
74
+ require 'r_kit/core/loader/load_path.rb'
65
75
 
66
76
  end
@@ -7,3 +7,11 @@
7
7
  background-color: btn-background-color();
8
8
  color: btn-color();
9
9
  }
10
+
11
+
12
+ .btn-disabled{
13
+ @extend .btn;
14
+
15
+ background-color: btn-disabled-background-color();
16
+ color: btn-disabled-color();
17
+ }
@@ -0,0 +1,3 @@
1
+ .pagination{
2
+ @extend .text-center;
3
+ }
@@ -1 +1,2 @@
1
1
  @import "components/btn";
2
+ @import "components/pagination";
@@ -27,7 +27,7 @@ $text-info-color
27
27
  $text-muted-color
28
28
  */
29
29
  $background-color: background-color() !default;
30
- // $background-alt-color: #181818 !default;
30
+ $background-alt-color: background-alt-color() !default;
31
31
  /*$background-success-color
32
32
  $background-warning-color
33
33
  $background-danger-color