sugar-high 0.5.5 → 0.6.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.
Files changed (54) hide show
  1. data/README.textile +2 -29
  2. data/VERSION +1 -1
  3. data/lib/sugar-high/class_ext.rb +2 -133
  4. data/lib/sugar-high/file.rb +10 -11
  5. data/lib/sugar-high/file_ext.rb +13 -11
  6. data/lib/sugar-high/rails/concerns.rb +10 -4
  7. data/spec/sugar-high/file_spec.rb +26 -28
  8. data/spec/sugar-high/rails/concerns_spec.rb +31 -1
  9. data/spec/sugar-high/rails/fixture_user/scopes.rb +4 -0
  10. data/spec/sugar-high/rails/fixture_user/validations.rb +4 -0
  11. data/spec/sugar-high/rails/shared/associations.rb +1 -0
  12. data/spec/sugar-high/rails/shared/caching.rb +4 -0
  13. data/sugar-high.gemspec +6 -42
  14. metadata +19 -55
  15. data/lib/sugar-high/file_mutate.rb +0 -2
  16. data/lib/sugar-high/file_mutate/append_content.rb +0 -17
  17. data/lib/sugar-high/file_mutate/delete.rb +0 -29
  18. data/lib/sugar-high/file_mutate/insert_content.rb +0 -62
  19. data/lib/sugar-high/file_mutate/mutate.rb +0 -57
  20. data/lib/sugar-high/file_mutate/overwrite_content.rb +0 -17
  21. data/lib/sugar-high/file_mutate/remove_content.rb +0 -33
  22. data/lib/sugar-high/file_mutate/replace_content.rb +0 -45
  23. data/lib/sugar-high/file_mutation.rb +0 -58
  24. data/sandbox/test_routes_mutate.rb +0 -8
  25. data/spec/auto_load_blank_root.rb +0 -3
  26. data/spec/autoload_blank_root.rb +0 -3
  27. data/spec/autoload_blank_root/hello.rb +0 -6
  28. data/spec/autoload_blank_root/sailor.rb +0 -7
  29. data/spec/fixtures/application_file.rb +0 -6
  30. data/spec/fixtures/autoload_modules.rb +0 -3
  31. data/spec/fixtures/autoload_modules/subdir/first.rb +0 -7
  32. data/spec/fixtures/autoload_modules/subdir/second.rb +0 -5
  33. data/spec/fixtures/autoload_modules/subdir/third.rb +0 -4
  34. data/spec/fixtures/autoload_modules_root.rb +0 -3
  35. data/spec/fixtures/autoload_modules_root/first.rb +0 -7
  36. data/spec/fixtures/autoload_modules_root/second.rb +0 -4
  37. data/spec/fixtures/autoload_modules_root/third.rb +0 -7
  38. data/spec/fixtures/autoload_modulez.rb +0 -4
  39. data/spec/fixtures/autoload_modulez/first.rb +0 -7
  40. data/spec/fixtures/autoload_modulez/second.rb +0 -5
  41. data/spec/fixtures/autoload_modulez/third_one_here.rb +0 -4
  42. data/spec/fixtures/class_file.rb +0 -22
  43. data/spec/fixtures/class_file.txt +0 -0
  44. data/spec/fixtures/content_file.txt +0 -1
  45. data/spec/fixtures/routes_file.rb +0 -85
  46. data/spec/sugar-high/class_ext_spec.rb +0 -189
  47. data/spec/sugar-high/file/file_dsl_spec.rb +0 -4
  48. data/spec/sugar-high/file_mutate/append_content_spec.rb +0 -61
  49. data/spec/sugar-high/file_mutate/delete_spec.rb +0 -47
  50. data/spec/sugar-high/file_mutate/insert_before_last_spec.rb +0 -56
  51. data/spec/sugar-high/file_mutate/insert_content_spec.rb +0 -111
  52. data/spec/sugar-high/file_mutate/overwrite_content_spec.rb +0 -80
  53. data/spec/sugar-high/file_mutate/remove_content_spec.rb +0 -109
  54. data/spec/sugar-high/file_mutate/replace_content_spec.rb +0 -33
data/README.textile CHANGED
@@ -10,10 +10,9 @@ h2. Usage
10
10
 
11
11
  See specs for example use
12
12
 
13
- h2. Update June 22, 2011
13
+ h2. Update Aug 21, 2011
14
14
 
15
- file_mutate is now backwards compatible again in order nt to break gems such as cream et. al. that depend on auto inclusion of all File extensions into
16
- File object
15
+ Extracted *file_mutate* and *sweetloader* gems.
17
16
 
18
17
  h2. Sugar packs
19
18
 
@@ -25,8 +24,6 @@ h2. Sugar packs
25
24
  * dsl
26
25
  * enumerable
27
26
  * file
28
- * file_mutate (backwards compatible)
29
- * file_mutation
30
27
  * includes
31
28
  * kind_of
32
29
  * math
@@ -127,30 +124,6 @@ h3. File
127
124
  * self.overwrite : overwrite file with new content (mode = 'w')
128
125
  * self.append : append to existing file with content or create new (mode = 'w+')
129
126
 
130
- h3. File Mutate
131
- Adds all File mutation modules to the File class
132
-
133
- h3. File Mutation
134
-
135
- Various File Mutation modules that can be added to any module or class for some nice benefits. Useful for generators fx.
136
-
137
- Mutation modules within SugarHigh::FileMutate
138
-
139
- * AppendContent
140
- * Delete
141
- * InsertContent
142
- * OverwriteContent
143
- * RemoveContent
144
- * ReplaceContent
145
-
146
- To add all mutate modules to the File class, simply:
147
-
148
- <pre>File.mutate_ext :all</pre>
149
-
150
- Otherwise, simply specify which ones:
151
-
152
- <pre>File.mutate_ext :append_content, overwrite_content</pre>
153
-
154
127
  h3. Hash
155
128
 
156
129
  * hash_revert : Reverse keys and values
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.5
1
+ 0.6.0
@@ -1,134 +1,3 @@
1
- require 'sugar-high/kind_of'
2
- require 'sugar-high/array'
1
+ puts "Please use the new 'sweetloader' gem"
3
2
 
4
- class Module
5
- def include_and_extend(the_module, options={})
6
- options[:instance_methods] ||= :InstanceMethods
7
- options[:class_methods] ||= :ClassMethods
8
- # Mainly include but be flexible
9
- main_module = const_get(the_module.to_s.to_sym)
10
- include main_module # for an extend_and_include method, change this to extend main_module
11
- include main_module.const_get(options[:instance_methods]) if main_module.const_defined?(options[:instance_methods])
12
- extend main_module.const_get(options[:class_methods]) if main_module.const_defined?(options[:class_methods])
13
- end
14
-
15
- def autoload_modules *args
16
-
17
- options = args.extract_options!
18
- root = options[:root] || AutoLoader.root || ''
19
- path = root.strip.empty? ? self.name.to_s.underscore : [root, self.name.to_s.underscore].join('/')
20
- from = options[:from] || path
21
-
22
- # Here also could be adding of the file in top of load_paths like: $:.unshift File.dirname(__FILE__)
23
- # It is very useful for situations of having not load_paths built Rails or Gems way.
24
- args.each do |req_name|
25
- ruby_file = req_name.to_s.underscore
26
-
27
- send :autoload, req_name, AutoLoader.translate("#{from}/#{ruby_file}")
28
- end
29
- end
30
-
31
- end
32
-
33
- module AutoLoader
34
- @@root = ''
35
- @@namespaces = {}
36
-
37
- def self.root
38
- @@root
39
- end
40
-
41
- def self.namespaces
42
- @@namespaces
43
- end
44
-
45
- def self.root= root
46
- @@root = root
47
- end
48
-
49
- def self.namespaces= namespaces
50
- @@namespaces = namespaces
51
- end
52
-
53
- def self.translate name
54
- names = name.split('/')
55
- names.map do |name|
56
- clazz_name = name.to_s.camelize
57
- namespaces[clazz_name.to_sym] ? namespaces[clazz_name.to_sym] : name
58
- end.join('/')
59
- end
60
- end
61
-
62
- module ClassExt
63
- def get_module name
64
- # Module.const_get(name)
65
- name.to_s.camelize.constantize
66
- rescue
67
- nil
68
- end
69
-
70
- def is_class?(clazz)
71
- clazz.is_a?(Class) && (clazz.respond_to? :new)
72
- end
73
-
74
- def is_module?(clazz)
75
- clazz.is_a?(Module) && !(clazz.respond_to? :new)
76
- end
77
-
78
- def class_exists?(name)
79
- is_class? get_module(name)
80
- rescue
81
- return false
82
- end
83
-
84
- def module_exists?(name)
85
- is_module? get_module(name)
86
- rescue NameError
87
- return false
88
- end
89
-
90
- def try_class name
91
- return name if name.kind_of?(Class)
92
- found = get_module(name) if name.kind_of_label?
93
- return found if found.is_a?(Class)
94
- rescue
95
- false
96
- end
97
-
98
- def try_module name
99
- return name if name.kind_of?(Module)
100
- found = get_module(name) if name.kind_of_label?
101
- return found if found.is_a?(Module)
102
- rescue
103
- false
104
- end
105
-
106
- def try_module_only name
107
- return name if is_module?(name)
108
- found = get_module(name) if name.kind_of_label?
109
- return found if is_module?(found)
110
- rescue
111
- false
112
- end
113
-
114
-
115
- def find_first_class *names
116
- classes = names.flatten.compact.uniq.inject([]) do |res, class_name|
117
- found_class = try_class(class_name.to_s.camelize)
118
- res << found_class if found_class
119
- res
120
- end
121
- raise "Not one Class for any of: #{names} is currently loaded" if classes.empty?
122
- classes.first
123
- end
124
-
125
- def find_first_module *names
126
- modules = names.flatten.compact.uniq.inject([]) do |res, class_name|
127
- found_class = try_module(class_name.to_s.camelize)
128
- res << found_class if found_class
129
- res
130
- end
131
- raise "Not one Module for any of: #{names} is currently loaded" if modules.empty?
132
- modules.first
133
- end
134
- end
3
+ require 'sweetloader'
@@ -3,33 +3,32 @@ require 'sugar-high/arguments'
3
3
  require 'sugar-high/path'
4
4
  require 'sugar-high/regexp'
5
5
  require 'sugar-high/string'
6
- require 'sugar-high/file_mutate'
7
6
  require 'sugar-high/file_ext'
8
7
 
9
- class File
8
+ class File
10
9
  include SugarHigh::FileExt
11
- extend SugarHigh::FileExt::ClassMethods
10
+ extend SugarHigh::FileExt::ClassMethods
12
11
  end
13
12
 
14
13
  class Symbol
15
14
  def as_filename
16
15
  self.to_s.underscore
17
16
  end
18
-
17
+
19
18
  def valid_file_command?
20
19
  [:read, :remove, :delete].include? self
21
20
  end
22
-
21
+
23
22
  def file
24
23
  as_filename.file
25
- end
26
- end
24
+ end
25
+ end
27
26
 
28
27
  class NilClass
29
28
  def valid_file_command?
30
29
  false
31
30
  end
32
- end
31
+ end
33
32
 
34
33
  class Array
35
34
  def file_names ext = '*'
@@ -39,7 +38,7 @@ end
39
38
 
40
39
  class String
41
40
  def as_filename
42
- self.underscore
41
+ self.underscore
43
42
  end
44
43
 
45
44
  def valid_file_command?
@@ -57,10 +56,10 @@ class String
57
56
  end
58
57
 
59
58
  def new_file
60
- begin
59
+ begin
61
60
  file
62
61
  rescue
63
- File.open(self, 'w')
62
+ File.open(self, 'w')
64
63
  end
65
64
  end
66
65
  end
@@ -6,17 +6,17 @@ module SugarHigh
6
6
  raise ArgumentError, "There is no file at: #{file_name}" if !File.file?(file_name)
7
7
  File.zero?(file_name)
8
8
  end
9
-
9
+
10
10
  def has_content? file_name, content_matcher, &block
11
11
  file = get_file file_name
12
- file.has_content? content_matcher, &block
13
- end
14
-
12
+ file.has_content? content_matcher, &block
13
+ end
14
+
15
15
  def read_from file_name, options = {}, &block
16
16
  raise ArgumentError, "File to read from not found or not a file: #{file_name}" if !File.file? file_name
17
17
  content = File.read file_name
18
18
 
19
- if options[:before]
19
+ if options[:before]
20
20
  begin
21
21
  regexp = options[:before].to_regexp
22
22
  index = content.match(regexp).offset_before
@@ -26,27 +26,29 @@ module SugarHigh
26
26
  end
27
27
  end
28
28
 
29
- if options[:after]
29
+ if options[:after]
30
30
  begin
31
31
  regexp = options[:after].to_regexp
32
32
  index = content.match(regexp).offset_after
33
- content = content[index..-1]
33
+ content = content[index..-1]
34
34
  rescue
35
35
  raise ArgumentError, ":after option must be a string or regular expression, was : #{options[:after]}"
36
- end
36
+ end
37
37
  end
38
38
  yield content if block
39
39
  content
40
40
  end
41
41
  alias_method :read_content_from, :read_from
42
- alias_method :with_content_from, :read_from
42
+ alias_method :with_content_from, :read_from
43
43
  end
44
44
 
45
+ # instance methods
46
+
45
47
  def blank?
46
48
  File.zero?(self.path)
47
- end
49
+ end
48
50
 
49
- def has_content? content_matcher = nil, &block
51
+ def has_content? content_matcher = nil, &block
50
52
  content_matcher ||= yield
51
53
  begin
52
54
  content_matcher = content_matcher.to_regexp
@@ -1,23 +1,29 @@
1
- class << Module
1
+ class Module
2
2
  def concerned_with(*concerns)
3
3
  concerns.each do |concern|
4
- require_dependency "#{name.underscore}/#{concern}"
4
+ require_method "#{name.underscore}/#{concern}"
5
5
  end
6
6
  end
7
7
 
8
8
  def shared_concerns(*concerns)
9
9
  concerns.each do |concern|
10
- require_dependency "shared/#{concern}"
10
+ require_method "shared/#{concern}"
11
11
  end
12
12
  end
13
13
 
14
14
  def include_shared_concerns(*concerns)
15
15
  concerns.each do |concern|
16
- require_dependency "shared/#{concern}"
16
+ require_method "shared/#{concern}"
17
17
  self.send :include, concern.to_s.camelize.constantize
18
18
  end
19
19
  end
20
20
 
21
21
  alias_method :shared_concern, :shared_concerns
22
22
  alias_method :include_shared_concern, :include_shared_concerns
23
+
24
+ protected
25
+
26
+ def require_method path
27
+ defined?(require_dependency) ? require_dependency(path) : require(path)
28
+ end
23
29
  end
@@ -1,6 +1,5 @@
1
1
  require 'spec_helper'
2
2
  require 'sugar-high/file'
3
- require 'sugar-high/file_mutate'
4
3
 
5
4
  describe "SugarHigh" do
6
5
  describe "File" do
@@ -23,7 +22,7 @@ describe "SugarHigh" do
23
22
  end
24
23
  end
25
24
 
26
- describe '#blank?' do
25
+ describe '#blank?' do
27
26
  it "should return true for an empty file" do
28
27
  File.new(empty_file).blank?.should be_true
29
28
  end
@@ -37,7 +36,7 @@ describe "SugarHigh" do
37
36
  it "should find content in file using String argument" do
38
37
  File.overwrite(search_file) do
39
38
  'Find this line right here!'
40
- end
39
+ end
41
40
  File.has_content?(search_file, 'line right').should be_true
