mayak 0.0.2 → 0.0.3
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 +4 -4
- data/README.md +126 -1
- data/lib/mayak/json.rb +2 -0
- data/lib/mayak/numeric.rb +2 -0
- data/lib/mayak/random.rb +2 -1
- data/mayak.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3b0f6dd0284a5fcb3319c3c809fac92a1f071115495ea492deee12687023413
|
4
|
+
data.tar.gz: d2ec0d4a48f29136f159553233b846f56d998f79852bfad962aee7ba6b09cfbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac0b20d7a23fab465f1fb460a0a5866a411c4c3874e557ceb82bca724af63f55cb7c0c582fa61c392362b72be01447851895f8b17cceb674a0874dfa91ab92aa
|
7
|
+
data.tar.gz: a1598a89492189ee4fc70b4cabc54898164ca6ddd9b23d00dc66c578c105180b02d3cc0245cfe71069fad75938e04eea60277cb6f7e722d8b005f14bd1cfaa71
|
data/README.md
CHANGED
@@ -30,4 +30,129 @@ Mayak consists from separate classes and interfaces as well as separate modules
|
|
30
30
|
|
31
31
|
#### HTTP
|
32
32
|
|
33
|
-
[Documentation](./lib/mayak/http/README.md)
|
33
|
+
[Documentation](./lib/mayak/http/README.md)
|
34
|
+
|
35
|
+
#### Miscellaneous
|
36
|
+
|
37
|
+
##### Function
|
38
|
+
In some situations Sorbet can not infer a type of proc passed:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
sig {
|
42
|
+
type_parameters(:A)
|
43
|
+
.params(blk: T.proc.params(arg0: T.type_parameter(:A)).returns(T.type_parameter(:A)))
|
44
|
+
.returns(T.proc.params(arg0: T.type_parameter(:A)).returns(T.type_parameter(:A)))
|
45
|
+
}
|
46
|
+
def proc_identity(&blk)
|
47
|
+
blk
|
48
|
+
end
|
49
|
+
|
50
|
+
T.reveal_type(proc_identity { |a| 10 })
|
51
|
+
# This code is unreachable https://srb.help/7006
|
52
|
+
# proc_identity { |a| 10 }
|
53
|
+
```
|
54
|
+
|
55
|
+
`Mayak::Fuction` allows explicitly define input and output types to help sorbet infer types:
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
sig {
|
59
|
+
type_parameters(:A)
|
60
|
+
.params(
|
61
|
+
fn: Mayak::Function[T.type_parameter(:A), T.type_parameter(:A)])
|
62
|
+
.returns(Mayak::Function[T.type_parameter(:A), T.type_parameter(:A)])
|
63
|
+
}
|
64
|
+
def fn_identity(fn)
|
65
|
+
fn
|
66
|
+
end
|
67
|
+
|
68
|
+
T.reveal_type(
|
69
|
+
fn_identity(Mayak::Function[Integer, Integer].new { |a| a })
|
70
|
+
)
|
71
|
+
# Revealed type: Mayak::Function[Integer, Integer]
|
72
|
+
```
|
73
|
+
|
74
|
+
##### JSON
|
75
|
+
|
76
|
+
`JSON` module provides a type alias to encode JSON type:
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
JsonType = T.type_alias {
|
80
|
+
T.any(
|
81
|
+
T::Array[T.untyped],
|
82
|
+
T::Hash[T.untyped, T.untyped],
|
83
|
+
String,
|
84
|
+
Integer,
|
85
|
+
Float
|
86
|
+
)
|
87
|
+
}
|
88
|
+
```
|
89
|
+
|
90
|
+
and methods to safely parse JSON:
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
Mayak::Json.parse(%{ { "foo": 1} })
|
94
|
+
#<Mayak::Monads::Try::Success:0x00000001086c8398 @value={"foo"=>1}>
|
95
|
+
|
96
|
+
Mayak::Json.parse(%{ { "foo: 1} })
|
97
|
+
#<Mayak::Monads::Try::Failure:0x00000001085ea250 @failure=#<Mayak::Json::ParsingError: unexpected token at '{ "foo: 1} '>>
|
98
|
+
```
|
99
|
+
|
100
|
+
##### Numeric
|
101
|
+
|
102
|
+
`Numeric` method provides method for safe parsing numerical values:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
Mayak::Numeric.parse_float("0.1")
|
106
|
+
#<Mayak::Monads::Maybe::Some:0x000000010bbb4070 @value=0.1>
|
107
|
+
|
108
|
+
Mayak::Numeric.parse_float("0.1sdfs")
|
109
|
+
#<Mayak::Monads::Maybe::None:0x000000010bab3e50>
|
110
|
+
|
111
|
+
Mayak::Numeric.parse_integer("10")
|
112
|
+
#<Mayak::Monads::Maybe::Some:0x0000000108fcdb78 @value=10>
|
113
|
+
|
114
|
+
Mayak::Numeric.parse_integer("10qq")
|
115
|
+
#<Mayak::Monads::Maybe::None:0x000000010bbf64c0>
|
116
|
+
|
117
|
+
Mayak::Numeric.parse_decimal("100")
|
118
|
+
#<Mayak::Monads::Maybe::Some:0x000000010ba78968 @value=0.1e3>
|
119
|
+
|
120
|
+
Mayak::Numeric.parse_decimal("100dd")
|
121
|
+
#<Mayak::Monads::Maybe::None:0x000000010bb718b0>
|
122
|
+
```
|
123
|
+
|
124
|
+
##### Random
|
125
|
+
|
126
|
+
Utils for random number generating
|
127
|
+
|
128
|
+
###### `#jittered`
|
129
|
+
|
130
|
+
Adds random noise for a number within specified range
|
131
|
+
|
132
|
+
```ruby
|
133
|
+
# Yield a random number from 100 to 105
|
134
|
+
Mayak::Random.jittered(100, jitter: 0.05)
|
135
|
+
# 101.53359412200601
|
136
|
+
|
137
|
+
Mayak::Random.jittered(100, jitter: 0.05)
|
138
|
+
# 103.59043964431787
|
139
|
+
```
|
140
|
+
|
141
|
+
##### WeakRef
|
142
|
+
|
143
|
+
Parameterized weak Reference class that allows a referenced object to be garbage-collected.
|
144
|
+
|
145
|
+
```ruby
|
146
|
+
class Obj
|
147
|
+
end
|
148
|
+
|
149
|
+
value = Obj.new
|
150
|
+
value = Mayak::WeakRef[Obj].new(value)
|
151
|
+
value.deref
|
152
|
+
#<Mayak::Monads::Maybe::Some:0x0000000103e8fa90 @value=#<Obj:0x000000010721de48>>
|
153
|
+
|
154
|
+
GC.start
|
155
|
+
value.deref
|
156
|
+
#<Mayak::Monads::Maybe::None:0x000000010715f6f0>
|
157
|
+
# Not necessarily will be collected after only one GC cycle
|
158
|
+
```
|
data/lib/mayak/json.rb
CHANGED
data/lib/mayak/numeric.rb
CHANGED
data/lib/mayak/random.rb
CHANGED
@@ -9,7 +9,8 @@ module Mayak
|
|
9
9
|
|
10
10
|
sig { params(number: T.any(Integer, Float), jitter: Float).returns(Float) }
|
11
11
|
def self.jittered(number, jitter: DEFAULT_JITTER)
|
12
|
-
|
12
|
+
delta = Kernel.rand(0..(number * jitter))
|
13
|
+
(number + delta.to_f).to_f
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
data/mayak.gemspec
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "mayak"
|
7
|
-
spec.version = "0.0.
|
7
|
+
spec.version = "0.0.3"
|
8
8
|
spec.summary = "Set of fully typed utility classes and interfaces integrated with Sorbet."
|
9
9
|
spec.description = spec.summary
|
10
10
|
spec.authors = ["Daniil Bober"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mayak
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniil Bober
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sorbet-runtime
|