wrap_it 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,83 @@
1
+ require 'spec_helper'
2
+
3
+ describe WrapIt::ArgumentsArray do
4
+ it 'avoid of include these module into non-array like class' do
5
+ expect do
6
+ Class.new(String) { include WrapIt::ArgumentsArray }
7
+ end.to raise_error TypeError
8
+ end
9
+
10
+ context 'having test array' do
11
+ let :array do
12
+ arr = [10, :symbol, :another_symbol, 'string', 'another string']
13
+ arr.extend described_class
14
+ end
15
+
16
+ it 'extracts by class name' do
17
+ expect(array.extract!(Fixnum)).to eq [10]
18
+ expect(array).to_not include 10
19
+ end
20
+
21
+ it 'extracts by equality' do
22
+ expect(array.extract!(:symbol, 'string')).to eq [:symbol, 'string']
23
+ expect(array).to_not include :symbol, 'string'
24
+ end
25
+
26
+ it 'extracts by regexp' do
27
+ expect(
28
+ array.extract!(/\Aanother/)
29
+ ).to eq [:another_symbol, 'another string']
30
+ expect(array).to_not include :another_symbol, 'another string'
31
+ end
32
+
33
+ it 'extracts by array includance' do
34
+ expect(array.extract!([10, :symbol])).to eq [10, :symbol]
35
+ expect(array).to_not include 10, :symbol
36
+ end
37
+
38
+ it 'extracts by block' do
39
+ expect(array.extract! { |x| x == 10 }).to eq [10]
40
+ expect(array).to_not include 10
41
+ end
42
+
43
+ it 'extracts first by class name' do
44
+ expect(array.extract_first!(Symbol)).to eq :symbol
45
+ expect(array).to_not include :symbol
46
+ end
47
+
48
+ it 'extracts first by equality' do
49
+ expect(array.extract_first!(:symbol, 'string')).to eq :symbol
50
+ expect(array).to_not include :symbol
51
+ end
52
+
53
+ it 'extracts first by regexp' do
54
+ expect(array.extract_first!(/\Aanother/)).to eq :another_symbol
55
+ expect(array).to_not include :another_symbol
56
+ end
57
+
58
+ it 'extracts first by array includance' do
59
+ expect(array.extract_first!([10, :symbol])).to eq 10
60
+ expect(array).to_not include 10
61
+ end
62
+
63
+ it 'extracts first by block' do
64
+ expect(array.extract_first! { |x| x.is_a?(Symbol) }).to eq :symbol
65
+ expect(array).to_not include :symbol
66
+ end
67
+
68
+ it '#extract_first! returns nil if no matches' do
69
+ expect(array.extract_first!(20)).to be_nil
70
+ expect(array.size).to eq 5
71
+ end
72
+
73
+ it '#extract! returns [] if no matches' do
74
+ expect(array.extract!(20)).to eq []
75
+ expect(array.size).to eq 5
76
+ end
77
+
78
+ it 'works with and conditions' do
79
+ expect(array.extract!(Symbol, and: [:symbol])).to eq [:symbol]
80
+ expect(array).to_not include :symbol
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe WrapIt::Base do
4
+ it 'have #tag getter' do
5
+ expect(successor.tag).to eq 'div'
6
+ end
7
+
8
+ it 'have default_tag class method' do
9
+ successor_class.class_eval { default_tag 'a' }
10
+ expect(successor.tag).to eq 'a'
11
+ end
12
+
13
+ it 'extends @arguments with ArgumentsArray module' do
14
+ expect(
15
+ successor.instance_variable_get(:@arguments)
16
+ ).to be_kind_of WrapIt::ArgumentsArray
17
+ end
18
+
19
+ it 'symbolizes options hash' do
20
+ successor.send :options=, 'my' => 'value'
21
+ expect(successor.options).to eq(my: 'value', class: [])
22
+ end
23
+
24
+ it 'sanitizes options class' do
25
+ successor.send :options=, class: [:one, :two, :two]
26
+ expect(successor.options[:class]).to eq %w(one two)
27
+ end
28
+
29
+ it 'calls after_initialize' do
30
+ successor_class.class_eval { after_initialize { add_html_class :a } }
31
+ expect(successor.html_class).to eq %w(a)
32
+ end
33
+
34
+ it 'not omits content by default' do
35
+ expect(successor.omit_content?).to be_false
36
+ end
37
+
38
+ it 'provides way to omit content in subclasses' do
39
+ successor_class.class_eval { omit_content }
40
+ expect(successor.omit_content?).to be_true
41
+ end
42
+
43
+ it 'removes `helper_name` from options' do
44
+ successor(helper_name: 'test')
45
+ expect(successor.options).to_not include :helper_name
46
+ expect(successor.instance_variable_get(:@helper_name)).to eq :test
47
+ end
48
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe WrapIt::Callbacks do
4
+ pending 'some tests here'
5
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe WrapIt::Container do
4
+ # it 'adds base child' do
5
+ # successor_class.class_eval { child :test, [tag: 'li'] }
6
+ # successor.test
7
+ # expect(successor.instance_variable_get(:@children).size).to eq 1
8
+ # end
9
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe WrapIt::DerivedAttributes do
4
+ describe '::get_derived' do
5
+ it 'retrieves nil by default' do
6
+ expect(wrapper_class.get_derived(:@var)).to be_nil
7
+ end
8
+
9
+ it 'retrieves var, defined in class' do
10
+ wrapper_class.class_eval { @var = 1 }
11
+ sub1 = Class.new(wrapper_class) { @var = 2 }
12
+ sub2 = Class.new(sub1)
13
+ expect(wrapper_class.get_derived(:@var)).to eq 1
14
+ expect(sub1.get_derived(:@var)).to eq 2
15
+ expect(sub2.get_derived(:@var)).to eq 2
16
+ end
17
+ end
18
+
19
+ describe '::collect_derived' do
20
+ it 'collects in array by default' do
21
+ expect(wrapper_class.collect_derived(:@var)).to eq []
22
+ end
23
+
24
+ it 'collects vars in correct order' do
25
+ wrapper_class.class_eval { @var = '1' }
26
+ sub1 = Class.new(wrapper_class) { @var = '2' }
27
+ sub2 = Class.new(sub1)
28
+ expect(wrapper_class.collect_derived(:@var, [], :push)).to eq %w(1)
29
+ expect(sub1.collect_derived(:@var, [], :push)).to eq %w(2 1)
30
+ expect(sub2.collect_derived(:@var, [], :push)).to eq %w(2 1)
31
+ end
32
+
33
+ it 'collects arrays by default' do
34
+ wrapper_class.class_eval { @var = %w(1 2) }
35
+ sub1 = Class.new(wrapper_class) { @var = %w(2 3) }
36
+ expect(wrapper_class.collect_derived(:@var)).to eq %w(1 2)
37
+ expect(sub1.collect_derived(:@var)).to eq %w(2 3 1 2)
38
+ end
39
+
40
+ it 'collects hashes' do
41
+ wrapper_class.class_eval { @var = { one: 1, two: 2 } }
42
+ sub1 = Class.new(wrapper_class) { @var = { three: 3 } }
43
+ expect(
44
+ wrapper_class.collect_derived(:@var, {}, :merge)
45
+ ).to eq(one: 1, two: 2)
46
+ expect(
47
+ sub1.collect_derived(:@var, {}, :merge)
48
+ ).to eq(one: 1, two: 2, three: 3)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe WrapIt::Enums do
4
+ context 'wrapper have `kind` enum' do
5
+ before { wrapper_class.class_eval { enum :kind, [:white, :black] } }
6
+
7
+ it 'adds getters' do
8
+ expect(wrapper.kind).to be_nil
9
+ wrapper.kind = true
10
+ expect(wrapper.kind).to be_nil
11
+ wrapper.kind = :white
12
+ expect(wrapper.kind).to eq :white
13
+ end
14
+
15
+ it 'gets enum value from arguments' do
16
+ expect(wrapper(:white).kind).to eq :white
17
+ end
18
+
19
+ it 'string arguments are ignored' do
20
+ expect(wrapper('white').kind).to be_nil
21
+ end
22
+
23
+ it 'gets enum from options' do
24
+ expect(wrapper(kind: :black).kind).to eq :black
25
+ @wrapper = nil
26
+ expect(wrapper(kind: false).kind).to be_nil
27
+ expect(wrapper.options).to_not include :kind
28
+ end
29
+
30
+ it 'runs block' do
31
+ wrapper_class.class_eval do
32
+ enum(:kind, [:white, :black]) { |x| self.html_class = x.to_s }
33
+ end
34
+ expect(wrapper(:white).html_class).to include 'white'
35
+ @wrapper = nil
36
+ expect(wrapper(kind: :black).html_class).to include 'black'
37
+ wrapper.kind = :white
38
+ expect(wrapper.html_class).to include 'white'
39
+ end
40
+
41
+ it 'adds and removes html class' do
42
+ wrapper_class.class_eval do
43
+ enum :kind, [:white, :black], html_class_prefix: 'test-'
44
+ end
45
+ expect(wrapper(:white).html_class).to include 'test-white'
46
+ @wrapper = nil
47
+ expect(wrapper(kind: :black).html_class).to include 'test-black'
48
+ @wrapper = nil
49
+ expect(wrapper(kind: :no).html_class).to be_empty
50
+ wrapper.kind = :white
51
+ expect(wrapper.html_class).to include 'test-white'
52
+ wrapper.kind = :black
53
+ expect(wrapper.html_class).to include 'test-black'
54
+ expect(wrapper.html_class).to_not include 'test-white'
55
+ end
56
+
57
+ it 'detects aliases' do
58
+ wrapper_class.class_eval do
59
+ enum :kind, [:white, :black], aliases: [:appearence]
60
+ end
61
+ expect(wrapper(appearence: :white).kind).to eq :white
62
+ end
63
+
64
+ it 'supports default values' do
65
+ wrapper_class.class_eval do
66
+ enum :kind, [:white, :black], default: :white
67
+ end
68
+ expect(wrapper.kind).to eq :white
69
+ wrapper.kind = :black
70
+ expect(wrapper.kind).to eq :black
71
+ wrapper.kind = nil
72
+ expect(wrapper.kind).to eq :white
73
+ @wrapper = nil
74
+ expect(wrapper(kind: :no).kind).to eq :white
75
+ @wrapper = nil
76
+ expect(wrapper(:black, kind: :no).kind).to eq :black
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,98 @@
1
+ require 'spec_helper'
2
+
3
+ describe WrapIt::HTMLClass do
4
+ it 'have html_class class method' do
5
+ wrapper_class.class_eval { html_class :a, [:b, 'c'] }
6
+ expect(wrapper.html_class).to eq %w(a b c)
7
+ sub_class = Class.new(wrapper_class) { html_class :a, [:d, 'e'] }
8
+ expect(sub_class.new(template).html_class).to eq %w(a d e b c)
9
+ end
10
+
11
+ it 'has #add_html_class with chaining' do
12
+ expect(wrapper.add_html_class(:test).options[:class]).to eq %w(test)
13
+ @wrapper = nil
14
+ expect(wrapper.add_html_class(:a, 'b').options[:class]).to eq %w(a b)
15
+ @wrapper = nil
16
+ expect(
17
+ wrapper.add_html_class(:a, [:b, :c]).options[:class]
18
+ ).to eq %w(a b c)
19
+ end
20
+
21
+ it 'has #remove_html_class with chaining' do
22
+ expect(
23
+ wrapper.add_html_class(:a, :b).remove_html_class('a').options[:class]
24
+ ).to eq %w(b)
25
+ end
26
+
27
+ it 'has #html_class? method' do
28
+ expect(wrapper.add_html_class(:a1, :b1).html_class?('a1')).to be_true
29
+ expect(wrapper.html_class?(:a1, :b1)).to be_true
30
+ expect(wrapper.html_class?(:a1, :b2)).to be_false
31
+ expect(wrapper.html_class?(:a2)).to be_false
32
+ expect(wrapper.html_class?(/\d+/)).to be_true
33
+ expect(wrapper.html_class?(%w(a1 c1))).to be_true
34
+ expect(wrapper.html_class? { |x| x[0] == 'a' }).to be_true
35
+ end
36
+
37
+ it 'has #html_class? method' do
38
+ expect(wrapper.add_html_class(:a1, :b1).no_html_class?('a2')).to be_true
39
+ expect(wrapper.no_html_class?(:a2, :b2)).to be_true
40
+ expect(wrapper.no_html_class?(:a1, :b2)).to be_false
41
+ expect(wrapper.no_html_class?(:a1)).to be_false
42
+ expect(wrapper.no_html_class?(/\d+./)).to be_true
43
+ expect(wrapper.no_html_class?(%w(c1 d1))).to be_true
44
+ expect(wrapper.no_html_class? { |x| x[0] == 'c' }).to be_true
45
+ end
46
+
47
+ it 'has html_class setter' do
48
+ wrapper.html_class = [:a, :b]
49
+ expect(wrapper.options[:class]).to eq %w(a b)
50
+ end
51
+
52
+ describe 'documentation examples' do
53
+ let(:element) { wrapper }
54
+
55
+ it 'html_class=' do
56
+ element.html_class = [:a, 'b', ['c', :d, 'a']]
57
+ expect(element.html_class).to eq %w(a b c d)
58
+ end
59
+
60
+ it 'add_html_class' do
61
+ element.html_class = 'a'
62
+ element.add_html_class :b, :c, ['d', :c, :e, 'a']
63
+ expect(element.html_class).to eq %w(a b c d e)
64
+ end
65
+
66
+ it 'remove_html_class' do
67
+ element.add_html_class %w(a b c d e)
68
+ element.remove_html_class :b, ['c', :e]
69
+ expect(element.html_class).to eq %w(a d)
70
+ end
71
+
72
+ it 'html_class? with Symbol or String' do
73
+ element.html_class = [:a, :b, :c]
74
+ expect(element.html_class?(:a)).to be_true
75
+ expect(element.html_class?(:d)).to be_false
76
+ expect(element.html_class?(:a, 'b')).to be_true
77
+ expect(element.html_class?(:a, :d)).to be_false
78
+ end
79
+
80
+ it 'html_class? with Regexp' do
81
+ element.html_class = [:some, :test]
82
+ expect(element.html_class?(/some/)).to be_true
83
+ expect(element.html_class?(/some/, /bad/)).to be_false
84
+ expect(element.html_class?(/some/, :test)).to be_true
85
+ end
86
+
87
+ it 'html_class? with Array' do
88
+ element.html_class = [:a, :b, :c]
89
+ expect(element.html_class?(%w(a d))).to be_true
90
+ expect(element.html_class?(%w(e d))).to be_false
91
+ end
92
+
93
+ it 'html_class? with block' do
94
+ element.html_class = [:a, :b, :c]
95
+ expect(element.html_class? { |x| x == 'a' }).to be_true
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe WrapIt::Switches do
4
+ context 'wrapper have `active` switch' do
5
+ before { wrapper_class.class_eval { switch :active } }
6
+
7
+ it 'adds getters' do
8
+ expect(wrapper.active?).to be_false
9
+ wrapper.active = true
10
+ expect(wrapper.active?).to be_true
11
+ end
12
+
13
+ it 'gets switch from arguments' do
14
+ expect(wrapper(:active).active?).to be_true
15
+ end
16
+
17
+ it 'string arguments are ignored' do
18
+ expect(wrapper('active').active?).to be_false
19
+ end
20
+
21
+ it 'gets switch from options' do
22
+ expect(wrapper(active: true).active?).to be_true
23
+ @wrapper = nil
24
+ expect(wrapper(active: false).active?).to be_false
25
+ expect(wrapper.options).to_not include :active
26
+ end
27
+
28
+ it 'runs block' do
29
+ wrapper_class.class_eval do
30
+ switch(:active) { |x| add_html_class(x.to_s) }
31
+ end
32
+ expect(wrapper(:active).html_class).to include 'true'
33
+ @wrapper = nil
34
+ expect(wrapper(active: true).html_class).to include 'true'
35
+ @wrapper = nil
36
+ expect(wrapper(active: false).html_class).to include 'false'
37
+ wrapper.active = true
38
+ expect(wrapper.html_class).to include 'true'
39
+ wrapper.active = false
40
+ expect(wrapper.html_class).to include 'false'
41
+ end
42
+
43
+ it 'adds and removes html class' do
44
+ wrapper_class.class_eval { switch :active, html_class: 'active' }
45
+ expect(wrapper(:active).html_class).to include 'active'
46
+ @wrapper = nil
47
+ expect(wrapper(active: true).html_class).to include 'active'
48
+ @wrapper = nil
49
+ expect(wrapper(active: false).html_class).to_not include 'active'
50
+ wrapper.active = true
51
+ expect(wrapper.html_class).to include 'active'
52
+ wrapper.active = false
53
+ expect(wrapper.html_class).to_not include 'active'
54
+ end
55
+
56
+ it 'detects aliases' do
57
+ wrapper_class.class_eval { switch :active, aliases: :act }
58
+ expect(wrapper(:act).active?).to be_true
59
+ @wrapper = nil
60
+ expect(wrapper(act: true).active?).to be_true
61
+ @wrapper = nil
62
+ expect(wrapper(act: false).active?).to be_false
63
+ expect(wrapper).to_not respond_to :act?
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ =begin
4
+ class UsersHelperTest < ActionView::TestCase
5
+ it 'includes framework-specific methods' do
6
+ methods = successor_class.protected_instance_methods(true)
7
+ expect(methods).to include :concat, :capture, :output_buffer
8
+ end
9
+
10
+ it 'renders base as div' do
11
+ render '<%= successor %>'
12
+ expect(rendered).to have_tag 'div', count: 1
13
+ end
14
+
15
+ it 'captures block content' do
16
+ render '<%= successor do %>Some text<% end %>'
17
+ expect(rendered).to have_tag 'div', count: 1, text: /Some text/
18
+ end
19
+ end
20
+ =end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe WrapIt::Container do
4
+ before do
5
+ successor_class.class_eval do
6
+ default_tag 'ul'
7
+ child :item, [tag: 'li']
8
+ end
9
+ Object.send(:const_set, :Successor, successor_class)
10
+ end
11
+
12
+ it 'renders as ul' do
13
+ render '<%= successor_helper %>'
14
+ expect(rendered).to have_tag 'ul', count: 1
15
+ expect(rendered).to_not have_tag 'ul > *'
16
+ end
17
+
18
+ it 'renders child items' do
19
+ render <<-EOL
20
+ <%= successor_helper do |s| %>
21
+ <li class="c1">item 1</li>
22
+ <% 2.upto 5 do |i| %>
23
+ <%= s.item class: "c\#{i}" do |_| %>item <%= i %><% end %>
24
+ <% end %>
25
+ <li class="c6">item 6</li>
26
+ <% end %>
27
+ EOL
28
+ expect(rendered).to have_tag 'ul > li', count: 6
29
+ end
30
+ end
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+
4
+ Bundler.require :default, :development
5
+
6
+ Dir[File.join(File.dirname(__FILE__), 'support', '**', '*.rb')].each do |file|
7
+ require file
8
+ end
9
+
10
+ RSpec.configure do |config|
11
+ config.treat_symbols_as_metadata_keys_with_true_values = true
12
+ config.run_all_when_everything_filtered = true
13
+ config.filter_run :focus
14
+ config.order = 'random'
15
+ end
@@ -0,0 +1,79 @@
1
+ #
2
+ # Helpers for Rails-specific testing
3
+ #
4
+ # @author Alexey Ovchinnikov <alexiss@cybernetlab.ru>
5
+ #
6
+ module RailsExampleGroup
7
+ def self.included(base)
8
+ base.instance_eval do
9
+ metadata[:type] = :rails
10
+
11
+ before(:all) { RailsExampleGroup.init_rails }
12
+ after(:all) do
13
+ Object.send(:remove_const, :Rails) if Object.const_defined?(:Rails)
14
+ end
15
+
16
+ after :each do
17
+ WrapIt.unregister :wrapper, :successor
18
+ Object.send(:remove_const, :Wrapper) if Object.const_defined?(:Wrapper)
19
+ if Object.const_defined?(:Successor)
20
+ Object.send(:remove_const, :Successor)
21
+ end
22
+ end
23
+
24
+ let(:template) do
25
+ instance_eval(&RailsExampleGroup.register_helper)
26
+ template_class.new.extend WrapIt.helpers
27
+ end
28
+
29
+ let(:template_class) { Class.new(ActionView::Base) }
30
+
31
+ let(:rendered) { @rendered }
32
+ end
33
+ end
34
+
35
+ def self.init_rails
36
+ require 'rails'
37
+ require 'active_support/dependencies'
38
+ require 'action_controller/railtie'
39
+ require 'action_view/railtie'
40
+ I18n.enforce_available_locales = true
41
+ path = File.expand_path(
42
+ File.join('..', '..', '..', '..', 'lib', 'wrap_it'),
43
+ __FILE__
44
+ )
45
+ WrapIt.send(:remove_const, :Renderer)
46
+ load File.join(path, 'rails.rb')
47
+ WrapIt::Base.send(:include, WrapIt::Renderer)
48
+ end
49
+
50
+ def self.register_helper
51
+ proc do
52
+ if described_class.is_a?(Class)
53
+ if Object.const_defined?(:Successor)
54
+ Object.send(:remove_const, :Successor)
55
+ end
56
+ Object.const_set(:Successor, successor_class)
57
+ WrapIt.unregister :successor_helper
58
+ WrapIt.register :successor_helper, 'Successor'
59
+ else
60
+ Object.sned(:remove_const, :Wrapper) if Object.const_defined?(:Wrapper)
61
+ Object.const_set(:Wrapper, wrapper_class)
62
+ WrapIt.unregister :wrapper_helper
63
+ WrapIt.register :wrapper_helper, 'Wrapper'
64
+ end
65
+ end
66
+ end
67
+
68
+ def render(code)
69
+ @rendered = template.render(inline: code)
70
+ end
71
+
72
+ RSpec.configure do |config|
73
+ config.include(
74
+ self,
75
+ type: :rails,
76
+ example_group: { file_path: /spec\/rails/ }
77
+ )
78
+ end
79
+ end
@@ -0,0 +1,39 @@
1
+ #
2
+ # Helpers for WrapIt testing
3
+ #
4
+ # @author Alexey Ovchinnikov <alexiss@cybernetlab.ru>
5
+ #
6
+ module WrapItExampleGroup
7
+ def self.included(base)
8
+ base.instance_eval do
9
+ metadata[:type] = :wrap_it
10
+
11
+ after { @successor = nil }
12
+
13
+ let(:template) { Object.new }
14
+
15
+ let(:successor_class) { Class.new described_class }
16
+
17
+ let(:wrapper_class) do
18
+ mod = described_class
19
+ Class.new(WrapIt::Base) { include mod }
20
+ end
21
+ end
22
+ end
23
+
24
+ def successor(*args, &block)
25
+ @successor ||= successor_class.new(template, *args, &block)
26
+ end
27
+
28
+ def wrapper(*args, &block)
29
+ @wrapper ||= wrapper_class.new(template, *args, &block)
30
+ end
31
+
32
+ RSpec.configure do |config|
33
+ config.include(
34
+ self,
35
+ type: :wrap_it,
36
+ example_group: { file_path: /spec/ }
37
+ )
38
+ end
39
+ end
data/wrap_it.gemspec ADDED
@@ -0,0 +1,30 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'wrap_it/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'wrap_it'
7
+ spec.version = WrapIt::VERSION
8
+ spec.authors = ['Alexey Ovchinnikov']
9
+ spec.email = ['alexiss@cybernetlab.ru']
10
+ spec.description = %q{Set of classes and modules for creating HTML helpers}
11
+ spec.summary = <<-EOL.gsub(/^\s+\|/, '')
12
+ |This library provides set of classes and modules with simple DSL for quick
13
+ |and easy creating html helpers with your own DSL. It's usefull for
14
+ |implementing CSS frameworks, or making your own.
15
+ EOL
16
+ spec.homepage = 'https://github.com/cybernetlab/wrap_it'
17
+ spec.license = 'MIT'
18
+
19
+ spec.files = `git ls-files`.split($/)
20
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
+ spec.require_paths = ['lib']
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'redcarpet', '~> 1.17'
27
+ spec.add_development_dependency 'yard', '~> 0.7.5'
28
+ spec.add_development_dependency 'rspec'
29
+ spec.add_development_dependency 'rspec-html-matchers'
30
+ end