dry_model 0.0.1.pre

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 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: []