keyvaluetree 0.0.5 → 0.0.6
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/lib/keyvaluetree.rb +1 -0
- data/lib/keyvaluetree/active_record_store.rb +44 -0
- data/lib/keyvaluetree/version.rb +1 -1
- metadata +4 -3
    
        data/lib/keyvaluetree.rb
    CHANGED
    
    
| @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            module KeyValueTree
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              class ActiveRecordStore < Store
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def initialize(storage_class, key_symbol = :key, value_symbol = :value)
         | 
| 6 | 
            +
                  @storage_class = storage_class
         | 
| 7 | 
            +
                  @key_symbol = key_symbol
         | 
| 8 | 
            +
                  @value_symbol = value_symbol
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def key(key)
         | 
| 12 | 
            +
                  entry = @storage_class.find(@key_symbol => key)
         | 
| 13 | 
            +
                  entry ? entry[@value_symbol] : nil
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def store(key, value)
         | 
| 17 | 
            +
                  setting = @storage_class.find_or_create(@key_symbol => key)
         | 
| 18 | 
            +
                  setting[@value_symbol] = value
         | 
| 19 | 
            +
                  setting.save!
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                def delete(key)
         | 
| 23 | 
            +
                  @storage_class.delete_all(:key => key)
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                def keys
         | 
| 27 | 
            +
                  @storage_class.all.map { |each| each[@key_symbol]ve }
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                def keys_starting_with(key)
         | 
| 31 | 
            +
                  self.keys.select do |sub_key|
         | 
| 32 | 
            +
                    sub_key.start_with?(key.to_s)
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def delete_all(key)
         | 
| 37 | 
            +
                  keys_starting_with(key.to_s).each do |each|
         | 
| 38 | 
            +
                    self.delete(each)
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            end
         | 
    
        data/lib/keyvaluetree/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: keyvaluetree
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.6
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -93,6 +93,7 @@ files: | |
| 93 93 | 
             
            - Rakefile
         | 
| 94 94 | 
             
            - keyvaluetree.gemspec
         | 
| 95 95 | 
             
            - lib/keyvaluetree.rb
         | 
| 96 | 
            +
            - lib/keyvaluetree/active_record_store.rb
         | 
| 96 97 | 
             
            - lib/keyvaluetree/hash.rb
         | 
| 97 98 | 
             
            - lib/keyvaluetree/memory_store.rb
         | 
| 98 99 | 
             
            - lib/keyvaluetree/store.rb
         | 
| @@ -117,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 117 118 | 
             
                  version: '0'
         | 
| 118 119 | 
             
                  segments:
         | 
| 119 120 | 
             
                  - 0
         | 
| 120 | 
            -
                  hash:  | 
| 121 | 
            +
                  hash: 4228005540970520039
         | 
| 121 122 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 122 123 | 
             
              none: false
         | 
| 123 124 | 
             
              requirements:
         | 
| @@ -126,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 126 127 | 
             
                  version: '0'
         | 
| 127 128 | 
             
                  segments:
         | 
| 128 129 | 
             
                  - 0
         | 
| 129 | 
            -
                  hash:  | 
| 130 | 
            +
                  hash: 4228005540970520039
         | 
| 130 131 | 
             
            requirements: []
         | 
| 131 132 | 
             
            rubyforge_project: 
         | 
| 132 133 | 
             
            rubygems_version: 1.8.24
         |