dorian-arguments 1.0.1 → 1.1.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/dorian/arguments.rb +22 -10
  4. metadata +1 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31d8f3ef5198b3dc9ce418928e840ed5c82f7f3691964e4c1d34d96be9846951
4
- data.tar.gz: 7494ebf6c746f4207e21cf79846d24e59c19d3824382e70215c64aeeac8a60b7
3
+ metadata.gz: f9954bfae6d2589acc531515399fd72719c17e59850945789eda577bbdbf76a1
4
+ data.tar.gz: a515bd1890f8bb0f69f7851b17a3e2e7c81a347ff3bdd0043d9de6f5978b375d
5
5
  SHA512:
6
- metadata.gz: d32f303df1fa9814866beb211aa8ee6bd90c37d34524d9820a716d768c2230b21799fc90bb472db9c2bf810a45363891475a72d58ce2855e21eeb2d07962b727
7
- data.tar.gz: 0e12a036b21735bf712a35a9f96b328d65679f1d69185dac528de4a5eded68e1f7a3b4cbed1062c57ffd4ccf623b563a6b41a4f0bb06e7bf96798d2c78ad3112
6
+ metadata.gz: f162d7069cce665ddafef2c864e4cfb97e367303624bcfa9fedd9539c0f1776292bb5b52073b0cd202e2a713b27ff18c3db53950f38008a4b54f81640db57cdf
7
+ data.tar.gz: e45aaa64ba83d4c43e7b1cc08115556ded6942de9a2d85b16d1bf2b106870703347922558d5e99afdedbe65d89c1c2dcb26890d9552a645d5e136fc32bb21f1e
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.1.0
@@ -1,10 +1,5 @@
1
- require "dorian/to_struct"
2
1
  require "bigdecimal"
3
2
  require "bigdecimal/util"
4
- require "active_support"
5
- require "active_support/core_ext/string/inflections"
6
- require "active_support/core_ext/array/wrap"
7
- require "active_support/core_ext/enumerable"
8
3
 
9
4
  class Dorian
10
5
  class Arguments
@@ -50,7 +45,7 @@ class Dorian
50
45
  definition.each do |key, value|
51
46
  type, default, aliases = normalize(value)
52
47
 
53
- keys = ([key] + aliases).map(&:to_s).map(&:parameterize)
48
+ keys = ([key] + aliases).map(&:to_s).map { |key| parameterize(key) }
54
49
  keys = keys.map { |key| ["--#{key}", "-#{key}"] }.flatten
55
50
 
56
51
  indexes = []
@@ -81,7 +76,7 @@ class Dorian
81
76
 
82
77
  values = [default] if values.empty?
83
78
  values = values.map { |value| cast(type, value) }
84
- values = values.first unless values.many?
79
+ values = values.first unless many?(values)
85
80
  options[key] = values
86
81
  end
87
82
 
@@ -89,7 +84,11 @@ class Dorian
89
84
 
90
85
  arguments -= files
91
86
 
92
- { arguments:, options:, files:, help: }.to_deep_struct
87
+ options = Struct.new(*options.keys).new(*options.values)
88
+
89
+ Struct.new(:arguments, :options, :files, :help).new(
90
+ arguments, options, files, help
91
+ )
93
92
  end
94
93
 
95
94
  def cast(type, value)
@@ -117,7 +116,7 @@ class Dorian
117
116
  keys_message =
118
117
  ([key] + aliases)
119
118
  .map(&:to_s)
120
- .map(&:parameterize)
119
+ .map { |key| parameterize(key) }
121
120
  .map { |key| key.size == 1 ? "-#{key}" : "--#{key}" }
122
121
  .join("|")
123
122
 
@@ -128,12 +127,25 @@ class Dorian
128
127
  message
129
128
  end
130
129
 
130
+ def many?(array)
131
+ array.size > 1
132
+ end
133
+
134
+ def parameterize(string, separator: "-")
135
+ string
136
+ .to_s
137
+ .encode("ASCII", invalid: :replace, undef: :replace, replace: "")
138
+ .downcase
139
+ .gsub(/[^a-z0-9]+/, separator)
140
+ .gsub(/^#{separator}+|#{separator}+$/, "")
141
+ end
142
+
131
143
  def normalize(value)
132
144
  if value.is_a?(Hash)
133
145
  type = value[:type]&.to_s || DEFAULT_TYPE
134
146
  default = value[:default]&.to_s || DEFAULT
135
147
  aliases =
136
- Array.wrap(
148
+ Array(
137
149
  value[:alias]&.to_s || value[:aliases]&.map(&:to_s) ||
138
150
  DEFAULT_ALIASES
139
151
  )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dorian-arguments
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Marié
@@ -10,20 +10,6 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2024-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bigdecimal
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -38,20 +24,6 @@ dependencies:
38
24
  - - ">="
39
25
  - !ruby/object:Gem::Version
40
26
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: dorian-to_struct
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
27
  description: parses arguments
56
28
  email: dorian@dorianmarie.com
57
29
  executables: