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 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