strong_csv 0.6.0 → 0.7.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: 109d3d3c31812aedff005dc2003a8066d20a551513f0d287c0ba761a9469ac04
4
- data.tar.gz: 11a3cd4890a60b27231276d09bcdc05fb29487c100fdbc6afff8cc7febf58694
3
+ metadata.gz: 1c242c3b580ec02d431ae78bb7b8f370ef21248dae5fb89ea7ee158b0c9c04c6
4
+ data.tar.gz: 2d880a823b44c1da78eeb6b79196c56ff46e937efe86ac17e8a522ea8b97f4a0
5
5
  SHA512:
6
- metadata.gz: 6dd9abc5eb9a9b30f655ed13eae0e699c0471b09196ba5bc8ef265e06056ecf9bce526308f6a1edb28ff7d57ae9e5023e52b9e6bc827021cf186a8a62108026a
7
- data.tar.gz: 3e9d411ab432f498639c8532b46be1d52e734188c48089b565a32398b690e8ceed1255b40adcc80ebc3d21256782f186576d7dd5cf8346f88b43fa6c2489ebfd
6
+ metadata.gz: 81bcf7718f3b792f6ecc394cccc5eb610b32ecb89b9dd492d3f39ab5dadebb633b1c9f4bd804de355902632fd1790fb3bb7b5789a7bb79a6eff6ee1860078491
7
+ data.tar.gz: 39d417143c5262d1ac781bdd5414d5021e5018b5791a0d6ed6df7c0954b008154c8bc6542ce5cdc184b00b3c4c40a5bcfc4366872610a123feb3af93c991901d
data/README.md CHANGED
@@ -402,45 +402,6 @@ result[1].slice(:priority, :size) # => {:priority=>30, :size=>"A"} ("A" is not o
402
402
  result[2].slice(:priority, :size) # => {:priority=>"11", :size=>"S"} (11 is not one of 10, 20, and 30)
403
403
  ```
404
404
 
405
- ## I18n (Internationalization)
406
-
407
- strong_csv depends on [i18n](https://rubygems.org/gems/i18n) for internationalization.
408
- If you want to have a locale-specific error message, put the message catalog in your locale files.
409
- Here is an example of a locale file.
410
-
411
- ```yaml
412
- ja:
413
- strong_csv:
414
- boolean:
415
- cant_be_casted: "`%{value}`はBooleanに変換できません"
416
- float:
417
- cant_be_casted: "`%{value}`はFloatに変換できません"
418
- constraint_error: "`%{value}`は指定された成約を満たしていません",
419
- integer:
420
- cant_be_casted: "`%{value}`はIntegerに変換できません"
421
- constraint_error: "`%{value}`は指定された成約を満たしていません",
422
- literal:
423
- integer:
424
- unexpected: "`%{expected}`ではなく`%{value}`が入力されています"
425
- cant_be_casted: "`%{expected}`ではなく`%{value}`が入力されています"
426
- float:
427
- unexpected: "`%{expected}`ではなく`%{value}`が入力されています"
428
- cant_be_casted: "`%{value}`はFloatに変換できません"
429
- string:
430
- unexpected: "`%{expected}`ではなく`%{value}`が入力されています"
431
- range:
432
- cant_be_casted: "`%{value}`は`%{expected}`の始端に変換できません"
433
- out_of_range: "`%{value}`は`%{range}`の範囲外です"
434
- regexp:
435
- cant_be_casted: "`%{value}`はStringに変換できません"
436
- unexpected: "`%{value}`は`%{expected}`とマッチしませんでした"
437
- string:
438
- cant_be_casted: "`%{value}`はStringに変換できません"
439
- out_of_range: "`%{value}`の文字数は`%{range}`の範囲外です"
440
- time:
441
- cant_be_casted: "`%{value}`は`%{time_format}`でTimeに変換できません"
442
- ```
443
-
444
405
  ## Contributing
445
406
 
446
407
  Bug reports and pull requests are welcome on the [GitHub repository](https://github.com/yykamei/strong_csv).
@@ -17,7 +17,7 @@ class StrongCSV
17
17
  boolean = FALSE_VALUES.include?(value) ? false : nil
18
18
  return ValueResult.new(value: boolean, original_value: value) unless boolean.nil?
19
19
 
20
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.boolean.cant_be_casted", value: value.inspect, default: :"_strong_csv.boolean.cant_be_casted")])
20
+ ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to Boolean"])
21
21
  end
22
22
  end
23
23
  end
@@ -21,10 +21,10 @@ class StrongCSV
21
21
  if @constraint.call(float)
22
22
  ValueResult.new(value: float, original_value: value)
23
23
  else
24
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.float.constraint_error", value: value.inspect, default: :"_strong_csv.float.constraint_error")])
24
+ ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` does not satisfy the specified constraint"])
25
25
  end
26
26
  rescue ArgumentError, TypeError
27
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.float.cant_be_casted", value: value.inspect, default: :"_strong_csv.float.cant_be_casted")])
27
+ ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to Float"])
28
28
  end
29
29
  end
30
30
  end
@@ -21,10 +21,10 @@ class StrongCSV
21
21
  if @constraint.call(int)
22
22
  ValueResult.new(value: int, original_value: value)
23
23
  else
24
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.integer.constraint_error", value: value.inspect, default: :"_strong_csv.integer.constraint_error")])
24
+ ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` does not satisfy the specified constraint"])
25
25
  end
26
26
  rescue ArgumentError, TypeError
27
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.integer.cant_be_casted", value: value.inspect, default: :"_strong_csv.integer.cant_be_casted")])
27
+ ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to Integer"])
28
28
  end
29
29
  end
30
30
  end
@@ -13,10 +13,10 @@ class StrongCSV
13
13
  if int == self
14
14
  ValueResult.new(value: int, original_value: value)
15
15
  else
16
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.literal.integer.unexpected", value: int.inspect, expected: inspect, default: :"_strong_csv.literal.integer.unexpected")])
16
+ ValueResult.new(original_value: value, error_messages: ["`#{inspect}` is expected, but `#{int.inspect}` was given"])
17
17
  end
18
18
  rescue ArgumentError, TypeError
19
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.literal.integer.cant_be_casted", value: value.inspect, default: :"_strong_csv.literal.integer.cant_be_casted")])
19
+ ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to Integer"])
20
20
  end
21
21
  end
22
22
 
@@ -28,10 +28,10 @@ class StrongCSV
28
28
  if float == self
29
29
  ValueResult.new(value: float, original_value: value)
30
30
  else
31
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.literal.float.unexpected", value: float.inspect, expected: inspect, default: :"_strong_csv.literal.float.unexpected")])
31
+ ValueResult.new(original_value: value, error_messages: ["`#{inspect}` is expected, but `#{float.inspect}` was given"])
32
32
  end
33
33
  rescue ArgumentError, TypeError
34
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.literal.float.cant_be_casted", value: value.inspect, default: :"_strong_csv.literal.float.cant_be_casted")])
34
+ ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to Float"])
35
35
  end
36
36
  end
37
37
 
@@ -39,7 +39,7 @@ class StrongCSV
39
39
  # @param value [Object] Value to be casted to Range
40
40
  # @return [ValueResult]
41
41
  def cast(value)
42
- return ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.literal.range.cant_be_casted", value: value.inspect, expected: inspect, default: :"_strong_csv.literal.range.cant_be_casted")]) if value.nil?
42
+ return ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to the beginning of `#{inspect}`"]) if value.nil?
43
43
 
44
44
  casted = case self.begin
45
45
  when ::Float
@@ -54,10 +54,10 @@ class StrongCSV
54
54
  if cover?(casted)
55
55
  ValueResult.new(value: casted, original_value: value)
56
56
  else
57
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.literal.range.out_of_range", value: casted.inspect, range: inspect, default: :"_strong_csv.literal.range.out_of_range")])
57
+ ValueResult.new(original_value: value, error_messages: ["`#{casted.inspect}` is not within `#{inspect}`"])
58
58
  end
59
59
  rescue ArgumentError
60
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.literal.range.cant_be_casted", value: value.inspect, expected: inspect, default: :"_strong_csv.literal.range.cant_be_casted")])
60
+ ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to the beginning of `#{inspect}`"])
61
61
  end
62
62
  end
63
63
 
@@ -68,7 +68,7 @@ class StrongCSV
68
68
  if self == value
69
69
  ValueResult.new(value: self, original_value: value)
70
70
  else
71
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.literal.string.unexpected", value: value.inspect, expected: inspect, default: :"_strong_csv.literal.string.unexpected")])
71
+ ValueResult.new(original_value: value, error_messages: ["`#{inspect}` is expected, but `#{value.inspect}` was given"])
72
72
  end
73
73
  end
74
74
  end
@@ -77,12 +77,12 @@ class StrongCSV
77
77
  # @param value [Object] Value to be casted to String
78
78
  # @return [ValueResult]
79
79
  def cast(value)
80
- return ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.literal.regexp.cant_be_casted", value: value.inspect, default: :"_strong_csv.literal.regexp.cant_be_casted")]) if value.nil?
80
+ return ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to String"]) if value.nil?
81
81
 
82
82
  if self =~ value
83
83
  ValueResult.new(value: value, original_value: value)
84
84
  else
85
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.literal.regexp.unexpected", value: value.inspect, expected: inspect, default: :"_strong_csv.literal.regexp.unexpected")])
85
+ ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` did not match `#{inspect}`"])
86
86
  end
87
87
  end
88
88
  end
@@ -15,11 +15,11 @@ class StrongCSV
15
15
  # @param value [Object] Value to be casted to Boolean
16
16
  # @return [ValueResult]
17
17
  def cast(value)
18
- return ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.string.cant_be_casted", value: value.inspect, default: :"_strong_csv.string.cant_be_casted")]) if value.nil?
18
+ return ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to String"]) if value.nil?
19
19
 
20
20
  casted = String(value)
21
21
  if @within && !@within.cover?(casted.size)
22
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.string.out_of_range", value: value.inspect, range: @within.inspect, default: :"_strong_csv.string.out_of_range")])
22
+ ValueResult.new(original_value: value, error_messages: ["The length of `#{value.inspect}` is out of range `#{@within.inspect}`"])
23
23
  else
24
24
  ValueResult.new(value: casted, original_value: value)
25
25
  end
@@ -15,11 +15,11 @@ class StrongCSV
15
15
  # @param value [Object] Value to be casted to Time
16
16
  # @return [ValueResult]
17
17
  def cast(value)
18
- return ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.time.cant_be_casted", value: value.inspect, time_format: @format.inspect, default: :"_strong_csv.time.cant_be_casted")]) if value.nil?
18
+ return ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to Time with the format `#{@format.inspect}`"]) if value.nil?
19
19
 
20
20
  ValueResult.new(value: ::Time.strptime(value.to_s, @format), original_value: value)
21
21
  rescue ArgumentError
22
- ValueResult.new(original_value: value, error_messages: [I18n.t("strong_csv.time.cant_be_casted", value: value.inspect, time_format: @format.inspect, default: :"_strong_csv.time.cant_be_casted")])
22
+ ValueResult.new(original_value: value, error_messages: ["`#{value.inspect}` can't be casted to Time with the format `#{@format.inspect}`"])
23
23
  end
24
24
  end
25
25
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class StrongCSV
4
- VERSION = "0.6.0"
4
+ VERSION = "0.7.0"
5
5
  end
data/lib/strong_csv.rb CHANGED
@@ -4,10 +4,8 @@ require "csv"
4
4
  require "forwardable"
5
5
  require "set"
6
6
  require "time"
7
- require "i18n"
8
7
 
9
8
  require_relative "strong_csv/version"
10
- require_relative "strong_csv/i18n"
11
9
  require_relative "strong_csv/value_result"
12
10
  require_relative "strong_csv/types/base"
13
11
  require_relative "strong_csv/types/boolean"
metadata CHANGED
@@ -1,35 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strong_csv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yutaka Kamei
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-14 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: i18n
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.8.11
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '2'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 1.8.11
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '2'
11
+ date: 2022-07-20 00:00:00.000000000 Z
12
+ dependencies: []
33
13
  description: strong_csv is a type checker for a CSV file. It lets developers declare
34
14
  types for each column to ensure all cells are satisfied with desired types.
35
15
  email:
@@ -41,7 +21,6 @@ files:
41
21
  - LICENSE
42
22
  - README.md
43
23
  - lib/strong_csv.rb
44
- - lib/strong_csv/i18n.rb
45
24
  - lib/strong_csv/let.rb
46
25
  - lib/strong_csv/row.rb
47
26
  - lib/strong_csv/types/base.rb
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- I18n.backend.store_translations(
4
- :en, {
5
- _strong_csv: {
6
- boolean: {
7
- cant_be_casted: "`%{value}` can't be casted to Boolean",
8
- },
9
- float: {
10
- cant_be_casted: "`%{value}` can't be casted to Float",
11
- constraint_error: "`%{value}` does not satisfy the specified constraint",
12
- },
13
- integer: {
14
- cant_be_casted: "`%{value}` can't be casted to Integer",
15
- constraint_error: "`%{value}` does not satisfy the specified constraint",
16
- },
17
- literal: {
18
- integer: {
19
- unexpected: "`%{expected}` is expected, but `%{value}` was given",
20
- cant_be_casted: "`%{value}` can't be casted to Integer",
21
- },
22
- float: {
23
- unexpected: "`%{expected}` is expected, but `%{value}` was given",
24
- cant_be_casted: "`%{value}` can't be casted to Float",
25
- },
26
- string: {
27
- unexpected: "`%{expected}` is expected, but `%{value}` was given",
28
- },
29
- range: {
30
- cant_be_casted: "`%{value}` can't be casted to the beginning of `%{expected}`",
31
- out_of_range: "`%{value}` is not within `%{range}`",
32
- },
33
- regexp: {
34
- cant_be_casted: "`%{value}` can't be casted to String",
35
- unexpected: "`%{value}` did not match `%{expected}`",
36
- },
37
- },
38
- string: {
39
- cant_be_casted: "`%{value}` can't be casted to String",
40
- out_of_range: "The length of `%{value}` is out of range `%{range}`",
41
- },
42
- time: {
43
- cant_be_casted: "`%{value}` can't be casted to Time with the format `%{time_format}`",
44
- },
45
- },
46
- },
47
- )