meibo 0.23.0 → 0.25.0

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: 00ecbfbaef30129e7c786dbcd4fa12b328d98f14cfeea61ac324a29fae66b69e
4
- data.tar.gz: 83dd173fe04db639a914c6c2d41ba73fd3119b39ac51c4fe00a691e26f99ea80
3
+ metadata.gz: 7d13051f54e9e4f678df529710d8241c5d1222772775484c3e6febce4dce309e
4
+ data.tar.gz: 347825b32f8c292f8de1857e40bc33ab58452d1e1b4429205835e2e785ef48a5
5
5
  SHA512:
6
- metadata.gz: 9233be4a0d226ad7f40a23a8de2a665835a118e2ff0ba1b16ac1f438e50afb76be445eaea3b94d6bdce4819ac7be08d3bf94e41415cb06f4fd0ab7f5371bebdf
7
- data.tar.gz: a59035b09ab0c6de6ef109b079ca063ab43d7cb6294e4657809c19a6dd7461737e68bdaece2d79dee620df4618ab08301bfcbffb668c1f570b7b90bc7a3f59a4
6
+ metadata.gz: a13bf3cf70f6a21ecad8d1c9f5ad555fa31f80cb4189035e985eb3328637644449c23b5498699581b639823f1d66ac7832fe211979545a33963fdae551162c30
7
+ data.tar.gz: 7b4cdd9a43409053306a461660212dee2c74646ddbc998b8a11929b1e9c6e1bb44a9b80552da038f5f0b3aaa02710386b099a157bc5d3549839b930aa83ce6f4
data/.rubocop_todo.yml CHANGED
@@ -50,7 +50,7 @@ Metrics/MethodLength:
50
50
  # Offense count: 1
51
51
  # Configuration parameters: CountComments, CountAsOne.
52
52
  Metrics/ModuleLength:
53
- Max: 222
53
+ Max: 237
54
54
 
55
55
  # Offense count: 16
56
56
  # Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- meibo (0.23.0)
4
+ meibo (0.25.0)
5
5
  csv (>= 3.1.4)
6
6
  rubyzip
7
7
  zeitwerk
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "date"
4
+ require "set"
4
5
  require "time"
5
6
 
6
7
  module Meibo
@@ -12,6 +13,7 @@ module Meibo
12
13
  date
13
14
  datetime
14
15
  enum
16
+ mext_grade_code
15
17
  integer
16
18
  status
17
19
  user_ids
@@ -36,8 +38,8 @@ module Meibo
36
38
 
37
39
  private
38
40
 
39
- def build_converter(fields:, converters:, write_or_parser:)
40
- converter_list = TYPES.filter_map do |converter_type|
41
+ def build_converter_list(fields:, converters:, write_or_parser:)
42
+ TYPES.filter_map do |converter_type|
41
43
  fields_to_be_converted = converters[converter_type]
42
44
  method_name = "build_#{converter_type}_field_#{write_or_parser}_converter"
43
45
  if fields_to_be_converted && respond_to?(method_name, true)
@@ -50,14 +52,22 @@ module Meibo
50
52
  end
51
53
  end
52
54
  end
55
+ end
56
+
57
+ def converter_list_to_convert_proc(converter_list)
53
58
  lambda do |field, field_info|
54
59
  # NOTE: convert blank sourcedId to nil
55
- field = nil if field.respond_to?(:empty?) && field.empty?
60
+ field = nil if field == "NULL" || field == "" # rubocop:disable Style/MultipleComparison
56
61
  converter_list.each { |converter| field = converter[field, field_info] }
57
62
  field
58
63
  end
59
64
  end
60
65
 
66
+ def build_converter(fields:, converters:, write_or_parser:)
67
+ converter_list = build_converter_list(fields: fields, converters: converters, write_or_parser: write_or_parser).freeze
68
+ converter_list_to_convert_proc(converter_list)
69
+ end
70
+
61
71
  def build_boolean_field_parser_converter(boolean_field_indexes)
62
72
  boolean_field_indexes = boolean_field_indexes.dup.freeze
63
73
  lambda do |field, field_info|
@@ -142,6 +152,17 @@ module Meibo
142
152
  end
143
153
  end
144
154
 
155
+ def build_mext_grade_code_field_parser_converter(grade_field_indexes)
156
+ valid_grade = %w[P1 P2 P3 P4 P5 P6 J1 J2 J3 H1 H2 H3 E1 E2 E3].to_set
157
+ lambda do |grades, field_info|
158
+ next grades unless grade_field_indexes.include?(field_info.index)
159
+
160
+ raise InvalidDataTypeError unless grades.all? { |grade| valid_grade.include?(grade) }
161
+
162
+ grades
163
+ end
164
+ end
165
+
145
166
  def build_integer_field_parser_converter(integer_field_indexes)
146
167
  integer_field_indexes = integer_field_indexes.dup.freeze
147
168
  lambda do |field, field_info|
@@ -10,7 +10,8 @@ module Meibo
10
10
  ).freeze,
11
11
  converters: superclass.converters.merge(
12
12
  boolean: [:special_needs].freeze,
13
- enum: { class_type: TYPES.values.freeze }.freeze
13
+ enum: { class_type: TYPES.values.freeze }.freeze,
14
+ mext_grade_code: [:grades].freeze
14
15
  ).freeze
15
16
  )
16
17
 
@@ -6,7 +6,7 @@ module Meibo
6
6
  DataModel.define(
7
7
  self,
8
8
  attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
9
- converters: superclass.converters.merge(enum: { course_code: [""].freeze }.freeze)
9
+ converters: superclass.converters.merge(enum: { course_code: [""].freeze }.freeze, mext_grade_code: [:grades].freeze)
10
10
  )
11
11
 
12
12
  # NOTE: courseCodeは空文字固定
data/lib/meibo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Meibo
4
- VERSION = "0.23.0"
4
+ VERSION = "0.25.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meibo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.0
4
+ version: 0.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seiei Miyagi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-23 00:00:00.000000000 Z
11
+ date: 2023-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: csv
@@ -142,7 +142,7 @@ metadata:
142
142
  allowed_push_host: https://rubygems.org/
143
143
  homepage_uri: https://github.com/hanachin/meibo
144
144
  source_code_uri: https://github.com/hanachin/meibo
145
- changelog_uri: https://github.com/hanachin/meibo/blob/meibo/v0.23.0/CHANGELOG.md
145
+ changelog_uri: https://github.com/hanachin/meibo/blob/meibo/v0.25.0/CHANGELOG.md
146
146
  rubygems_mfa_required: 'true'
147
147
  post_install_message:
148
148
  rdoc_options: []