lean-utils 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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OGY1N2FiYmE5MmM4NGI0MzZkY2Y5MWY4N2RmNTY1MTIyMTg4Zjg5MQ==
5
+ data.tar.gz: !binary |-
6
+ YWFlNTg0N2ZmNGRlZGUwYjFjMDc1MDUwOGE5YTQxZDNmMWJjMDQ5ZA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ YTRmOWJmMWNiNzZkNTRkNDhhMzUwM2NiZTE3NDE3M2ZlNmI0YjUyZjQ4NDYx
10
+ ZGU5Yzg3ZTYyNTljN2VkZDYxMzAzMzBmNWJjMTViNDIxMDdmOTA5ZjQ4MTI0
11
+ N2MxZGE1MWI1ZmNlYzI2ZTBmZGY1NWVjZTU3ZDI4ODUwNDM4ZGY=
12
+ data.tar.gz: !binary |-
13
+ YjAzZGRlN2JiZDBmZDAxZGM3ZjFkOGE5NDE2ZjQ4NWU1M2FkOGNmZGJiOTEx
14
+ NTg3ZTg5ZWQ1ZWIwNDNhZmU4ZTcyYTEwMWZhNTE3ZjllNWI3ZTBlMjU4ODU2
15
+ YWYxNDZkOTJkNTQ5Y2JhNGI2ODc3YTNlNDQ5NTU4MGU2MjNlZWE=
@@ -0,0 +1 @@
1
+ # Lean::Utils
@@ -0,0 +1,32 @@
1
+ lib = File.expand_path('../lib/', __FILE__)
2
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'lean-utils/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'lean-utils'
8
+ s.version = Lean::Utils::VERSION
9
+
10
+ s.platform = Gem::Platform::RUBY
11
+ s.required_ruby_version = '>= 1.9.3'
12
+ s.rubygems_version = '>= 1.3.6'
13
+
14
+ s.homepage = 'https://github.com/lleolin/lean-utils'
15
+ s.authors = ['R. Elliott Mason']
16
+ s.email = ['r.elliott.mason@fastmail.fm']
17
+ s.summary = 'recurring utilities for Lean framework gems'
18
+ s.description = <<-desc
19
+ extracted utility methods used by Lean framework gems
20
+ desc
21
+
22
+ s.licenses = ['MIT']
23
+
24
+ s.files = `git ls-files -z -- lib/* bin/* LICENSE.md README.md \
25
+ CHANGELOG.md FEATURES.md lean-utils.gemspec`.split("\x0")
26
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
27
+ s.extra_rdoc_files = ['README.md']
28
+ s.require_paths = ['lib']
29
+
30
+ s.add_development_dependency 'rake', '~> 10.3', '>= 10.3.2'
31
+ s.add_development_dependency 'rspec', '~> 3.0', '>= 3.0.0'
32
+ end
@@ -0,0 +1,13 @@
1
+ require 'lean-utils/inheritable_class_attributes/class_methods'
2
+
3
+ module Lean
4
+ module Utils
5
+ module InheritableClassAttributes
6
+ def self.included(base)
7
+ base.class_eval do
8
+ extend ClassMethods
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,39 @@
1
+ module Lean
2
+ module Utils
3
+ module InheritableClassAttributes
4
+ module ClassMethods
5
+ attr_writer :_inheritable_class_attrs
6
+
7
+ def _inheritable_class_attrs
8
+ @_inheritable_class_attrs ||= []
9
+ end
10
+
11
+ def inheritable_class_attr(attr_name)
12
+ self._inheritable_class_attrs += Array(attr_name)
13
+ end
14
+
15
+ def inherited(subclass)
16
+ _inheritable_class_attrs.each do |attribute|
17
+ subclass.instance_eval(inherited_class_attribute_method(attribute))
18
+ end
19
+ end
20
+
21
+ def inherited_class_attribute_method(attribute)
22
+ <<-EOS
23
+ def #{attribute}(*args)
24
+ if @#{attribute}.nil?
25
+ @#{attribute} = begin
26
+ superclass.#{attribute}.clone
27
+ rescue TypeError
28
+ superclass.#{attribute}
29
+ end
30
+ end
31
+
32
+ super
33
+ end
34
+ EOS
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,17 @@
1
+ module Lean
2
+ module Utils
3
+ def self.namespace(object)
4
+ case object
5
+ when Class then namespace(object.name)
6
+ when String
7
+ begin
8
+ class_name = const_get(object).name
9
+ rescue NameError
10
+ class_name = object
11
+ end
12
+
13
+ class_name.split('::').tap(&:pop).join('::')
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ require 'lean-utils/namespaced/class_methods'
2
+
3
+ module Lean
4
+ module Namespaced
5
+ def self.included(base)
6
+ base.class_eval do
7
+ extend ClassMethods
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ require 'lean-utils/namespace'
2
+
3
+ module Lean
4
+ module Namespaced
5
+ module ClassMethods
6
+ def _namespace
7
+ @namespace ||= begin
8
+ const_get(Lean::Utils.namespace(name))
9
+ rescue NameError, TypeError
10
+ self
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ module Lean
2
+ module Utils
3
+ VERSION = '0.0.1.pre'
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lean-utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.pre
5
+ platform: ruby
6
+ authors:
7
+ - R. Elliott Mason
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '10.3'
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 10.3.2
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '10.3'
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 10.3.2
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: '3.0'
40
+ - - ! '>='
41
+ - !ruby/object:Gem::Version
42
+ version: 3.0.0
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: '3.0'
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: 3.0.0
53
+ description: ! 'extracted utility methods used by Lean framework gems
54
+
55
+ '
56
+ email:
57
+ - r.elliott.mason@fastmail.fm
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files:
61
+ - README.md
62
+ files:
63
+ - README.md
64
+ - lean-utils.gemspec
65
+ - lib/lean-utils/inheritable_class_attributes.rb
66
+ - lib/lean-utils/inheritable_class_attributes/class_methods.rb
67
+ - lib/lean-utils/namespace.rb
68
+ - lib/lean-utils/namespaced.rb
69
+ - lib/lean-utils/namespaced/class_methods.rb
70
+ - lib/lean-utils/version.rb
71
+ homepage: https://github.com/lleolin/lean-utils
72
+ licenses:
73
+ - MIT
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: 1.9.3
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ! '>'
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.1
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 2.4.5
92
+ signing_key:
93
+ specification_version: 4
94
+ summary: recurring utilities for Lean framework gems
95
+ test_files: []