blockhead 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3a618630b4969e83e6b735d3c023540ff6aabdde
4
- data.tar.gz: ed1637e5025b3bd339447898804c021eb5a3b70c
3
+ metadata.gz: 1d85e332f28799c767b021c81011dccc97a05502
4
+ data.tar.gz: 0eee958ce6d644987b56e63eb2a344cd42147c84
5
5
  SHA512:
6
- metadata.gz: c445ad32b130de394631fb39af9d27a2792cefda6e5749f8b440b27f3839fd88ab2e7d5a265fb28fbc1556029f24c8ee201d79efbc23a7a13411710e03915622
7
- data.tar.gz: 413ba35cf9a73ea944acb1a3cb519038ad169a7750753e0a6e442aa98bec5f6edbeac64270fbff53f663957e532c2742c2282881dcca6ce6fd44b05c17abc492
6
+ metadata.gz: b851b618299b8567735cb1d8e66dbbd1bf611878d12249a76ee30965dd39d7c4b9984ebcd55057069e8d67712b7d882c66c5fc68454ea42ede15d32bb1a84612
7
+ data.tar.gz: b03b1672ec7e97419052c74279b173e15b672098835047f5da13d862a3d769839a11d12f77b413cf915b8ec6a56cd20930a7652987f87ef918465244ca18d0a4
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/vinniefranco/blockhead.svg)](https://travis-ci.org/vinniefranco/blockhead.svg)
4
4
  [![Code Climate](https://codeclimate.com/github/vinniefranco/blockhead.png)](https://codeclimate.com/github/vinniefranco/blockhead.png)
5
+ [![Gem Version](https://badge.fury.io/rb/blockhead.svg)](http://badge.fury.io/rb/blockhead)
5
6
  Easy marshalling of object attributes.
6
7
 
7
8
  ## Installation
data/Rakefile CHANGED
@@ -1,2 +1 @@
1
1
  require 'bundler/gem_tasks'
2
-
@@ -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 'debugger', '~> 1.6'
24
+ spec.add_development_dependency 'byebug'
25
25
  end
@@ -1,7 +1,7 @@
1
1
  require 'blockhead/version'
2
2
  require 'blockhead/schema'
3
3
  require 'blockhead/marshaller'
4
- require 'blockhead/option_key'
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
@@ -13,7 +13,7 @@ module Blockhead
13
13
 
14
14
  def method_missing(name, *args, &block)
15
15
  @arg = args.first
16
- key = OptionKey.new(name, arg).key
16
+ key = AliasKey.new(name, arg).key
17
17
  attributes[key] = ValueExtractor.new(_call(name), arg, &block).extract
18
18
  end
19
19
 
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Blockhead
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
@@ -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 nope: { more_nope: { still_nope: nil } }
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 do
140
- title as: header
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
@@ -2,6 +2,5 @@ require 'rubygems'
2
2
  lib = File.expand_path('../../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
- require 'debugger'
6
5
  require 'bundler/setup'
7
6
  Bundler.require
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.3
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-09-09 00:00:00.000000000 Z
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: debugger
56
+ name: byebug
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.6'
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: '1.6'
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.0
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
@@ -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