blockhead 0.1.3 → 0.1.4
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/README.md +1 -0
- data/Rakefile +0 -1
- data/blockhead.gemspec +1 -1
- data/lib/blockhead.rb +1 -1
- data/lib/blockhead/alias_key.rb +33 -0
- data/lib/blockhead/marshaller.rb +1 -1
- data/lib/blockhead/value_extractor.rb +4 -4
- data/lib/blockhead/version.rb +1 -1
- data/spec/blockhead/extractors/enumerable_spec.rb +1 -1
- data/spec/blockhead/extractors/value_spec.rb +1 -1
- data/spec/blockhead/schema_spec.rb +5 -9
- data/spec/spec_helper.rb +0 -1
- metadata +9 -9
- data/lib/blockhead/option_key.rb +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d85e332f28799c767b021c81011dccc97a05502
|
4
|
+
data.tar.gz: 0eee958ce6d644987b56e63eb2a344cd42147c84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b851b618299b8567735cb1d8e66dbbd1bf611878d12249a76ee30965dd39d7c4b9984ebcd55057069e8d67712b7d882c66c5fc68454ea42ede15d32bb1a84612
|
7
|
+
data.tar.gz: b03b1672ec7e97419052c74279b173e15b672098835047f5da13d862a3d769839a11d12f77b413cf915b8ec6a56cd20930a7652987f87ef918465244ca18d0a4
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/vinniefranco/blockhead.svg)
|
4
4
|
[](https://codeclimate.com/github/vinniefranco/blockhead.png)
|
5
|
+
[](http://badge.fury.io/rb/blockhead)
|
5
6
|
Easy marshalling of object attributes.
|
6
7
|
|
7
8
|
## Installation
|
data/Rakefile
CHANGED
data/blockhead.gemspec
CHANGED
@@ -21,5 +21,5 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
22
22
|
spec.add_development_dependency 'rake'
|
23
23
|
spec.add_development_dependency 'rspec'
|
24
|
-
spec.add_development_dependency '
|
24
|
+
spec.add_development_dependency 'byebug'
|
25
25
|
end
|
data/lib/blockhead.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'blockhead/version'
|
2
2
|
require 'blockhead/schema'
|
3
3
|
require 'blockhead/marshaller'
|
4
|
-
require 'blockhead/
|
4
|
+
require 'blockhead/alias_key'
|
5
5
|
require 'blockhead/value_extractor'
|
6
6
|
require 'blockhead/extractors/abstract'
|
7
7
|
require 'blockhead/extractors/block'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Blockhead
|
2
|
+
class AliasKey
|
3
|
+
attr_reader :default, :alias_key
|
4
|
+
|
5
|
+
def initialize(name, alias_key)
|
6
|
+
@default = name
|
7
|
+
@alias_key = alias_key
|
8
|
+
end
|
9
|
+
|
10
|
+
def key
|
11
|
+
send(:"alias_#{aliased_key?}")
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def alias_true
|
17
|
+
raise TypeError, 'Alias is not of expected type' if bad_type?
|
18
|
+
alias_key[:as]
|
19
|
+
end
|
20
|
+
|
21
|
+
def alias_false
|
22
|
+
default
|
23
|
+
end
|
24
|
+
|
25
|
+
def aliased_key?
|
26
|
+
alias_key.is_a?(Hash) && alias_key.has_key?(:as)
|
27
|
+
end
|
28
|
+
|
29
|
+
def bad_type?
|
30
|
+
!(alias_key[:as].is_a?(Symbol) || alias_key[:as].is_a?(String))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/blockhead/marshaller.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
module Blockhead
|
2
2
|
class ValueExtractor
|
3
|
+
extend Forwardable
|
4
|
+
|
5
|
+
def_delegator :@extractor, :extract
|
3
6
|
attr_reader :extractor
|
4
7
|
|
5
8
|
def initialize(value, arg, &block)
|
6
9
|
proc = block.to_proc if block
|
10
|
+
|
7
11
|
@extractor = Extractors::Enumerable.new value, arg, proc
|
8
12
|
|
9
13
|
extractors.inject(extractor) do |fallback, link|
|
@@ -11,10 +15,6 @@ module Blockhead
|
|
11
15
|
end
|
12
16
|
end
|
13
17
|
|
14
|
-
def extract
|
15
|
-
extractor.extract
|
16
|
-
end
|
17
|
-
|
18
18
|
private
|
19
19
|
|
20
20
|
def extractors
|
data/lib/blockhead/version.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Blockhead::Extractors::Enumerable, '#valid?' do
|
4
4
|
it 'is valid with a @proc and a array @value' do
|
5
|
-
extractor = enum_factory([], Proc.new { 'Test.'})
|
5
|
+
extractor = enum_factory([], Proc.new { 'Test.' })
|
6
6
|
expect(extractor).to be_valid
|
7
7
|
end
|
8
8
|
|
@@ -16,7 +16,7 @@ describe Blockhead::Extractors::Value, '#extract_value' do
|
|
16
16
|
it 'cleans up strings when passed with: :pretty_print' do
|
17
17
|
extractor = Blockhead::Extractors::Value.new(
|
18
18
|
"This is Crazy \n",
|
19
|
-
{with: :pretty_print},
|
19
|
+
{ with: :pretty_print },
|
20
20
|
nil
|
21
21
|
)
|
22
22
|
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'debugger'
|
3
2
|
require 'ostruct'
|
4
3
|
|
5
4
|
describe Blockhead::Schema, '::define' do
|
@@ -108,11 +107,10 @@ describe Blockhead::Schema, '::define' do
|
|
108
107
|
end
|
109
108
|
end
|
110
109
|
|
111
|
-
response = { a: { title: 'Title'}, nested_obj: { item: { sku: '4321' } } }
|
110
|
+
response = { a: { title: 'Title' }, nested_obj: { item: { sku: '4321' } } }
|
112
111
|
expect(schema.marshal).to eq response
|
113
112
|
end
|
114
113
|
|
115
|
-
|
116
114
|
it 'handles nested nils' do
|
117
115
|
schema = schema_with do
|
118
116
|
nope do
|
@@ -122,7 +120,7 @@ describe Blockhead::Schema, '::define' do
|
|
122
120
|
end
|
123
121
|
end
|
124
122
|
|
125
|
-
expect(schema.marshal).to eq
|
123
|
+
expect(schema.marshal).to eq nope: { more_nope: { still_nope: nil } }
|
126
124
|
end
|
127
125
|
|
128
126
|
it 'accepts hash aliases' do
|
@@ -135,11 +133,9 @@ describe Blockhead::Schema, '::define' do
|
|
135
133
|
end
|
136
134
|
|
137
135
|
it 'raises TypeError on non symbol aliases' do
|
138
|
-
expect
|
139
|
-
schema_with
|
140
|
-
|
141
|
-
end
|
142
|
-
}.to raise_error TypeError, 'Aliase is not of expected type'
|
136
|
+
expect do
|
137
|
+
schema_with { title as: header }
|
138
|
+
end.to raise_error TypeError, 'Alias is not of expected type'
|
143
139
|
end
|
144
140
|
|
145
141
|
it 'accepts procs' do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blockhead
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincent Franco
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -53,19 +53,19 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: byebug
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
description: A simple DSL for marshaling objects into a schema
|
70
70
|
email:
|
71
71
|
- vince@freshivore.net
|
@@ -82,13 +82,13 @@ files:
|
|
82
82
|
- Rakefile
|
83
83
|
- blockhead.gemspec
|
84
84
|
- lib/blockhead.rb
|
85
|
+
- lib/blockhead/alias_key.rb
|
85
86
|
- lib/blockhead/extractors/abstract.rb
|
86
87
|
- lib/blockhead/extractors/block.rb
|
87
88
|
- lib/blockhead/extractors/enumerable.rb
|
88
89
|
- lib/blockhead/extractors/proc.rb
|
89
90
|
- lib/blockhead/extractors/value.rb
|
90
91
|
- lib/blockhead/marshaller.rb
|
91
|
-
- lib/blockhead/option_key.rb
|
92
92
|
- lib/blockhead/schema.rb
|
93
93
|
- lib/blockhead/value_extractor.rb
|
94
94
|
- lib/blockhead/version.rb
|
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
119
|
version: '0'
|
120
120
|
requirements: []
|
121
121
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.2.
|
122
|
+
rubygems_version: 2.2.2
|
123
123
|
signing_key:
|
124
124
|
specification_version: 4
|
125
125
|
summary: A simple DSL for marshaling objects into a schema
|
data/lib/blockhead/option_key.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
module Blockhead
|
2
|
-
class OptionKey
|
3
|
-
attr_reader :default, :options
|
4
|
-
|
5
|
-
def initialize(name, options)
|
6
|
-
@default = name
|
7
|
-
@options = options
|
8
|
-
end
|
9
|
-
|
10
|
-
def key
|
11
|
-
if options?
|
12
|
-
raise TypeError, 'Aliase is not of expected type' if bad_type?
|
13
|
-
options[:as]
|
14
|
-
else
|
15
|
-
default
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def options?
|
22
|
-
options.is_a?(Hash) && options.has_key?(:as)
|
23
|
-
end
|
24
|
-
|
25
|
-
def bad_type?
|
26
|
-
!(options[:as].is_a?(Symbol) || options[:as].is_a?(String))
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|