lucarecord 0.2.18 → 0.2.19
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 +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/luca_record/dict.rb +2 -2
- data/lib/luca_record/io.rb +43 -15
- data/lib/luca_record/version.rb +1 -1
- data/lib/luca_support/code.rb +17 -0
- data/lib/luca_support/config.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5d79527ced912cddc0f5d33e7d557dd23fb2e2ae0ed0437f7c90eb44095469e
|
4
|
+
data.tar.gz: ce8fc1c4ec1264913024981a6769a36d6439d6d5b89a820bcfa7fcb6991151bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4f62de1a08971733954c469d2572f6aab8018379de928ab2413aca14d9123b08da67e5f85dcd8bf632c646732cf5c534f259bd83fb5eeff0d851e4d444b7e1c
|
7
|
+
data.tar.gz: 2ef832f91abef366760fbff0157c97c9e43a814b1df6f1c5244e0e0f7ad32db8459f2abee51fd1fd40812283b87b6b2a1140d6668b98ab98d86088d17d3bb0e4
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## LucaRecord 0.2.19
|
2
|
+
|
3
|
+
* `LucaSupport::Code.decode_id()`
|
4
|
+
* `LucaSupport::Code.encode_term()` for multiple months search. Old `scan_term()` removed.
|
5
|
+
|
1
6
|
## LucaRecord 0.2.18
|
2
7
|
|
3
8
|
* `find()`, `create()`, `save()` now supports both of uuid / historical records. If specified `date:` keyword option to `create()`, then generate historical record. `find()`, `save()` identifies with 'id' attribute.
|
data/lib/luca_record/dict.rb
CHANGED
@@ -20,7 +20,7 @@ module LucaRecord
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def search(word, default_word = nil)
|
23
|
-
res = max_score_code(word)
|
23
|
+
res = max_score_code(word.gsub(/[[:space:]]/, ''))
|
24
24
|
if res[1] > 0.4
|
25
25
|
res[0]
|
26
26
|
else
|
@@ -65,7 +65,7 @@ module LucaRecord
|
|
65
65
|
config[:type] ||= 'invalid'
|
66
66
|
config[:debit_value] = @config['debit_value'].to_i if @config.dig('debit_value')
|
67
67
|
config[:credit_value] = @config['credit_value'].to_i if @config.dig('credit_value')
|
68
|
-
config[:note] = @config['note']
|
68
|
+
config[:note] = @config['note'] if @config.dig('note')
|
69
69
|
config[:encoding] = @config['encoding'] if @config.dig('encoding')
|
70
70
|
|
71
71
|
config[:year] = @config['year'] if @config.dig('year')
|
data/lib/luca_record/io.rb
CHANGED
@@ -54,8 +54,22 @@ module LucaRecord # :nodoc:
|
|
54
54
|
def asof(year, month = nil, day = nil, basedir = @dirname)
|
55
55
|
return enum_for(:search, year, month, day, nil, basedir) unless block_given?
|
56
56
|
|
57
|
-
search(year, month, day, nil, basedir)
|
58
|
-
|
57
|
+
search(year, month, day, nil, basedir) { |data, path| yield data, path }
|
58
|
+
end
|
59
|
+
|
60
|
+
# scan ranging data on multiple months
|
61
|
+
#
|
62
|
+
def term(start_year, start_month, end_year, end_month, code = nil, basedir = @dirname)
|
63
|
+
return enum_for(:term, start_year, start_month, end_year, end_month, code, basedir) unless block_given?
|
64
|
+
|
65
|
+
LucaSupport::Code.encode_term(start_year, start_month, end_year, end_month).each do |subdir|
|
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
|
72
|
+
end
|
59
73
|
end
|
60
74
|
end
|
61
75
|
|
@@ -148,6 +162,21 @@ module LucaRecord # :nodoc:
|
|
148
162
|
id
|
149
163
|
end
|
150
164
|
|
165
|
+
# change filename with new code set
|
166
|
+
#
|
167
|
+
def change_codes(id, new_codes, basedir = @dirname)
|
168
|
+
raise 'invalid id' if id.split('/').length != 2
|
169
|
+
|
170
|
+
newfile = new_codes.empty? ? id : id + '-' + new_codes.join('-')
|
171
|
+
Dir.chdir(abs_path(basedir)) do
|
172
|
+
origin = Dir.glob("#{id}*")
|
173
|
+
raise 'duplicated files' if origin.length != 1
|
174
|
+
|
175
|
+
File.rename(origin.first, newfile)
|
176
|
+
end
|
177
|
+
newfile
|
178
|
+
end
|
179
|
+
|
151
180
|
# ----------------------------------------------------------------
|
152
181
|
# :section: Path Utilities
|
153
182
|
# ----------------------------------------------------------------
|
@@ -270,6 +299,17 @@ module LucaRecord # :nodoc:
|
|
270
299
|
end
|
271
300
|
end
|
272
301
|
|
302
|
+
# parse data dir and respond existing months
|
303
|
+
#
|
304
|
+
def scan_terms(query = nil, base_dir = @dirname)
|
305
|
+
pattern = query.nil? ? "*" : "#{query}*"
|
306
|
+
Dir.chdir(abs_path(base_dir)) do
|
307
|
+
Dir.glob(pattern).select { |dir|
|
308
|
+
FileTest.directory?(dir) && /^[0-9]/.match(dir)
|
309
|
+
}.sort.map { |str| decode_term(str) }
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
273
313
|
# Decode basic format.
|
274
314
|
# If specific decode is needed, override this method in each class.
|
275
315
|
#
|
@@ -281,8 +321,7 @@ module LucaRecord # :nodoc:
|
|
281
321
|
when 'json'
|
282
322
|
# TODO: implement JSON parse
|
283
323
|
else
|
284
|
-
YAML.load(io.read).tap { |obj| validate_keys(obj) }
|
285
|
-
.inject({}) { |h, (k, v)| h[k] = LucaSupport::Code.decimalize(v); h }
|
324
|
+
LucaSupport::Code.decimalize(YAML.load(io.read)).tap { |obj| validate_keys(obj) }
|
286
325
|
end
|
287
326
|
end
|
288
327
|
|
@@ -348,17 +387,6 @@ module LucaRecord # :nodoc:
|
|
348
387
|
end
|
349
388
|
end
|
350
389
|
|
351
|
-
# parse data dir and respond existing months
|
352
|
-
#
|
353
|
-
def scan_terms(base_dir, query = nil)
|
354
|
-
pattern = query.nil? ? "*" : "#{query}*"
|
355
|
-
Dir.chdir(base_dir) do
|
356
|
-
Dir.glob(pattern).select { |dir|
|
357
|
-
FileTest.directory?(dir) && /^[0-9]/.match(dir)
|
358
|
-
}.sort.map { |str| decode_term(str) }
|
359
|
-
end
|
360
|
-
end
|
361
|
-
|
362
390
|
def load_config(path = nil)
|
363
391
|
path = path.to_s
|
364
392
|
if File.exist?(path)
|
data/lib/luca_record/version.rb
CHANGED
data/lib/luca_support/code.rb
CHANGED
@@ -10,6 +10,13 @@ module LucaSupport
|
|
10
10
|
module Code
|
11
11
|
module_function
|
12
12
|
|
13
|
+
# Parse historical id into Array of date & transaction id.
|
14
|
+
#
|
15
|
+
def decode_id(id_str)
|
16
|
+
m = %r(^(?<year>[0-9]+)(?<month>[A-L])/?(?<day>[0-9A-V])(?<txid>[0-9A-Z]{,3})).match(id_str)
|
17
|
+
["#{m[:year]}-#{decode_month(m[:month])}-#{decode_date(m[:day])}", decode_txid(m[:txid])]
|
18
|
+
end
|
19
|
+
|
13
20
|
def encode_txid(num)
|
14
21
|
txmap = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
15
22
|
l = txmap.length
|
@@ -69,6 +76,16 @@ module LucaSupport
|
|
69
76
|
'0ABCDEFGHIJKL'.index(char)
|
70
77
|
end
|
71
78
|
|
79
|
+
# Generate globbing phrase like ["2020[C-H]"] for range search.
|
80
|
+
#
|
81
|
+
def encode_term(start_year, start_month, end_year, end_month)
|
82
|
+
(start_year..end_year).to_a.map do |y|
|
83
|
+
g1 = y == start_year ? encode_month(start_month) : encode_month(1)
|
84
|
+
g2 = y == end_year ? encode_month(end_month) : encode_month(12)
|
85
|
+
"#{y}[#{g1}-#{g2}]"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
72
89
|
def decode_term(char)
|
73
90
|
m = /^([0-9]{4})([A-La-l])/.match(char)
|
74
91
|
[m[1].to_i, decode_month(m[2])]
|
data/lib/luca_support/config.rb
CHANGED
@@ -11,7 +11,7 @@ module LucaSupport
|
|
11
11
|
# Project top directory.
|
12
12
|
Pjdir = ENV['LUCA_TEST_DIR'] || Dir.pwd.freeze
|
13
13
|
if File.exist?(Pathname(Pjdir) / 'config.yml')
|
14
|
-
DECIMAL_NUM = YAML.load_file(Pathname(Pjdir) / 'config.yml', **{})['decimal_number']
|
14
|
+
# DECIMAL_NUM = YAML.load_file(Pathname(Pjdir) / 'config.yml', **{})['decimal_number']
|
15
15
|
COUNTRY = YAML.load_file(Pathname(Pjdir) / 'config.yml', **{})['country']
|
16
16
|
DECIMAL_NUM ||= 0 if COUNTRY == 'jp'
|
17
17
|
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.
|
4
|
+
version: 0.2.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chuma Takahiro
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mail
|