sugar-high 0.4.4.2 → 0.4.5
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/VERSION +1 -1
- data/lib/sugar-high/class_ext.rb +70 -1
- data/lib/sugar-high/kind_of.rb +1 -0
- data/spec/sugar-high/class_ext_spec.rb +80 -0
- data/sugar-high.gemspec +3 -2
- metadata +5 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.5
|
data/lib/sugar-high/class_ext.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'sugar-high/kind_of'
|
2
|
+
|
1
3
|
class Class
|
2
4
|
def include_and_extend(the_module, options={})
|
3
5
|
options[:instance_methods] ||= :InstanceMethods
|
@@ -8,4 +10,71 @@ class Class
|
|
8
10
|
include main_module.const_get(options[:instance_methods]) if main_module.const_defined?(options[:instance_methods])
|
9
11
|
extend main_module.const_get(options[:class_methods]) if main_module.const_defined?(options[:class_methods])
|
10
12
|
end
|
11
|
-
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module ClassExt
|
16
|
+
def is_class?(clazz)
|
17
|
+
clazz.is_a?(Class) && (clazz.respond_to? :new)
|
18
|
+
end
|
19
|
+
|
20
|
+
def is_module?(clazz)
|
21
|
+
clazz.is_a?(Module) && !(clazz.respond_to? :new)
|
22
|
+
end
|
23
|
+
|
24
|
+
def class_exists?(name)
|
25
|
+
is_class? Module.const_get(name)
|
26
|
+
rescue NameError
|
27
|
+
return false
|
28
|
+
end
|
29
|
+
|
30
|
+
def module_exists?(name)
|
31
|
+
is_module? Module.const_get(name)
|
32
|
+
rescue NameError
|
33
|
+
return false
|
34
|
+
end
|
35
|
+
|
36
|
+
def try_class name
|
37
|
+
return name if name.kind_of?(Class)
|
38
|
+
found = Module.const_get(name) if name.kind_of_label?
|
39
|
+
return found if found.is_a?(Class)
|
40
|
+
rescue
|
41
|
+
false
|
42
|
+
end
|
43
|
+
|
44
|
+
def try_module name
|
45
|
+
return name if name.kind_of?(Module)
|
46
|
+
found = Module.const_get(name) if name.kind_of_label?
|
47
|
+
return found if found.is_a?(Module)
|
48
|
+
rescue
|
49
|
+
false
|
50
|
+
end
|
51
|
+
|
52
|
+
def try_module_only name
|
53
|
+
return name if is_module?(name)
|
54
|
+
found = Module.const_get(name) if name.kind_of_label?
|
55
|
+
return found if is_module?(found)
|
56
|
+
rescue
|
57
|
+
false
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
def find_first_class *names
|
62
|
+
classes = names.flatten.compact.uniq.inject([]) do |res, class_name|
|
63
|
+
found_class = try_class(class_name.to_s.camelize)
|
64
|
+
res << found_class if found_class
|
65
|
+
res
|
66
|
+
end
|
67
|
+
raise "Not one Class for any of: #{names} is currently loaded" if classes.empty?
|
68
|
+
classes.first
|
69
|
+
end
|
70
|
+
|
71
|
+
def find_first_module *names
|
72
|
+
modules = names.flatten.compact.uniq.inject([]) do |res, class_name|
|
73
|
+
found_class = try_class(class_name.to_s.camelize)
|
74
|
+
res << found_class if found_class
|
75
|
+
res
|
76
|
+
end
|
77
|
+
raise "Not one Module for any of: #{names} is currently loaded" if modules.empty?
|
78
|
+
modules.first
|
79
|
+
end
|
80
|
+
end
|
data/lib/sugar-high/kind_of.rb
CHANGED
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'sugar-high/class_ext'
|
3
|
+
|
4
|
+
class Trial
|
5
|
+
include ClassExt
|
6
|
+
end
|
7
|
+
|
8
|
+
class Hello
|
9
|
+
end
|
10
|
+
|
11
|
+
module GoodBye
|
12
|
+
end
|
13
|
+
|
14
|
+
def trial
|
15
|
+
@trial ||= Trial.new
|
16
|
+
end
|
17
|
+
|
18
|
+
describe ClassExt do
|
19
|
+
describe '#try_module' do
|
20
|
+
it "should return false if no module found" do
|
21
|
+
trial.try_module('Blip').should be_false
|
22
|
+
trial.try_module(:Blip).should be_false
|
23
|
+
trial.try_module(nil).should be_false
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should return module if found" do
|
27
|
+
trial.try_module('GoodBye').should be_a(Module)
|
28
|
+
trial.try_module(:GoodBye).should be_a(Module)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return false if only class of that name is found" do
|
32
|
+
trial.try_module('Hello').should be_true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#try_class' do
|
37
|
+
it "should return false if no class found" do
|
38
|
+
trial.try_class('Blip').should be_false
|
39
|
+
trial.try_class(:Blip).should be_false
|
40
|
+
trial.try_class(nil).should be_false
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should return class if found" do
|
44
|
+
trial.try_class('Hello').should be_a(Class)
|
45
|
+
trial.try_class(:Hello).should be_a(Class)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return false if only class of that name is found" do
|
49
|
+
trial.try_class('GoodBye').should be_false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#class_exists?' do
|
54
|
+
it "should return false if no class found" do
|
55
|
+
trial.class_exists?('Blip').should be_false
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should return true if class found" do
|
59
|
+
trial.class_exists?('Hello').should be_true
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should return false if module found" do
|
63
|
+
trial.class_exists?('GoodBye').should be_false
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe '#module_exists?' do
|
68
|
+
it "should return false if no module found" do
|
69
|
+
trial.module_exists?('Blip').should be_false
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should return true if module found" do
|
73
|
+
trial.module_exists?('GoodBye').should be_true
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should return false if only class found" do
|
77
|
+
trial.module_exists?('Hello').should be_false
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
data/sugar-high.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sugar-high}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Kristian Mandrup}]
|
12
|
-
s.date = %q{2011-06-
|
12
|
+
s.date = %q{2011-06-09}
|
13
13
|
s.description = %q{More Ruby sugar - inspired by the 'zuker' project}
|
14
14
|
s.email = %q{kmandrup@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -68,6 +68,7 @@ Gem::Specification.new do |s|
|
|
68
68
|
"spec/sugar-high/arguments_spec.rb",
|
69
69
|
"spec/sugar-high/array_spec.rb",
|
70
70
|
"spec/sugar-high/blank_spec.rb",
|
71
|
+
"spec/sugar-high/class_ext_spec.rb",
|
71
72
|
"spec/sugar-high/file/file_dsl_spec.rb",
|
72
73
|
"spec/sugar-high/file_mutate/append_content_spec.rb",
|
73
74
|
"spec/sugar-high/file_mutate/delete_spec.rb",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sugar-high
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-06-
|
12
|
+
date: 2011-06-09 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153304260 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '2.5'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153304260
|
25
25
|
description: More Ruby sugar - inspired by the 'zuker' project
|
26
26
|
email: kmandrup@gmail.com
|
27
27
|
executables: []
|
@@ -81,6 +81,7 @@ files:
|
|
81
81
|
- spec/sugar-high/arguments_spec.rb
|
82
82
|
- spec/sugar-high/array_spec.rb
|
83
83
|
- spec/sugar-high/blank_spec.rb
|
84
|
+
- spec/sugar-high/class_ext_spec.rb
|
84
85
|
- spec/sugar-high/file/file_dsl_spec.rb
|
85
86
|
- spec/sugar-high/file_mutate/append_content_spec.rb
|
86
87
|
- spec/sugar-high/file_mutate/delete_spec.rb
|