tins 0.10.0 → 0.11.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 +4 -4
- data/VERSION +1 -1
- data/lib/tins/null.rb +27 -1
- data/lib/tins/version.rb +1 -1
- data/tests/null_test.rb +35 -0
- data/tins.gemspec +4 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12264ea33708e81738c94b7d0287e23feb459f0e
|
4
|
+
data.tar.gz: 61f6f19e07c1f6a0f0afdcf8579f0fe408240cbc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 646c5fbd40c43724d0c0d058b3afe852df784caf1ef3fe397fcec9db50d60683572b924c1f7240d86ec8d495dc0ba0e68e836d9f3ceac0c1f501d5b472b456e4
|
7
|
+
data.tar.gz: 2c072dc9e7c4683f66faa9b7ed43828437f258eb3608073ccd04bdf5f17bff33dd27b56eaff90c0eae88e477cf9ee92d15dd25c6fd2322ac7ef0e0c1778815f8
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.11.0
|
data/lib/tins/null.rb
CHANGED
@@ -50,9 +50,23 @@ module Tins
|
|
50
50
|
end
|
51
51
|
|
52
52
|
module Kernel
|
53
|
-
def
|
53
|
+
def null(value = nil)
|
54
54
|
value.nil? ? Tins::NULL : value
|
55
55
|
end
|
56
|
+
|
57
|
+
alias Null null
|
58
|
+
|
59
|
+
def null_plus(opts = {})
|
60
|
+
value = opts[:value]
|
61
|
+
opts[:caller] = caller
|
62
|
+
if respond_to?(:caller_locations, true)
|
63
|
+
opts[:caller_locations] = caller_locations
|
64
|
+
end
|
65
|
+
|
66
|
+
value.nil? ? Tins::NullPlus.new(opts) : value
|
67
|
+
end
|
68
|
+
|
69
|
+
alias NullPlus null_plus
|
56
70
|
end
|
57
71
|
end
|
58
72
|
|
@@ -61,6 +75,18 @@ module Tins
|
|
61
75
|
end
|
62
76
|
|
63
77
|
NULL = NullClass.new.freeze
|
78
|
+
|
79
|
+
class NullPlus
|
80
|
+
include Tins::Null
|
81
|
+
|
82
|
+
def initialize(opts = {})
|
83
|
+
class << self; self; end.class_eval do
|
84
|
+
opts.each do |name, value|
|
85
|
+
define_method(name) { value }
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
64
90
|
end
|
65
91
|
|
66
92
|
require 'tins/alias'
|
data/lib/tins/version.rb
CHANGED
data/tests/null_test.rb
CHANGED
@@ -13,11 +13,46 @@ module Tins
|
|
13
13
|
assert_equal 0, NULL.to_i
|
14
14
|
assert_equal 0.0, NULL.to_f
|
15
15
|
assert_equal [], NULL.to_a
|
16
|
+
assert_equal 1, null(1)
|
16
17
|
assert_equal 1, Null(1)
|
18
|
+
assert_equal NULL, null(nil)
|
17
19
|
assert_equal NULL, Null(nil)
|
18
20
|
assert_equal NULL, NULL::NULL
|
19
21
|
assert NULL.nil?
|
20
22
|
assert NULL.blank?
|
21
23
|
end
|
24
|
+
|
25
|
+
def test_null_plus
|
26
|
+
assert_equal 1, null_plus(:value => 1)
|
27
|
+
assert_equal 1, NullPlus(:value => 1)
|
28
|
+
assert_kind_of Tins::NullPlus, null_plus(:value => nil)
|
29
|
+
assert_kind_of Tins::NullPlus, NullPlus(:value => nil)
|
30
|
+
assert_kind_of Tins::NullPlus, null_plus
|
31
|
+
assert_kind_of Tins::NullPlus, NullPlus()
|
32
|
+
assert_kind_of Tins::NullPlus, null_plus.foo
|
33
|
+
assert_kind_of Tins::NullPlus, null_plus.foo.bar
|
34
|
+
assert_kind_of Tins::NullPlus, NullPlus().foo
|
35
|
+
assert_kind_of Tins::NullPlus, NullPlus().foo.bar
|
36
|
+
assert null_plus.nil?
|
37
|
+
assert null_plus().blank?
|
38
|
+
assert NullPlus().nil?
|
39
|
+
assert NullPlus().blank?
|
40
|
+
end
|
41
|
+
|
42
|
+
def foo
|
43
|
+
1 / 0
|
44
|
+
rescue => e
|
45
|
+
null_plus(:error => e)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_null_plus_caller_and_misc
|
49
|
+
assert_match /foo/, foo.caller.first
|
50
|
+
if foo.respond_to?(:caller_locations)
|
51
|
+
assert_kind_of Thread::Backtrace::Location, foo.caller_locations.first
|
52
|
+
assert_match /foo/, foo.caller_locations.first.to_s
|
53
|
+
end
|
54
|
+
assert_match /foo/, foo.caller.first
|
55
|
+
assert_kind_of ZeroDivisionError, foo.error
|
56
|
+
end
|
22
57
|
end
|
23
58
|
end
|
data/tins.gemspec
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
# stub: tins 0.11.0 ruby lib
|
2
3
|
|
3
4
|
Gem::Specification.new do |s|
|
4
5
|
s.name = "tins"
|
5
|
-
s.version = "0.
|
6
|
+
s.version = "0.11.0"
|
6
7
|
|
7
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
9
|
s.authors = ["Florian Frank"]
|
9
|
-
s.date = "2013-09-
|
10
|
+
s.date = "2013-09-25"
|
10
11
|
s.description = "All the stuff that isn't good/big enough for a real library."
|
11
12
|
s.email = "flori@ping.de"
|
12
13
|
s.extra_rdoc_files = ["README.rdoc", "lib/spruz.rb", "lib/tins.rb", "lib/tins/alias.rb", "lib/tins/annotate.rb", "lib/tins/ask_and_send.rb", "lib/tins/attempt.rb", "lib/tins/bijection.rb", "lib/tins/concern.rb", "lib/tins/count_by.rb", "lib/tins/date_dummy.rb", "lib/tins/date_time_dummy.rb", "lib/tins/deep_const_get.rb", "lib/tins/deep_dup.rb", "lib/tins/extract_last_argument_options.rb", "lib/tins/file_binary.rb", "lib/tins/find.rb", "lib/tins/generator.rb", "lib/tins/go.rb", "lib/tins/hash_symbolize_keys_recursive.rb", "lib/tins/hash_union.rb", "lib/tins/if_predicate.rb", "lib/tins/limited.rb", "lib/tins/lines_file.rb", "lib/tins/memoize.rb", "lib/tins/method_description.rb", "lib/tins/minimize.rb", "lib/tins/module_group.rb", "lib/tins/named_set.rb", "lib/tins/null.rb", "lib/tins/once.rb", "lib/tins/p.rb", "lib/tins/partial_application.rb", "lib/tins/proc_compose.rb", "lib/tins/proc_prelude.rb", "lib/tins/range_plus.rb", "lib/tins/require_maybe.rb", "lib/tins/responding.rb", "lib/tins/rotate.rb", "lib/tins/round.rb", "lib/tins/secure_write.rb", "lib/tins/sexy_singleton.rb", "lib/tins/shuffle.rb", "lib/tins/string_camelize.rb", "lib/tins/string_underscore.rb", "lib/tins/string_version.rb", "lib/tins/subhash.rb", "lib/tins/terminal.rb", "lib/tins/time_dummy.rb", "lib/tins/to.rb", "lib/tins/to_proc.rb", "lib/tins/token.rb", "lib/tins/uniq_by.rb", "lib/tins/version.rb", "lib/tins/write.rb", "lib/tins/xt.rb", "lib/tins/xt/annotate.rb", "lib/tins/xt/ask_and_send.rb", "lib/tins/xt/attempt.rb", "lib/tins/xt/blank.rb", "lib/tins/xt/count_by.rb", "lib/tins/xt/date_dummy.rb", "lib/tins/xt/date_time_dummy.rb", "lib/tins/xt/deep_const_get.rb", "lib/tins/xt/deep_dup.rb", "lib/tins/xt/extract_last_argument_options.rb", "lib/tins/xt/file_binary.rb", "lib/tins/xt/full.rb", "lib/tins/xt/hash_symbolize_keys_recursive.rb", "lib/tins/xt/hash_union.rb", "lib/tins/xt/if_predicate.rb", "lib/tins/xt/irb.rb", "lib/tins/xt/method_description.rb", "lib/tins/xt/named.rb", "lib/tins/xt/null.rb", "lib/tins/xt/p.rb", "lib/tins/xt/partial_application.rb", "lib/tins/xt/proc_compose.rb", "lib/tins/xt/proc_prelude.rb", "lib/tins/xt/range_plus.rb", "lib/tins/xt/require_maybe.rb", "lib/tins/xt/responding.rb", "lib/tins/xt/rotate.rb", "lib/tins/xt/round.rb", "lib/tins/xt/secure_write.rb", "lib/tins/xt/sexy_singleton.rb", "lib/tins/xt/shuffle.rb", "lib/tins/xt/string.rb", "lib/tins/xt/string_camelize.rb", "lib/tins/xt/string_underscore.rb", "lib/tins/xt/string_version.rb", "lib/tins/xt/subhash.rb", "lib/tins/xt/symbol_to_proc.rb", "lib/tins/xt/time_dummy.rb", "lib/tins/xt/to.rb", "lib/tins/xt/uniq_by.rb", "lib/tins/xt/write.rb"]
|
@@ -15,7 +16,7 @@ Gem::Specification.new do |s|
|
|
15
16
|
s.licenses = ["MIT"]
|
16
17
|
s.rdoc_options = ["--title", "Tins - Useful stuff.", "--main", "README.rdoc"]
|
17
18
|
s.require_paths = ["lib"]
|
18
|
-
s.rubygems_version = "2.
|
19
|
+
s.rubygems_version = "2.1.4"
|
19
20
|
s.summary = "Useful stuff."
|
20
21
|
s.test_files = ["tests/annotate_test.rb", "tests/ask_and_send_test.rb", "tests/attempt_test.rb", "tests/bijection_test.rb", "tests/blank_full_test.rb", "tests/concern_test.rb", "tests/count_by_test.rb", "tests/date_dummy_test.rb", "tests/date_time_dummy_test.rb", "tests/deep_const_get_test.rb", "tests/deep_dup_test.rb", "tests/extract_last_argument_options_test.rb", "tests/file_binary_test.rb", "tests/find_test.rb", "tests/generator_test.rb", "tests/go_test.rb", "tests/hash_symbolize_keys_recursive_test.rb", "tests/hash_union_test.rb", "tests/if_predicate_test.rb", "tests/limited_test.rb", "tests/lines_file_test.rb", "tests/memoize_test.rb", "tests/method_description_test.rb", "tests/minimize_test.rb", "tests/module_group_test.rb", "tests/named_set_test.rb", "tests/named_test.rb", "tests/null_test.rb", "tests/p_test.rb", "tests/partial_application_test.rb", "tests/proc_compose_test.rb", "tests/proc_prelude_test.rb", "tests/range_plus_test.rb", "tests/require_maybe_test.rb", "tests/responding_test.rb", "tests/rotate_test.rb", "tests/round_test.rb", "tests/secure_write_test.rb", "tests/sexy_singleton_test.rb", "tests/shuffle_test.rb", "tests/string_camelize_test.rb", "tests/string_underscore_test.rb", "tests/string_version_test.rb", "tests/subhash_test.rb", "tests/test_helper.rb", "tests/time_dummy_test.rb", "tests/to_test.rb", "tests/token_test.rb", "tests/uniq_by_test.rb", "tests/annotate_test.rb", "tests/ask_and_send_test.rb", "tests/attempt_test.rb", "tests/bijection_test.rb", "tests/blank_full_test.rb", "tests/concern_test.rb", "tests/count_by_test.rb", "tests/date_dummy_test.rb", "tests/date_time_dummy_test.rb", "tests/deep_const_get_test.rb", "tests/deep_dup_test.rb", "tests/extract_last_argument_options_test.rb", "tests/file_binary_test.rb", "tests/find_test.rb", "tests/generator_test.rb", "tests/go_test.rb", "tests/hash_symbolize_keys_recursive_test.rb", "tests/hash_union_test.rb", "tests/if_predicate_test.rb", "tests/limited_test.rb", "tests/lines_file_test.rb", "tests/memoize_test.rb", "tests/method_description_test.rb", "tests/minimize_test.rb", "tests/module_group_test.rb", "tests/named_set_test.rb", "tests/named_test.rb", "tests/null_test.rb", "tests/p_test.rb", "tests/partial_application_test.rb", "tests/proc_compose_test.rb", "tests/proc_prelude_test.rb", "tests/range_plus_test.rb", "tests/require_maybe_test.rb", "tests/responding_test.rb", "tests/rotate_test.rb", "tests/round_test.rb", "tests/secure_write_test.rb", "tests/sexy_singleton_test.rb", "tests/shuffle_test.rb", "tests/string_camelize_test.rb", "tests/string_underscore_test.rb", "tests/string_version_test.rb", "tests/subhash_test.rb", "tests/time_dummy_test.rb", "tests/to_test.rb", "tests/token_test.rb", "tests/uniq_by_test.rb"]
|
21
22
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -333,7 +333,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
333
333
|
version: '0'
|
334
334
|
requirements: []
|
335
335
|
rubyforge_project:
|
336
|
-
rubygems_version: 2.
|
336
|
+
rubygems_version: 2.1.4
|
337
337
|
signing_key:
|
338
338
|
specification_version: 4
|
339
339
|
summary: Useful stuff.
|