lazy_lazer 0.3.0 → 0.3.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.
- checksums.yaml +4 -4
 - data/README.md +16 -6
 - data/lib/lazy_lazer/version.rb +2 -1
 - data/lib/lazy_lazer.rb +14 -15
 - data/logo.png +0 -0
 - metadata +3 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 5ccb5b8a20cfa62e4ef74b7932724ef9c9f85629
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 5f7ad225cf5db86c6bb46625e2738aa8bd547cf1
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7846d9d05da36c2436f1a5b64005544dd1080d8515b0a1814d3a395288c3b5306c383fa163de03402a06f364a98ac58418ae0a6180f3e36f1b164e6aca56ee8e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: eb973fec67fe6a6371c7ebd16bd67975dfab424068f87af1643b98ec8095fee98e31667b704523f4c57a2ff0b1c3be56474cd9f13ccfa016eadd2bf1870031d7
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,11 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            - simple codebase (~110 lines of code, ~200 lines of tests)
         
     | 
| 
       5 
     | 
    
         
            -
            - doesn't inherit all of the Hash and Enumerable cruft
         
     | 
| 
       6 
     | 
    
         
            -
            - super lazy, doesn't even parse attributes until it's necessary
         
     | 
| 
      
 1 
     | 
    
         
            +
            <p align="center">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <img src="https://raw.githubusercontent.com/avinashbot/lazy_lazer/master/logo.png" width="500">
         
     | 
| 
      
 3 
     | 
    
         
            +
            </p>
         
     | 
| 
       7 
4 
     | 
    
         | 
| 
       8 
5 
     | 
    
         
             
            ```ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'lazy_lazer'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       9 
8 
     | 
    
         
             
            class User
         
     | 
| 
       10 
9 
     | 
    
         
             
              include LazyLazer
         
     | 
| 
       11 
10 
     | 
    
         | 
| 
         @@ -32,3 +31,14 @@ user.age         #=> 21 
     | 
|
| 
       32 
31 
     | 
    
         
             
            user.favorite_ice_cream         #=> "chocolate"
         
     | 
| 
       33 
32 
     | 
    
         
             
            user.reload.favorite_ice_cream  #=> "vanilla"
         
     | 
| 
       34 
33 
     | 
    
         
             
            ```
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            <p align="center">
         
     | 
| 
      
 36 
     | 
    
         
            +
            licensed under
         
     | 
| 
      
 37 
     | 
    
         
            +
            <a href="https://github.com/avinashbot/lazy_lazer/blob/master/LICENSE.txt">mit</a>
         
     | 
| 
      
 38 
     | 
    
         
            +
            -
         
     | 
| 
      
 39 
     | 
    
         
            +
            created for
         
     | 
| 
      
 40 
     | 
    
         
            +
            <a href="https://github.com/avinashbot/redd">redd</a>
         
     | 
| 
      
 41 
     | 
    
         
            +
            -
         
     | 
| 
      
 42 
     | 
    
         
            +
            logo font is
         
     | 
| 
      
 43 
     | 
    
         
            +
            <a href="https://www.behance.net/gallery/3588289/Zaguatica">zaguatica</a>
         
     | 
| 
      
 44 
     | 
    
         
            +
            </p>
         
     | 
    
        data/lib/lazy_lazer/version.rb
    CHANGED
    
    
    
        data/lib/lazy_lazer.rb
    CHANGED
    
    | 
         @@ -3,7 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require_relative 'lazy_lazer/version'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require_relative 'lazy_lazer/errors'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            # LazyLazer
         
     | 
| 
      
 6 
     | 
    
         
            +
            # The LazyLazer root that's included
         
     | 
| 
       7 
7 
     | 
    
         
             
            module LazyLazer
         
     | 
| 
       8 
8 
     | 
    
         
             
              # Hook into `include LazyLazer`.
         
     | 
| 
       9 
9 
     | 
    
         
             
              # @param [Module] base the object to include the methods in
         
     | 
| 
         @@ -22,8 +22,8 @@ module LazyLazer 
     | 
|
| 
       22 
22 
     | 
    
         
             
              end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
              # Get the source key from an instance
         
     | 
| 
       25 
     | 
    
         
            -
              # @param [Object]  
     | 
| 
       26 
     | 
    
         
            -
              # @param [Symbol]  
     | 
| 
      
 25 
     | 
    
         
            +
              # @param instance [Object] the instance
         
     | 
| 
      
 26 
     | 
    
         
            +
              # @param key [Symbol] the property key
         
     | 
| 
       27 
27 
     | 
    
         
             
              # @return [Symbol] the source key if found or the passed key if not found
         
     | 
| 
       28 
28 
     | 
    
         
             
              def self.source_key(instance, key)
         
     | 
| 
       29 
29 
     | 
    
         
             
                instance.class.lazer_metadata[:from].fetch(key, key)
         
     | 
| 
         @@ -32,7 +32,7 @@ module LazyLazer 
     | 
