sj 0.9.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.
- checksums.yaml +7 -0
- data/lib/sj.rb +1 -0
- data/lib/sj/ugly/action.rb +55 -0
- data/lib/sj/version.rb +3 -0
- metadata +60 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 25317f4fe51ee0ff884ae5b1943f67f2f80ef1dc
|
|
4
|
+
data.tar.gz: 32e873c033b33c0f2e5dcdcbb195838da679d8e0
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 9da2510f0ae9973e5db5093a8fd35d906909d0507c958c9ed2727ceec85ed001759e61a46be6329f7397e03333d44d17f00c5014695d9d0f3531c083077ded9b
|
|
7
|
+
data.tar.gz: 7394a45de45cf515efcff5181fb23f45cd2aa27af52b0ac16246ccb2d9bc1af9845d262a4697db710394729977ca84ba4a359f9515861d78823060e5595468ff
|
data/lib/sj.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'sj/ugly/action'
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module SJ
|
|
2
|
+
module Ugly
|
|
3
|
+
module Action
|
|
4
|
+
# n.b. Struct is implemented in C, and its implementation does not allow
|
|
5
|
+
# emptiness, so we patch all methods to simulate it instead.
|
|
6
|
+
Unit = Struct.new(:_) do
|
|
7
|
+
def ==(other); Unit === other; end
|
|
8
|
+
def []; nil; end
|
|
9
|
+
def dig; nil; end
|
|
10
|
+
def each; self; end
|
|
11
|
+
def each_pair; self; end
|
|
12
|
+
def eql?(other); Unit === other; end
|
|
13
|
+
def inspect; "Unit"; end
|
|
14
|
+
def length; 0; end
|
|
15
|
+
def select; []; end
|
|
16
|
+
def size; 0; end
|
|
17
|
+
def to_a; []; end
|
|
18
|
+
def to_h; {}; end
|
|
19
|
+
def to_s; "Unit"; end
|
|
20
|
+
def members; []; end
|
|
21
|
+
def values; []; end
|
|
22
|
+
def values_at(*selector); []; end
|
|
23
|
+
end.new
|
|
24
|
+
|
|
25
|
+
def self.included(receiver)
|
|
26
|
+
receiver.extend(ClassMethods)
|
|
27
|
+
receiver.send(:include, InstanceMethods)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
module ClassMethods
|
|
31
|
+
def mk(**kwargs)
|
|
32
|
+
self.new(**kwargs)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
module InstanceMethods
|
|
37
|
+
def call!(&closure)
|
|
38
|
+
val = self.send(:invoke!)
|
|
39
|
+
yield val if block_given?
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
|
|
44
|
+
def validates(&block)
|
|
45
|
+
errors = []
|
|
46
|
+
yield errors if block_given?
|
|
47
|
+
unless errors.empty?
|
|
48
|
+
msg = errors.join('; ')
|
|
49
|
+
raise ArgumentError.new(msg)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
data/lib/sj/version.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: sj
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.9.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Joshua Morris
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2017-06-01 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: rspec
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '3.6'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '3.6'
|
|
27
|
+
description: Write maintainable, composable software.
|
|
28
|
+
email: joshua@dailykos.com
|
|
29
|
+
executables: []
|
|
30
|
+
extensions: []
|
|
31
|
+
extra_rdoc_files: []
|
|
32
|
+
files:
|
|
33
|
+
- lib/sj.rb
|
|
34
|
+
- lib/sj/ugly/action.rb
|
|
35
|
+
- lib/sj/version.rb
|
|
36
|
+
homepage: https://github.com/dailykos/straitjacket
|
|
37
|
+
licenses:
|
|
38
|
+
- MIT
|
|
39
|
+
metadata: {}
|
|
40
|
+
post_install_message:
|
|
41
|
+
rdoc_options: []
|
|
42
|
+
require_paths:
|
|
43
|
+
- lib
|
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - ">="
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '0'
|
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
requirements: []
|
|
55
|
+
rubyforge_project:
|
|
56
|
+
rubygems_version: 2.6.10
|
|
57
|
+
signing_key:
|
|
58
|
+
specification_version: 4
|
|
59
|
+
summary: Straitjacket
|
|
60
|
+
test_files: []
|