dry_model 0.0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 205e9b42cd43c9848b03a330a3ac4b65de5c7f38
4
+ data.tar.gz: b3dfbe93dda4489fbc0e7bec7ce7b2c095a4fbdf
5
+ SHA512:
6
+ metadata.gz: 80bb8fa480649200b247f9375b2fab969b7aa72b39364b0497ed80b9860334ced76f2d92eccb0c6b432320fa7525f3d64fad68d6caa469369bb7121a45e45ff5
7
+ data.tar.gz: 31b67d00515d9058505fbba142c5f76c7914b844153a4bae923fa8dc5fa1656b8d6efa64a4cfdf165801cf0b9703ddbc94ff861f1ad0dd8bbaf1ed02ccf14ee4
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ dry-model
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.3.0
data/dry_model.gemspec ADDED
@@ -0,0 +1,19 @@
1
+ require File.join(File.dirname(__FILE__), "lib", "dry_model", "version")
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = 'dry_model'
5
+ s.license = 'MIT'
6
+ s.version = DryModel::VERSION
7
+ s.homepage = 'https://github.com/victorcreed/dry_model'
8
+ s.authors = ['Kamal Ejaz']
9
+ s.email = ['a2ninek@yahoo.com']
10
+ s.description = 'micro library to dry models'
11
+ s.summary = 'micro library to dry models'
12
+
13
+ s.files = `git ls-files`.split("\n").sort
14
+ s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
15
+
16
+ s.required_ruby_version = '>= 1.9.3'
17
+
18
+ s.add_dependency 'rails', '>= 3.2', '< 5.0'
19
+ end
@@ -0,0 +1,22 @@
1
+ require 'dry_model/helpers/settings'
2
+ require 'dry_model/shared/methods'
3
+
4
+ module DryModel
5
+ class Application
6
+ include Settings
7
+ include Settings::Inheritance
8
+ setting :load_paths, [Rails.root.join("app", "dry_models")]
9
+
10
+ def setup!
11
+ files.each { |file| load(file) }
12
+ end
13
+ def files
14
+ load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }
15
+ end
16
+
17
+ def register(model, &block)
18
+ model.send(:include, DryModel::Shared::Methods)
19
+ model.class_eval(&block)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,59 @@
1
+ require 'active_support/concern'
2
+ module DryModel
3
+ module Settings
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ def read_default_settings(name)
7
+ default_setting[name]
8
+ end
9
+ def default_setting
10
+ self.class.default_settings
11
+ end
12
+ end
13
+ class_methods do
14
+ def default_settings
15
+ @default_settings ||= {}
16
+ end
17
+
18
+ def setting(name, default)
19
+ default_settings[name] = default
20
+ attr_writer name
21
+ define_method name do
22
+ if instance_variable_defined? "@#{name}"
23
+ instance_variable_get "@#{name}"
24
+ else
25
+ read_default_settings name
26
+ end
27
+ end
28
+ end
29
+ define_method "#{name}?" do
30
+ value = public_send(name)
31
+ if value.is_a? Array
32
+ value.any?
33
+ else
34
+ value.present?
35
+ end
36
+ end
37
+
38
+ end
39
+ module Inheritance
40
+
41
+ extend ActiveSupport::Concern
42
+ class_methods do
43
+ def settings_inherited_by(heir)
44
+ (@setting_heirs ||= []) << heir
45
+ heir.send :include, ControllerLess::Settings
46
+ end
47
+ def inheritable_setting(name, default)
48
+ setting name, default
49
+ @setting_heirs.each{ |c| c.setting name, default }
50
+ end
51
+
52
+ def deprecated_inheritable_setting(name, default)
53
+ deprecated_setting name, default
54
+ @setting_heirs.each{ |c| c.deprecated_setting name, default }
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,35 @@
1
+ require 'active_support/concern'
2
+ module DryModel
3
+ module Shared
4
+ module Methods
5
+ extend ActiveSupport::Concern
6
+ class_methods do
7
+
8
+ def def_has_many(value, options={})
9
+ has_many value, options
10
+ accepts_nested_attributes_for value, reject_if: :all_blank, allow_destroy: true
11
+ end
12
+
13
+ def def_has_many_through(value, options={})
14
+ def_has_many(options.fetch(:through))
15
+ def_has_many(value, options)
16
+ end
17
+ def def_func(func_name, &block)
18
+ define_method(func_name, &block)
19
+ end
20
+ %w(extra_columns blocked_columns).each do |col_name|
21
+ attr_accessor col_name
22
+ define_method "#{col_name}_list" do |list|
23
+ instance_variable_set("@#{col_name}", list)
24
+ end
25
+ define_method col_name do
26
+ instance_variable_get("@#{col_name}") || []
27
+ end
28
+ end
29
+ def whitelist_columns
30
+ (column_names - blocked_columns) + extra_columns
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,3 @@
1
+ module DryModel
2
+ VERSION='0.0.1.pre'
3
+ end
data/lib/dry_model.rb ADDED
@@ -0,0 +1,20 @@
1
+ require 'active_support/core_ext'
2
+
3
+ module DryModel
4
+ autoload :VERSION, 'dry_model/version'
5
+ autoload :Application, 'dry_model/application'
6
+
7
+ class << self
8
+ attr_accessor :application
9
+ def application
10
+ @application ||= DryModel::Application.new
11
+ end
12
+ def setup
13
+
14
+ puts "Its here"
15
+ application.setup!
16
+ yield application
17
+ end
18
+ delegate :register, to: :application
19
+ end
20
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dry_model
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.pre
5
+ platform: ruby
6
+ authors:
7
+ - Kamal Ejaz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
33
+ description: micro library to dry models
34
+ email:
35
+ - a2ninek@yahoo.com
36
+ executables: []
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - ".ruby-gemset"
41
+ - ".ruby-version"
42
+ - dry_model.gemspec
43
+ - lib/dry_model.rb
44
+ - lib/dry_model/application.rb
45
+ - lib/dry_model/helpers/settings.rb
46
+ - lib/dry_model/shared/methods.rb
47
+ - lib/dry_model/version.rb
48
+ homepage: https://github.com/victorcreed/dry_model
49
+ licenses:
50
+ - MIT
51
+ metadata: {}
52
+ post_install_message:
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.9.3
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">"
64
+ - !ruby/object:Gem::Version
65
+ version: 1.3.1
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 2.5.1
69
+ signing_key:
70
+ specification_version: 4
71
+ summary: micro library to dry models
72
+ test_files: []