|
| 
       32 
32 
     | 
    
         
             
              # The methods to extend the class with.
         
     | 
| 
       33 
33 
     | 
    
         
             
              module ClassMethods
         
     | 
| 
       34 
34 
     | 
    
         
             
                # Copies parent properties into subclasses.
         
     | 
| 
       35 
     | 
    
         
            -
                # @param [Class]  
     | 
| 
      
 35 
     | 
    
         
            +
                # @param klass [Class] the subclass
         
     | 
| 
       36 
36 
     | 
    
         
             
                # @return [void]
         
     | 
| 
       37 
37 
     | 
    
         
             
                def inherited(klass)
         
     | 
| 
       38 
38 
     | 
    
         
             
                  klass.instance_variable_set(:@lazer_metadata, @lazer_metadata)
         
     | 
| 
         @@ -44,8 +44,8 @@ module LazyLazer 
     | 
|
| 
       44 
44 
     | 
    
         
             
                end
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
                # Define a property.
         
     | 
| 
       47 
     | 
    
         
            -
                # @param [Symbol]  
     | 
| 
       48 
     | 
    
         
            -
                # @param [Hash]  
     | 
| 
      
 47 
     | 
    
         
            +
                # @param name [Symbol] the name of the property method
         
     | 
| 
      
 48 
     | 
    
         
            +
                # @param options [Hash] the options to create the property with
         
     | 
| 
       49 
49 
     | 
    
         
             
                # @option options [Boolean] :required (false) whether existence of this property should be
         
     | 
| 
       50 
50 
     | 
    
         
             
                #   checked on model creation
         
     | 
| 
       51 
51 
     | 
    
         
             
                # @option options [Object, Proc] :default the default value to return if not provided
         
     | 
| 
         @@ -65,7 +65,7 @@ module LazyLazer 
     | 
|
| 
       65 
65 
     | 
    
         
             
              # The methods to extend the instance with.
         
     | 
| 
       66 
66 
     | 
    
         
             
              module InstanceMethods
         
     | 
| 
       67 
67 
     | 
    
         
             
                # Create a new instance of the class from a set of source attributes.
         
     | 
| 
       68 
     | 
    
         
            -
                # @param [Hash]  
     | 
| 
      
 68 
     | 
    
         
            +
                # @param attributes [Hash] the model attributes
         
     | 
| 
       69 
69 
     | 
    
         
             
                # @return [void]
         
     | 
| 
       70 
70 
     | 
    
         
             
                def initialize(attributes = {})
         
     | 
| 
       71 
71 
     | 
    
         
             
                  # Check that all required attributes exist.
         
     | 
| 
         @@ -79,7 +79,7 @@ module LazyLazer 
     | 
|
| 
       79 
79 
     | 
    
         
             
                end
         
     | 
| 
       80 
80 
     | 
    
         | 
| 
       81 
81 
     | 
    
         
             
                # Converts all the attributes that haven't been converted yet and returns the final hash.
         
     | 
| 
       82 
     | 
    
         
            -
                # @param [Boolean]  
     | 
| 
      
 82 
     | 
    
         
            +
                # @param strict [Boolean] whether to fully load all attributes
         
     | 
| 
       83 
83 
     | 
    
         
             
                # @return [Hash] a hash representation of the model
         
     | 
| 
       84 
84 
     | 
    
         
             
                def to_h(strict = true)
         
     | 
| 
       85 
85 
     | 
    
         
             
                  if strict
         
     | 
| 
         @@ -91,14 +91,13 @@ module LazyLazer 
     | 
|
| 
       91 
91 
     | 
    
         | 
| 
       92 
92 
     | 
    
         
             
                # @abstract Provides reloading behaviour for lazy loading.
         
     | 
| 
       93 
93 
     | 
    
         
             
                # @return [Hash] the result of reloading the hash
         
     | 
| 
       94 
     | 
    
         
            -
                # @note if necessary, subclasses can make this method private, so this isn't tested.
         
     | 
| 
       95 
94 
     | 
    
         
             
                def lazer_reload
         
     | 
| 
       96 
95 
     | 
    
         
             
                  self.fully_loaded = true
         
     | 
| 
       97 
96 
     | 
    
         
             
                  {}
         
     | 
| 
       98 
97 
     | 
    
         
             
                end
         
     | 
| 
       99 
98 
     | 
    
         | 
| 
       100 
99 
     | 
    
         
             
                # Reload the object. Calls {#lazer_reload}, then merges the results into the internal store.
         
     | 
| 
       101 
     | 
    
         
            -
                # Also  
     | 
| 
      
 100 
     | 
    
         
            +
                # Also clears out the internal cache.
         
     | 
| 
       102 
101 
     | 
    
         
             
                # @return [self] the updated object
         
     | 
| 
       103 
102 
     | 
    
         
             
                def reload
         
     | 
| 
       104 
