enumbler 0.7.0 → 0.8.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.
- checksums.yaml +4 -4
 - data/Gemfile.lock +1 -1
 - data/README.md +11 -0
 - data/lib/enumbler/enabler.rb +45 -0
 - data/lib/enumbler/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: a3b8d2a2e38789cb62f2be5c895aa0fb2776b26b8efbbfe3386e88feaf041393
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: d981a2476760ab1d0afb09bd2eb790c125cf54ba54cad3493a5865f52163648b
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 65c1b774b7fd7fe86e3038c5bfea649608708e57ef626529c933e82e31249a43716b50e54d2a822640d11d6b98321832f032dfedf2efce9a750aebc1e25fd26c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: c223ff2703dd5693ee9925dd4ffc025c890138962001acca6619f8c1d30b7e6056a5275fa84f5c159f163c052b8fbc546c1f9132917b93a96956c6aba9d1e72e
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -91,6 +91,17 @@ Color.ids_from_enumbler(:black, 'does-no-exist') # => [1, nil] 
     | 
|
| 
       91 
91 
     | 
    
         
             
            Color.ids_from_enumbler!(:black, 'does-no-exist') # => raises Enumbler::Error
         
     | 
| 
       92 
92 
     | 
    
         
             
            Color.id_from_enumbler!(:does_not_exist) # => raises Enumbler::Error
         
     | 
| 
       93 
93 
     | 
    
         | 
| 
      
 94 
     | 
    
         
            +
            # Get a model instance (like `.find_by` in Rails)
         
     | 
| 
      
 95 
     | 
    
         
            +
            Color.find_by_enumble(1)
         
     | 
| 
      
 96 
     | 
    
         
            +
            Color.find_by_enumble(:black)
         
     | 
| 
      
 97 
     | 
    
         
            +
            Color.find_by_enumble("black")
         
     | 
| 
      
 98 
     | 
    
         
            +
            Color.find_by_enumble("BLACK")
         
     | 
| 
      
 99 
     | 
    
         
            +
            Color.find_by_enumble(Color.black) # => self
         
     | 
| 
      
 100 
     | 
    
         
            +
            Color.find_by_enumble("whoops")    # => nil
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            # Raise ActiveRecord::RecordNotFound error with bang
         
     | 
| 
      
 103 
     | 
    
         
            +
            Color.find_by_enumble!("whoops")    # => nil
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
       94 
105 
     | 
    
         
             
            # Get enumble object by id
         
     | 
| 
       95 
106 
     | 
    
         
             
            house = House.create!(color: Color.black)
         
     | 
| 
       96 
107 
     | 
    
         | 
    
        data/lib/enumbler/enabler.rb
    CHANGED
    
    | 
         @@ -126,6 +126,51 @@ module Enumbler 
     | 
|
| 
       126 
126 
     | 
    
         
             
                    @enumbler_label_column_name = label_column_name
         
     | 
| 
       127 
127 
     | 
    
         
             
                  end
         
     | 
| 
       128 
128 
     | 
    
         | 
| 
      
 129 
     | 
    
         
            +
                  # Like `ActiveRecord#find_by`, will try and return an instance of this
         
     | 
| 
      
 130 
     | 
    
         
            +
                  # model that matches any of our enumble attributes (instance, id, string,
         
     | 
| 
      
 131 
     | 
    
         
            +
                  # or symbol).
         
     | 
| 
      
 132 
     | 
    
         
            +
                  #
         
     | 
| 
      
 133 
     | 
    
         
            +
                  #   Color.find_by_enumble(1)
         
     | 
| 
      
 134 
     | 
    
         
            +
                  #   Color.find_by_enumble(:black)
         
     | 
| 
      
 135 
     | 
    
         
            +
                  #   Color.find_by_enumble("black")
         
     | 
| 
      
 136 
     | 
    
         
            +
                  #   Color.find_by_enumble("BLACK")
         
     | 
| 
      
 137 
     | 
    
         
            +
                  #   Color.find_by_enumble(Color.black) # => self
         
     | 
| 
      
 138 
     | 
    
         
            +
                  #   Color.find_by_enumble("whoops")    # => nil
         
     | 
| 
      
 139 
     | 
    
         
            +
                  #
         
     | 
| 
      
 140 
     | 
    
         
            +
                  # @param arg [Class, String, Integer, Symbol] search argument
         
     | 
| 
      
 141 
     | 
    
         
            +
                  # @param case_sensitive [Boolean] string search to be case sensitive (default: false)
         
     | 
| 
      
 142 
     | 
    
         
            +
                  # @param raise_error [Boolean] whether to raise RecordNotFound error (default: false)
         
     | 
| 
      
 143 
     | 
    
         
            +
                  # @return [self]
         
     | 
| 
      
 144 
     | 
    
         
            +
                  def find_by_enumble(arg, case_sensitive: false, raise_error: false)
         
     | 
| 
      
 145 
     | 
    
         
            +
                    return arg if arg.instance_of?(@enumbled_model)
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
                    id = id_from_enumbler(arg, case_sensitive: case_sensitive, raise_error: raise_error)
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
                    find_by = raise_error ? :find_by! : :find_by
         
     | 
| 
      
 150 
     | 
    
         
            +
                    @enumbled_model.public_send(find_by, id: id)
         
     | 
| 
      
 151 
     | 
    
         
            +
                  rescue Enumbler::Error
         
     | 
| 
      
 152 
     | 
    
         
            +
                    raise ActiveRecord::RecordNotFound.new("Couldn't find #{@enumbled_model}", @enumbled_model)
         
     | 
| 
      
 153 
     | 
    
         
            +
                  end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                  # Like `ActiveRecord#find`, will try and return an instance of this model
         
     | 
| 
      
 156 
     | 
    
         
            +
                  # that matches any of our enumble attributes (instance, id, string, or
         
     | 
| 
      
 157 
     | 
    
         
            +
                  # symbol) raises a `RecordNotFound` error if none found.
         
     | 
| 
      
 158 
     | 
    
         
            +
                  #
         
     | 
| 
      
 159 
     | 
    
         
            +
                  #   Color.find_by_enumble!(1)
         
     | 
| 
      
 160 
     | 
    
         
            +
                  #   Color.find_by_enumble!(:black)
         
     | 
| 
      
 161 
     | 
    
         
            +
                  #   Color.find_by_enumble!("black")
         
     | 
| 
      
 162 
     | 
    
         
            +
                  #   Color.find_by_enumble!("BLACK")
         
     | 
| 
      
 163 
     | 
    
         
            +
                  #   Color.find_by_enumble!(Color.black) # => returns self
         
     | 
| 
      
 164 
     | 
    
         
            +
                  #   Color.find_by_enumble!("whoops")    # => raise ActiveRecord::RecordNotFound
         
     | 
| 
      
 165 
     | 
    
         
            +
                  #
         
     | 
| 
      
 166 
     | 
    
         
            +
                  # @param arg [Class, String, Integer, Symbol] search argument
         
     | 
| 
      
 167 
     | 
    
         
            +
                  # @param case_sensitive [Boolean] string search to be case sensitive (default: false)
         
     | 
| 
      
 168 
     | 
    
         
            +
                  # @param raise_error [Boolean] whether to raise RecordNotFound error (default: false)
         
     | 
| 
      
 169 
     | 
    
         
            +
                  # @return [self]
         
     | 
| 
      
 170 
     | 
    
         
            +
                  def find_by_enumble!(arg, case_sensitive: false)
         
     | 
| 
      
 171 
     | 
    
         
            +
                    find_by_enumble(arg, case_sensitive: case_sensitive, raise_error: true)
         
     | 
| 
      
 172 
     | 
    
         
            +
                  end
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
       129 
174 
     | 
    
         
             
                  # See {.find_enumbles}.  Simply returns the first object.  Use when you
         
     | 
| 
       130 
175 
     | 
    
         
             
                  # want one argument to be found and not returned in an array.
         
     | 
| 
       131 
176 
     | 
    
         
             
                  # @raise [Error] when there is no [Enumbler::Enumble] to be found and
         
     | 
    
        data/lib/enumbler/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: enumbler
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.8.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Damon Timm
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2020-10- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-10-26 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: activerecord
         
     |