sugar-high 0.4.6.4 → 0.4.7

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/README.markdown CHANGED
@@ -89,22 +89,40 @@ File object
89
89
  * select_only(type)
90
90
  * select_only!(type)
91
91
 
92
- ### Hash
93
-
94
- * hash_revert : Reverse keys and values
95
-
96
92
  ### File
97
93
 
98
94
  * self.blank? and blank? : Is file empty?
99
95
  * self.overwrite : overwrite file with new content (mode = 'w')
100
96
  * self.append : append to existing file with content or create new (mode = 'w+')
101
97
 
102
- String:
103
- * path : expand String with path operations :up and :down
98
+ ### File Mutate
99
+ Adds all File mutation modules to the File class
100
+
101
+ ### File Mutation
102
+
103
+ Various File Mutation modules that can be added to any module or class for some nice benefits. Useful for generators fx.
104
+
105
+ Mutation modules within SugarHigh::FileMutate
106
+
107
+ * AppendContent
108
+ * Delete
109
+ * InsertContent
110
+ * OverwriteContent
111
+ * RemoveContent
112
+ * ReplaceContent
113
+
114
+ To add all mutate modules to the File class, simply:
115
+
116
+ <pre>File.mutate_ext :all</pre>
117
+
118
+ Otherwise, simply specify which ones:
104
119
 
105
- PathString:
106
- * up lv : Go up some directory levels, prefixing with a number of '../'
107
- * down lv : Go down some directory levels, stripping off a number of prefixed '../'
120
+ <pre>File.mutate_ext :append_content, overwrite_content</pre>
121
+
122
+ ### Hash
123
+
124
+ * hash_revert : Reverse keys and values
125
+ * try_keys : return value of first key that is in Hash
108
126
 
109
127
  ### Includes
110
128
 
@@ -117,7 +135,7 @@ PathString:
117
135
 
118
136
  ### Metaclass
119
137
 
120
- * metaclass : Get the metaclass
138
+ * metaclass : Get the metaclass, can be used to dynamically add class singleton methods!
121
139
 
122
140
  ### Methods
123
141
 
@@ -130,12 +148,85 @@ PathString:
130
148
 
131
149
  Create empty namespaces
132
150
 
133
- ### Blank
151
+ ### Not
152
+
153
+ * not
154
+
155
+ Adds the _#not_ method to Object, so you can say fx: <code>if x.not.empty?</code>
156
+
157
+ ### Numeric
158
+
159
+ module _NumericCheckExt_
160
+
161
+ * is_numeric?(arg) - alias numeric?
162
+ * check_numeric!(arg) - raises error if argument is not numeric
163
+
164
+ module NumberDslExt added to all numeric classes (Float and Numeric)
165
+ * thousand
166
+ * hundred
167
+
168
+ <pre>
169
+ 3.thousand + 2.hundred
170
+ => 3200
171
+ </pre>
172
+
173
+ ### Path
174
+ * String#path - extends String instance with PathString
175
+
176
+ module PathString
177
+ * to_file
178
+ * to_dir
179
+ * to_symlink
180
+
181
+ <pre>
182
+ "a/b/c".to_dir
183
+ "a/b/c/d.rb".to_file
184
+ </pre>
185
+
186
+ File type existance
187
+ * exists?
188
+ * file?
189
+ * dir?
190
+ * symlink?
191
+
192
+ Navigate dirs
193
+ * up
194
+ * down
195
+ * post_up
196
+ * post_down
197
+
198
+ <pre>
199
+ "a/b/c/d".up(2).should == "a/b"
200
+ "a/b/".post_up(2).should == "a/b/../../"
201
+ "a/b/../".post_down(1).should == "a/b/"
202
+ </pre>
203
+
204
+ ### Properties
205
+
206
+ <pre>
207
+ class CruiseShip
208
+ extend Properties
209
+
210
+ property :direction
211
+ property :speed, is(0..300)
212
+ end
213
+
214
+ ship = CruiseShip.new
215
+ ship.add_direction_listener(lambda {|x| puts "Oy... someone changed the direction to #{x}"})
216
+ ship.speed = 200
217
+ ship.speed = 301 # outside valid range!
218
+ </pre>
219
+
220
+ ### RegExp
221
+
222
+ String, RegExp
223
+ * to_regexp
224
+
225
+ <pre>"a, b /c".to_regexp # escapes it for reg exp!</pre>
134
226
 
