sugar-high 0.5.0 → 0.5.1
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 → README.textile} +54 -39
- data/VERSION +1 -1
- data/lib/sugar-high/array.rb +11 -2
- data/lib/sugar-high/boolean.rb +7 -0
- data/lib/sugar-high/class_ext.rb +15 -15
- data/lib/sugar-high/kind_of.rb +8 -8
- data/lib/sugar-high/metaclass.rb +2 -2
- data/lib/sugar-high/string.rb +26 -18
- data/sugar-high.gemspec +8 -7
- metadata +49 -74
| @@ -1,21 +1,21 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            h1. Sugar high!
         | 
| 2 2 |  | 
| 3 3 | 
             
            Inspired by the 'zucker' project.
         | 
| 4 4 |  | 
| 5 | 
            -
             | 
| 5 | 
            +
            h2. Install
         | 
| 6 6 |  | 
| 7 7 | 
             
            <code>gem install sugar-high</code>
         | 
| 8 8 |  | 
| 9 | 
            -
             | 
| 9 | 
            +
            h2. Usage
         | 
| 10 10 |  | 
| 11 11 | 
             
            See specs for example use
         | 
| 12 12 |  | 
| 13 | 
            -
             | 
| 13 | 
            +
            h2. Update June 22, 2011
         | 
| 14 14 |  | 
| 15 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 16 | 
             
            File object
         | 
| 17 17 |  | 
| 18 | 
            -
             | 
| 18 | 
            +
            h2. Sugar packs
         | 
| 19 19 |  | 
| 20 20 | 
             
            * alias
         | 
| 21 21 | 
             
            * arguments
         | 
| @@ -32,24 +32,26 @@ File object | |
| 32 32 | 
             
            * metaclass
         | 
| 33 33 | 
             
            * methods
         | 
| 34 34 | 
             
            * module
         | 
| 35 | 
            -
            * not | 
| 35 | 
            +
            * not
         | 
| 36 36 | 
             
            * numeric
         | 
| 37 37 | 
             
            * path
         | 
| 38 38 | 
             
            * properties
         | 
| 39 39 | 
             
            * reg_exp
         | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 40 | 
            +
             | 
| 41 | 
            +
            h3. Alias
         | 
| 42 42 |  | 
| 43 43 | 
             
            * multi_alias name, options_hash : creates multiple aliases using patterns
         | 
| 44 44 |  | 
| 45 | 
            -
             | 
| 45 | 
            +
            h3. Arguments
         | 
| 46 46 |  | 
| 47 47 | 
             
            * args (Used in generator CLI testing)
         | 
| 48 48 | 
             
            * last_option *args : Returns last argument if hash or empty hash otherwise
         | 
| 49 49 | 
             
            * ...
         | 
| 50 50 |  | 
| 51 | 
            -
             | 
| 51 | 
            +
            h3. Array
         | 
| 52 52 |  | 
| 53 | 
            +
            * pick_one! - pick one random item
         | 
| 54 | 
            +
            * pink (n) - pick n random item
         | 
| 53 55 | 
             
            * to_symbols
         | 
| 54 56 | 
             
            * to_symbols_uniq
         | 
| 55 57 | 
             
            * to_strings
         | 
| @@ -57,11 +59,11 @@ File object | |
| 57 59 | 
             
            * file_join
         | 
| 58 60 | 
             
            * ...
         | 
| 59 61 |  | 
| 60 | 
            -
             | 
| 62 | 
            +
            h3. Blank
         | 
| 61 63 |  | 
| 62 64 | 
             
            * blank?
         | 
| 63 65 |  | 
| 64 | 
            -
             | 
| 66 | 
            +
            h3. Class Extension
         | 
| 65 67 |  | 
| 66 68 | 
             
            * autoload_modules (by @stanislaw)
         | 
| 67 69 |  | 
| @@ -77,7 +79,7 @@ Makes it easy to autoload multiple modules by standard folder-to-module mapping | |
| 77 79 | 
             
            * find_first_class(*class_names)
         | 
| 78 80 | 
             
            * find_first_module(*module_names)
         | 
| 79 81 |  | 
| 80 | 
            -
             | 
| 82 | 
            +
            h3. Enumerable
         | 
| 81 83 |  | 
| 82 84 | 
             
            * only_kinds_of?(*modules)
         | 
| 83 85 | 
             
            * only_labels?
         | 
| @@ -93,16 +95,16 @@ Makes it easy to autoload multiple modules by standard folder-to-module mapping | |
| 93 95 | 
             
            * select_only(type)    
         | 
| 94 96 | 
             
            * select_only!(type)
         | 
| 95 97 |  | 
| 96 | 
            -
             | 
| 98 | 
            +
            h3. File
         | 
| 97 99 |  | 
| 98 100 | 
             
            * self.blank? and blank? : Is file empty?
         | 
| 99 101 | 
             
            * self.overwrite : overwrite file with new content (mode = 'w')
         | 
| 100 102 | 
             
            * self.append : append to existing file with content or create new (mode = 'w+')
         | 
| 101 103 |  | 
| 102 | 
            -
             | 
| 104 | 
            +
            h3. File Mutate
         | 
| 103 105 | 
             
            Adds all File mutation modules to the File class
         | 
| 104 106 |  | 
| 105 | 
            -
             | 
| 107 | 
            +
            h3. File Mutation
         | 
| 106 108 |  | 
| 107 109 | 
             
            Various File Mutation modules that can be added to any module or class for some nice benefits. Useful for generators fx.
         | 
| 108 110 |  | 
| @@ -123,44 +125,44 @@ Otherwise, simply specify which ones: | |
| 123 125 |  | 
| 124 126 | 
             
            <pre>File.mutate_ext :append_content, overwrite_content</pre>
         | 
| 125 127 |  | 
| 126 | 
            -
             | 
| 128 | 
            +
            h3. Hash
         | 
| 127 129 |  | 
| 128 130 | 
             
            * hash_revert : Reverse keys and values
         | 
| 129 131 | 
             
            * try_keys : return value of first key that is in Hash
         | 
| 130 132 |  | 
| 131 | 
            -
             | 
| 133 | 
            +
            h3. Includes
         | 
| 132 134 |  | 
| 133 135 | 
             
            * includes : Includes modules listed as symbols
         | 
| 134 136 |  | 
| 135 | 
            -
             | 
| 137 | 
            +
            h3. Kind of
         | 
| 136 138 |  | 
| 137 139 | 
             
            * any_kind_of? *const_list
         | 
| 138 140 | 
             
            * kind_of_label? : Symbol or String ?
         | 
| 139 141 |  | 
| 140 | 
            -
             | 
| 142 | 
            +
            h3. Metaclass
         | 
| 141 143 |  | 
| 142 144 | 
             
            * metaclass : Get the metaclass, can be used to dynamically add class singleton methods!
         | 
| 143 145 |  | 
| 144 | 
            -
             | 
| 146 | 
            +
            h3. Methods
         | 
| 145 147 |  | 
| 146 148 | 
             
            * get_methods *types : Get collection of methods, fx :private and :protected (or :all)
         | 
| 147 149 |  | 
| 148 | 
            -
             | 
| 150 | 
            +
            h3. Module
         | 
| 149 151 |  | 
| 150 152 | 
             
            * modules *names
         | 
| 151 153 | 
             
            * nested_modules *names
         | 
| 152 154 |  | 
| 153 155 | 
             
            Create empty namespaces
         | 
| 154 156 |  | 
| 155 | 
            -
             | 
| 157 | 
            +
            h3. Not
         | 
| 156 158 |  | 
| 157 159 | 
             
            * not
         | 
| 158 160 |  | 
| 159 161 | 
             
            Adds the _#not_ method to Object, so you can say fx: <code>if x.not.empty?</code>
         | 
| 160 162 |  | 
| 161 | 
            -
             | 
| 163 | 
            +
            h3. Numeric
         | 
| 162 164 |  | 
| 163 | 
            -
            module _NumericCheckExt_ | 
| 165 | 
            +
            module _NumericCheckExt_
         | 
| 164 166 |  | 
| 165 167 | 
             
            * is_numeric?(arg) - alias numeric?
         | 
| 166 168 | 
             
            * check_numeric!(arg) - raises error if argument is not numeric
         | 
| @@ -169,12 +171,11 @@ module NumberDslExt added to all numeric classes (Float and Numeric) | |
| 169 171 | 
             
            * thousand
         | 
| 170 172 | 
             
            * hundred
         | 
| 171 173 |  | 
| 172 | 
            -
            <pre>
         | 
| 173 | 
            -
             | 
| 174 | 
            -
              => 3200  
         | 
| 174 | 
            +
            <pre>3.thousand + 2.hundred 
         | 
| 175 | 
            +
              => 3200
         | 
| 175 176 | 
             
            </pre>
         | 
| 176 177 |  | 
| 177 | 
            -
             | 
| 178 | 
            +
            h3. Path
         | 
| 178 179 | 
             
            * String#path - extends String instance with PathString
         | 
| 179 180 |  | 
| 180 181 | 
             
            module PathString
         | 
| @@ -183,8 +184,8 @@ module PathString | |
| 183 184 | 
             
            * to_symlink
         | 
| 184 185 |  | 
| 185 186 | 
             
            <pre>
         | 
| 186 | 
            -
            "a/b/c".to_dir | 
| 187 | 
            -
            "a/b/c/d.rb".to_file | 
| 187 | 
            +
            "a/b/c".to_dir
         | 
| 188 | 
            +
            "a/b/c/d.rb".to_file
         | 
| 188 189 | 
             
            </pre>
         | 
| 189 190 |  | 
| 190 191 | 
             
            File type existance
         | 
| @@ -205,7 +206,7 @@ Navigate dirs | |
| 205 206 | 
             
            "a/b/../".post_down(1).should == "a/b/"  
         | 
| 206 207 | 
             
            </pre>
         | 
| 207 208 |  | 
| 208 | 
            -
             | 
| 209 | 
            +
            h3. Properties
         | 
| 209 210 |  | 
| 210 211 | 
             
            <pre>
         | 
| 211 212 | 
             
            class CruiseShip
         | 
| @@ -213,15 +214,15 @@ class CruiseShip | |
| 213 214 |  | 
| 214 215 | 
             
              property :direction
         | 
| 215 216 | 
             
              property :speed, is(0..300)
         | 
| 216 | 
            -
            end | 
| 217 | 
            +
            end
         | 
| 217 218 |  | 
| 218 | 
            -
            ship = CruiseShip.new | 
| 219 | 
            +
            ship = CruiseShip.new
         | 
| 219 220 | 
             
            ship.add_direction_listener(lambda {|x| puts "Oy... someone changed the direction to #{x}"})    
         | 
| 220 221 | 
             
            ship.speed = 200
         | 
| 221 222 | 
             
            ship.speed = 301 # outside valid range!
         | 
| 222 223 | 
             
            </pre>
         | 
| 223 224 |  | 
| 224 | 
            -
             | 
| 225 | 
            +
            h3. RegExp
         | 
| 225 226 |  | 
| 226 227 | 
             
            String, RegExp
         | 
| 227 228 | 
             
            * to_regexp
         | 
| @@ -232,17 +233,31 @@ MatchData | |
| 232 233 | 
             
            * offset_after
         | 
| 233 234 | 
             
            * offset_before
         | 
| 234 235 |  | 
| 235 | 
            -
             | 
| 236 | 
            +
            h3. RSpec 2 Matchers
         | 
| 236 237 |  | 
| 237 238 | 
             
            * have_aliases(method, *alias_methods)  
         | 
| 238 239 |  | 
| 239 240 | 
             
            <pre>
         | 
| 240 241 | 
             
              require 'sugar-high/rspec'
         | 
| 241 | 
            -
             | 
| 242 | 
            +
             | 
| 242 243 | 
             
              have_aliases :original, :alias_1, :alias2
         | 
| 243 244 | 
             
            </pre>
         | 
| 244 245 |  | 
| 245 | 
            -
             | 
| 246 | 
            +
            h3. String
         | 
| 247 | 
            +
             | 
| 248 | 
            +
            Class methods
         | 
| 249 | 
            +
            * random_letters
         | 
| 250 | 
            +
            * letters
         | 
| 251 | 
            +
             | 
| 252 | 
            +
            Instance methods
         | 
| 253 | 
            +
            * alpha_numeric
         | 
| 254 | 
            +
            * insert_before_last
         | 
| 255 | 
            +
             | 
| 256 | 
            +
            If not already defined
         | 
| 257 | 
            +
            * trim
         | 
| 258 | 
            +
            * concat
         | 
| 259 | 
            +
             | 
| 260 | 
            +
            h2. Note on Patches/Pull Requests
         | 
| 246 261 |  | 
| 247 262 | 
             
            * Fork the project.
         | 
| 248 263 | 
             
            * Make your feature addition or bug fix.
         | 
| @@ -252,6 +267,6 @@ MatchData | |
| 252 267 | 
             
              (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
         | 
| 253 268 | 
             
            * Send me a pull request. Bonus points for topic branches.
         | 
| 254 269 |  | 
| 255 | 
            -
             | 
| 270 | 
            +
            h2. Copyright
         | 
| 256 271 |  | 
| 257 272 | 
             
            Copyright (c) 2010 Kristian Mandrup. See LICENSE for details.
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.5. | 
| 1 | 
            +
            0.5.1
         | 
    
        data/lib/sugar-high/array.rb
    CHANGED
    
    | @@ -3,17 +3,26 @@ require 'sugar-high/enumerable' | |
| 3 3 | 
             
            require 'sugar-high/path'
         | 
| 4 4 |  | 
| 5 5 | 
             
            class Array
         | 
| 6 | 
            +
              def pick_one!
         | 
| 7 | 
            +
                index = Kernel.rand(self.size)
         | 
| 8 | 
            +
                self[index]
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              def pick num
         | 
| 12 | 
            +
                num.times.inject([]) {|res, x| res << pick_one!}
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 6 15 | 
             
              def without(*values)
         | 
| 7 16 | 
             
                 copy = self.dup
         | 
| 8 17 | 
             
                 values.flatten.each { |value| copy.delete(value) }
         | 
| 9 18 | 
             
                 copy
         | 
| 10 19 | 
             
              end
         | 
| 11 | 
            -
             | 
| 20 | 
            +
             | 
| 12 21 | 
             
              def to_symbols
         | 
| 13 22 | 
             
                res = self.flatten.select_labels
         | 
| 14 23 | 
             
                res = res.map{|a| a.to_s.to_sym } if res
         | 
| 15 24 | 
             
                res || []
         | 
| 16 | 
            -
              end | 
| 25 | 
            +
              end
         | 
| 17 26 |  | 
| 18 27 | 
             
              def to_symbols!
         | 
| 19 28 | 
             
               self.flatten!
         | 
    
        data/lib/sugar-high/class_ext.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            require 'sugar-high/kind_of'
         | 
| 2 2 | 
             
            require 'sugar-high/array'
         | 
| 3 3 |  | 
| 4 | 
            -
            class Module | 
| 4 | 
            +
            class Module
         | 
| 5 5 | 
             
              def include_and_extend(the_module, options={})
         | 
| 6 6 | 
             
                options[:instance_methods] ||= :InstanceMethods
         | 
| 7 7 | 
             
                options[:class_methods] ||= :ClassMethods
         | 
| @@ -11,7 +11,7 @@ class Module | |
| 11 11 | 
             
                include main_module.const_get(options[:instance_methods]) if main_module.const_defined?(options[:instance_methods])
         | 
| 12 12 | 
             
                extend main_module.const_get(options[:class_methods]) if main_module.const_defined?(options[:class_methods])
         | 
| 13 13 | 
             
              end
         | 
| 14 | 
            -
             | 
| 14 | 
            +
             | 
| 15 15 | 
             
              def autoload_modules *args
         | 
| 16 16 |  | 
| 17 17 | 
             
                options = args.extract_options!
         | 
| @@ -57,16 +57,16 @@ module AutoLoader | |
| 57 57 | 
             
                  namespaces[clazz_name.to_sym] ? namespaces[clazz_name.to_sym] : name
         | 
| 58 58 | 
             
                end.join('/')
         | 
| 59 59 | 
             
              end
         | 
| 60 | 
            -
            end | 
| 60 | 
            +
            end
         | 
| 61 61 |  | 
| 62 | 
            -
            module ClassExt | 
| 62 | 
            +
            module ClassExt
         | 
| 63 63 | 
             
              def get_module name
         | 
| 64 64 | 
             
                # Module.const_get(name)
         | 
| 65 65 | 
             
                name.to_s.camelize.constantize
         | 
| 66 66 | 
             
              rescue
         | 
| 67 67 | 
             
                nil
         | 
| 68 68 | 
             
              end
         | 
| 69 | 
            -
             | 
| 69 | 
            +
             | 
| 70 70 | 
             
              def is_class?(clazz)
         | 
| 71 71 | 
             
                clazz.is_a?(Class) && (clazz.respond_to? :new)
         | 
| 72 72 | 
             
              end
         | 
| @@ -74,42 +74,42 @@ module ClassExt | |
| 74 74 | 
             
              def is_module?(clazz)
         | 
| 75 75 | 
             
                clazz.is_a?(Module) && !(clazz.respond_to? :new)
         | 
| 76 76 | 
             
              end
         | 
| 77 | 
            -
             | 
| 77 | 
            +
             | 
| 78 78 | 
             
              def class_exists?(name)
         | 
| 79 79 | 
             
                is_class? get_module(name)
         | 
| 80 80 | 
             
              rescue
         | 
| 81 81 | 
             
                return false
         | 
| 82 | 
            -
              end | 
| 82 | 
            +
              end
         | 
| 83 83 |  | 
| 84 84 | 
             
              def module_exists?(name)
         | 
| 85 85 | 
             
                is_module? get_module(name)
         | 
| 86 86 | 
             
              rescue NameError
         | 
| 87 87 | 
             
                return false
         | 
| 88 | 
            -
              end | 
| 89 | 
            -
             | 
| 88 | 
            +
              end
         | 
| 89 | 
            +
             | 
| 90 90 | 
             
              def try_class name
         | 
| 91 91 | 
             
                return name if name.kind_of?(Class)
         | 
| 92 92 | 
             
                found = get_module(name) if name.kind_of_label?
         | 
| 93 93 | 
             
                return found if found.is_a?(Class)
         | 
| 94 | 
            -
              rescue | 
| 94 | 
            +
              rescue
         | 
| 95 95 | 
             
                false
         | 
| 96 | 
            -
              end | 
| 96 | 
            +
              end
         | 
| 97 97 |  | 
| 98 98 | 
             
              def try_module name
         | 
| 99 99 | 
             
                return name if name.kind_of?(Module)
         | 
| 100 100 | 
             
                found = get_module(name) if name.kind_of_label?
         | 
| 101 101 | 
             
                return found if found.is_a?(Module)
         | 
| 102 | 
            -
              rescue | 
| 102 | 
            +
              rescue
         | 
| 103 103 | 
             
                false
         | 
| 104 | 
            -
              end | 
| 104 | 
            +
              end
         | 
| 105 105 |  | 
| 106 106 | 
             
              def try_module_only name
         | 
| 107 107 | 
             
                return name if is_module?(name)
         | 
| 108 108 | 
             
                found = get_module(name) if name.kind_of_label?
         | 
| 109 109 | 
             
                return found if is_module?(found)
         | 
| 110 | 
            -
              rescue | 
| 110 | 
            +
              rescue
         | 
| 111 111 | 
             
                false
         | 
| 112 | 
            -
              end | 
| 112 | 
            +
              end
         | 
| 113 113 |  | 
| 114 114 |  | 
| 115 115 | 
             
              def find_first_class *names
         | 
    
        data/lib/sugar-high/kind_of.rb
    CHANGED
    
    | @@ -7,15 +7,15 @@ class Object | |
| 7 7 | 
             
              end
         | 
| 8 8 |  | 
| 9 9 | 
             
              def any_kind_of? *kinds
         | 
| 10 | 
            -
                kinds.all_kinds.each do |kind| | 
| 11 | 
            -
                  return true if self.kind_of? kind | 
| 10 | 
            +
                kinds.all_kinds.each do |kind|
         | 
| 11 | 
            +
                  return true if self.kind_of? kind
         | 
| 12 12 | 
             
                end
         | 
| 13 13 | 
             
                false
         | 
| 14 14 | 
             
              end
         | 
| 15 15 |  | 
| 16 16 | 
             
              def not_any_kind_of? *kinds
         | 
| 17 | 
            -
                kinds.all_kinds.each do |kind| | 
| 18 | 
            -
                  return false if self.kind_of? kind | 
| 17 | 
            +
                kinds.all_kinds.each do |kind|
         | 
| 18 | 
            +
                  return false if self.kind_of? kind
         | 
| 19 19 | 
             
                end
         | 
| 20 20 | 
             
                true
         | 
| 21 21 | 
             
              end
         | 
| @@ -33,11 +33,11 @@ class Object | |
| 33 33 | 
             
                self.any_kind_of? Symbols, Symbol
         | 
| 34 34 | 
             
              end
         | 
| 35 35 | 
             
            end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
            class Kinds | 
| 36 | 
            +
             | 
| 37 | 
            +
            class Kinds
         | 
| 38 38 | 
             
              attr_accessor :kinds
         | 
| 39 | 
            -
             | 
| 39 | 
            +
             | 
| 40 40 | 
             
              def initialize *kinds
         | 
| 41 41 | 
             
                self.kinds = *kinds
         | 
| 42 42 | 
             
              end
         | 
| 43 | 
            -
            end
         | 
| 43 | 
            +
            end
         | 
    
        data/lib/sugar-high/metaclass.rb
    CHANGED
    
    
    
        data/lib/sugar-high/string.rb
    CHANGED
    
    | @@ -1,12 +1,25 @@ | |
| 1 1 | 
             
            class String
         | 
| 2 | 
            -
              def  | 
| 3 | 
            -
             | 
| 2 | 
            +
              def self.random_letters count, type = :lower
         | 
| 3 | 
            +
               letters(type).pick(count)
         | 
| 4 4 | 
             
              end
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              def  | 
| 7 | 
            -
                 | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 5 | 
            +
             | 
| 6 | 
            +
              def self.letters type = :lower
         | 
| 7 | 
            +
                letters = ('a'..'z').to_a
         | 
| 8 | 
            +
                type == :upper ? letters.map!(&:upcase) : letters
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              unless respond_to? :trim
         | 
| 12 | 
            +
                def trim
         | 
| 13 | 
            +
                  self.strip
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             
         | 
| 17 | 
            +
              unless respond_to? :concat
         | 
| 18 | 
            +
                def concat *args
         | 
| 19 | 
            +
                  args.inject(self) do |res, arg| 
         | 
| 20 | 
            +
                    res << arg.to_s
         | 
| 21 | 
            +
                    res
         | 
| 22 | 
            +
                  end
         | 
| 10 23 | 
             
                end
         | 
| 11 24 | 
             
              end
         | 
| 12 25 |  | 
| @@ -14,7 +27,7 @@ class String | |
| 14 27 | 
             
              def alpha_numeric
         | 
| 15 28 | 
             
                self.gsub(/^\-+/, '').gsub(/[^0-9a-zA-Z_\-]+/i, '')
         | 
| 16 29 | 
             
              end
         | 
| 17 | 
            -
             | 
| 30 | 
            +
             | 
| 18 31 | 
             
              def insert_before_last str, marker = 'end'
         | 
| 19 32 | 
             
                res = []
         | 
| 20 33 | 
             
                found = false
         | 
| @@ -25,17 +38,12 @@ class String | |
| 25 38 | 
             
                  marker[:marker].to_s
         | 
| 26 39 | 
             
                else
         | 
| 27 40 | 
             
                  raise ArgumentException, "last argument is the marker and must be a String, Symbol or even Hash with a :marker option pointing to the marker (String or Symbol)"
         | 
| 28 | 
            -
                end | 
| 29 | 
            -
             | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
             | 
| 30 43 | 
             
                marker = Regexp.escape(marker.to_s.reverse)
         | 
| 31 44 | 
             
                nl = Regexp.escape("\n")
         | 
| 32 | 
            -
                # puts self
         | 
| 33 | 
            -
                # puts "marker: #{marker}"
         | 
| 34 | 
            -
                # puts "nl: #{nl}"    
         | 
| 35 | 
            -
                # puts "str: #{str}"    
         | 
| 36 | 
            -
              
         | 
| 37 45 | 
             
                self.reverse.each_line do |x|
         | 
| 38 | 
            -
                  x.gsub! /#{nl}/, '' | 
| 46 | 
            +
                  x.gsub! /#{nl}/, ''
         | 
| 39 47 | 
             
                  if !found && x =~ /#{marker}/
         | 
| 40 48 | 
             
                    replace = "#{str}\n" << x.reverse
         | 
| 41 49 | 
             
                    res << replace
         | 
| @@ -43,7 +51,7 @@ class String | |
| 43 51 | 
             
                  else
         | 
| 44 52 | 
             
                    res << x.reverse
         | 
| 45 53 | 
             
                  end
         | 
| 46 | 
            -
                end | 
| 54 | 
            +
                end
         | 
| 47 55 | 
             
                res = res.reverse.join("\n")
         | 
| 48 56 | 
             
              end
         | 
| 49 | 
            -
            end
         | 
| 57 | 
            +
            end
         | 
    
        data/sugar-high.gemspec
    CHANGED
    
    | @@ -5,23 +5,23 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{sugar-high}
         | 
| 8 | 
            -
              s.version = "0.5. | 
| 8 | 
            +
              s.version = "0.5.1"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 | 
            -
              s.authors = [ | 
| 12 | 
            -
              s.date = %q{2011-07- | 
| 11 | 
            +
              s.authors = ["Kristian Mandrup"]
         | 
| 12 | 
            +
              s.date = %q{2011-07-31}
         | 
| 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 = [
         | 
| 16 16 | 
             
                "LICENSE",
         | 
| 17 | 
            -
                "README. | 
| 17 | 
            +
                "README.textile"
         | 
| 18 18 | 
             
              ]
         | 
| 19 19 | 
             
              s.files = [
         | 
| 20 20 | 
             
                ".document",
         | 
| 21 21 | 
             
                ".rspec",
         | 
| 22 22 | 
             
                "Gemfile",
         | 
| 23 23 | 
             
                "LICENSE",
         | 
| 24 | 
            -
                "README. | 
| 24 | 
            +
                "README.textile",
         | 
| 25 25 | 
             
                "Rakefile",
         | 
| 26 26 | 
             
                "VERSION",
         | 
| 27 27 | 
             
                "lib/sugar-high.rb",
         | 
| @@ -29,6 +29,7 @@ Gem::Specification.new do |s| | |
| 29 29 | 
             
                "lib/sugar-high/arguments.rb",
         | 
| 30 30 | 
             
                "lib/sugar-high/array.rb",
         | 
| 31 31 | 
             
                "lib/sugar-high/blank.rb",
         | 
| 32 | 
            +
                "lib/sugar-high/boolean.rb",
         | 
| 32 33 | 
             
                "lib/sugar-high/class_ext.rb",
         | 
| 33 34 | 
             
                "lib/sugar-high/enumerable.rb",
         | 
| 34 35 | 
             
                "lib/sugar-high/file.rb",
         | 
| @@ -110,8 +111,8 @@ Gem::Specification.new do |s| | |
| 110 111 | 
             
                "sugar-high.gemspec"
         | 
| 111 112 | 
             
              ]
         | 
| 112 113 | 
             
              s.homepage = %q{http://github.com/kristianmandrup/sugar-high}
         | 
| 113 | 
            -
              s.require_paths = [ | 
| 114 | 
            -
              s.rubygems_version = %q{1. | 
| 114 | 
            +
              s.require_paths = ["lib"]
         | 
| 115 | 
            +
              s.rubygems_version = %q{1.6.2}
         | 
| 115 116 | 
             
              s.summary = %q{Ruby convenience sugar packs!}
         | 
| 116 117 |  | 
| 117 118 | 
             
              if s.respond_to? :specification_version then
         | 
    
        metadata
    CHANGED
    
    | @@ -1,80 +1,63 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sugar-high
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 4 | 
            -
               | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.5.1
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 | 
            -
              segments: 
         | 
| 7 | 
            -
              - 0
         | 
| 8 | 
            -
              - 5
         | 
| 9 | 
            -
              - 0
         | 
| 10 | 
            -
              version: 0.5.0
         | 
| 11 6 | 
             
            platform: ruby
         | 
| 12 | 
            -
            authors: | 
| 7 | 
            +
            authors:
         | 
| 13 8 | 
             
            - Kristian Mandrup
         | 
| 14 9 | 
             
            autorequire: 
         | 
| 15 10 | 
             
            bindir: bin
         | 
| 16 11 | 
             
            cert_chain: []
         | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
            dependencies: | 
| 20 | 
            -
            - !ruby/object:Gem::Dependency | 
| 21 | 
            -
               | 
| 12 | 
            +
            date: 2011-07-31 00:00:00.000000000 +02:00
         | 
| 13 | 
            +
            default_executable: 
         | 
| 14 | 
            +
            dependencies:
         | 
| 15 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 16 | 
            +
              name: rspec
         | 
| 17 | 
            +
              requirement: &2155962220 !ruby/object:Gem::Requirement
         | 
| 22 18 | 
             
                none: false
         | 
| 23 | 
            -
                requirements: | 
| 24 | 
            -
                - -  | 
| 25 | 
            -
                  - !ruby/object:Gem::Version | 
| 26 | 
            -
                     | 
| 27 | 
            -
                    segments: 
         | 
| 28 | 
            -
                    - 0
         | 
| 29 | 
            -
                    version: "0"
         | 
| 30 | 
            -
              version_requirements: *id001
         | 
| 19 | 
            +
                requirements:
         | 
| 20 | 
            +
                - - ! '>='
         | 
| 21 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            +
                    version: '0'
         | 
| 31 23 | 
             
              type: :development
         | 
| 32 | 
            -
              name: rspec
         | 
| 33 24 | 
             
              prerelease: false
         | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 25 | 
            +
              version_requirements: *2155962220
         | 
| 26 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 27 | 
            +
              name: active_support
         | 
| 28 | 
            +
              requirement: &2155961300 !ruby/object:Gem::Requirement
         | 
| 36 29 | 
             
                none: false
         | 
| 37 | 
            -
                requirements: | 
| 38 | 
            -
                - -  | 
| 39 | 
            -
                  - !ruby/object:Gem::Version | 
| 40 | 
            -
                     | 
| 41 | 
            -
                    segments: 
         | 
| 42 | 
            -
                    - 0
         | 
| 43 | 
            -
                    version: "0"
         | 
| 44 | 
            -
              version_requirements: *id002
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - ! '>='
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 45 34 | 
             
              type: :development
         | 
| 46 | 
            -
              name: active_support
         | 
| 47 35 | 
             
              prerelease: false
         | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 36 | 
            +
              version_requirements: *2155961300
         | 
| 37 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 38 | 
            +
              name: rspec
         | 
| 39 | 
            +
              requirement: &2155960580 !ruby/object:Gem::Requirement
         | 
| 50 40 | 
             
                none: false
         | 
| 51 | 
            -
                requirements: | 
| 52 | 
            -
                - -  | 
| 53 | 
            -
                  - !ruby/object:Gem::Version | 
| 54 | 
            -
                     | 
| 55 | 
            -
                    segments: 
         | 
| 56 | 
            -
                    - 2
         | 
| 57 | 
            -
                    - 5
         | 
| 58 | 
            -
                    version: "2.5"
         | 
| 59 | 
            -
              version_requirements: *id003
         | 
| 41 | 
            +
                requirements:
         | 
| 42 | 
            +
                - - ! '>='
         | 
| 43 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 44 | 
            +
                    version: '2.5'
         | 
| 60 45 | 
             
              type: :development
         | 
| 61 | 
            -
              name: rspec
         | 
| 62 46 | 
             
              prerelease: false
         | 
| 47 | 
            +
              version_requirements: *2155960580
         | 
| 63 48 | 
             
            description: More Ruby sugar - inspired by the 'zuker' project
         | 
| 64 49 | 
             
            email: kmandrup@gmail.com
         | 
| 65 50 | 
             
            executables: []
         | 
| 66 | 
            -
             | 
| 67 51 | 
             
            extensions: []
         | 
| 68 | 
            -
             | 
| 69 | 
            -
            extra_rdoc_files: 
         | 
| 52 | 
            +
            extra_rdoc_files:
         | 
| 70 53 | 
             
            - LICENSE
         | 
| 71 | 
            -
            - README. | 
| 72 | 
            -
            files: | 
| 54 | 
            +
            - README.textile
         | 
| 55 | 
            +
            files:
         | 
| 73 56 | 
             
            - .document
         | 
| 74 57 | 
             
            - .rspec
         | 
| 75 58 | 
             
            - Gemfile
         | 
| 76 59 | 
             
            - LICENSE
         | 
| 77 | 
            -
            - README. | 
| 60 | 
            +
            - README.textile
         | 
| 78 61 | 
             
            - Rakefile
         | 
| 79 62 | 
             
            - VERSION
         | 
| 80 63 | 
             
            - lib/sugar-high.rb
         | 
| @@ -82,6 +65,7 @@ files: | |
| 82 65 | 
             
            - lib/sugar-high/arguments.rb
         | 
| 83 66 | 
             
            - lib/sugar-high/array.rb
         | 
| 84 67 | 
             
            - lib/sugar-high/blank.rb
         | 
| 68 | 
            +
            - lib/sugar-high/boolean.rb
         | 
| 85 69 | 
             
            - lib/sugar-high/class_ext.rb
         | 
| 86 70 | 
             
            - lib/sugar-high/enumerable.rb
         | 
| 87 71 | 
             
            - lib/sugar-high/file.rb
         | 
| @@ -161,38 +145,29 @@ files: | |
| 161 145 | 
             
            - spec/sugar-high/regexp_spec.rb
         | 
| 162 146 | 
             
            - spec/sugar-high/string_spec.rb
         | 
| 163 147 | 
             
            - sugar-high.gemspec
         | 
| 148 | 
            +
            has_rdoc: true
         | 
| 164 149 | 
             
            homepage: http://github.com/kristianmandrup/sugar-high
         | 
| 165 150 | 
             
            licenses: []
         | 
| 166 | 
            -
             | 
| 167 151 | 
             
            post_install_message: 
         | 
| 168 152 | 
             
            rdoc_options: []
         | 
| 169 | 
            -
             | 
| 170 | 
            -
            require_paths: 
         | 
| 153 | 
            +
            require_paths:
         | 
| 171 154 | 
             
            - lib
         | 
| 172 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 155 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 173 156 | 
             
              none: false
         | 
| 174 | 
            -
              requirements: | 
| 175 | 
            -
              - -  | 
| 176 | 
            -
                - !ruby/object:Gem::Version | 
| 177 | 
            -
                   | 
| 178 | 
            -
             | 
| 179 | 
            -
                  - 0
         | 
| 180 | 
            -
                  version: "0"
         | 
| 181 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 157 | 
            +
              requirements:
         | 
| 158 | 
            +
              - - ! '>='
         | 
| 159 | 
            +
                - !ruby/object:Gem::Version
         | 
| 160 | 
            +
                  version: '0'
         | 
| 161 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 182 162 | 
             
              none: false
         | 
| 183 | 
            -
              requirements: | 
| 184 | 
            -
              - -  | 
| 185 | 
            -
                - !ruby/object:Gem::Version | 
| 186 | 
            -
                   | 
| 187 | 
            -
                  segments: 
         | 
| 188 | 
            -
                  - 0
         | 
| 189 | 
            -
                  version: "0"
         | 
| 163 | 
            +
              requirements:
         | 
| 164 | 
            +
              - - ! '>='
         | 
| 165 | 
            +
                - !ruby/object:Gem::Version
         | 
| 166 | 
            +
                  version: '0'
         | 
| 190 167 | 
             
            requirements: []
         | 
| 191 | 
            -
             | 
| 192 168 | 
             
            rubyforge_project: 
         | 
| 193 | 
            -
            rubygems_version: 1. | 
| 169 | 
            +
            rubygems_version: 1.6.2
         | 
| 194 170 | 
             
            signing_key: 
         | 
| 195 171 | 
             
            specification_version: 3
         | 
| 196 172 | 
             
            summary: Ruby convenience sugar packs!
         | 
| 197 173 | 
             
            test_files: []
         | 
| 198 | 
            -
             |