lucarecord 0.2.27 → 0.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e81c1ccc95c688bdfa2da3af37635324f1f744f1976b0dd3654514e2a1254b4
4
- data.tar.gz: 2ed07a97b4bca099f1eb7004476960c3c2a8da03d06ee7f4db6e48226294f431
3
+ metadata.gz: c52d38b86c9670e3358ef9e94553902a3a511f626689566a4dc0b1d5e480c041
4
+ data.tar.gz: 064b974bbeeaa1dbb8e644532c5e2bee67cdd5d697e1cdde99087204698aa665
5
5
  SHA512:
6
- metadata.gz: fcdd0ddae31a118c6532c872361535d89336fa712ba80395a10d5dda7a597c6300214ac2c1cdbab6782bd861d46e9da1e32c48e3fae182c33d63e78b0fcf7424
7
- data.tar.gz: 4ec6114ea0f761e7ca4f743fce6c2594cac704c0bb6a32082ba35cbc5b9c6e639ce421d13ccf33a46a5359a4030974ff85447133391641beb83d2efaab3e1a91
6
+ metadata.gz: 20ece81a5471e985bdc6b46aa341b3d859ad050b28a5976b0b20f15a44971ac0111b16a58db1053c91da73d91f8c37dc26e6bd825b4604a3c17ced65239a19b2
7
+ data.tar.gz: fc4af325295583e739fb972f3d96470f0a84d74ea4a4b330a16178d88de0c4700f64b28f36166539904c3b589c7540ec4486e36e74d6fd0d1e908da22e4cc685
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## LucaRecord 0.2.28
2
+
3
+ * implement LucaSupport::Range, handle #by_month enumeration between several months.
4
+ * @record_type = 'raw' is deprecated in favor of overriding LucaRecord::IO.load_data
5
+ * change code search from exact match to prefix match
6
+
7
+ ## LucaRecord 0.2.27
8
+
9
+ * Fix: update_digest
10
+
1
11
  ## LucaRecord 0.2.26
2
12
 
3
13
  * Support #dig / #search for TSV dictionary
@@ -64,11 +64,7 @@ module LucaRecord # :nodoc:
64
64
 
65
65
  LucaSupport::Code.encode_term(start_year, start_month, end_year, end_month).each do |subdir|
66
66
  open_records(basedir, subdir, nil, code) do |f, path|
67
- if @record_type == 'raw'
68
- yield f, path
69
- else
70
- yield load_data(f, path)
71
- end
67
+ yield load_data(f, path)
72
68
  end
73
69
  end
74
70
  end
@@ -80,11 +76,7 @@ module LucaRecord # :nodoc:
80
76
 
81
77
  subdir = year.to_s + LucaSupport::Code.encode_month(month)
82
78
  open_records(basedir, subdir, LucaSupport::Code.encode_date(day), code) do |f, path|
83
- if @record_type == 'raw'
84
- yield f, path
85
- else
86
- yield load_data(f, path), path
87
- end
79
+ yield load_data(f, path), path
88
80
  end
89
81
  end
90
82
 
@@ -360,9 +352,6 @@ module LucaRecord # :nodoc:
360
352
  def load_data(io, path = nil)
361
353
  if @record_type
362
354
  case @record_type
363
- when 'raw'
364
- # TODO: raw may be unneeded in favor of override
365
- io
366
355
  when 'json'
367
356
  # TODO: implement JSON parse
368
357
  end
@@ -386,14 +375,17 @@ module LucaRecord # :nodoc:
386
375
  Pathname(LucaSupport::PJDIR) / 'data' / base_dir
387
376
  end
388
377
 
389
- # true when file doesn't have record on code
390
- # false when file may have one
378
+ # True when file doesn't have record on code.
379
+ # False when file may have one.
380
+ # If filename doesn't record codes, always return false,
381
+ # so later check is required. This is partial optimization.
382
+ #
391
383
  def skip_on_unmatch_code(subpath, code = nil)
392
384
  # p filename.split('-')[1..-1]
393
385
  filename = subpath.split('/').last
394
386
  return false if code.nil? || filename.length <= 4
395
387
 
396
- !filename.split('-')[1..-1].include?(code)
388
+ filename.split('-')[1..-1].select { |fragment| /^#{code}/.match(fragment) }.empty?
397
389
  end
398
390
 
399
391
  # AUTO INCREMENT
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LucaRecord
4
- VERSION = '0.2.27'
4
+ VERSION = '0.2.28'
5
5
  end
@@ -5,8 +5,9 @@ require 'securerandom'
5
5
  require 'digest/sha1'
6
6
  require 'luca_support/config'
7
7
 
8
- # implement Luca IDs convention
9
- module LucaSupport
8
+ module LucaSupport # :nodoc:
9
+ # implement Luca IDs convention
10
+ #
10
11
  module Code
11
12
  module_function
12
13
 
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LucaSupport # :nodoc:
4
+ # Partial range operation
5
+ #
6
+ module Range
7
+ def self.included(klass) # :nodoc:
8
+ klass.extend ClassMethods
9
+ end
10
+
11
+ def by_month(step = nil, from: nil, to: nil)
12
+ return enum_for(:by_month, step, from: from, to: to) unless block_given?
13
+
14
+ from ||= @start_date
15
+ to ||= @end_date
16
+ self.class.term_by_month(from, to, step || 1).each do |date|
17
+ @cursor_start = date
18
+ @cursor_end = step.nil? ? date : [date.next_month(step - 1), to].min
19
+ yield @cursor_start, @cursor_end
20
+ end
21
+ end
22
+
23
+ module ClassMethods
24
+ def term_by_month(start_date, end_date, step = 1)
25
+ Enumerator.new do |yielder|
26
+ each_month = start_date
27
+ while each_month <= end_date
28
+ yielder << each_month
29
+ each_month = each_month.next_month(step)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lucarecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.27
4
+ version: 0.2.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chuma Takahiro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-15 00:00:00.000000000 Z
11
+ date: 2021-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail
@@ -86,6 +86,7 @@ files:
86
86
  - lib/luca_support/code.rb
87
87
  - lib/luca_support/config.rb
88
88
  - lib/luca_support/mail.rb
89
+ - lib/luca_support/range.rb
89
90
  - lib/luca_support/view.rb
90
91
  homepage: https://github.com/chumaltd/luca/tree/master/lucarecord
91
92
  licenses: