elephas 1.1.3 → 2.0.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.
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: Elephas::Entry
8
8
 
9
- &mdash; Documentation by YARD 0.8.2.1
9
+ &mdash; Documentation by YARD 0.8.3
10
10
 
11
11
  </title>
12
12
 
@@ -119,7 +119,7 @@
119
119
  <li class="public ">
120
120
  <span class="summary_signature">
121
121
 
122
- <a href="#hash-instance_method" title="#hash (instance method)">- (Object) <strong>hash</strong> </a>
122
+ <a href="#hash-instance_method" title="#hash (instance method)">- (String) <strong>hash</strong> </a>
123
123
 
124
124
 
125
125
 
@@ -145,7 +145,7 @@
145
145
  <li class="public ">
146
146
  <span class="summary_signature">
147
147
 
148
- <a href="#key-instance_method" title="#key (instance method)">- (Object) <strong>key</strong> </a>
148
+ <a href="#key-instance_method" title="#key (instance method)">- (String) <strong>key</strong> </a>
149
149
 
150
150
 
151
151
 
@@ -171,7 +171,7 @@
171
171
  <li class="public ">
172
172
  <span class="summary_signature">
173
173
 
174
- <a href="#ttl-instance_method" title="#ttl (instance method)">- (Object) <strong>ttl</strong> </a>
174
+ <a href="#ttl-instance_method" title="#ttl (instance method)">- (Fixnum) <strong>ttl</strong> </a>
175
175
 
176
176
 
177
177
 
@@ -197,7 +197,7 @@
197
197
  <li class="public ">
198
198
  <span class="summary_signature">
199
199
 
200
- <a href="#updated_at-instance_method" title="#updated_at (instance method)">- (Object) <strong>updated_at</strong> </a>
200
+ <a href="#updated_at-instance_method" title="#updated_at (instance method)">- (Fixnum) <strong>updated_at</strong> </a>
201
201
 
202
202
 
203
203
 
@@ -276,7 +276,7 @@
276
276
 
277
277
 
278
278
 
279
- <span class="summary_desc"><div class='inline'><p>Ensure that the value is an Entry.</p>
279
+ <span class="summary_desc"><div class='inline'><p>Ensures that the value is an Entry.</p>
280
280
  </div></span>
281
281
 
282
282
  </li>
@@ -331,7 +331,7 @@
331
331
 
332
332
 
333
333
 
334
- <span class="summary_desc"><div class='inline'><p>Compare to another Entry.</p>
334
+ <span class="summary_desc"><div class='inline'><p>Compares to another Entry.</p>
335
335
  </div></span>
336
336
 
337
337
  </li>
@@ -507,24 +507,22 @@
507
507
  <pre class="lines">
508
508
 
509
509
 
510
- 31
511
- 32
512
510
  33
513
511
  34
514
512
  35
515
513
  36
516
514
  37
517
- 38</pre>
515
+ 38
516
+ 39</pre>
518
517
  </td>
519
518
  <td>
520
- <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 31</span>
519
+ <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 33</span>
521
520
 
522
521
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='int'>360000</span><span class='rparen'>)</span>
523
- <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_hash'>hash</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
524
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
525
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='id identifier rubyid_hash'>hash</span>
526
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
527
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='id identifier rubyid_ttl'>ttl</span>
522
+ <span class='ivar'>@key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
523
+ <span class='ivar'>@hash</span> <span class='op'>=</span> <span class='id identifier rubyid_hash'>hash</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>?</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
524
+ <span class='ivar'>@value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
525
+ <span class='ivar'>@ttl</span> <span class='op'>=</span> <span class='id identifier rubyid_ttl'>ttl</span>
528
526
  <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refresh'>refresh</span>
529
527
  <span class='kw'>end</span></pre>
530
528
  </td>
@@ -542,7 +540,7 @@
542
540
  <div class="method_details first">
543
541
  <h3 class="signature first" id="hash-instance_method">
544
542
 
545
- - (<tt>Object</tt>) <strong>hash</strong>
543
+ - (<tt>String</tt>) <strong>hash</strong>
546
544
 
547
545
 
548
546
 
@@ -557,6 +555,23 @@
557
555
  </div>
558
556
  <div class="tags">
559
557
 
558
+ <p class="tag_title">Returns:</p>
559
+ <ul class="return">
560
+
561
+ <li>
562
+
563
+
564
+ <span class='type'>(<tt>String</tt>)</span>
565
+
566
+
567
+
568
+ &mdash;
569
+ <div class='inline'><p>The hashed (unique) key for this entry.</p>
570
+ </div>
571
+
572
+ </li>
573
+
574
+ </ul>
560
575
 
561
576
  </div><table class="source_code">
562
577
  <tr>
@@ -564,15 +579,163 @@
564
579
  <pre class="lines">
565
580
 
566
581
 
567
- 14
568
- 15
569
- 16</pre>
582
+ 20
583
+ 21
584
+ 22
585
+ 23
586
+ 24
587
+ 25
588
+ 26
589
+ 27
590
+ 28
591
+ 29
592
+ 30
593
+ 31
594
+ 32
595
+ 33
596
+ 34
597
+ 35
598
+ 36
599
+ 37
600
+ 38
601
+ 39
602
+ 40
603
+ 41
604
+ 42
605
+ 43
606
+ 44
607
+ 45
608
+ 46
609
+ 47
610
+ 48
611
+ 49
612
+ 50
613
+ 51
614
+ 52
615
+ 53
616
+ 54
617
+ 55
618
+ 56
619
+ 57
620
+ 58
621
+ 59
622
+ 60
623
+ 61
624
+ 62
625
+ 63
626
+ 64
627
+ 65
628
+ 66
629
+ 67
630
+ 68
631
+ 69
632
+ 70
633
+ 71
634
+ 72
635
+ 73
636
+ 74
637
+ 75
638
+ 76
639
+ 77
640
+ 78
641
+ 79
642
+ 80
643
+ 81
644
+ 82
645
+ 83
646
+ 84
647
+ 85
648
+ 86
649
+ 87
650
+ 88
651
+ 89
652
+ 90
653
+ 91
654
+ 92
655
+ 93
656
+ 94
657
+ 95
658
+ 96</pre>
570
659
  </td>
