lucarecord 0.2.18 → 0.2.19
Sign up to get free protection for your applications and to get access to all the features.
- 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
|