42
41
  File.has_content?(search_file, 'line left').should be_false
43
42
  end
@@ -45,18 +44,18 @@ describe "SugarHigh" do
45
44
  it "should find content in file using Regexp argument" do
46
45
  File.overwrite(search_file) do
47
46
  'Find this line right here!'
48
- end
47
+ end
49
48
  File.has_content?(search_file, /line right/).should be_true
50
49
  File.has_content?(search_file, /line left/).should be_false
51
50
  end
52
51
  end
53
-
52
+
54
53
  describe '#read_from' do
55
54
 
56
55
  it "should read all the content into a block" do
57
56
  File.read_from non_empty_file do |content|
58
57
  content.should match /blip/
59
- content.should match /blup/
58
+ content.should match /blup/
60
59
  end
61
60
  end
62
61
 
@@ -75,17 +74,17 @@ describe "SugarHigh" do
75
74
  it "should read all the content before a given marker into a block" do
76
75
  File.read_from non_empty_file, :before => 'blap' do |content|
77
76
  content.should match /blip/
78
- content.should_not match /blap/
77
+ content.should_not match /blap/
79
78
  end
80
79
  end
81
80
 
82
81
  it "should read all the content after a given marker into a block" do
83
82
  File.read_from non_empty_file, :after => 'blap' do |content|
84
83
  content.should match /blup/
85
- content.should_not match /blap/
84
+ content.should_not match /blap/
86
85
  end
87
86
  end
88
- end
87
+ end
89
88
 
90
89
  describe '#read_content (instance)' do
91
90
  let(:non_empty_file) { fixture_file 'non-empty.txt' }
@@ -93,56 +92,56 @@ describe "SugarHigh" do
93
92
  it "should read all the content into a block" do
94
93
  File.new(non_empty_file).read_content do |content|
95
94
  content.should match /blip/
96
- content.should match /blup/
95
+ content.should match /blup/
97
96
  end
98
97
  end
99
- end
100
-
98
+ end
99
+
101
100
  describe '#read_from (class)' do
102
101
  let(:non_empty_file) { fixture_file 'non-empty.txt' }
103
102
 
104
103
  it "should read all the content into a block" do
105
104
  File.read_from(non_empty_file) do |content|
106
105
  content.should match /blip/
107
- content.should match /blup/
106
+ content.should match /blup/
108
107
  end
109
108
  end
110
- end
109
+ end
111
110
  end
112
-
111
+
113
112
  describe "Array" do
114
- describe '#file_names' do
113
+ describe '#file_names' do
115
114
  let(:replace_file) { fixture_file 'file.txt' }
116
-
115
+
117
116
  before :each do
118
117
  File.delete replace_file if File.file?(replace_file)
119
- end
120
-
118
+ end
119
+
121
120
  it "should return all file names of an array of paths to files" do
122
121
  expr = fixtures_dir + '/*.txt'
123
122
  Dir.glob(expr).file_names('txt').should include('empty', 'non-empty')
124
123
  end
125
124
  end
126
- end
127
-
125
+ end
126
+
128
127
  describe "String" do
129
- describe '#new_file' do
128
+ describe '#new_file' do
130
129
  let(:class_file) { fixture_file 'class_file.txt' }
131
-
130
+
132
131
  it "should get the existing file" do
133
132
  class_file.new_file.path.should =~ /class_file/
134
133
  end
135
134
  end
136
-
137
- describe '#file' do
135
+
136
+ describe '#file' do
138
137
  let(:class_file) { fixture_file 'class_file.txt' }
139
-
138
+
140
139
  it "should get the file" do
141
140
  class_file.file.path.should =~ /class_file/
142
141
  end
143
142
  end
144
143
 
145
- describe '#dir' do
144
+ describe '#dir' do
146
145
  it "should get the dir" do
147
146
  fix_path = fixtures_dir.path
148
147
  # puts fix_path
@@ -152,4 +151,3 @@ describe "SugarHigh" do
152
151
  end
153
152
  end
154
153
  end
155
-