571
660
  <td>
572
- <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 14</span>
661
+ <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 20</span>
662
+
663
+ <span class='kw'>class</span> <span class='const'>Entry</span>
664
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:key</span>
665
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:hash</span>
666
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:value</span>
667
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:ttl</span>
668
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:updated_at</span>
669
+
670
+ <span class='comment'># Creates a new entry.
671
+ </span> <span class='comment'>#
672
+ </span> <span class='comment'># @param key [String] The key for this entry.
673
+ </span> <span class='comment'># @param value [Object] The value contained in this entry.
674
+ </span> <span class='comment'># @param hash [String] The hash for this entry. Should be unique. It is automatically created if not provided.
675
+ </span> <span class='comment'># @param ttl [Integer] The time to live (TTL) for this entry. If set to 0 then the entry is not cached.
676
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='int'>360000</span><span class='rparen'>)</span>
677
+ <span class='ivar'>@key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
678
+ <span class='ivar'>@hash</span> <span class='op'>=</span> <span class='id identifier rubyid_hash'>hash</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>?</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
679
+ <span class='ivar'>@value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
680
+ <span class='ivar'>@ttl</span> <span class='op'>=</span> <span class='id identifier rubyid_ttl'>ttl</span>
681
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refresh'>refresh</span>
682
+ <span class='kw'>end</span>
683
+
684
+ <span class='comment'># Refreshes the entry.
685
+ </span> <span class='comment'>#
686
+ </span> <span class='comment'># @param save [Boolean] If to save the refresh value in the cache.
687
+ </span> <span class='comment'># @return [Float] The new updated_at value.
688
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_refresh'>refresh</span><span class='lparen'>(</span><span class='id identifier rubyid_save'>save</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
689
+ <span class='ivar'>@updated_at</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
690
+ <span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='ivar'>@hash</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_save'>save</span>
691
+ <span class='ivar'>@updated_at</span>
692
+ <span class='kw'>end</span>
693
+
694
+ <span class='comment'># Checks if the entry is still valid.
695
+ </span> <span class='comment'>#
696
+ </span> <span class='comment'># @param provider [Provider::Base] The provider to use for the check.
697
+ </span> <span class='comment'># @return [Boolean] `true` if the entry is still valid, `false` otherwise.
698
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span><span class='lparen'>(</span><span class='id identifier rubyid_provider'>provider</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
699
+ <span class='id identifier rubyid_provider'>provider</span> <span class='op'>||=</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span>
700
+ <span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span> <span class='op'>-</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_updated_at'>updated_at</span> <span class='op'>&lt;</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>/</span> <span class='int'>1000</span>
701
+ <span class='kw'>end</span>
702
+
703
+ <span class='comment'># Compares to another Entry.
704
+ </span> <span class='comment'>#
705
+ </span> <span class='comment'># @param other [Entry] The entry to compare with
706
+ </span> <span class='comment'># @return [Boolean] `true` if the entries are the same, `false` otherwise.
707
+ </span> <span class='kw'>def</span> <span class='op'>==</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
708
+ <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='lbracket'>[</span><span class='ivar'>@key</span><span class='comma'>,</span> <span class='ivar'>@hash</span><span class='comma'>,</span> <span class='ivar'>@value</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
709
+ <span class='kw'>end</span>
710
+
711
+ <span class='comment'># Returns a unique hash for the key.
712
+ </span> <span class='comment'>#
713
+ </span> <span class='comment'># @param key [String] The key to hashify.
714
+ </span> <span class='comment'># @return [String] An unique hash for the key.
715
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
716
+ <span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA2</span><span class='period'>.</span><span class='id identifier rubyid_hexdigest'>hexdigest</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span>
717
+ <span class='kw'>end</span>
718
+
719
+ <span class='comment'># Ensures that the value is an Entry.
720
+ </span> <span class='comment'>#
721
+ </span> <span class='comment'># @param value [Object] The object to check.
722
+ </span> <span class='comment'># @param key [Object] The key associated to this object.
723
+ </span> <span class='comment'># @param options [Hash] Options to manage the value.
724
+ </span> <span class='comment'># @return [Entry] The wrapped object.
725
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='kw'>ensure</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
726
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
727
+
728
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='kw'>then</span>
729
+ <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
573
730
 
574
- <span class='kw'>def</span> <span class='id identifier rubyid_hash'>hash</span>
575
- <span class='ivar'>@hash</span>
731
+ <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:ttl</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span><span class='comma'>,</span> <span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
732
+ <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:hash</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span>
733
+
734
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span><span class='rparen'>)</span>
735
+ <span class='kw'>end</span>
736
+
737
+ <span class='id identifier rubyid_rv'>rv</span>
738
+ <span class='kw'>end</span>
576
739
  <span class='kw'>end</span></pre>
577
740
  </td>
578
741
  </tr>
@@ -584,7 +747,7 @@
584
747
  <div class="method_details ">
585
748
  <h3 class="signature " id="key-instance_method">
586
749
 
587
- - (<tt>Object</tt>) <strong>key</strong>
750
+ - (<tt>String</tt>) <strong>key</strong>
588
751
 
589
752
 
590
753
 
@@ -599,6 +762,23 @@
599
762
  </div>
600
763
  <div class="tags">
601
764
 
765
+ <p class="tag_title">Returns:</p>
766
+ <ul class="return">
767
+
768
+ <li>
769
+
770
+
771
+ <span class='type'>(<tt>String</tt>)</span>
772
+
773
+
774
+
775
+ &mdash;
776
+ <div class='inline'><p>The key for this entry.</p>
777
+ </div>
778
+
779
+ </li>
780
+
781
+ </ul>
602
782
 
603
783
  </div><table class="source_code">
604
784
  <tr>
@@ -606,15 +786,163 @@
606
786
  <pre class="lines">
607
787
 
608
788
 
609
- 11
610
- 12
611
- 13</pre>
789
+ 20
790
+ 21
791
+ 22
792
+ 23
793
+ 24
794
+ 25
795
+ 26
796
+ 27
797
+ 28
798
+ 29
799
+ 30
800
+ 31
801
+ 32
802
+ 33
803
+ 34
804
+ 35
805
+ 36
806
+ 37
807
+ 38
808
+ 39
809
+ 40
810
+ 41
811
+ 42
812
+ 43
813
+ 44
814
+ 45
815
+ 46
816
+ 47
817
+ 48
818
+ 49
819
+ 50
820
+ 51
821
+ 52
822
+ 53
823
+ 54
824
+ 55
825
+ 56
826
+ 57
827
+ 58
828
+ 59
829
+ 60
830
+ 61
831
+ 62
832
+ 63
833
+ 64
834
+ 65
835
+ 66
836
+ 67
837
+ 68
838
+ 69
839
+ 70
840
+ 71
841
+ 72
842
+ 73
843
+ 74
844
+ 75
845
+ 76
846
+ 77
847
+ 78
848
+ 79
849
+ 80
850
+ 81
851
+ 82
852
+ 83
853
+ 84
854
+ 85
855
+ 86
856
+ 87
857
+ 88
858
+ 89
859
+ 90
860
+ 91
861
+ 92
862
+ 93
863
+ 94
864
+ 95
865
+ 96</pre>
612
866
  </td>
613
867
  <td>
614
- <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 11</span>
868
+ <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 20</span>
869
+
870
+ <span class='kw'>class</span> <span class='const'>Entry</span>
871
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:key</span>
872
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:hash</span>
873
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:value</span>
874
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:ttl</span>
875
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:updated_at</span>
876
+
877
+ <span class='comment'># Creates a new entry.
878
+ </span> <span class='comment'>#
879
+ </span> <span class='comment'># @param key [String] The key for this entry.
880
+ </span> <span class='comment'># @param value [Object] The value contained in this entry.
881
+ </span> <span class='comment'># @param hash [String] The hash for this entry. Should be unique. It is automatically created if not provided.
882
+ </span> <span class='comment'># @param ttl [Integer] The time to live (TTL) for this entry. If set to 0 then the entry is not cached.
883
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='int'>360000</span><span class='rparen'>)</span>
884
+ <span class='ivar'>@key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
885
+ <span class='ivar'>@hash</span> <span class='op'>=</span> <span class='id identifier rubyid_hash'>hash</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>?</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
886
+ <span class='ivar'>@value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
887
+ <span class='ivar'>@ttl</span> <span class='op'>=</span> <span class='id identifier rubyid_ttl'>ttl</span>
888
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refresh'>refresh</span>
889
+ <span class='kw'>end</span>
890
+
891
+ <span class='comment'># Refreshes the entry.
892
+ </span> <span class='comment'>#
893
+ </span> <span class='comment'># @param save [Boolean] If to save the refresh value in the cache.
894
+ </span> <span class='comment'># @return [Float] The new updated_at value.
895
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_refresh'>refresh</span><span class='lparen'>(</span><span class='id identifier rubyid_save'>save</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
896
+ <span class='ivar'>@updated_at</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
897
+ <span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='ivar'>@hash</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_save'>save</span>
898
+ <span class='ivar'>@updated_at</span>
899
+ <span class='kw'>end</span>
900
+
901
+ <span class='comment'># Checks if the entry is still valid.
902
+ </span> <span class='comment'>#
903
+ </span> <span class='comment'># @param provider [Provider::Base] The provider to use for the check.
904
+ </span> <span class='comment'># @return [Boolean] `true` if the entry is still valid, `false` otherwise.
905
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span><span class='lparen'>(</span><span class='id identifier rubyid_provider'>provider</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
906
+ <span class='id identifier rubyid_provider'>provider</span> <span class='op'>||=</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span>
907
+ <span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span> <span class='op'>-</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_updated_at'>updated_at</span> <span class='op'>&lt;</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>/</span> <span class='int'>1000</span>
908
+ <span class='kw'>end</span>
909
+
910
+ <span class='comment'># Compares to another Entry.
911
+ </span> <span class='comment'>#
912
+ </span> <span class='comment'># @param other [Entry] The entry to compare with
913
+ </span> <span class='comment'># @return [Boolean] `true` if the entries are the same, `false` otherwise.
914
+ </span> <span class='kw'>def</span> <span class='op'>==</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
915
+ <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='lbracket'>[</span><span class='ivar'>@key</span><span class='comma'>,</span> <span class='ivar'>@hash</span><span class='comma'>,</span> <span class='ivar'>@value</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
916
+ <span class='kw'>end</span>
917
+
918
+ <span class='comment'># Returns a unique hash for the key.
919
+ </span> <span class='comment'>#
920
+ </span> <span class='comment'># @param key [String] The key to hashify.
921
+ </span> <span class='comment'># @return [String] An unique hash for the key.
922
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
923
+ <span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA2</span><span class='period'>.</span><span class='id identifier rubyid_hexdigest'>hexdigest</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span>
924
+ <span class='kw'>end</span>
615
925
 
616
- <span class='kw'>def</span> <span class='id identifier rubyid_key'>key</span>
617
- <span class='ivar'>@key</span>
926
+ <span class='comment'># Ensures that the value is an Entry.
927
+ </span> <span class='comment'>#
928
+ </span> <span class='comment'># @param value [Object] The object to check.
929
+ </span> <span class='comment'># @param key [Object] The key associated to this object.
930
+ </span> <span class='comment'># @param options [Hash] Options to manage the value.
931
+ </span> <span class='comment'># @return [Entry] The wrapped object.
932
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='kw'>ensure</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
933
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
934
+
935
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='kw'>then</span>
936
+ <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
937
+
938
+ <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:ttl</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span><span class='comma'>,</span> <span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
939
+ <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:hash</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span>
940
+
941
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span><span class='rparen'>)</span>
942
+ <span class='kw'>end</span>
943
+
944
+ <span class='id identifier rubyid_rv'>rv</span>
945
+ <span class='kw'>end</span>
618
946
  <span class='kw'>end</span></pre>
619
947
  </td>
620
948
  </tr>
@@ -626,7 +954,7 @@
626
954
  <div class="method_details ">
627
955
  <h3 class="signature " id="ttl-instance_method">
628
956
 
629
- - (<tt>Object</tt>) <strong>ttl</strong>
957
+ - (<tt>Fixnum</tt>) <strong>ttl</strong>
630
958
 
631
959
 
632
960
 
@@ -641,6 +969,23 @@
641
969
  </div>
642
970
  <div class="tags">
643
971
 
972
+ <p class="tag_title">Returns:</p>
973
+ <ul class="return">
974
+
975
+ <li>
976
+
977
+
978
+ <span class='type'>(<tt>Fixnum</tt>)</span>
979
+
980
+
981
+
982
+ &mdash;
983
+ <div class='inline'><p>The expected TTL of the entry, in milliseconds.</p>
984
+ </div>
985
+
986
+ </li>
987
+
988
+ </ul>
644
989
 
645
990
  </div><table class="source_code">
646
991
  <tr>
@@ -650,13 +995,161 @@
650
995
 
651
996
  20
652
997
  21
653
- 22</pre>
998
+ 22
999
+ 23
1000
+ 24
1001
+ 25
1002
+ 26
1003
+ 27
1004
+ 28
1005
+ 29
1006
+ 30
1007
+ 31
1008
+ 32
1009
+ 33
1010
+ 34
1011
+ 35
1012
+ 36
1013
+ 37
1014
+ 38
1015
+ 39
1016
+ 40
1017
+ 41
1018
+ 42
1019
+ 43
1020
+ 44
1021
+ 45
1022
+ 46
1023
+ 47
1024
+ 48
1025
+ 49
1026
+ 50
1027
+ 51
1028
+ 52
1029
+ 53
1030
+ 54
1031
+ 55
1032
+ 56
1033
+ 57
1034
+ 58
1035
+ 59
1036
+ 60
1037
+ 61
1038
+ 62
1039
+ 63
1040
+ 64
1041
+ 65
1042
+ 66
1043
+ 67
1044
+ 68
1045
+ 69
1046
+ 70
1047
+ 71
1048
+ 72
1049
+ 73
1050
+ 74
1051
+ 75
1052
+ 76
1053
+ 77
1054
+ 78
1055
+ 79
1056
+ 80
1057
+ 81
1058
+ 82
1059
+ 83
1060
+ 84
1061
+ 85
1062
+ 86
1063
+ 87
1064
+ 88
1065
+ 89
1066
+ 90
1067
+ 91
1068
+ 92
1069
+ 93
1070
+ 94
1071
+ 95
1072
+ 96</pre>
654
1073
  </td>
655
1074
  <td>
656
1075
  <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 20</span>
657
1076
 
658
- <span class='kw'>def</span> <span class='id identifier rubyid_ttl'>ttl</span>
659
- <span class='ivar'>@ttl</span>
1077
+ <span class='kw'>class</span> <span class='const'>Entry</span>
1078
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:key</span>
1079
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:hash</span>
1080
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:value</span>
1081
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:ttl</span>
1082
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:updated_at</span>
1083
+
1084
+ <span class='comment'># Creates a new entry.
1085
+ </span> <span class='comment'>#
1086
+ </span> <span class='comment'># @param key [String] The key for this entry.
1087
+ </span> <span class='comment'># @param value [Object] The value contained in this entry.
1088
+ </span> <span class='comment'># @param hash [String] The hash for this entry. Should be unique. It is automatically created if not provided.
1089
+ </span> <span class='comment'># @param ttl [Integer] The time to live (TTL) for this entry. If set to 0 then the entry is not cached.
1090
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='int'>360000</span><span class='rparen'>)</span>
1091
+ <span class='ivar'>@key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
1092
+ <span class='ivar'>@hash</span> <span class='op'>=</span> <span class='id identifier rubyid_hash'>hash</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>?</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
1093
+ <span class='ivar'>@value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
1094
+ <span class='ivar'>@ttl</span> <span class='op'>=</span> <span class='id identifier rubyid_ttl'>ttl</span>
1095
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refresh'>refresh</span>
1096
+ <span class='kw'>end</span>
1097
+
1098
+ <span class='comment'># Refreshes the entry.
1099
+ </span> <span class='comment'>#
1100
+ </span> <span class='comment'># @param save [Boolean] If to save the refresh value in the cache.
1101
+ </span> <span class='comment'># @return [Float] The new updated_at value.
1102
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_refresh'>refresh</span><span class='lparen'>(</span><span class='id identifier rubyid_save'>save</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
1103
+ <span class='ivar'>@updated_at</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
1104
+ <span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='ivar'>@hash</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_save'>save</span>
1105
+ <span class='ivar'>@updated_at</span>
1106
+ <span class='kw'>end</span>
1107
+
1108
+ <span class='comment'># Checks if the entry is still valid.
1109
+ </span> <span class='comment'>#
1110
+ </span> <span class='comment'># @param provider [Provider::Base] The provider to use for the check.
1111
+ </span> <span class='comment'># @return [Boolean] `true` if the entry is still valid, `false` otherwise.
1112
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span><span class='lparen'>(</span><span class='id identifier rubyid_provider'>provider</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1113
+ <span class='id identifier rubyid_provider'>provider</span> <span class='op'>||=</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span>
1114
+ <span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span> <span class='op'>-</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_updated_at'>updated_at</span> <span class='op'>&lt;</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>/</span> <span class='int'>1000</span>
1115
+ <span class='kw'>end</span>
1116
+
1117
+ <span class='comment'># Compares to another Entry.
1118
+ </span> <span class='comment'>#
1119
+ </span> <span class='comment'># @param other [Entry] The entry to compare with
1120
+ </span> <span class='comment'># @return [Boolean] `true` if the entries are the same, `false` otherwise.
1121
+ </span> <span class='kw'>def</span> <span class='op'>==</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
1122
+ <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='lbracket'>[</span><span class='ivar'>@key</span><span class='comma'>,</span> <span class='ivar'>@hash</span><span class='comma'>,</span> <span class='ivar'>@value</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
1123
+ <span class='kw'>end</span>
1124
+
1125
+ <span class='comment'># Returns a unique hash for the key.
1126
+ </span> <span class='comment'>#
1127
+ </span> <span class='comment'># @param key [String] The key to hashify.
1128
+ </span> <span class='comment'># @return [String] An unique hash for the key.
1129
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
1130
+ <span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA2</span><span class='period'>.</span><span class='id identifier rubyid_hexdigest'>hexdigest</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span>
1131
+ <span class='kw'>end</span>
1132
+
1133
+ <span class='comment'># Ensures that the value is an Entry.
1134
+ </span> <span class='comment'>#
1135
+ </span> <span class='comment'># @param value [Object] The object to check.
1136
+ </span> <span class='comment'># @param key [Object] The key associated to this object.
1137
+ </span> <span class='comment'># @param options [Hash] Options to manage the value.
1138
+ </span> <span class='comment'># @return [Entry] The wrapped object.
1139
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='kw'>ensure</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1140
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
1141
+
1142
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='kw'>then</span>
1143
+ <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1144
+
1145
+ <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:ttl</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span><span class='comma'>,</span> <span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
1146
+ <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:hash</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span>
1147
+
1148
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span><span class='rparen'>)</span>
1149
+ <span class='kw'>end</span>
1150
+
1151
+ <span class='id identifier rubyid_rv'>rv</span>
1152
+ <span class='kw'>end</span>
660
1153
  <span class='kw'>end</span></pre>
661
1154
  </td>
662
1155
  </tr>
@@ -668,7 +1161,7 @@
668
1161
  <div class="method_details ">
669
1162
  <h3 class="signature " id="updated_at-instance_method">
670
1163
 
671
- - (<tt>Object</tt>) <strong>updated_at</strong>
1164
+ - (<tt>Fixnum</tt>) <strong>updated_at</strong>
672
1165
 
673
1166
 
674
1167
 
@@ -683,6 +1176,23 @@
683
1176
  </div>
684
1177
  <div class="tags">
685
1178
 
1179
+ <p class="tag_title">Returns:</p>
1180
+ <ul class="return">
1181
+
1182
+ <li>
1183
+
1184
+
1185
+ <span class='type'>(<tt>Fixnum</tt>)</span>
1186
+
1187
+
1188
+
1189
+ &mdash;
1190
+ <div class='inline'><p>The last update date of the entry, in UNIX timestamp (with milliseconds).</p>
1191
+ </div>
1192
+
1193
+ </li>
1194
+
1195
+ </ul>
686
1196
 
687
1197
  </div><table class="source_code">
688
1198
  <tr>
@@ -690,15 +1200,163 @@
690
1200
  <pre class="lines">
691
1201
 
692
1202
 
1203
+ 20
1204
+ 21
1205
+ 22
693
1206
  23
694
1207
  24
695
- 25</pre>
1208
+ 25
1209
+ 26
1210
+ 27
1211
+ 28
1212
+ 29
1213
+ 30
1214
+ 31
1215
+ 32
1216
+ 33
1217
+ 34
1218
+ 35
1219
+ 36
1220
+ 37
1221
+ 38
1222
+ 39
1223
+ 40
1224
+ 41
1225
+ 42
1226
+ 43
1227
+ 44
1228
+ 45
1229
+ 46
1230
+ 47
1231
+ 48
1232
+ 49
1233
+ 50
1234
+ 51
1235
+ 52
1236
+ 53
1237
+ 54
1238
+ 55
1239
+ 56
1240
+ 57
1241
+ 58
1242
+ 59
1243
+ 60
1244
+ 61
1245
+ 62
1246
+ 63
1247
+ 64
1248
+ 65
1249
+ 66
1250
+ 67
1251
+ 68
1252
+ 69
1253
+ 70
1254
+ 71
1255
+ 72
1256
+ 73
1257
+ 74
1258
+ 75
1259
+ 76
1260
+ 77
1261
+ 78
1262
+ 79
1263
+ 80
1264
+ 81
1265
+ 82
1266
+ 83
1267
+ 84
1268
+ 85
1269
+ 86
1270
+ 87
1271
+ 88
1272
+ 89
1273
+ 90
1274
+ 91
1275
+ 92
1276
+ 93
1277
+ 94
1278
+ 95
1279
+ 96</pre>
696
1280
  </td>
697
1281
  <td>
698
- <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 23</span>
1282
+ <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 20</span>
699
1283
 
700
- <span class='kw'>def</span> <span class='id identifier rubyid_updated_at'>updated_at</span>
701
- <span class='ivar'>@updated_at</span>
1284
+ <span class='kw'>class</span> <span class='const'>Entry</span>
1285
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:key</span>
1286
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:hash</span>
1287
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:value</span>
1288
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:ttl</span>
1289
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:updated_at</span>
1290
+
1291
+ <span class='comment'># Creates a new entry.
1292
+ </span> <span class='comment'>#
1293
+ </span> <span class='comment'># @param key [String] The key for this entry.
1294
+ </span> <span class='comment'># @param value [Object] The value contained in this entry.
1295
+ </span> <span class='comment'># @param hash [String] The hash for this entry. Should be unique. It is automatically created if not provided.
1296
+ </span> <span class='comment'># @param ttl [Integer] The time to live (TTL) for this entry. If set to 0 then the entry is not cached.
1297
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='int'>360000</span><span class='rparen'>)</span>
1298
+ <span class='ivar'>@key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
1299
+ <span class='ivar'>@hash</span> <span class='op'>=</span> <span class='id identifier rubyid_hash'>hash</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>?</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
1300
+ <span class='ivar'>@value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
1301
+ <span class='ivar'>@ttl</span> <span class='op'>=</span> <span class='id identifier rubyid_ttl'>ttl</span>
1302
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refresh'>refresh</span>
1303
+ <span class='kw'>end</span>
1304
+
1305
+ <span class='comment'># Refreshes the entry.
1306
+ </span> <span class='comment'>#
1307
+ </span> <span class='comment'># @param save [Boolean] If to save the refresh value in the cache.
1308
+ </span> <span class='comment'># @return [Float] The new updated_at value.
1309
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_refresh'>refresh</span><span class='lparen'>(</span><span class='id identifier rubyid_save'>save</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
1310
+ <span class='ivar'>@updated_at</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
1311
+ <span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='ivar'>@hash</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_save'>save</span>
1312
+ <span class='ivar'>@updated_at</span>
1313
+ <span class='kw'>end</span>
1314
+
1315
+ <span class='comment'># Checks if the entry is still valid.
1316
+ </span> <span class='comment'>#
1317
+ </span> <span class='comment'># @param provider [Provider::Base] The provider to use for the check.
1318
+ </span> <span class='comment'># @return [Boolean] `true` if the entry is still valid, `false` otherwise.
1319
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span><span class='lparen'>(</span><span class='id identifier rubyid_provider'>provider</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1320
+ <span class='id identifier rubyid_provider'>provider</span> <span class='op'>||=</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span>
1321
+ <span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span> <span class='op'>-</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_updated_at'>updated_at</span> <span class='op'>&lt;</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>/</span> <span class='int'>1000</span>
1322
+ <span class='kw'>end</span>
1323
+
1324
+ <span class='comment'># Compares to another Entry.
1325
+ </span> <span class='comment'>#
1326
+ </span> <span class='comment'># @param other [Entry] The entry to compare with
1327
+ </span> <span class='comment'># @return [Boolean] `true` if the entries are the same, `false` otherwise.
1328
+ </span> <span class='kw'>def</span> <span class='op'>==</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
1329
+ <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='lbracket'>[</span><span class='ivar'>@key</span><span class='comma'>,</span> <span class='ivar'>@hash</span><span class='comma'>,</span> <span class='ivar'>@value</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
1330
+ <span class='kw'>end</span>
1331
+
1332
+ <span class='comment'># Returns a unique hash for the key.
1333
+ </span> <span class='comment'>#
1334
+ </span> <span class='comment'># @param key [String] The key to hashify.
1335
+ </span> <span class='comment'># @return [String] An unique hash for the key.
1336
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
1337
+ <span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA2</span><span class='period'>.</span><span class='id identifier rubyid_hexdigest'>hexdigest</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span>
1338
+ <span class='kw'>end</span>
1339
+
1340
+ <span class='comment'># Ensures that the value is an Entry.
1341
+ </span> <span class='comment'>#
1342
+ </span> <span class='comment'># @param value [Object] The object to check.
1343
+ </span> <span class='comment'># @param key [Object] The key associated to this object.
1344
+ </span> <span class='comment'># @param options [Hash] Options to manage the value.
1345
+ </span> <span class='comment'># @return [Entry] The wrapped object.
1346
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='kw'>ensure</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1347
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
1348
+
1349
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='kw'>then</span>
1350
+ <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1351
+
1352
+ <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:ttl</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span><span class='comma'>,</span> <span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
1353
+ <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:hash</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span>
1354
+
1355
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span><span class='rparen'>)</span>
1356
+ <span class='kw'>end</span>
1357
+
1358
+ <span class='id identifier rubyid_rv'>rv</span>
1359
+ <span class='kw'>end</span>
702
1360
  <span class='kw'>end</span></pre>
703
1361
  </td>
704
1362
  </tr>
@@ -725,6 +1383,23 @@
725
1383
  </div>
726
1384
  <div class="tags">
727
1385
 
1386
+ <p class="tag_title">Returns:</p>
1387
+ <ul class="return">
1388
+
1389
+ <li>
1390
+
1391
+
1392
+ <span class='type'>(<tt>Object</tt>)</span>
1393
+
1394
+
1395
+
1396
+ &mdash;
1397
+ <div class='inline'><p>The value contained in this entry.</p>
1398
+ </div>
1399
+
1400
+ </li>
1401
+
1402
+ </ul>
728
1403
 
729
1404
  </div><table class="source_code">
730
1405
  <tr>
@@ -732,15 +1407,163 @@
732
1407
  <pre class="lines">
733
1408
 
734
1409
 
735
- 17
736
- 18
737
- 19</pre>
1410
+ 20
1411
+ 21
1412
+ 22
1413
+ 23
1414
+ 24
1415
+ 25
1416
+ 26
1417
+ 27
1418
+ 28
1419
+ 29
1420
+ 30
1421
+ 31
1422
+ 32
1423
+ 33
1424
+ 34
1425
+ 35
1426
+ 36
1427
+ 37
1428
+ 38
1429
+ 39
1430
+ 40
1431
+ 41
1432
+ 42
1433
+ 43
1434
+ 44
1435
+ 45
1436
+ 46
1437
+ 47
1438
+ 48
1439
+ 49
1440
+ 50
1441
+ 51
1442
+ 52
1443
+ 53
1444
+ 54
1445
+ 55
1446
+ 56
1447
+ 57
1448
+ 58
1449
+ 59
1450
+ 60
1451
+ 61
1452
+ 62
1453
+ 63
1454
+ 64
1455
+ 65
1456
+ 66
1457
+ 67
1458
+ 68
1459
+ 69
1460
+ 70
1461
+ 71
1462
+ 72
1463
+ 73
1464
+ 74
1465
+ 75
1466
+ 76
1467
+ 77
1468
+ 78
1469
+ 79
1470
+ 80
1471
+ 81
1472
+ 82
1473
+ 83
1474
+ 84
1475
+ 85
1476
+ 86
1477
+ 87
1478
+ 88
1479
+ 89
1480
+ 90
1481
+ 91
1482
+ 92
1483
+ 93
1484
+ 94
1485
+ 95
1486
+ 96</pre>
738
1487
  </td>
739
1488
  <td>
740
- <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 17</span>
1489
+ <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 20</span>
1490
+
1491
+ <span class='kw'>class</span> <span class='const'>Entry</span>
1492
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:key</span>
1493
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:hash</span>
1494
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:value</span>
1495
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:ttl</span>
1496
+ <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:updated_at</span>
1497
+
1498
+ <span class='comment'># Creates a new entry.
1499
+ </span> <span class='comment'>#
1500
+ </span> <span class='comment'># @param key [String] The key for this entry.
1501
+ </span> <span class='comment'># @param value [Object] The value contained in this entry.
1502
+ </span> <span class='comment'># @param hash [String] The hash for this entry. Should be unique. It is automatically created if not provided.
1503
+ </span> <span class='comment'># @param ttl [Integer] The time to live (TTL) for this entry. If set to 0 then the entry is not cached.
1504
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='int'>360000</span><span class='rparen'>)</span>
1505
+ <span class='ivar'>@key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
1506
+ <span class='ivar'>@hash</span> <span class='op'>=</span> <span class='id identifier rubyid_hash'>hash</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>?</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
1507
+ <span class='ivar'>@value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
1508
+ <span class='ivar'>@ttl</span> <span class='op'>=</span> <span class='id identifier rubyid_ttl'>ttl</span>
1509
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refresh'>refresh</span>
1510
+ <span class='kw'>end</span>
1511
+
1512
+ <span class='comment'># Refreshes the entry.
1513
+ </span> <span class='comment'>#
1514
+ </span> <span class='comment'># @param save [Boolean] If to save the refresh value in the cache.
1515
+ </span> <span class='comment'># @return [Float] The new updated_at value.
1516
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_refresh'>refresh</span><span class='lparen'>(</span><span class='id identifier rubyid_save'>save</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
1517
+ <span class='ivar'>@updated_at</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
1518
+ <span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='ivar'>@hash</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_save'>save</span>
1519
+ <span class='ivar'>@updated_at</span>
1520
+ <span class='kw'>end</span>
1521
+
1522
+ <span class='comment'># Checks if the entry is still valid.
1523
+ </span> <span class='comment'>#
1524
+ </span> <span class='comment'># @param provider [Provider::Base] The provider to use for the check.
1525
+ </span> <span class='comment'># @return [Boolean] `true` if the entry is still valid, `false` otherwise.
1526
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span><span class='lparen'>(</span><span class='id identifier rubyid_provider'>provider</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1527
+ <span class='id identifier rubyid_provider'>provider</span> <span class='op'>||=</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span>
1528
+ <span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span> <span class='op'>-</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_updated_at'>updated_at</span> <span class='op'>&lt;</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>/</span> <span class='int'>1000</span>
1529
+ <span class='kw'>end</span>
1530
+
1531
+ <span class='comment'># Compares to another Entry.
1532
+ </span> <span class='comment'>#
1533
+ </span> <span class='comment'># @param other [Entry] The entry to compare with
1534
+ </span> <span class='comment'># @return [Boolean] `true` if the entries are the same, `false` otherwise.
1535
+ </span> <span class='kw'>def</span> <span class='op'>==</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
1536
+ <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='lbracket'>[</span><span class='ivar'>@key</span><span class='comma'>,</span> <span class='ivar'>@hash</span><span class='comma'>,</span> <span class='ivar'>@value</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
1537
+ <span class='kw'>end</span>
1538
+
1539
+ <span class='comment'># Returns a unique hash for the key.
1540
+ </span> <span class='comment'>#
1541
+ </span> <span class='comment'># @param key [String] The key to hashify.
1542
+ </span> <span class='comment'># @return [String] An unique hash for the key.
1543
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
1544
+ <span class='const'>Digest</span><span class='op'>::</span><span class='const'>SHA2</span><span class='period'>.</span><span class='id identifier rubyid_hexdigest'>hexdigest</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span>
1545
+ <span class='kw'>end</span>
741
1546
 
742
- <span class='kw'>def</span> <span class='id identifier rubyid_value'>value</span>
743
- <span class='ivar'>@value</span>
1547
+ <span class='comment'># Ensures that the value is an Entry.
1548
+ </span> <span class='comment'>#
1549
+ </span> <span class='comment'># @param value [Object] The object to check.
1550
+ </span> <span class='comment'># @param key [Object] The key associated to this object.
1551
+ </span> <span class='comment'># @param options [Hash] Options to manage the value.
1552
+ </span> <span class='comment'># @return [Entry] The wrapped object.
1553
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='kw'>ensure</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1554
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
1555
+
1556
+ <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='kw'>then</span>
1557
+ <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1558
+
1559
+ <span class='id identifier rubyid_ttl'>ttl</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:ttl</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span><span class='comma'>,</span> <span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
1560
+ <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:hash</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='period'>.</span><span class='id identifier rubyid_hashify_key'>hashify_key</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span>
1561
+
1562
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_ttl'>ttl</span><span class='rparen'>)</span>
1563
+ <span class='kw'>end</span>
1564
+
1565
+ <span class='id identifier rubyid_rv'>rv</span>
1566
+ <span class='kw'>end</span>
744
1567
  <span class='kw'>end</span></pre>
745
1568
  </td>
746
1569
  </tr>
@@ -765,7 +1588,7 @@
765
1588
 
766
1589
  </h3><div class="docstring">
767
1590
  <div class="discussion">
768
- <p>Ensure that the value is an Entry.</p>
1591
+ <p>Ensures that the value is an Entry.</p>
769
1592
 
770
1593
 
771
1594
  </div>
@@ -804,6 +1627,23 @@
804
1627
 
805
1628
  </li>
806
1629
 
1630
+ <li>
1631
+
1632
+ <span class='name'>options</span>
1633
+
1634
+
1635
+ <span class='type'>(<tt>Hash</tt>)</span>
1636
+
1637
+
1638
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
1639
+
1640
+
1641
+ &mdash;
1642
+ <div class='inline'><p>Options to manage the value.</p>
1643
+ </div>
1644
+
1645
+ </li>
1646
+
807
1647
  </ul>
808
1648
 
809
1649
  <p class="tag_title">Returns:</p>
@@ -830,7 +1670,6 @@
830
1670
  <pre class="lines">
831
1671
 
832
1672
 
833
- 81
834
1673
  82
835
1674
  83
836
1675
  84
@@ -843,10 +1682,11 @@
843
1682
  91
844
1683
  92
845
1684
  93
846
- 94</pre>
1685
+ 94
1686
+ 95</pre>
847
1687
  </td>
848
1688
  <td>
849
- <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 81</span>
1689
+ <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 82</span>
850
1690
 
851
1691
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='kw'>ensure</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
852
1692
  <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
@@ -960,7 +1800,7 @@
960
1800
 
961
1801
  </h3><div class="docstring">
962
1802
  <div class="discussion">
963
- <p>Compare to another Entry.</p>
1803
+ <p>Compares to another Entry.</p>
964
1804
 
965
1805
 
966
1806
  </div>
@@ -1018,7 +1858,7 @@
1018
1858
  <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 64</span>
1019
1859
 
1020
1860
  <span class='kw'>def</span> <span class='op'>==</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
1021
- <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='lbracket'>[</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
1861
+ <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Entry</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='lbracket'>[</span><span class='ivar'>@key</span><span class='comma'>,</span> <span class='ivar'>@hash</span><span class='comma'>,</span> <span class='ivar'>@value</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
1022
1862
  <span class='kw'>end</span></pre>
1023
1863
  </td>
1024
1864
  </tr>
@@ -1088,7 +1928,6 @@
1088
1928
  <pre class="lines">
1089
1929
 
1090
1930
 
1091
- 44
1092
1931
  45
1093
1932
  46
1094
1933
  47
@@ -1096,13 +1935,12 @@
1096
1935
  49</pre>
1097
1936
  </td>
1098
1937
  <td>
1099
- <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 44</span>
1938
+ <pre class="code"><span class="info file"># File 'lib/elephas/entry.rb', line 45</span>
1100
1939
 
1101
1940
  <span class='kw'>def</span> <span class='id identifier rubyid_refresh'>refresh</span><span class='lparen'>(</span><span class='id identifier rubyid_save'>save</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
1102
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_updated_at'>updated_at</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
1103
-
1104
- <span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_save'>save</span>
1105
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_updated_at'>updated_at</span>
1941
+ <span class='ivar'>@updated_at</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
1942
+ <span class='const'>Elephas</span><span class='op'>::</span><span class='const'>Cache</span><span class='period'>.</span><span class='id identifier rubyid_provider'>provider</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='ivar'>@hash</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_save'>save</span>
1943
+ <span class='ivar'>@updated_at</span>
1106
1944
  <span class='kw'>end</span></pre>
1107
1945
  </td>
1108
1946
  </tr>
@@ -1194,9 +2032,9 @@
1194
2032
  </div>
1195
2033
 
1196
2034
  <div id="footer">
1197
- Generated on Mon Oct 22 08:40:39 2012 by
2035
+ Generated on Sat Feb 2 09:15:15 2013 by
1198
2036
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1199
- 0.8.2.1 (ruby-1.9.2).
2037
+ 0.8.3 (ruby-1.9.3).
1200
2038
  </div>
1201
2039
 
1202
2040
  </body>