103 
     | 
    
         
             
                  new_attributes = lazer_reload
         
     | 
| 
         @@ -108,7 +107,7 @@ module LazyLazer 
     | 
|
| 
       108 
107 
     | 
    
         
             
                end
         
     | 
| 
       109 
108 
     | 
    
         | 
| 
       110 
109 
     | 
    
         
             
                # Return the value of the attribute.
         
     | 
| 
       111 
     | 
    
         
            -
                # @param [Symbol]  
     | 
| 
      
 110 
     | 
    
         
            +
                # @param name [Symbol] the attribute name
         
     | 
| 
       112 
111 
     | 
    
         
             
                # @raise MissingAttribute if the key was not found
         
     | 
| 
       113 
112 
     | 
    
         
             
                def read_attribute(name)
         
     | 
| 
       114 
113 
     | 
    
         
             
                  # Returns the cached attribute.
         
     | 
| 
         @@ -150,7 +149,7 @@ module LazyLazer 
     | 
|
| 
       150 
149 
     | 
    
         
             
                end
         
     | 
| 
       151 
150 
     | 
    
         | 
| 
       152 
151 
     | 
    
         
             
                # Return the value of the attribute, returning nil if not found
         
     | 
| 
       153 
     | 
    
         
            -
                # @param [Symbol]  
     | 
| 
      
 152 
     | 
    
         
            +
                # @param name [Symbol] the attribute name
         
     | 
| 
       154 
153 
     | 
    
         
             
                def [](name)
         
     | 
| 
       155 
154 
     | 
    
         
             
                  read_attribute(name)
         
     | 
| 
       156 
155 
     | 
    
         
             
                rescue MissingAttribute
         
     | 
| 
         @@ -158,14 +157,14 @@ module LazyLazer 
     | 
|
| 
       158 
157 
     | 
    
         
             
                end
         
     | 
| 
       159 
158 
     | 
    
         | 
| 
       160 
159 
     | 
    
         
             
                # Update an attribute.
         
     | 
| 
       161 
     | 
    
         
            -
                # @param [Symbol]  
     | 
| 
      
 160 
     | 
    
         
            +
                # @param attribute [Symbol] the attribute to update
         
     | 
| 
       162 
161 
     | 
    
         
             
                # @param [Object] value the new value
         
     | 
| 
       163 
162 
     | 
    
         
             
                def write_attribute(attribute, value)
         
     | 
| 
       164 
163 
     | 
    
         
             
                  @_lazer_cache[attribute] = value
         
     | 
| 
       165 
164 
     | 
    
         
             
                end
         
     | 
| 
       166 
165 
     | 
    
         | 
| 
       167 
166 
     | 
    
         
             
                # Update multiple attributes at once.
         
     | 
| 
       168 
     | 
    
         
            -
                # @param [Hash<Symbol, Object>]  
     | 
| 
      
 167 
     | 
    
         
            +
                # @param new_attributes [Hash<Symbol, Object>] the new attributes
         
     | 
| 
       169 
168 
     | 
    
         
             
                def assign_attributes(new_attributes)
         
     | 
| 
       170 
169 
     | 
    
         
             
                  new_attributes.each { |key, value| write_attribute(key, value) }
         
     | 
| 
       171 
170 
     | 
    
         
             
                end
         
     | 
| 
         @@ -178,7 +177,7 @@ module LazyLazer 
     | 
|
| 
       178 
177 
     | 
    
         | 
| 
       179 
178 
     | 
    
         
             
                private
         
     | 
| 
       180 
179 
     | 
    
         | 
| 
       181 
     | 
    
         
            -
                # @param [Boolean]  
     | 
| 
      
 180 
     | 
    
         
            +
                # @param state [Boolean] the new state
         
     | 
| 
       182 
181 
     | 
    
         
             
                def fully_loaded=(state)
         
     | 
| 
       183 
182 
     | 
    
         
             
                  @_lazer_fully_loaded = state
         
     | 
| 
       184 
183 
     | 
    
         
             
                end
         
     | 
    
        data/logo.png
    ADDED
    
    | 
         Binary file 
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: lazy_lazer
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Avinash Dwarapu
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2017-08- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-08-21 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -131,6 +131,7 @@ files: 
     | 
|
| 
       131 
131 
     | 
    
         
             
            - lib/lazy_lazer.rb
         
     | 
| 
       132 
132 
     | 
    
         
             
            - lib/lazy_lazer/errors.rb
         
     | 
| 
       133 
133 
     | 
    
         
             
            - lib/lazy_lazer/version.rb
         
     | 
| 
      
 134 
     | 
    
         
            +
            - logo.png
         
     | 
| 
       134 
135 
     | 
    
         
             
            homepage: https://github.com/avinashbot/lazy_lazer
         
     | 
| 
       135 
136 
     | 
    
         
             
            licenses:
         
     | 
| 
       136 
137 
     | 
    
         
             
            - MIT
         
     |