justools 1.2.4 → 1.3.0
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.
- data/CHANGELOG.rdoc +5 -0
- data/README.rdoc +4 -17
- data/VERSION +1 -1
- data/justools.gemspec +3 -4
- data/lib/justools.rb +1 -2
- data/lib/justools/{core_ext.rb → all.rb} +0 -1
- data/lib/justools/core_ext/array/inquiry.rb +2 -23
- data/lib/justools/core_ext/object.rb +5 -80
- data/lib/justools/core_ext/set.rb +2 -0
- data/lib/tasks/{core_utilities_tasks.rake → justools_tasks.rake} +0 -0
- metadata +4 -5
- data/lib/justools/core_ext/class.rb +0 -41
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -10,23 +10,9 @@ Ruby-level extensions, utilities, convenience methods that I've found I'm consta
|
|
10
10
|
|
11
11
|
=== Object
|
12
12
|
|
13
|
-
==== Object#
|
13
|
+
==== Object#aka
|
14
14
|
|
15
|
-
[:donkey, { :class => 'list-item' }].
|
16
|
-
|
17
|
-
==== Object#is_included_in? (deprecated by ActiveSupport's newest Object#in?)
|
18
|
-
|
19
|
-
User.find(1).class.is_included_in?(User, Article, Authentication)
|
20
|
-
|
21
|
-
or alternatively:
|
22
|
-
|
23
|
-
@user.is_one_kind_of?(User, Article, Authentication)
|
24
|
-
|
25
|
-
which has the same effect as:
|
26
|
-
|
27
|
-
@user.is_one_kind_of?([User, Article, Authentication])
|
28
|
-
|
29
|
-
by virtue of:
|
15
|
+
[:donkey, { :class => 'list-item' }].aka { |arg, opts| link_to(arg, opts) }
|
30
16
|
|
31
17
|
=== Array
|
32
18
|
|
@@ -132,4 +118,5 @@ http://github.com/caleon/justools/contributors
|
|
132
118
|
|
133
119
|
== License
|
134
120
|
|
135
|
-
MIT License. Copyright
|
121
|
+
MIT License. Copyright 2013 caleon.
|
122
|
+
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.3.0
|
data/justools.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "justools"
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["caleon"]
|
@@ -27,19 +27,18 @@ Gem::Specification.new do |s|
|
|
27
27
|
"VERSION",
|
28
28
|
"justools.gemspec",
|
29
29
|
"lib/justools.rb",
|
30
|
-
"lib/justools/
|
30
|
+
"lib/justools/all.rb",
|
31
31
|
"lib/justools/core_ext/array.rb",
|
32
32
|
"lib/justools/core_ext/array/args_and_opts.rb",
|
33
33
|
"lib/justools/core_ext/array/filters.rb",
|
34
34
|
"lib/justools/core_ext/array/flatten_splat.rb",
|
35
35
|
"lib/justools/core_ext/array/inquiry.rb",
|
36
36
|
"lib/justools/core_ext/array/merge_options.rb",
|
37
|
-
"lib/justools/core_ext/class.rb",
|
38
37
|
"lib/justools/core_ext/enumerable.rb",
|
39
38
|
"lib/justools/core_ext/hash.rb",
|
40
39
|
"lib/justools/core_ext/object.rb",
|
41
40
|
"lib/justools/core_ext/set.rb",
|
42
|
-
"lib/tasks/
|
41
|
+
"lib/tasks/justools_tasks.rake",
|
43
42
|
"spec/justools_spec.rb",
|
44
43
|
"spec/spec_helper.rb"
|
45
44
|
]
|
data/lib/justools.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
require 'set'
|
2
|
-
require 'justools/core_ext/object'
|
3
|
-
require 'justools/core_ext/set'
|
4
2
|
require 'justools/core_ext/array/flatten_splat'
|
5
3
|
|
6
4
|
class Array
|
@@ -12,31 +10,12 @@ class Array
|
|
12
10
|
def rearranged?(*other_ary)
|
13
11
|
Set.new(self) == Set.new(other_ary.flatten_splat)
|
14
12
|
end
|
15
|
-
alias_method :rearranges?, :rearranged?
|
16
13
|
|
17
|
-
def
|
14
|
+
def subset?(other_ary)
|
18
15
|
Set.new(self).subset?(Set.new(other_ary))
|
19
16
|
end
|
20
|
-
alias_method :subset?, :subset_of?
|
21
17
|
|
22
|
-
def
|
18
|
+
def in?(other_ary)
|
23
19
|
super || subset?(other_ary)
|
24
20
|
end
|
25
|
-
alias_method :in?, :is_included_in?
|
26
|
-
|
27
|
-
# Careful with this. This means 4 out of 5 elements can be the same but if not
|
28
|
-
# all of this self Array object are a part of other_ary, this returns true, as
|
29
|
-
# in "Yes, depite having 4 out of 5 in other_ary, I am excluded from the
|
30
|
-
# other_ary."
|
31
|
-
def out_of?(other_ary)
|
32
|
-
super || not_subset?(other_ary)
|
33
|
-
end
|
34
|
-
alias_method :is_excluded_from?, :out_of?
|
35
|
-
|
36
|
-
alias_method :include_one?, :include?
|
37
|
-
def include_all?(*other_ary)
|
38
|
-
other_ary.flatten_splat!
|
39
|
-
include_one(other_ary) || superset?(other_ary)
|
40
|
-
end
|
41
|
-
# alias_method :include?, :include_all?
|
42
21
|
end
|
@@ -4,89 +4,14 @@ class Object
|
|
4
4
|
|
5
5
|
# === Examples
|
6
6
|
#
|
7
|
-
# { :a=>1, .., :z=>26 }.
|
7
|
+
# { :a=>1, .., :z=>26 }.aka { |h| h.each { |k, v| h[k] = v + h[26 - v] } }
|
8
8
|
#
|
9
|
-
# User.find(15).stories.joins(:tasks).
|
10
|
-
#
|
9
|
+
# User.find(15).stories.joins(:tasks).aka { |s| [s.class.to_s, s.count] }.
|
10
|
+
# aka { |klass_name, count| "#{count} stories in #{klass_name}" }
|
11
11
|
#
|
12
12
|
# [15, { :includes => { :stories => :tasks } }, 56, 78, 102].
|
13
|
-
#
|
14
|
-
def
|
13
|
+
# aka { |id, opts, *ns| ns.each { |n| puts n }; User.find(id, opts) }
|
14
|
+
def aka(&block)
|
15
15
|
yield self
|
16
16
|
end
|
17
|
-
|
18
|
-
# === Examples
|
19
|
-
#
|
20
|
-
# user = User.find_by_id(10).or_else { |res| raise "Got back #{res}" }
|
21
|
-
def or_else(&block)
|
22
|
-
self || yield(self)
|
23
|
-
end
|
24
|
-
|
25
|
-
# === Examples
|
26
|
-
#
|
27
|
-
# authorization = User.find_by_id(10).and_also { |u| u.authorization }
|
28
|
-
def and_also(&block)
|
29
|
-
self && yield(self)
|
30
|
-
end
|
31
|
-
|
32
|
-
# unless Object.method_defined?(:in?)
|
33
|
-
# Copy of Object#in? from Rails 3.2.1 which also allows list.
|
34
|
-
#
|
35
|
-
# === Parameters
|
36
|
-
#
|
37
|
-
# * +args+ - Array or a list of its contents.
|
38
|
-
def in?(*args)
|
39
|
-
if args.length > 1
|
40
|
-
args.include? self
|
41
|
-
else
|
42
|
-
another_object = args.first
|
43
|
-
if another_object.respond_to? :include?
|
44
|
-
another_object.include?(self)
|
45
|
-
else
|
46
|
-
raise ArgumentError.new("The single parameter passed to #in? must respond to #include?")
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
# end
|
51
|
-
# def is_included_in?(*others) #d deprecated
|
52
|
-
# others.flatten_splat.include?(self)
|
53
|
-
# end
|
54
|
-
alias_method :is_included_in?, :in?
|
55
|
-
|
56
|
-
def out_of?(*others)
|
57
|
-
others.flatten_splat.exclude?(self)
|
58
|
-
end
|
59
|
-
alias_method :is_excluded_from?, :out_of?
|
60
|
-
|
61
|
-
# Similar to is_a? or kind_of? but with an array of possible classes.
|
62
|
-
# Returns the matching class or a nil.
|
63
|
-
#
|
64
|
-
# === Parameters
|
65
|
-
#
|
66
|
-
# * +klasses+ - List of Class constants, or an Array of Class constants.
|
67
|
-
#
|
68
|
-
# === Examples
|
69
|
-
#
|
70
|
-
# rec_or_num.one_kind_of?(User, Admin).or_else { User.find(rec_or_num) }
|
71
|
-
def one_kind_of?(*klasses)
|
72
|
-
klasses.flatten_splat.detect { |klass| self.kind_of?(klass) }
|
73
|
-
end
|
74
|
-
alias_method :is_one_kind_of?, :one_kind_of?
|
75
|
-
|
76
|
-
# Similar to is_a? or kind_of? but with an array of possible classes.
|
77
|
-
# Returns the matching class or a nil. Renamed here from is_one_kind_of?
|
78
|
-
# because it uses the 'klass === self' which isn't necessarily equivalent to
|
79
|
-
# 'self.is_a?(klass)'.
|
80
|
-
#
|
81
|
-
# === Parameters
|
82
|
-
#
|
83
|
-
# * +args+ - List of arguments.
|
84
|
-
#
|
85
|
-
# === Examples
|
86
|
-
#
|
87
|
-
# rec_or_num.one_of?(User, Admin).or_else { User.find(rec_or_num) }
|
88
|
-
def one_of?(*args)
|
89
|
-
args.flatten_splat.detect { |arg| arg === self}
|
90
|
-
end
|
91
|
-
alias_method :is_when?, :one_of?
|
92
17
|
end
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: justools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -109,19 +109,18 @@ files:
|
|
109
109
|
- VERSION
|
110
110
|
- justools.gemspec
|
111
111
|
- lib/justools.rb
|
112
|
-
- lib/justools/
|
112
|
+
- lib/justools/all.rb
|
113
113
|
- lib/justools/core_ext/array.rb
|
114
114
|
- lib/justools/core_ext/array/args_and_opts.rb
|
115
115
|
- lib/justools/core_ext/array/filters.rb
|
116
116
|
- lib/justools/core_ext/array/flatten_splat.rb
|
117
117
|
- lib/justools/core_ext/array/inquiry.rb
|
118
118
|
- lib/justools/core_ext/array/merge_options.rb
|
119
|
-
- lib/justools/core_ext/class.rb
|
120
119
|
- lib/justools/core_ext/enumerable.rb
|
121
120
|
- lib/justools/core_ext/hash.rb
|
122
121
|
- lib/justools/core_ext/object.rb
|
123
122
|
- lib/justools/core_ext/set.rb
|
124
|
-
- lib/tasks/
|
123
|
+
- lib/tasks/justools_tasks.rake
|
125
124
|
- spec/justools_spec.rb
|
126
125
|
- spec/spec_helper.rb
|
127
126
|
homepage: http://github.com/caleon/justools
|
@@ -139,7 +138,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
139
138
|
version: '0'
|
140
139
|
segments:
|
141
140
|
- 0
|
142
|
-
hash: -
|
141
|
+
hash: -3606103884830383195
|
143
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
143
|
none: false
|
145
144
|
requirements:
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# Not enabling until fixed.
|
2
|
-
require 'active_support/core_ext/class/attribute'
|
3
|
-
require 'active_support/core_ext/module/aliasing'
|
4
|
-
|
5
|
-
class Class
|
6
|
-
# Purpose is to be able to define a default value for a class_attribute when
|
7
|
-
# one isn't initially set.
|
8
|
-
def class_attribute_with_default(*attrs)
|
9
|
-
hash = attrs.last.is_a?(Hash) ? attrs.pop : {}
|
10
|
-
my_default = hash.delete(:default)
|
11
|
-
instance_writer = hash.blank? || hash[:instance_writer]
|
12
|
-
|
13
|
-
attrs.each do |name|
|
14
|
-
# By the way, FIXME: i think this should be broken because if i want to
|
15
|
-
# use a string as a default, that will not be reflected.
|
16
|
-
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
17
|
-
def self.#{name}() #{my_default || 'nil'} end
|
18
|
-
def self.#{name}?() !!#{name} end
|
19
|
-
|
20
|
-
def self.#{name}=(val)
|
21
|
-
singleton_class.class_eval do
|
22
|
-
remove_possible_method(:#{name})
|
23
|
-
define_method(:#{name}) { val }
|
24
|
-
end
|
25
|
-
val
|
26
|
-
end
|
27
|
-
|
28
|
-
def #{name}
|
29
|
-
defined?(@#{name}) ? @#{name} : singleton_class.#{name}
|
30
|
-
end
|
31
|
-
|
32
|
-
def #{name}?
|
33
|
-
!!#{name}
|
34
|
-
end
|
35
|
-
RUBY
|
36
|
-
|
37
|
-
attr_writer name if instance_writer
|
38
|
-
end
|
39
|
-
end
|
40
|
-
alias_method_chain :class_attribute, :default
|
41
|
-
end
|