defrost 1.0.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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/defrost.rb +18 -0
  3. metadata +72 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 17fe29ef00cb35e63cab9722e747ebcb71f7dd0d9f94a7e3055ebaff8d204d66
4
+ data.tar.gz: 743b1fcec7c412265e00f5f2d65076d1b0da974dda373a63082097659d9756c6
5
+ SHA512:
6
+ metadata.gz: 8060c16ad99ac5a3cba0b0fb2579ff056cb2ac6451757264d3d362cbb42395b57120d168af291d13ff1ee760c227213c141f85823e6af7e8d55eeb74618ffb97
7
+ data.tar.gz: 18e49a72c0f583564e28ade30db3a0ef9cb8d767f828325810e73532791575b47ae9a78841447a0f17442f7875d28d314b3e2128a8ed273afe4c7fed24d30e9f
data/lib/defrost.rb ADDED
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fiddle"
4
+
5
+ class Object
6
+ # Make your Ruby object fun again by defrosting them! The defrost method
7
+ # unfreezes your objects so you can mutate your objects with reckless abandon.
8
+ # Bring excitement and unpredictability back to your programs by making you
9
+ # objects mutable again.
10
+ def defrost
11
+ addr = Fiddle.dlwrap self
12
+ ptr = Fiddle::Pointer.new addr
13
+ flags = ptr[0, Fiddle::SIZEOF_INT].unpack1("I")
14
+ flags &= ~(1 << 11)
15
+ ptr[0, Fiddle::SIZEOF_INT] = [flags].pack("I")
16
+ self
17
+ end
18
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: defrost
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Aaron Patterson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-11-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '13.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '13.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.14'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.14'
41
+ description: 'Frozen objects: hard to use, can''t mutate them, boring. Defrosted objects:
42
+ exciting, dynamic, change any time!'
43
+ email: tenderlove@ruby-lang.orb
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/defrost.rb
49
+ homepage: https://github.com/tenderlove/defrost
50
+ licenses:
51
+ - Apache-2.0
52
+ metadata: {}
53
+ post_install_message:
54
+ rdoc_options: []
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements: []
68
+ rubygems_version: 3.3.0.dev
69
+ signing_key:
70
+ specification_version: 4
71
+ summary: Defrost, a gem that lets you unfreeze your objects
72
+ test_files: []