lucabook 0.2.7 → 0.2.8

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: dbbe396e906d2a98f5a87f2f08a338be5c31956039b9e6378897c052dd752ae6
4
- data.tar.gz: cce0fca70ca474902567ecd83a67bf0a8be18904ea0ade9560063167ac2cc1f7
3
+ metadata.gz: 8a024fa5882d001a6fce7d60863cf0d5d1fefbb4ae92dc0a774a5ce79eeb5749
4
+ data.tar.gz: 7ce4e31ef3c99a02790a462a5db798fd65c9248ef1b2e467ad6a6920f0fa8cee
5
5
  SHA512:
6
- metadata.gz: 3aadaeb6cd7de826420830a8af50575cef9e5b89b6168e506fc6ee59cfd34f9462e6e0fedee1a470eb1eb3a778f3c4d37356be60947e592bb09cf86b0f20a7a4
7
- data.tar.gz: 10575e9029feeb6ba181fe95bb121a34a53945116c4d731859fe8dc5c788fd7428b5cc69688d1bbdfd696251be2422e934bf17cd47c6d29f10c62363269d174e
6
+ metadata.gz: 911cd82032b9d138e356d5a1d1fd7ca95c396ae953426071fd7334ec33cae25882746a5f4b353396211b24de3c79c16a2b8767f172e6368dc1dc0d5195b8a278
7
+ data.tar.gz: eda9e10010600b88708b08d5b099d18f870b73dea3d59d6ea7f8ac216588d4c4335846a4c084c90a470dad90facfa0aa076cfa625ddc6615c65302d834162006
@@ -1,7 +1,12 @@
1
1
  #!/usr/bin/ruby
2
2
 
3
- require "optparse"
4
- require "luca_book/console"
3
+ require 'optparse'
4
+ require 'luca_book'
5
+ require 'luca_book/console'
6
+
7
+ def import(args, params)
8
+ LucaBook::Import.new(args[0]).import_csv
9
+ end
5
10
 
6
11
  def list(args, params)
7
12
  if params["c"] or params["code"]
@@ -24,10 +29,19 @@ def report(args, params)
24
29
  end
25
30
  end
26
31
 
32
+ LucaRecord::Base.valid_project?
27
33
  cmd = ARGV.shift
28
34
 
29
35
  case cmd
30
- when "list"
36
+ when 'import'
37
+ params = {}
38
+ OptionParser.new do |opt|
39
+ opt.banner = 'Usage: luca import filepath'
40
+ # TODO: need to handle import config
41
+ args = opt.parse!(ARGV)
42
+ import(args, params)
43
+ end
44
+ when 'list'
31
45
  params = {}
32
46
  OptionParser.new do |opt|
33
47
  opt.banner = 'Usage: luca list [year month]'
@@ -36,7 +50,7 @@ when "list"
36
50
  args = opt.parse!(ARGV)
37
51
  list(args, params)
38
52
  end
39
- when "report"
53
+ when 'report'
40
54
  params = {}
41
55
  OptionParser.new do |opt|
42
56
  opt.banner = 'Usage: luca report'
@@ -45,8 +59,9 @@ when "report"
45
59
  args = opt.parse!(ARGV)
46
60
  report(args, params)
47
61
  end
48
- when "--help"
62
+ when '--help'
49
63
  puts 'Usage: luca subcommand'
64
+ puts ' import: import records'
50
65
  puts ' list: list records'
51
66
  puts ' report: show reports'
52
67
  else
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'luca_record'
3
4
  require 'luca_book/version'
4
5
 
5
6
  module LucaBook
7
+ autoload :Import, 'luca_book/import'
6
8
  autoload :Journal, 'luca_book/journal'
7
9
  autoload :State, 'luca_book/state'
8
10
  end
@@ -35,6 +35,13 @@ module LucaBook
35
35
  end
36
36
  end
37
37
 
38
+ # define new transaction ID & write data at once
39
+ def self.create_record!(date_obj, codes = nil)
40
+ gen_record_file!(@dirname, date_obj, codes) do |f|
41
+ f.write CSV.generate('', col_sep: "\t", headers: false) { |c| yield(c) }
42
+ end
43
+ end
44
+
38
45
  #
39
46
  # collect values on specified key
40
47
  #
@@ -218,6 +218,7 @@ module LucaBook
218
218
  end
219
219
  end
220
220
 
221
+ # TODO: replace load_tsv -> generic load_tsv_dict
221
222
  def load_start
222
223
  file = LucaSupport::Config::Pjdir + 'start.tsv'
223
224
  {}.tap do |dic|
@@ -227,6 +228,13 @@ module LucaBook
227
228
  end
228
229
  end
229
230
 
231
+ def load_tsv(path)
232
+ return enum_for(:load_tsv, path) unless block_given?
233
+
234
+ data = CSV.read(path, headers: true, col_sep: "\t", encoding: 'UTF-8')
235
+ data.each { |row| yield row }
236
+ end
237
+
230
238
  def self.calc_diff(num, code)
231
239
  amount = /\./.match(num.to_s) ? BigDecimal(num) : num.to_i
232
240
  amount * pn_debit(code.to_s)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LucaBook
4
- VERSION = '0.2.7'
4
+ VERSION = '0.2.8'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lucabook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
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-10-05 00:00:00.000000000 Z
11
+ date: 2020-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lucarecord
@@ -73,7 +73,8 @@ files:
73
73
  - lib/luca_book/state.rb
74
74
  - lib/luca_book/version.rb
75
75
  homepage: https://github.com/chumaltd/luca/tree/master/lucabook
76
- licenses: []
76
+ licenses:
77
+ - GPL
77
78
  metadata:
78
79
  homepage_uri: https://github.com/chumaltd/luca/tree/master/lucabook
79
80
  source_code_uri: https://github.com/chumaltd/luca/tree/master/lucabook
@@ -85,7 +86,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
85
86
  requirements:
86
87
  - - ">="
87
88
  - !ruby/object:Gem::Version
88
- version: '0'
89
+ version: 2.6.0
89
90
  required_rubygems_version: !ruby/object:Gem::Requirement
90
91
  requirements:
91
92
  - - ">="