textrepo 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9af29cfb5945798beea4d787abc9ec472607841d6daea7dc8e62bf62a3ecc4b2
4
- data.tar.gz: 31f97fb8586b206b95f85feaaf653aa0e75a08379677e2019e067c5df03f0b3d
3
+ metadata.gz: 7415dcbc8ec9483a33c0027432a60473fd0b77ad67369b25b88fb0f399edd788
4
+ data.tar.gz: 9467336f5d93ec578d5693005a4737f4eef55aeb11e4c0a4ec12f197e81de240
5
5
  SHA512:
6
- metadata.gz: 934d63e39badb3ffa660b26e363a1caba78bd3dd906c8c7b24c79374659780def778e7f00b6902a1f80950055d885a954561a74b2301253a086195f48d05a79e
7
- data.tar.gz: d25676f649ba6308403f3a8e4e4d2f1d851b9d6026ebe8ee5668d7a8d37a4edc8135f13ead288a963afc81571cc1b0378499630c314334f5b3c223bf8e7dc3f4
6
+ metadata.gz: f989032a0f1db66aeb1392cf9b05fd89306152d1b76907953c90ec14839d7a34465a017a2be8017536270b9a071cd3027497305978fdf59681d3547c8a68a5e5
7
+ data.tar.gz: cfb126c03ce9720dd2f2e90453a5d2baf33160c7786a8a1d9b5ef02b2c4a4e2531de5744d255efd7979a39e87c9e93287de3397533404143b51be1eb8bb23a58
data/Rakefile CHANGED
@@ -42,5 +42,4 @@ RDoc::Task.new do |rdoc|
42
42
  rdoc.generator = "ri"
43
43
  rdoc.rdoc_dir = "doc"
44
44
  rdoc.rdoc_files.include("lib/**/*.rb")
45
- rdoc.markup = "markdown"
46
45
  end
@@ -47,6 +47,9 @@ module Textrepo
47
47
  #
48
48
  # Default values are set when `repository_name` and `default_extname`
49
49
  # were not defined in `conf`.
50
+ #
51
+ # :call-seq:
52
+ # new(Rbnotes::Conf or Hash) -> FileSystemRepository
50
53
 
51
54
  def initialize(conf)
52
55
  super
@@ -60,9 +63,9 @@ module Textrepo
60
63
  ##
61
64
  # Creates a file into the repository, which contains the specified
62
65
  # text and is associated to the timestamp.
63
-
66
+ #
64
67
  # :call-seq:
65
- # create(Timestamp, Array) => Timestamp
68
+ # create(Timestamp, Array) -> Timestamp
66
69
 
67
70
  def create(timestamp, text)
68
71
  abs = abspath(timestamp)
@@ -76,9 +79,9 @@ module Textrepo
76
79
  ##
77
80
  # Reads the file content in the repository. Then, returns its
78
81
  # content.
79
-
82
+ #
80
83
  # :call-seq:
81
- # read(Timestamp) => Array
84
+ # read(Timestamp) -> Array
82
85
 
83
86
  def read(timestamp)
84
87
  abs = abspath(timestamp)
@@ -93,9 +96,9 @@ module Textrepo
93
96
  ##
94
97
  # Updates the file content in the repository. A new timestamp
95
98
  # will be attached to the text.
96
-
99
+ #
97
100
  # :call-seq:
98
- # update(Timestamp, Array) => Timestamp
101
+ # update(Timestamp, Array) -> Timestamp
99
102
 
100
103
  def update(timestamp, text)
101
104
  raise EmptyTextError if text.empty?
@@ -115,9 +118,9 @@ module Textrepo
115
118
 
116
119
  ##
117
120
  # Deletes the file in the repository.
118
-
121
+ #
119
122
  # :call-seq:
120
- # delete(Timestamp) => Array
123
+ # delete(Timestamp) -> Array
121
124
 
122
125
  def delete(timestamp)
123
126
  abs = abspath(timestamp)
@@ -131,9 +134,9 @@ module Textrepo
131
134
 
132
135
  ##
133
136
  # Finds entries of text those timestamp matches the specified pattern.
134
-
137
+ #
135
138
  # :call-seq:
136
- # entries(String = nil) => Array
139
+ # entries(String = nil) -> Array of Timestamp instances
137
140
 
138
141
  def entries(stamp_pattern = nil)
139
142
  results = []
@@ -142,7 +145,7 @@ module Textrepo
142
145
  when "yyyymoddhhmiss_lll".size
143
146
  stamp = Timestamp.parse_s(stamp_pattern)
144
147
  if exist?(stamp)
145
- results << stamp.to_s
148
+ results << stamp
146
149
  end
147
150
  when 0, "yyyymoddhhmiss".size, "yyyymodd".size
148
151
  results += find_entries(stamp_pattern)
@@ -168,7 +171,7 @@ module Textrepo
168
171
  ##
169
172
  # Check the existence of text which is associated with the given
170
173
  # timestamp.
171
-
174
+ #
172
175
  # :call-seq:
173
176
  # exist?(Timestamp) -> true or false
174
177
 
@@ -205,7 +208,7 @@ module Textrepo
205
208
 
206
209
  def find_entries(stamp_pattern)
207
210
  Dir.glob("#{@path}/**/#{stamp_pattern}*.#{@extname}").map { |e|
208
- timestamp_str(e)
211
+ Timestamp.parse_s(timestamp_str(e))
209
212
  }
210
213
  end
211
214
 
@@ -27,7 +27,7 @@ module Textrepo
27
27
  ##
28
28
  # Stores text data into the repository with the specified timestamp.
29
29
  # Returns the timestamp.
30
-
30
+ #
31
31
  # :call-seq:
32
32
  # create(Timestamp, Array) -> Timestamp
33
33
 
@@ -36,7 +36,7 @@ module Textrepo
36
36
  ##
37
37
  # Reads text data from the repository, which is associated to the
38
38
  # timestamp. Returns an array which contains the text.
39
-
39
+ #
40
40
  # :call-seq:
41
41
  # read(Timestamp) -> Array
42
42
 
@@ -45,7 +45,7 @@ module Textrepo
45
45
  ##
46
46
  # Updates the content with text in the repository, which is
47
47
  # associated to the timestamp. Returns the timestamp.
48
-
48
+ #
49
49
  # :call-seq:
50
50
  # update(Timestamp, Array) -> Timestamp
51
51
 
@@ -54,7 +54,7 @@ module Textrepo
54
54
  ##
55
55
  # Deletes the content in the repository, which is associated to
56
56
  # the timestamp. Returns an array which contains the deleted text.
57
-
57
+ #
58
58
  # :call-seq:
59
59
  # delete(Timestamp) -> Array
60
60
 
@@ -63,8 +63,8 @@ module Textrepo
63
63
  ##
64
64
  # Finds all entries of text those have timestamps which mathes the
65
65
  # specified pattern of timestamp. Returns an array which contains
66
- # timestamps. If none of text was found, an empty array would be
67
- # returned.
66
+ # instances of Timestamp. If none of text was found, an empty
67
+ # array would be returned.
68
68
  #
69
69
  # A pattern must be one of the following:
70
70
  #
@@ -78,9 +78,9 @@ module Textrepo
78
78
  # If `stamp_pattern` is omitted, the recent entries will be listed.
79
79
  # Then, how many entries are listed depends on the implementaiton
80
80
  # of the concrete repository class.
81
-
81
+ #
82
82
  # :call-seq:
83
- # entries(String) -> Array
83
+ # entries(String) -> Array of Timestamp instances
84
84
 
85
85
  def entries(stamp_pattern = nil); []; end
86
86
 
@@ -1,23 +1,47 @@
1
1
  module Textrepo
2
2
  ##
3
- # Timstamp is generated from a Time object. It converts a time to
3
+ # Timestamp is generated from a Time object. It converts a time to
4
4
  # string in the obvious format, such "20201023122400".
5
5
  #
6
+ # Since the obvious format contains only year, month, day, hour,
7
+ # minute, and second, the resolution of time is a second. That is,
8
+ # two Time object those are different only in second will generates
9
+ # equal Timestamp objects.
10
+ #
11
+ # If a client program of Textrepo::Timestamp wants to distinguish
12
+ # those Time objects, an attribute `suffix` could be used.
13
+ #
14
+ # For example, the `suffix` will be converted into a 3 character
15
+ # string, such "012", "345", "678", ... etc. So, millisecond part
16
+ # of a Time object will be suitable to pass as `suffix` when
17
+ # creating a Timestamp object.
18
+
6
19
  class Timestamp
7
20
  include Comparable
8
21
 
9
- attr_reader :time, :suffix
22
+ ##
23
+ # Time object which generates the Timestamp object.
24
+
25
+ attr_reader :time
10
26
 
11
27
  ##
12
- # :call-seq:
13
- # new(Time, Integer = nil)
28
+ # An integer specified in `new` method to create the Timestamp object.
29
+
30
+ attr_reader :suffix
31
+
32
+ ##
33
+ # Creates a Timestamp object from a Time object. In addition, an
34
+ # Integer can be passed as a suffix use.
14
35
  #
36
+ # :call-seq:
37
+ # new(Time, Integer = nil) -> Timestamp
38
+
15
39
  def initialize(time, suffix = nil)
16
40
  @time = time
17
41
  @suffix = suffix
18
42
  end
19
43
 
20
- def <=>(other)
44
+ def <=>(other) # :nodoc:
21
45
  result = (self.time <=> other.time)
22
46
 
23
47
  sfx = self.suffix || 0
@@ -29,12 +53,10 @@ module Textrepo
29
53
  ##
30
54
  # Generate an obvious time string.
31
55
  #
32
- # ```
33
- # %Y %m %d %H %M %S suffix
34
- # "2020-12-30 12:34:56 (0 | nil)" => "20201230123456"
35
- # "2020-12-30 12:34:56 (7)" => "20201230123456_007"
36
- # ```
37
- #
56
+ # %Y %m %d %H %M %S suffix
57
+ # "2020-12-30 12:34:56 (0 | nil)" -> "20201230123456"
58
+ # "2020-12-30 12:34:56 (7)" -> "20201230123456_007"
59
+
38
60
  def to_s
39
61
  s = @time.strftime("%Y%m%d%H%M%S")
40
62
  s += "_#{"%03u" % @suffix}" unless @suffix.nil? || @suffix == 0
@@ -43,18 +65,28 @@ module Textrepo
43
65
 
44
66
  class << self
45
67
  ##
46
- # ```
47
- # yyyymoddhhmiss sfx yyyy mo dd hh mi ss sfx
48
- # "20201230123456" => "2020", "12", "30", "12", "34", "56"
49
- # "20201230123456_789" => "2020", "12", "30", "12", "34", "56", "789"
50
- # ```
68
+ # Splits a string which represents a timestamp into components.
69
+ # Each component represents a part of constructs to instantiate
70
+ # a Time object.
51
71
  #
72
+ # yyyymoddhhmiss sfx yyyy mo dd hh mi ss sfx
73
+ # "20201230123456" -> "2020", "12", "30", "12", "34", "56"
74
+ # "20201230123456_789" -> "2020", "12", "30", "12", "34", "56", "789"
75
+
52
76
  def split_stamp(stamp_str)
53
77
  # yyyy mo dd hh mi ss sfx
54
78
  a = [0..3, 4..5, 6..7, 8..9, 10..11, 12..13, 15..17].map {|r| stamp_str[r]}
55
79
  a[-1].nil? ? a[0..-2] : a
56
80
  end
57
81
 
82
+ ##
83
+ # Generate a Timestamp object from a string which represents a
84
+ # timestamp, such "20201028163400".
85
+ #
86
+ # :call-seq:
87
+ # parse_s("20201028163400") -> Timestamp
88
+ # parse_s("20201028163529_034") -> Timestamp
89
+
58
90
  def parse_s(stamp_str)
59
91
  year, mon, day, hour, min, sec , sfx = split_stamp(stamp_str).map(&:to_i)
60
92
  Timestamp.new(Time.new(year, mon, day, hour, min, sec), sfx)
@@ -1,3 +1,3 @@
1
1
  module Textrepo
2
- VERSION = '0.4.3'
2
+ VERSION = '0.4.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: textrepo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - mnbi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-26 00:00:00.000000000 Z
11
+ date: 2020-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler