meibo 0.23.0 → 0.25.0

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: 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: []