frozen-objects 0.1.0 → 0.2.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.
- data/README.md +20 -3
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/frozen-objects.gemspec +57 -0
- data/lib/frozen-objects.rb +20 -0
- data/lib/frozen-objects/array.rb +1 -1
- data/lib/frozen-objects/hash.rb +1 -1
- data/lib/frozen-objects/string.rb +1 -1
- data/test +14 -3
- metadata +5 -4
data/README.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
Frozen Objects
|
|
2
2
|
==============
|
|
3
3
|
|
|
4
|
-
**frozen-objects** provides
|
|
5
|
-
useful for example in class constants.
|
|
4
|
+
**frozen-objects** provides some syntactic sugar of implicitly frozen
|
|
5
|
+
objects and an freezing operator useful for example in class constants.
|
|
6
6
|
|
|
7
7
|
require "frozen-objects"
|
|
8
8
|
|
|
9
9
|
class Foo
|
|
10
10
|
SOME_ARRAY = Frozen::Array[:a, :b] # or any other Array constructing methods
|
|
11
11
|
SOME_HASH = Frozen::Hash[:a => :b] # or any other Hash constructing methods
|
|
12
|
-
SOME_STRING = Frozen::String::new("
|
|
12
|
+
SOME_STRING = Frozen::String::new("bar")
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
Foo::SOME_ARRAY.frozen? # will return true
|
|
@@ -21,6 +21,23 @@ Objects are reported as frozen of sure. From other points of view they
|
|
|
21
21
|
are "normal" and fully compatible with Ruby implicitly
|
|
22
22
|
non-frozen objects.
|
|
23
23
|
|
|
24
|
+
### Freezing Operator
|
|
25
|
+
|
|
26
|
+
`Frozen` module defines also *frozen operator*. It's intended for nice
|
|
27
|
+
and simple freezing whatever. Consider example above:
|
|
28
|
+
|
|
29
|
+
require "frozen-objects"
|
|
30
|
+
|
|
31
|
+
class Foo
|
|
32
|
+
SOME_ARRAY = Frozen << [:a, :b]
|
|
33
|
+
SOME_HASH = Frozen << {:a => :b}
|
|
34
|
+
SOME_STRING = Frozen << "bar"
|
|
35
|
+
|
|
36
|
+
WHATEVER = Frozen << SomeClass::new
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
Both methods are equivalent. Select that one which is suitable for you.
|
|
40
|
+
|
|
24
41
|
Contributing
|
|
25
42
|
------------
|
|
26
43
|
|
data/Rakefile
CHANGED
|
@@ -16,7 +16,7 @@ Jeweler::Tasks.new do |gem|
|
|
|
16
16
|
gem.name = "frozen-objects"
|
|
17
17
|
gem.homepage = "http://github.com/martinkozak/frozen-objects"
|
|
18
18
|
gem.license = "MIT"
|
|
19
|
-
gem.summary = '
|
|
19
|
+
gem.summary = 'Provides some syntactic sugar of implicitly frozen objects and an freezing operator useful for example in class constants.'
|
|
20
20
|
gem.email = "martinkozak@martinkozak.net"
|
|
21
21
|
gem.authors = ["Martin Kozák"]
|
|
22
22
|
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.2.0
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Generated by jeweler
|
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
|
+
# -*- encoding: utf-8 -*-
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |s|
|
|
7
|
+
s.name = %q{frozen-objects}
|
|
8
|
+
s.version = "0.2.0"
|
|
9
|
+
|
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
|
+
s.authors = ["Martin Kozák"]
|
|
12
|
+
s.date = %q{2011-03-02}
|
|
13
|
+
s.email = %q{martinkozak@martinkozak.net}
|
|
14
|
+
s.extra_rdoc_files = [
|
|
15
|
+
"LICENSE.txt",
|
|
16
|
+
"README.md"
|
|
17
|
+
]
|
|
18
|
+
s.files = [
|
|
19
|
+
".document",
|
|
20
|
+
"Gemfile",
|
|
21
|
+
"Gemfile.lock",
|
|
22
|
+
"LICENSE.txt",
|
|
23
|
+
"README.md",
|
|
24
|
+
"Rakefile",
|
|
25
|
+
"VERSION",
|
|
26
|
+
"frozen-objects.gemspec",
|
|
27
|
+
"lib/frozen-objects.rb",
|
|
28
|
+
"lib/frozen-objects/array.rb",
|
|
29
|
+
"lib/frozen-objects/hash.rb",
|
|
30
|
+
"lib/frozen-objects/string.rb",
|
|
31
|
+
"test"
|
|
32
|
+
]
|
|
33
|
+
s.homepage = %q{http://github.com/martinkozak/frozen-objects}
|
|
34
|
+
s.licenses = ["MIT"]
|
|
35
|
+
s.require_paths = ["lib"]
|
|
36
|
+
s.rubygems_version = %q{1.5.3}
|
|
37
|
+
s.summary = %q{Provides some syntactic sugar of implicitly frozen objects and an freezing operator useful for example in class constants.}
|
|
38
|
+
|
|
39
|
+
if s.respond_to? :specification_version then
|
|
40
|
+
s.specification_version = 3
|
|
41
|
+
|
|
42
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
43
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
44
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
|
45
|
+
s.add_development_dependency(%q<riot>, [">= 0.12.1"])
|
|
46
|
+
else
|
|
47
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
48
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
|
49
|
+
s.add_dependency(%q<riot>, [">= 0.12.1"])
|
|
50
|
+
end
|
|
51
|
+
else
|
|
52
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
53
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
|
54
|
+
s.add_dependency(%q<riot>, [">= 0.12.1"])
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
data/lib/frozen-objects.rb
CHANGED
|
@@ -4,3 +4,23 @@
|
|
|
4
4
|
require "frozen-objects/string"
|
|
5
5
|
require "frozen-objects/array"
|
|
6
6
|
require "frozen-objects/hash"
|
|
7
|
+
|
|
8
|
+
##
|
|
9
|
+
# Implicitly frozen objects.
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
module Frozen
|
|
13
|
+
|
|
14
|
+
##
|
|
15
|
+
# Creates frozen object by operator.
|
|
16
|
+
#
|
|
17
|
+
# @param [Object] value some value for freeze
|
|
18
|
+
# @return [Object] frozen object
|
|
19
|
+
# @since 0.2.0
|
|
20
|
+
#
|
|
21
|
+
|
|
22
|
+
def self.<<(value)
|
|
23
|
+
value.freeze
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
data/lib/frozen-objects/array.rb
CHANGED
data/lib/frozen-objects/hash.rb
CHANGED
data/test
CHANGED
|
@@ -17,7 +17,18 @@ context "Array" do
|
|
|
17
17
|
asserts("frozen state") do
|
|
18
18
|
begin
|
|
19
19
|
topic.replace([:c, :d])
|
|
20
|
-
rescue RuntimeError
|
|
20
|
+
rescue RuntimeError
|
|
21
|
+
true
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context "Frozen" do
|
|
27
|
+
asserts("#<< (static)") do
|
|
28
|
+
frozen = Frozen << "alfa"
|
|
29
|
+
begin
|
|
30
|
+
frozen.replace("beta")
|
|
31
|
+
rescue RuntimeError
|
|
21
32
|
true
|
|
22
33
|
end
|
|
23
34
|
end
|
|
@@ -34,7 +45,7 @@ context "Hash" do
|
|
|
34
45
|
asserts("frozen state") do
|
|
35
46
|
begin
|
|
36
47
|
topic.replace({:c => :d})
|
|
37
|
-
rescue RuntimeError
|
|
48
|
+
rescue RuntimeError
|
|
38
49
|
true
|
|
39
50
|
end
|
|
40
51
|
end
|
|
@@ -51,7 +62,7 @@ context "String" do
|
|
|
51
62
|
asserts("frozen state") do
|
|
52
63
|
begin
|
|
53
64
|
topic.replace("new")
|
|
54
|
-
rescue RuntimeError
|
|
65
|
+
rescue RuntimeError
|
|
55
66
|
true
|
|
56
67
|
end
|
|
57
68
|
end
|
metadata
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: frozen-objects
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 0.
|
|
5
|
+
version: 0.2.0
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- "Martin Koz\xC3\xA1k"
|
|
@@ -10,7 +10,7 @@ autorequire:
|
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
12
|
|
|
13
|
-
date: 2011-03-
|
|
13
|
+
date: 2011-03-02 00:00:00 +01:00
|
|
14
14
|
default_executable:
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
@@ -63,6 +63,7 @@ files:
|
|
|
63
63
|
- README.md
|
|
64
64
|
- Rakefile
|
|
65
65
|
- VERSION
|
|
66
|
+
- frozen-objects.gemspec
|
|
66
67
|
- lib/frozen-objects.rb
|
|
67
68
|
- lib/frozen-objects/array.rb
|
|
68
69
|
- lib/frozen-objects/hash.rb
|
|
@@ -82,7 +83,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
82
83
|
requirements:
|
|
83
84
|
- - ">="
|
|
84
85
|
- !ruby/object:Gem::Version
|
|
85
|
-
hash:
|
|
86
|
+
hash: 2742531724682757497
|
|
86
87
|
segments:
|
|
87
88
|
- 0
|
|
88
89
|
version: "0"
|
|
@@ -98,6 +99,6 @@ rubyforge_project:
|
|
|
98
99
|
rubygems_version: 1.5.3
|
|
99
100
|
signing_key:
|
|
100
101
|
specification_version: 3
|
|
101
|
-
summary:
|
|
102
|
+
summary: Provides some syntactic sugar of implicitly frozen objects and an freezing operator useful for example in class constants.
|
|
102
103
|
test_files: []
|
|
103
104
|
|