Guest User

Untitled

a guest
Jul 22nd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. module Persistable
  2.  
  3. require 'set' unless defined? Set
  4.  
  5. def self.included(klass)
  6. klass.class_eval do
  7. attr_accessor :_store
  8. private :_store
  9.  
  10. def store
  11. self._store ||= if defined?(Maglev)
  12. self.maglev_persistable
  13. ( Maglev::PERSISTENT_ROOT[self] ||= Set.new )
  14. else
  15. Set.new
  16. end
  17. end
  18.  
  19. def self.store
  20. (self.first) ? (self.first._store) : nil
  21. end
  22.  
  23. class << self
  24. include Enumerable
  25.  
  26. require 'debug'
  27. debug
  28.  
  29. def each(&block)
  30. #@@store.each {|x| yield x}
  31. @@store.each &block
  32. end
  33.  
  34. def count
  35. @@store.count
  36. end
  37.  
  38. def all
  39. @@store.to_a
  40. end
  41.  
  42. def delete_all
  43. @@store -= @@store
  44. end
  45. end
  46.  
  47. def persist
  48. @@store.add?(self) ? true: false
  49. end
  50.  
  51. def desist
  52. @@store.delete self
  53. end
  54.  
  55. def persistent?
  56. @@store.include? self
  57. end
  58.  
  59. def transient?
  60. not persistent?
  61. end
  62.  
  63. end
  64. end
  65.  
  66. end
Add Comment
Please, Sign In to add comment