135
- * blank? : Empty string? (works on nil)
136
- * wblank? : Blank including whitespace only? (works on nil)
137
- * empty? : array and nil
138
- * any? : array and nil
227
+ MatchData
228
+ * offset_after
229
+ * offset_before
139
230
 
140
231
  ## RSpec 2 Matchers
141
232
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.6.4
1
+ 0.4.7
@@ -5,7 +5,7 @@ class Class
5
5
  options[:instance_methods] ||= :InstanceMethods
6
6
  options[:class_methods] ||= :ClassMethods
7
7
  # Mainly include but be flexible
8
- main_module = const_get(the_module)
8
+ main_module = const_get(the_module.to_s.to_sym)
9
9
  include main_module # for an extend_and_include method, change this to extend main_module
10
10
  include main_module.const_get(options[:instance_methods]) if main_module.const_defined?(options[:instance_methods])
11
11
  extend main_module.const_get(options[:class_methods]) if main_module.const_defined?(options[:class_methods])
@@ -84,4 +84,4 @@ module ClassExt
84
84
  raise "Not one Module for any of: #{names} is currently loaded" if modules.empty?
85
85
  modules.first
86
86
  end
87
- end
87
+ end
@@ -17,4 +17,8 @@ module NumberDslExt
17
17
  def hundred
18
18
  self * 100
19
19
  end
20
+ end
21
+
22
+ [Float, Numeric].each do |mod|
23
+ mod.send :include, NumberDslExt
20
24
  end
@@ -51,25 +51,25 @@ module PathString
51
51
  ('../' * lv) + self
52
52
  end
53
53
 
54
- def post_up lv
55
- self + ('/..' * lv)
56
- end
57
-
58
- def post_down lv
59
- up_dir = Regexp.escape('/..')
54
+ def down lv
55
+ up_dir = Regexp.escape('../')
60
56
  orig = self.clone
61
57
  lv.times do
62
- self.gsub! /#{up_dir}$/, ''
58
+ self.gsub! /^#{up_dir}/, ''
63
59
  return self if self == orig
64
60
  end
65
61
  self
66
62
  end
67
63
 
68
- def down lv
69
- up_dir = Regexp.escape('../')
64
+ def post_up lv
65
+ self + ('/..' * lv)
66
+ end
67
+
68
+ def post_down lv
69
+ up_dir = Regexp.escape('/..')
70
70
  orig = self.clone
71
71
  lv.times do
72
- self.gsub! /^#{up_dir}/, ''
72
+ self.gsub! /#{up_dir}$/, ''
73
73
  return self if self == orig
74
74
  end
75
75
  self
@@ -15,11 +15,39 @@ module GoodBye
15
15
  end
16
16
  end
17
17
 
18
+ module First
19
+ module ClassMethods
20
+ def class_method
21
+ end
22
+ end
23
+
24
+ module InstanceMethods
25
+ def instance_method
26
+ end
27
+ end
28
+ end
29
+
30
+ class Second
31
+ include_and_extend First
32
+ end
18
33
 
19
34
  def trial
20
35
  @trial ||= Trial.new
21
36
  end
22
37
 
38
+ describe Class do
39
+
40
+ describe "#include_and_extend" do
41
+ it "should include class methods" do
42
+ Second.should respond_to(:class_method)
43
+ end
44
+
45
+ it "should include class methods" do
46
+ Second.new.should respond_to(:instance_method)
47
+ end
48
+ end
49
+ end
50
+
23
51
  describe ClassExt do
24
52
  describe '#try_module' do
25
53
  it "should return false if no module found" do
@@ -114,4 +142,4 @@ describe ClassExt do
114
142
  lambda {trial.find_first_module('Good', 'Bye') }.should raise_error
115
143
  end
116
144
  end
117
- end
145
+ 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.6.4"
8
+ s.version = "0.4.7"
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-22}
12
+ s.date = %q{2011-06-23}
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 = [
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.6.4
4
+ version: 0.4.7
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-22 00:00:00.000000000Z
12
+ date: 2011-06-23 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &2152711460 !ruby/object:Gem::Requirement
16
+ requirement: &2152257800 !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: *2152711460
24
+ version_requirements: *2152257800
25
25
  description: More Ruby sugar - inspired by the 'zuker' project
26
26
  email: kmandrup@gmail.com
27
27
  executables: []