wrap_it 0.2.0 → 1.0.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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/.yardopts +3 -0
- data/README.md +67 -66
- data/lib/wrap_it.rb +16 -16
- data/lib/wrap_it/arguments.rb +368 -0
- data/lib/wrap_it/base.rb +56 -47
- data/lib/wrap_it/callbacks.rb +24 -5
- data/lib/wrap_it/capture_array.rb +140 -0
- data/lib/wrap_it/container.rb +69 -25
- data/lib/wrap_it/derived_attributes.rb +22 -6
- data/lib/wrap_it/enums.rb +44 -34
- data/lib/wrap_it/frameworks.rb +7 -3
- data/lib/wrap_it/helpers.rb +66 -1
- data/lib/wrap_it/html.rb +149 -0
- data/lib/wrap_it/html_class.rb +164 -183
- data/lib/wrap_it/html_data.rb +28 -15
- data/lib/wrap_it/link.rb +40 -17
- data/lib/wrap_it/sections.rb +90 -2
- data/lib/wrap_it/switches.rb +33 -29
- data/lib/wrap_it/text_container.rb +83 -10
- data/lib/wrap_it/version.rb +2 -1
- data/spec/frameworks/log/development.log +2108 -0
- data/spec/integration/base_spec.rb +2 -2
- data/spec/integration/container_spec.rb +3 -3
- data/spec/integration/examples_spec.rb +16 -15
- data/spec/integration/text_container_spec.rb +3 -3
- data/spec/lib/arguments_array_spec.rb +37 -27
- data/spec/lib/arguments_spec.rb +153 -0
- data/spec/lib/base_spec.rb +2 -25
- data/spec/lib/callbacks_spec.rb +1 -1
- data/spec/lib/container_spec.rb +1 -1
- data/spec/lib/derived_attributes_spec.rb +1 -1
- data/spec/lib/enums_spec.rb +2 -3
- data/spec/lib/html_class_spec.rb +269 -80
- data/spec/lib/html_data_spec.rb +18 -12
- data/spec/lib/html_spec.rb +124 -0
- data/spec/lib/link_spec.rb +2 -2
- data/spec/lib/sections_spec.rb +1 -1
- data/spec/lib/switches_spec.rb +3 -3
- data/spec/lib/text_container_spec.rb +2 -2
- data/spec/support/example_groups/{wrap_it_example_group.rb → wrapped_example_group.rb} +5 -5
- data/wrap_it.gemspec +2 -0
- metadata +15 -8
- data/lib/wrap_it/arguments_array.rb +0 -128
- data/lib/wrap_it/module_helpers.rb +0 -23
data/spec/lib/link_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe WrapIt::Link do
|
3
|
+
describe WrapIt::Link, type: :wrapped do
|
4
4
|
it 'has `a` tag by default' do
|
5
5
|
expect(successor.tag).to eq 'a'
|
6
6
|
end
|
@@ -20,6 +20,6 @@ describe WrapIt::Link do
|
|
20
20
|
|
21
21
|
it 'takes href from second string arg if no block given' do
|
22
22
|
expect(successor('text', 'url').href).to eq 'url'
|
23
|
-
expect(successor.
|
23
|
+
expect(successor.body).to eq 'text'
|
24
24
|
end
|
25
25
|
end
|
data/spec/lib/sections_spec.rb
CHANGED
data/spec/lib/switches_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe WrapIt::Switches do
|
3
|
+
describe WrapIt::Switches, type: :wrapped do
|
4
4
|
it_behaves_like 'Base module'
|
5
5
|
|
6
6
|
context 'wrapper have `active` switch' do
|
@@ -24,12 +24,12 @@ describe WrapIt::Switches do
|
|
24
24
|
expect(wrapper(active: true).active?).to be_true
|
25
25
|
@wrapper = nil
|
26
26
|
expect(wrapper(active: false).active?).to be_false
|
27
|
-
expect(wrapper.
|
27
|
+
expect(wrapper.html_attr).to_not include :active
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'runs block' do
|
31
31
|
wrapper_class.class_eval do
|
32
|
-
switch(:active) { |x|
|
32
|
+
switch(:active) { |x| html_class << x.to_s }
|
33
33
|
end
|
34
34
|
expect(wrapper(:active).html_class).to include 'true'
|
35
35
|
@wrapper = nil
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe WrapIt::TextContainer do
|
3
|
+
describe WrapIt::TextContainer, type: :wrapped do
|
4
4
|
it { expect(wrapper_class.default_tag).to eq 'p' }
|
5
5
|
|
6
6
|
%i(text body).each do |option|
|
@@ -9,7 +9,7 @@ describe WrapIt::TextContainer do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it "cleanups `#{option}` for options" do
|
12
|
-
expect(wrapper(option => 'text').
|
12
|
+
expect(wrapper(option => 'text').html_attr).to_not include option
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -3,9 +3,9 @@
|
|
3
3
|
#
|
4
4
|
# @author Alexey Ovchinnikov <alexiss@cybernetlab.ru>
|
5
5
|
#
|
6
|
-
module
|
7
|
-
BASE_MODULES = [WrapIt::
|
8
|
-
WrapIt::
|
6
|
+
module WrappedExampleGroup
|
7
|
+
BASE_MODULES = [WrapIt::HTML, WrapIt::Switches, WrapIt::Enums,
|
8
|
+
WrapIt::Renderer, WrapIt::Sections, WrapIt::Arguments]
|
9
9
|
|
10
10
|
def self.included(base)
|
11
11
|
base.instance_eval do
|
@@ -44,8 +44,8 @@ module WrapItExampleGroup
|
|
44
44
|
RSpec.configure do |config|
|
45
45
|
config.include(
|
46
46
|
self,
|
47
|
-
type: :
|
48
|
-
example_group: { file_path: /spec/ }
|
47
|
+
type: :wrapped,
|
48
|
+
example_group: { file_path: /spec\/(wrapped|integration)/ }
|
49
49
|
)
|
50
50
|
end
|
51
51
|
end
|
data/wrap_it.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wrap_it
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexey Ovchinnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -104,6 +104,8 @@ files:
|
|
104
104
|
- .gitignore
|
105
105
|
- .rspec
|
106
106
|
- .rubocop.yml
|
107
|
+
- .ruby-version
|
108
|
+
- .yardopts
|
107
109
|
- Gemfile
|
108
110
|
- Gemfile.rails4
|
109
111
|
- Gemfile.sinatra
|
@@ -111,18 +113,19 @@ files:
|
|
111
113
|
- Rakefile
|
112
114
|
- config.ru
|
113
115
|
- lib/wrap_it.rb
|
114
|
-
- lib/wrap_it/
|
116
|
+
- lib/wrap_it/arguments.rb
|
115
117
|
- lib/wrap_it/base.rb
|
116
118
|
- lib/wrap_it/callbacks.rb
|
119
|
+
- lib/wrap_it/capture_array.rb
|
117
120
|
- lib/wrap_it/container.rb
|
118
121
|
- lib/wrap_it/derived_attributes.rb
|
119
122
|
- lib/wrap_it/enums.rb
|
120
123
|
- lib/wrap_it/frameworks.rb
|
121
124
|
- lib/wrap_it/helpers.rb
|
125
|
+
- lib/wrap_it/html.rb
|
122
126
|
- lib/wrap_it/html_class.rb
|
123
127
|
- lib/wrap_it/html_data.rb
|
124
128
|
- lib/wrap_it/link.rb
|
125
|
-
- lib/wrap_it/module_helpers.rb
|
126
129
|
- lib/wrap_it/no_rails.rb
|
127
130
|
- lib/wrap_it/rails.rb
|
128
131
|
- lib/wrap_it/sections.rb
|
@@ -139,6 +142,7 @@ files:
|
|
139
142
|
- spec/integration/examples_spec.rb
|
140
143
|
- spec/integration/text_container_spec.rb
|
141
144
|
- spec/lib/arguments_array_spec.rb
|
145
|
+
- spec/lib/arguments_spec.rb
|
142
146
|
- spec/lib/base_spec.rb
|
143
147
|
- spec/lib/callbacks_spec.rb
|
144
148
|
- spec/lib/container_spec.rb
|
@@ -147,13 +151,14 @@ files:
|
|
147
151
|
- spec/lib/helpers_spec.rb
|
148
152
|
- spec/lib/html_class_spec.rb
|
149
153
|
- spec/lib/html_data_spec.rb
|
154
|
+
- spec/lib/html_spec.rb
|
150
155
|
- spec/lib/link_spec.rb
|
151
156
|
- spec/lib/sections_spec.rb
|
152
157
|
- spec/lib/switches_spec.rb
|
153
158
|
- spec/lib/text_container_spec.rb
|
154
159
|
- spec/spec_helper.rb
|
155
160
|
- spec/support/example_groups/integration_example_group.rb
|
156
|
-
- spec/support/example_groups/
|
161
|
+
- spec/support/example_groups/wrapped_example_group.rb
|
157
162
|
- spec/support/shared_examples/base_module.rb
|
158
163
|
- wrap_it.gemspec
|
159
164
|
homepage: https://github.com/cybernetlab/wrap_it
|
@@ -169,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
169
174
|
requirements:
|
170
175
|
- - '>='
|
171
176
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
177
|
+
version: 2.0.0
|
173
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
179
|
requirements:
|
175
180
|
- - '>='
|
@@ -177,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
182
|
version: '0'
|
178
183
|
requirements: []
|
179
184
|
rubyforge_project:
|
180
|
-
rubygems_version: 2.
|
185
|
+
rubygems_version: 2.0.14
|
181
186
|
signing_key:
|
182
187
|
specification_version: 4
|
183
188
|
summary: This library provides set of classes and modules with simple DSL for quick
|
@@ -192,6 +197,7 @@ test_files:
|
|
192
197
|
- spec/integration/examples_spec.rb
|
193
198
|
- spec/integration/text_container_spec.rb
|
194
199
|
- spec/lib/arguments_array_spec.rb
|
200
|
+
- spec/lib/arguments_spec.rb
|
195
201
|
- spec/lib/base_spec.rb
|
196
202
|
- spec/lib/callbacks_spec.rb
|
197
203
|
- spec/lib/container_spec.rb
|
@@ -200,12 +206,13 @@ test_files:
|
|
200
206
|
- spec/lib/helpers_spec.rb
|
201
207
|
- spec/lib/html_class_spec.rb
|
202
208
|
- spec/lib/html_data_spec.rb
|
209
|
+
- spec/lib/html_spec.rb
|
203
210
|
- spec/lib/link_spec.rb
|
204
211
|
- spec/lib/sections_spec.rb
|
205
212
|
- spec/lib/switches_spec.rb
|
206
213
|
- spec/lib/text_container_spec.rb
|
207
214
|
- spec/spec_helper.rb
|
208
215
|
- spec/support/example_groups/integration_example_group.rb
|
209
|
-
- spec/support/example_groups/
|
216
|
+
- spec/support/example_groups/wrapped_example_group.rb
|
210
217
|
- spec/support/shared_examples/base_module.rb
|
211
218
|
has_rdoc:
|
@@ -1,128 +0,0 @@
|
|
1
|
-
module WrapIt
|
2
|
-
#
|
3
|
-
# Adds #extract! and #extarct_first! methods to array. Theese methods are
|
4
|
-
# extracts items from array by some condirions and returns its as separate
|
5
|
-
# array for #extract! and as first item for #extract_first!.
|
6
|
-
#
|
7
|
-
# @author Alexey Ovchinnikov <alexiss@cybernetlab.ru>
|
8
|
-
#
|
9
|
-
module ArgumentsArray
|
10
|
-
REQUIRED_METHODS = %i(reject! find_index delete_at)
|
11
|
-
|
12
|
-
def self.included(base)
|
13
|
-
methods = base.methods
|
14
|
-
# avoid including in classes thats doen't have methods, used in
|
15
|
-
# inplementation
|
16
|
-
REQUIRED_METHODS.all? { |m| methods.include?(m) } || fail(
|
17
|
-
TypeError,
|
18
|
-
"#{self.class.name} can't be included into #{base.class.name}"
|
19
|
-
)
|
20
|
-
end
|
21
|
-
#
|
22
|
-
# Extracts elements from array by conditions, passed in arguments nad
|
23
|
-
# returns theese elements as new array.
|
24
|
-
#
|
25
|
-
# Condition can be Regexp, class, Array and any other value. If condition
|
26
|
-
# is `Regexp`, all elements of array are tested for matching to this
|
27
|
-
# regexp, previously converted to String by their `to_s` method. If
|
28
|
-
# condition is an `Array`, all elements tested if it included in these
|
29
|
-
# array. If the condition is a class, then elements are tested via `is_a?`
|
30
|
-
# method for this class. For any other value, elements are tested with
|
31
|
-
# equality operator `==`.
|
32
|
-
#
|
33
|
-
# You can provide a block. In this case, all arguments are ignored, and
|
34
|
-
# block yielded for each element of array. If block returns `true`,
|
35
|
-
# element extracted from array.
|
36
|
-
#
|
37
|
-
# All conditions, passed as arguments are `or`-ed so `String, Symbol` means
|
38
|
-
# select Symbol or String elements.
|
39
|
-
#
|
40
|
-
# @overload extract!([condition, ..., options])
|
41
|
-
# @param [Object] condition one of `or`-ed conditions for comparing
|
42
|
-
# @param [Hash] options options for axtracting
|
43
|
-
# @options options [Object, Array] :and one or array of `and`-ed conditions
|
44
|
-
#
|
45
|
-
# @overload extract!(&block)
|
46
|
-
# @yield [element] Gives each element of array to block. You should return
|
47
|
-
# `true` to extract this element or `false` to keep it in array.
|
48
|
-
# @yieldparam [Object] element element of array to inspect
|
49
|
-
# @yieldreturn [Boolean] whether exclude this element or not
|
50
|
-
#
|
51
|
-
# @return [Array] array of extracted elements
|
52
|
-
#
|
53
|
-
# @example extract by class
|
54
|
-
# arr = [1, 2, 3, 'and', 'string']
|
55
|
-
# arr.extend WrapIt::ArgumentsArray
|
56
|
-
# arr.extract(String) #=> ['and', 'string']
|
57
|
-
# arr #=> [1, 2, 3]
|
58
|
-
#
|
59
|
-
# @example extract by value
|
60
|
-
# arr = [1, 2, 3, 'and', 'string']
|
61
|
-
# arr.extend WrapIt::ArgumentsArray
|
62
|
-
# arr.extract(1, 2) #=> [1, 2]
|
63
|
-
# arr #=> [3, 'and', 'string']
|
64
|
-
#
|
65
|
-
# @example extract by Regexp
|
66
|
-
# arr = [1, 2, 3, 'and', 'string', :str]
|
67
|
-
# arr.extend WrapIt::ArgumentsArray
|
68
|
-
# arr.extract(/^str/) #=> ['string', :str]
|
69
|
-
# arr #=> [1, 2, 3, 'and']
|
70
|
-
#
|
71
|
-
# @example extract by Array
|
72
|
-
# arr = [1, 2, 3, 'and', 'string']
|
73
|
-
# arr.extend WrapIt::ArgumentsArray
|
74
|
-
# arr.extract([1, 10, 'and']) #=> [1, 'and']
|
75
|
-
# arr #=> [2, 3, 'string']
|
76
|
-
#
|
77
|
-
# @example extract by block
|
78
|
-
# arr = [1, 2, 3, 'and', 'string']
|
79
|
-
# arr.extend WrapIt::ArgumentsArray
|
80
|
-
# arr.extract {|x| x < 3} #=> [1, 2]
|
81
|
-
# arr #=> [3, 'and', 'string']
|
82
|
-
#
|
83
|
-
# @example extract with `and` condition
|
84
|
-
# arr = [1, 2, 3, 'and', 'string', :str]
|
85
|
-
# arr.extend WrapIt::ArgumentsArray
|
86
|
-
# arr.extract(String, and: [/^str/]) #=> ['string']
|
87
|
-
# arr #=> [1, 2, 3, 'and', :str]
|
88
|
-
def extract!(*args, &block)
|
89
|
-
extracted = []
|
90
|
-
reject! do |arg|
|
91
|
-
do_compare(arg, *args, &block) && extracted << arg && true
|
92
|
-
end
|
93
|
-
extracted
|
94
|
-
end
|
95
|
-
|
96
|
-
#
|
97
|
-
# Extracts first element from array that is satisfy conditions, passed in
|
98
|
-
# arguments and returns these element.
|
99
|
-
#
|
100
|
-
# @see #extract!
|
101
|
-
def extract_first!(*args, &block)
|
102
|
-
index = find_index { |arg| do_compare(arg, *args, &block) }
|
103
|
-
index.nil? ? nil : delete_at(index)
|
104
|
-
end
|
105
|
-
|
106
|
-
private
|
107
|
-
|
108
|
-
def do_compare(target, *compare_args)
|
109
|
-
if block_given?
|
110
|
-
yield target
|
111
|
-
else
|
112
|
-
options = compare_args.extract_options!
|
113
|
-
result = compare_args.any? do |dest|
|
114
|
-
case
|
115
|
-
when dest.is_a?(Array) then dest.include?(target)
|
116
|
-
when dest.is_a?(Regexp) then dest.match(target.to_s)
|
117
|
-
when dest.is_a?(Class) then target.is_a?(dest)
|
118
|
-
else dest == target
|
119
|
-
end
|
120
|
-
end
|
121
|
-
if options[:and].is_a?(Array)
|
122
|
-
result &&= do_compare(target, *options[:and])
|
123
|
-
end
|
124
|
-
result
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module WrapIt
|
2
|
-
module ModuleHelpers
|
3
|
-
def self.included(base)
|
4
|
-
base.extend(ClassMethods)
|
5
|
-
end
|
6
|
-
|
7
|
-
module ClassMethods
|
8
|
-
def placement(name)
|
9
|
-
define_method(
|
10
|
-
"#{name}_placement", &ModuleHelpers.placement_block(name)
|
11
|
-
)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def placement_block(name)
|
18
|
-
proc do |hash = {before: :content}|
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|