angry_hash 0.3.2 → 0.3.3

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.3.3
data/angry_hash.gemspec CHANGED
@@ -1,60 +1,62 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{angry_hash}
8
- s.version = "0.3.2"
8
+ s.version = "0.3.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Lachie Cox"]
12
- s.date = %q{2010-10-22}
12
+ s.date = %q{2011-02-14}
13
13
  s.description = %q{A stabler mash with different emphases. Used in plus2 projects AngryMob and Igor.}
14
14
  s.email = %q{lachie@plus2.com.au}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.md"
17
+ "README.md"
18
18
  ]
19
19
  s.files = [
20
20
  ".gitignore",
21
- "Changelog.md",
22
- "License",
23
- "Rakefile",
24
- "Readme.md",
25
- "VERSION",
26
- "angry_hash.gemspec",
27
- "lib/angry_hash.rb",
28
- "lib/angry_hash/conversion/by_reference.rb",
29
- "lib/angry_hash/conversion/duplicating.rb",
30
- "lib/angry_hash/dsl.rb",
31
- "lib/angry_hash/extension.rb",
32
- "lib/angry_hash/extension_aware.rb",
33
- "lib/angry_hash/initialiser.rb",
34
- "lib/angry_hash/merge_string.rb",
35
- "lib/angry_hash/merging.rb"
21
+ "Changelog.md",
22
+ "License",
23
+ "Rakefile",
24
+ "Readme.md",
25
+ "VERSION",
26
+ "angry_hash.gemspec",
27
+ "lib/angry_hash.rb",
28
+ "lib/angry_hash/conversion/by_reference.rb",
29
+ "lib/angry_hash/conversion/duplicating.rb",
30
+ "lib/angry_hash/dsl.rb",
31
+ "lib/angry_hash/extension.rb",
32
+ "lib/angry_hash/extension_aware.rb",
33
+ "lib/angry_hash/initialiser.rb",
34
+ "lib/angry_hash/merge_string.rb",
35
+ "lib/angry_hash/merging.rb",
36
+ "lib/angry_hash/parsing.rb",
37
+ "lib/angry_hash/parsing/dot_notation.rb"
36
38
  ]
37
39
  s.homepage = %q{http://github.com/plus2/angry_hash}
38
- s.rdoc_options = ["--charset=UTF-8"]
39
40
  s.require_paths = ["lib"]
40
- s.rubygems_version = %q{1.3.6}
41
+ s.rubygems_version = %q{1.4.2}
41
42
  s.summary = %q{A stabler mash with different emphases.}
42
43
  s.test_files = [
43
44
  "examples/accessors_eg.rb",
44
- "examples/creation_eg.rb",
45
- "examples/dsl.eg.rb",
46
- "examples/dup_eg.rb",
47
- "examples/eg_helper.rb",
48
- "examples/extension_tracking.eg.rb",
49
- "examples/merge_eg.rb",
50
- "examples/normal_hash.eg.rb"
45
+ "examples/creation_eg.rb",
46
+ "examples/dot_parser.eg.rb",
47
+ "examples/dsl.eg.rb",
48
+ "examples/dup_eg.rb",
49
+ "examples/eg_helper.rb",
50
+ "examples/extension_tracking.eg.rb",
51
+ "examples/merge_eg.rb",
52
+ "examples/merge_string_eg.rb",
53
+ "examples/normal_hash.eg.rb"
51
54
  ]
52
55
 
53
56
  if s.respond_to? :specification_version then
54
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
55
57
  s.specification_version = 3
56
58
 
57
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
59
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
58
60
  else
59
61
  end
60
62
  else
@@ -0,0 +1,9 @@
1
+ require 'eg_helper'
2
+
3
+ eg 'parses dot syntax' do
4
+ ah = AngryHash[:hello => {:a => 1}]
5
+
6
+ ah.add_dotted("hello.there.matey" => 2, :wot => :evah, 'hi.foo' => 123)
7
+
8
+ Show(ah)
9
+ end
@@ -0,0 +1,8 @@
1
+ require 'eg_helper'
2
+
3
+ eg 'merge string' do
4
+ h = AngryHash[ :a => {:b => 'c'} ]
5
+ h.add_merge_string!
6
+ h.merge_string('a.x=y')
7
+ h
8
+ end
@@ -0,0 +1,28 @@
1
+ class AngryHash
2
+ module Parsing
3
+ module DotNotation
4
+ def add_dotted(dotted)
5
+ dotted.each do |key,value|
6
+ set_dotted(key.to_s,value)
7
+ end
8
+ end
9
+
10
+ def set_dotted(key, value)
11
+ parts = key.split(".")
12
+ last = parts.pop
13
+
14
+ parent = __resolve_dotted(self, parts)
15
+ parent[last] = value
16
+ end
17
+
18
+ def __resolve_dotted(parent, dotted)
19
+ return parent if dotted.empty?
20
+
21
+ dotted = dotted.dup
22
+ first = dotted.shift
23
+ new_child = parent.send("#{first}!")
24
+ __resolve_dotted(new_child, dotted)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,6 @@
1
+ class AngryHash
2
+ module Parsing
3
+ require 'angry_hash/parsing/dot_notation'
4
+ include DotNotation
5
+ end
6
+ end
data/lib/angry_hash.rb CHANGED
@@ -6,6 +6,8 @@ class AngryHash < Hash
6
6
  require 'angry_hash/merging'
7
7
  require 'angry_hash/initialiser'
8
8
 
9
+ require 'angry_hash/parsing'
10
+
9
11
  # config
10
12
  require 'angry_hash/dsl'
11
13
  include AngryHash::DSL
@@ -141,4 +143,5 @@ class AngryHash < Hash
141
143
  include Conversion::Duplicating
142
144
  include Conversion::ByReference
143
145
  include ExtensionAware
146
+ include Parsing
144
147
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angry_hash
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 21
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 3
8
- - 2
9
- version: 0.3.2
9
+ - 3
10
+ version: 0.3.3
10
11
  platform: ruby
11
12
  authors:
12
13
  - Lachie Cox
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-10-22 00:00:00 +11:00
18
+ date: 2011-02-14 00:00:00 +11:00
18
19
  default_executable:
19
20
  dependencies: []
20
21
 
@@ -44,44 +45,62 @@ files:
44
45
  - lib/angry_hash/initialiser.rb
45
46
  - lib/angry_hash/merge_string.rb
46
47
  - lib/angry_hash/merging.rb
48
+ - lib/angry_hash/parsing.rb
49
+ - lib/angry_hash/parsing/dot_notation.rb
47
50
  - LICENSE
48
51
  - README.md
52
+ - examples/accessors_eg.rb
53
+ - examples/creation_eg.rb
54
+ - examples/dot_parser.eg.rb
55
+ - examples/dsl.eg.rb
56
+ - examples/dup_eg.rb
57
+ - examples/eg_helper.rb
58
+ - examples/extension_tracking.eg.rb
59
+ - examples/merge_eg.rb
60
+ - examples/merge_string_eg.rb
61
+ - examples/normal_hash.eg.rb
49
62
  has_rdoc: true
50
63
  homepage: http://github.com/plus2/angry_hash
51
64
  licenses: []
52
65
 
53
66
  post_install_message:
54
- rdoc_options:
55
- - --charset=UTF-8
67
+ rdoc_options: []
68
+
56
69
  require_paths:
57
70
  - lib
58
71
  required_ruby_version: !ruby/object:Gem::Requirement
72
+ none: false
59
73
  requirements:
60
74
  - - ">="
61
75
  - !ruby/object:Gem::Version
76
+ hash: 3
62
77
  segments:
63
78
  - 0
64
79
  version: "0"
65
80
  required_rubygems_version: !ruby/object:Gem::Requirement
81
+ none: false
66
82
  requirements:
67
83
  - - ">="
68
84
  - !ruby/object:Gem::Version
85
+ hash: 3
69
86
  segments:
70
87
  - 0
71
88
  version: "0"
72
89
  requirements: []
73
90
 
74
91
  rubyforge_project:
75
- rubygems_version: 1.3.6
92
+ rubygems_version: 1.4.2
76
93
  signing_key:
77
94
  specification_version: 3
78
95
  summary: A stabler mash with different emphases.
79
96
  test_files:
80
97
  - examples/accessors_eg.rb
81
98
  - examples/creation_eg.rb
99
+ - examples/dot_parser.eg.rb
82
100
  - examples/dsl.eg.rb
83
101
  - examples/dup_eg.rb
84
102
  - examples/eg_helper.rb
85
103
  - examples/extension_tracking.eg.rb
86
104
  - examples/merge_eg.rb
105
+ - examples/merge_string_eg.rb
87
106
  - examples/normal_hash.eg.rb