Yukihiro "Matz" Matsumoto
d41d477e22
mruby-set: add type checking helper functions
...
Add two helper functions to improve code clarity and maintainability:
- set_check_type: Checks if a value is a Set and raises an error if not
- set_is_set: Checks if a value is a Set and returns a boolean result
Update all relevant methods to use these helper functions, reducing
code duplication and centralizing type checking logic.
2025-06-23 17:07:27 +09:00
Yukihiro "Matz" Matsumoto
deb5c47fc6
mruby-set: implement comparison methods in C for better performance
...
Reimplemented the following methods in C for improved efficiency:
- superset? and proper_superset? (>= and >)
- subset? and proper_subset? (<= and <)
- intersect? and disjoint?
- <=> comparison operator
2025-06-23 17:07:27 +09:00
Yukihiro "Matz" Matsumoto
60f06e7a0f
mruby-set: Add comprehensive method documentation
2025-06-23 17:07:27 +09:00
Yukihiro "Matz" Matsumoto
091e48159a
mruby-set: Use numbered parameters for block arguments
2025-06-23 17:07:27 +09:00
Yukihiro "Matz" Matsumoto
04b38c2c47
mruby-set: rename internal methods
...
Renaming all internal C methods from __set_* to a cleaner __* convention
(e.g., __set_merge is now __merge), and updating their call sites in the
Ruby code accordingly.
2025-06-23 17:07:26 +09:00
Yukihiro "Matz" Matsumoto
e096eeed1a
mruby-set: reimplement #initialize in Ruby again
...
And we have eliminated mrb_funcall* from set.c.
2025-06-23 17:07:26 +09:00
Yukihiro "Matz" Matsumoto
5e2a7568e2
mruby-set: move #replace to Ruby again
...
Since it does only clear() and merge(), there is little use of the C
implemented fast path. This change also reduce memory consumption.
2025-06-23 17:07:26 +09:00
Yukihiro "Matz" Matsumoto
100ba913f2
mruby-set: extensive refactor in set.c
...
We refactor out loop by set_khash_foreach() function, so that we don't
need to repeat for loop. it makes the code simpler. The code is written
by Atlassian Rovodev.
2025-06-23 17:07:26 +09:00
Yukihiro "Matz" Matsumoto
f210772465
mruby-set: optimize Set operations to use mrb_get_arg1()
...
Replace mrb_get_args() with more efficient mrb_get_arg1() for
single-argument functions. The code is written by Atlassian Rovodev.
2025-06-23 17:07:26 +09:00
Yukihiro "Matz" Matsumoto
c117674cfe
mruby-set: refactor Set#replace
...
The code is written by Atlassian Rovodev.
2025-06-23 17:07:25 +09:00
Yukihiro "Matz" Matsumoto
8538c79f3f
mruby-set: refactor Set#merge
...
The code is written by Atlassian Rovodev.
2025-06-23 17:07:25 +09:00
Yukihiro "Matz" Matsumoto
169654ad9b
mruby-set: refactor Set#subtract
...
The code is written by Atlassian Rovodev.
2025-06-23 17:07:25 +09:00
Yukihiro "Matz" Matsumoto
c188b9a1aa
mruby-set: refactor Set#difference
...
The code is written by Atlassian Rovodev.
2025-06-23 17:07:25 +09:00
Yukihiro "Matz" Matsumoto
10ea05d3aa
mruby-set: refactor Set#union (+, |)
...
The code is written by Atlassian Rovodev.
2025-06-23 17:07:24 +09:00
Yukihiro "Matz" Matsumoto
d9f0c5a3a4
mruby-set: refactor Set#xor (^)
...
According to the similar strategy as Set#intersection.
The code is mostly written by Atlassian Rovodev.
2025-06-23 17:07:24 +09:00
Yukihiro "Matz" Matsumoto
56a41b844e
mruby-set: refactor Set#intersection
...
Define generic operation method in Ruby, then prepare fast-path function
in C as a general structure. Some methods will follow this pattern.
The code is generated by Atlassian Rovodev.
2025-06-23 17:07:24 +09:00
Yukihiro "Matz" Matsumoto
4ae3068b2a
mruby-set: replace mrb_funcall_id() by set_to_a()
2025-06-23 17:07:24 +09:00
Yukihiro "Matz" Matsumoto
73a1eb03e8
mruby-set: remove mrb_funcall_id() from set_join()
2025-06-23 17:07:24 +09:00
Yukihiro "Matz" Matsumoto
abae5a5ff5
mruby-set: remove __equal_fallback that no longer used
2025-06-23 17:07:23 +09:00
Yukihiro "Matz" Matsumoto
a2339a7fde
mruby-set: refactor set_equal() function
...
Made not to use mrb_funcall() as well.
2025-06-23 17:07:23 +09:00
Yukihiro "Matz" Matsumoto
72b51c4e92
mruby-set: I prefer newline before else keyword
2025-06-23 17:07:23 +09:00
Yukihiro "Matz" Matsumoto
655981c6ed
mruby-set: remove unused object allocation
...
AI added this allocation to avoid memory leaks, but actually this extra
allocation does nothing useful. We see more room for AI improvement.
2025-06-23 17:07:23 +09:00
Yukihiro "Matz" Matsumoto
e4ed04ba8b
mruby-set (set_init): adjust a local variable declaration
2025-06-23 17:07:23 +09:00
Yukihiro "Matz" Matsumoto
52285161e7
mruby-set: remove methods added by AI hallucination
2025-06-23 17:07:22 +09:00
Yukihiro "Matz" Matsumoto
1238fb2808
mruby-set (flatten_merge): remove unnecessary assignment
2025-06-23 17:07:22 +09:00
Yukihiro "Matz" Matsumoto
f44a7bc5db
mruby-set: remove statistic measurement code
2025-06-23 17:07:22 +09:00
Yukihiro "Matz" Matsumoto
7a1732d438
mruby-set: make #initialize_copy private
2025-06-23 17:07:22 +09:00
Yukihiro "Matz" Matsumoto
11106525c4
mruby-set (__get_hash): remove no longer used method
2025-06-23 17:07:22 +09:00
Yukihiro "Matz" Matsumoto
7ffe6a3a9a
mruby-set: re-implement Set class in C
...
The code is mostly developed by Atlassian Rovodev.
2025-06-23 17:07:21 +09:00
Yukihiro "Matz" Matsumoto
e87bd7fcc1
mruby-set: update README.md
...
The document is written by Google Jules.
2025-06-23 17:07:21 +09:00
Yukihiro "Matz" Matsumoto
10c40c4e87
mruby-set: make Set#initialize_copy private
2025-06-16 12:41:54 +09:00
John Bampton
a83d7d3510
Fix indentation in two Ruby files
2023-10-14 18:52:30 +10:00
Yukihiro "Matz" Matsumoto
0713f2a840
mruby-set/set.rb (inspect): add recursive inspect check to Set#inspect
2023-06-20 11:25:49 +09:00
Yukihiro "Matz" Matsumoto
a800988239
mruby-set: remove files needed for an independent gem
2023-01-10 10:51:23 +09:00
Yukihiro "Matz" Matsumoto
ba3541bbc4
mruby-set/set.rb (reset): add reset method defined in Ruby 2.5
2022-12-14 07:38:38 +09:00
Yukihiro "Matz" Matsumoto
fe5191398a
mruby-set: rename mrb_set.rb to set.rb.
2022-10-25 16:59:49 +09:00
Yukihiro "Matz" Matsumoto
e3f74074ba
mruby-set: remove intialize_{dup,clone}.
2022-10-25 16:58:31 +09:00
Yukihiro "Matz" Matsumoto
1152c43039
mruby-set: remove taint/untaint which are no longer exist.
2022-10-25 16:57:24 +09:00
Yukihiro "Matz" Matsumoto
7cf3b57cba
mruby-set/mrb_set.rb (<=>): update definition.
...
Set#<=> needs to be comparing sets to be subset/superset relation.
2022-10-24 07:53:52 +09:00
Yukihiro "Matz" Matsumoto
7acf756b6f
mruby-set/mrb_set.rb: add __ prefix to internal methods.
2022-10-24 07:44:21 +09:00
Yukihiro "Matz" Matsumoto
ca0db4a161
mruby-set/README.md: more cleanup after #5814
2022-10-24 07:42:53 +09:00
Yukihiro "Matz" Matsumoto
b1fd3dc160
mruby-set/mrbgem.rake; remove test dependency to mruby-metaprog.
...
mruby-set no longer depends on mruby-metaprog by introducing the
internal `_hash` method.
2022-10-24 07:42:52 +09:00
Yukihiro "Matz" Matsumoto
e9ee0f2953
mruby-set/set.rb (_hash): add utility function to access internal hash.
...
Since `instance_variable_get` is no longer in the core.
2022-10-24 07:42:52 +09:00
Yukihiro "Matz" Matsumoto
d5e13a7f2a
mruby-set/set.rb (do_with_enum): prefix _ to internal method.
2022-10-24 07:41:30 +09:00
fn ⌃ ⌥
b0a494c414
mrb_set.rb: improve ruby/spec compliance.
...
- Alias `#===` to `#include?`
- Alias `#filter!` to `#select!`
- Fix `#subset?` and `#proper_subset?` for Set-like objects.
- Fix `#==`
- Fix `#inspect` for self-referencing sets.
- Add `#<=>` and `#join`
2022-10-23 07:42:25 -07:00
John Bampton
f78fdecfc8
Clean up the mruby-set README
2022-10-22 12:25:29 +10:00
John Bampton
2ebb001e76
gha: fix pre-commit
...
Run `pre-commit run --all-files`
2022-10-22 08:31:38 +10:00
Yukihiro "Matz" Matsumoto
dad0852944
mruby-set/mrbgem.rake: add test dependency.
...
The `instance_variable_get` has been separated to `mruby-metaprog` gem,
so we need to specify the gem as test dependency.
2022-10-21 14:12:10 +09:00
Yukihiro "Matz" Matsumoto
4c86a7a5c3
Add 'mrbgems/mruby-set/' from commit '68334311ac7386eef84f3034a256e7135a87625d'
...
git-subtree-dir: mrbgems/mruby-set
git-subtree-mainline: 3b55a09f91
git-subtree-split: 68334311ac
2022-10-21 13:56:07 +09:00