flex-cartesian 1.2 → 1.2.1

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/CHANGELOG.md +4 -0
  3. data/lib/flex-cartesian.rb +13 -0
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ffe9aa47d7a73dc2f4ab52cc4943d3bdec7ce709a0712b7e92cc4077f785f82
4
- data.tar.gz: d788a54aee87646c8ab77e58762068dcb4c7d644fdae027365e2ee3446399f8d
3
+ metadata.gz: f3005b96077c2ec5e9a273bf58c6740fb3715524ca69328523370f1d67db01e9
4
+ data.tar.gz: 95c612d95526fa4fa2aafa3fe38ab9861e0bb2b442bdec5a34b74bd45ee3180b
5
5
  SHA512:
6
- metadata.gz: be6655fc4acce24a97f2287ee81df181c2a7426fd70b52d0ba02bae3facb80e9720dc5116a9f1dd0afdc0adf412f48b558ee2e5ef154a178a5da5b45dc5e47de
7
- data.tar.gz: 26210fc67b053bd01946d3ce052c13fe54c035235357ddc7778af98b8487c8485af927d092944dabf92a95c91f040da51bb546617772d6aed2246fe52b079120
6
+ metadata.gz: 0560a624b178dda3526775093e692a3cb09d032a5b00463ec556bd6a24a4bc51281c0294249f6ae2c0a1070bee8eae8ef4f7f686aed4092ea1f8e33295a4da57
7
+ data.tar.gz: fabdc19cb4647e2863aceffbf3888c3f274c7df3f1514ff31dd9e94f142506cf67b3715b7d6bac9df8aa504d416ba39282a319d59bb370f9a63e424c389e3e57
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.1 - 2025-07-28
4
+ ### Fixed
5
+ - When adding function, check if its namesake exists
6
+
3
7
  ## 1.2 - 2025-07-23
4
8
  ## Added
5
9
  - Optional progress bar to the function command :run
@@ -114,6 +114,11 @@ end
114
114
 
115
115
  def add_function(name, &block)
116
116
  raise ArgumentError, "Block required" unless block_given?
117
+ if reserved_function_names.include?(name.to_sym)
118
+ raise ArgumentError, "Function name '#{name}' has been already added"
119
+ elsif reserved_struct_names.include?(name.to_sym)
120
+ raise ArgumentError, "Name '#{name}' has been reserved for internal method, you can't use it for a function"
121
+ end
117
122
  @derived[name.to_sym] = block
118
123
  end
119
124
 
@@ -282,6 +287,14 @@ end
282
287
 
283
288
  private
284
289
 
290
+ def reserved_struct_names
291
+ (base_struct_methods = Struct.new(:dummy).methods(false) + Struct.new(:dummy).instance_methods(false)).uniq
292
+ end
293
+
294
+ def reserved_function_names
295
+ (self.methods + self.class.instance_methods(false)).uniq
296
+ end
297
+
285
298
  def fmt_cell(value, colorize, width = nil)
286
299
  str = case value
287
300
  when String then value
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flex-cartesian
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.2'
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yury Rassokhin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-22 00:00:00.000000000 Z
11
+ date: 2025-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize