frozen-objects 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,15 +1,15 @@
1
1
  Frozen Objects
2
2
  ==============
3
3
 
4
- **frozen-objects** provides syntax sugar of implicitly frozen objects
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("a")
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 = 'Syntax sugar of implicitly frozen objects useful for example in class constants.'
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
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
+
@@ -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
@@ -7,7 +7,7 @@
7
7
 
8
8
  module Frozen
9
9
  ##
10
- # Implicitly frozen array.
10
+ # Implicitly frozen +Array+.
11
11
  #
12
12
  # @note All calls are +Array+ compatible.
13
13
  # @see http://www.ruby-doc.org/core/classes/Array.html
@@ -7,7 +7,7 @@
7
7
 
8
8
  module Frozen
9
9
  ##
10
- # Implicitly frozen hash.
10
+ # Implicitly frozen +Hash+.
11
11
  #
12
12
  # @note All calls are +Hash+ compatible.
13
13
  # @see http://www.ruby-doc.org/core/classes/Hash.html
@@ -7,7 +7,7 @@
7
7
 
8
8
  module Frozen
9
9
  ##
10
- # Implicitly frozen string.
10
+ # Implicitly frozen +String+.
11
11
  #
12
12
  # @note All calls are +String+ compatible.
13
13
  # @see http://www.ruby-doc.org/core/classes/String.html
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 => e
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 => e
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 => e
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.1.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-01 00:00:00 +01:00
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: -322238794642139436
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: Syntax sugar of implicitly frozen objects useful for example in class constants.
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