visionmedia-tagz 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.rdoc ADDED
@@ -0,0 +1,8 @@
1
+
2
+ === 1.0.1 / 2009-05-08
3
+
4
+ * Github build me!
5
+
6
+ === 1.0.0 / 2009-05-08
7
+
8
+ * Initial release
data/Manifest ADDED
@@ -0,0 +1,18 @@
1
+ History.rdoc
2
+ lib/tagz/buffer.rb
3
+ lib/tagz/helpers.rb
4
+ lib/tagz/import.rb
5
+ lib/tagz/tagz.rb
6
+ lib/tagz/version.rb
7
+ lib/tagz.rb
8
+ Manifest
9
+ Rakefile
10
+ README.rdoc
11
+ spec/buffer_spec.rb
12
+ spec/helpers_spec.rb
13
+ spec/spec_helper.rb
14
+ spec/tagz_spec.rb
15
+ tagz.gemspec
16
+ tasks/docs.rake
17
+ tasks/gemspec.rake
18
+ tasks/spec.rake
data/README.rdoc ADDED
@@ -0,0 +1,65 @@
1
+
2
+ = Tagz
3
+
4
+ Framework independant tag helpers.
5
+
6
+ == Features
7
+
8
+ * Simple / Fast tag creation
9
+ * Highly extendable
10
+ * Framework independant
11
+ * Block capture buffering (nested tags)
12
+ * Several helpers
13
+
14
+ == Helpers
15
+
16
+ * #javascript
17
+ * #stylesheet
18
+ * #image
19
+ * #meta
20
+ * #cdata
21
+
22
+ == Cherry Pick
23
+
24
+ Tagz does not force you to use anything, simply include
25
+ the autoloaded modules where you like:
26
+
27
+ include Tagz
28
+ include Tagz::Buffer
29
+ include Tagz::Helpers
30
+
31
+ Or import them all!
32
+
33
+ require 'tagz/import'
34
+
35
+ == Formz
36
+
37
+ If you like Tagz, and want framework independant, sexy,
38
+ and super extendable forms, check out:
39
+
40
+ http://github.com/visionmedia/formz
41
+
42
+ == License
43
+
44
+ (The MIT License)
45
+
46
+ Copyright (c) 2009 TJ Holowaychuk <tj@vision-media.ca>
47
+
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of this software and associated documentation files (the
50
+ 'Software'), to deal in the Software without restriction, including
51
+ without limitation the rights to use, copy, modify, merge, publish,
52
+ distribute, sublicense, an d/or sell copies of the Software, and to
53
+ permit persons to whom the Software is furnished to do so, subject to
54
+ the following conditions:
55
+
56
+ The above copyright notice and this permission notice shall be
57
+ included in all copies or substantial portions of the Software.
58
+
59
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
60
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
61
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
62
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
63
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
64
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
65
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+
2
+ $:.unshift 'lib'
3
+ require 'tagz'
4
+ require 'rubygems'
5
+ require 'rake'
6
+ require 'echoe'
7
+
8
+ Echoe.new "tagz", Tagz::VERSION do |p|
9
+ p.author = "TJ Holowaychuk"
10
+ p.email = "tj@vision-media.ca"
11
+ p.summary = "Framework independant tag helpers"
12
+ p.url = "http://github.com/visionmedia/tagz"
13
+ p.runtime_dependencies << 'visionmedia-rext >= 0.1.0'
14
+ p.development_dependencies << 'rspec_hpricot_matchers >= 1.0.0'
15
+ end
16
+
17
+ Dir['tasks/**/*.rake'].sort.each { |f| load f }
@@ -0,0 +1,50 @@
1
+
2
+ ##
3
+ # = Buffer
4
+ #
5
+ # When included, Tagz::Buffer allows a tag's block
6
+ # to have several calls to #tag, which are collected
7
+ # and assigned as the parent tag's contents.
8
+ #
9
+ # === Examples
10
+ #
11
+ # tag :div do
12
+ # tag :label, 'Comments:', :for => :comments
13
+ # tag :textarea, :id => :comments
14
+ # end
15
+ #
16
+ # <div>
17
+ # <label for="comments">Comments:</label>
18
+ # <textarea id="comments"></textarea>
19
+ # </div>
20
+ #
21
+
22
+ module Tagz::Buffer
23
+
24
+ #:stopdoc:
25
+
26
+ class Base
27
+ def initialize
28
+ @buffer = ''
29
+ end
30
+
31
+ def create_tag *args, &block
32
+ @buffer << Buffer.create_tag(*args, &block)
33
+ end
34
+
35
+ def to_s
36
+ @buffer
37
+ end
38
+ end
39
+
40
+ def create_tag name, contents, attrs, &block
41
+ if block
42
+ buffer = Base.new
43
+ buffer.instance_eval &block
44
+ super name, "#{contents}#{buffer}", attrs
45
+ else
46
+ super
47
+ end
48
+ end
49
+
50
+ end
@@ -0,0 +1,106 @@
1
+
2
+ ##
3
+ # = Helpers
4
+ #
5
+ # Tagz::Helpers consists of methods which
6
+ # assist creation of common tag combinations
7
+ # and standards. For example images may simply
8
+ # call image('foo.png'), as a shortcut for
9
+ # tag(:img, :src => 'foo.png').
10
+ #
11
+
12
+ module Tagz::Helpers
13
+
14
+ module_function
15
+
16
+ ##
17
+ # Return image tag to _path_.
18
+ #
19
+ # === Examples
20
+ #
21
+ # image 'foo.png'
22
+ # # => <img src="foo.png" />
23
+ #
24
+ # image 'foo.png', :alt => 'Kung-foo'
25
+ # # => <img src="foo.png" alt="Kung-foo">
26
+ #
27
+
28
+ def image path, attrs = {}
29
+ tag :img, { :src => path }.merge(attrs)
30
+ end
31
+
32
+ ##
33
+ # Return stylesheet link tag to _path_. When a _block_
34
+ # is passed, a style tag will be created with the yielded
35
+ # value as its contents.
36
+ #
37
+ # === Examples
38
+ #
39
+ # stylesheet do
40
+ # "body {
41
+ # color: blue;
42
+ # }"
43
+ # end
44
+ # # => <style>body { ... }</style>
45
+ #
46
+ #
47
+ # stylesheet 'style.css', :media => :print
48
+ # # => <link rel="stylesheet" href="style.css" media="print" />
49
+ #
50
+
51
+ def stylesheet path = nil, attrs = {}, &block
52
+ return tag(:style, yield, { :type => 'text/css' }.merge(attrs)) if block
53
+ tag :link, { :rel => 'stylesheet', :href => path }.merge(attrs)
54
+ end
55
+
56
+ ##
57
+ # Return script tag to _path_. When a _block_ is passed,
58
+ # a script tag will be created with the yielded value as
59
+ # its contents.
60
+ #
61
+ # === Examples
62
+ #
63
+ # javascript do
64
+ # "foo"
65
+ # end
66
+ # # => <script type="text/javascript">foo</script>
67
+ #
68
+ # javascript 'jquery.js'
69
+ # # => <script type="text/javascript" src="jquery.js"></script>
70
+ #
71
+
72
+ def javascript path = nil, attrs = {}, &block
73
+ contents = yield if block
74
+ tag :script, contents, { :type => 'text/javascript', :src => path }.merge(attrs)
75
+ end
76
+
77
+ ##
78
+ # Return meta tag _name_ with _contents_.
79
+ #
80
+ # === Examples
81
+ #
82
+ # meta :keywords, 'foo bar'
83
+ # meta :description, 'Welcome to foo bar'
84
+ #
85
+ # # => <meta name="keywords" contents="foo bar">
86
+ # # => <meta name="description" contents="Welcome to foo bar">
87
+ #
88
+
89
+ def meta name, contents
90
+ tag :meta, :name => name, :contents => contents
91
+ end
92
+
93
+ ##
94
+ # Return CDATA tag with _contents_.
95
+ #
96
+ # === Examples
97
+ #
98
+ # cdata '<foo>'
99
+ # # => <![CDATA[<foo>]]>
100
+ #
101
+
102
+ def cdata contents
103
+ "<![CDATA[#{contents}]]>"
104
+ end
105
+
106
+ end
@@ -0,0 +1,6 @@
1
+
2
+ require 'tagz'
3
+
4
+ include Tagz
5
+ include Tagz::Buffer
6
+ include Tagz::Helpers
data/lib/tagz/tagz.rb ADDED
@@ -0,0 +1,151 @@
1
+
2
+ ##
3
+ # = Tagz
4
+ #
5
+ # Simple, unified #tag helper module. To add functionality
6
+ # to your tags, simply include a module and super to #create_tag
7
+ # like below:
8
+ #
9
+ # module Tagz
10
+ # module Labels
11
+ # def create_tag name, contents, attrs, &block
12
+ # label = attrs.delete :label
13
+ # if label && label_tag?(name)
14
+ # tag(:label, "#{label}:", :for => attrs[:name]) << super
15
+ # else
16
+ # super
17
+ # end
18
+ # end
19
+ #
20
+ # def label_tag? name
21
+ # name.to_s.in? %w( textarea input select )
22
+ # end
23
+ # end
24
+ # end
25
+ #
26
+ # include Tagz::Labels
27
+ #
28
+ # With our newly included Tagz::Labels, all calls to #tag will
29
+ # be passed to #create_tag, in turn adding our labels when
30
+ # appropriate.
31
+ #
32
+ # tag :textarea, :name => :comments, :label => 'Comments'
33
+ #
34
+ #   <label for="comments">Comments:</label>
35
+ #   <textarea name="comments"></textarea>
36
+ #
37
+
38
+ module Tagz
39
+
40
+ #--
41
+ # Self closing elements.
42
+ #++
43
+
44
+ SELF_CLOSING_TAGS = :input, :link, :base, :area, :br, :hr, :img, :meta
45
+
46
+ #--
47
+ # Boolean attributes.
48
+ #++
49
+
50
+ BOOLEAN_ATTRIBUTES = :selected, :checked, :disabled, :readonly, :multiple, :defer
51
+
52
+ module_function
53
+
54
+ ##
55
+ # Return markup for tag _name_. Optionally _contents_ may
56
+ # be passed, which is literal content for spanning tags such
57
+ # as textarea, etc. A hash of _attrs_ may be passed as the
58
+ # second or third argument.
59
+ #
60
+ # Self closing tags such as <br/>, <input/> etc are automatically
61
+ # closed, and boolean attributes of "selected", "checked" etc
62
+ # are mirrored or removed when true or false.
63
+ #
64
+ # === Examples
65
+ #
66
+ # tag :br
67
+ # # => <br/>
68
+ #
69
+ # tag :div
70
+ # # => <div></div>
71
+ #
72
+ # tag :div, 'hello'
73
+ # # => <div>hello</div>
74
+ #
75
+ # tag :div, 'hello', :id => 'comment'
76
+ # # => <div id="comment">hello</div>
77
+ #
78
+ # tag :div :id => 'comment'
79
+ # # => <div id="comment"></div>
80
+ #
81
+ # tag :div do
82
+ # tag :p, 'Hello World'
83
+ # end
84
+ # # => <div><p>Hello World</p></div>
85
+ #
86
+ # tag :input, :type => :checkbox, :checked => true
87
+ # # => <input type="checkbox" checked="checked" />
88
+ #
89
+
90
+ def tag name, contents = nil, attrs = {}, &block
91
+ attrs, contents = contents, nil if contents.is_a? Hash
92
+ create_tag name, contents, attrs, &block
93
+ end
94
+
95
+ #:stopdoc:
96
+
97
+ def create_tag name, contents = nil, attrs = {}, &block
98
+ self_closing_tag?(name) ?
99
+ self_closing_tag(name, attrs) :
100
+ open_tag(name, attrs) + contents.to_s + closing_tag(name)
101
+ end
102
+
103
+ ##
104
+ # Check if _name_ is a boolean attribute.
105
+
106
+ def boolean_attribute? name
107
+ name.in? BOOLEAN_ATTRIBUTES
108
+ end
109
+
110
+ ##
111
+ # Check if tag _name_ is a self-closing tag.
112
+
113
+ def self_closing_tag? name
114
+ name.in? SELF_CLOSING_TAGS
115
+ end
116
+
117
+ ##
118
+ # Return a self closing tag of _name_, with _attrs_.
119
+
120
+ def self_closing_tag name, attrs = {}
121
+ "\n<#{name}#{normalize_html_attributes(attrs)}/>"
122
+ end
123
+
124
+ ##
125
+ # Return an opening tag of _name_, with _attrs_.
126
+
127
+ def open_tag name, attrs = {}
128
+ "\n<#{name}#{normalize_html_attributes(attrs)}>"
129
+ end
130
+
131
+ ##
132
+ # Normalize _attrs_, replacing boolean keys
133
+ # with their mirrored values.
134
+
135
+ def normalize_html_attributes attrs = {}
136
+ return if attrs.blank?
137
+ attrs.each do |name, value|
138
+ if boolean_attribute? name
139
+ value ? attrs[name] = name : attrs.delete(name)
140
+ end
141
+ end
142
+ ' ' + attrs.to_html_attributes
143
+ end
144
+
145
+ ##
146
+ # Return closing tag of _name_.
147
+
148
+ def closing_tag name
149
+ "</#{name}>"
150
+ end
151
+ end
@@ -0,0 +1,4 @@
1
+
2
+ module Tagz
3
+ VERSION = '1.0.1'
4
+ end
data/lib/tagz.rb ADDED
@@ -0,0 +1,31 @@
1
+ #--
2
+ # Copyright (c) 2009 TJ Holowaychuk <tj@vision-media.ca>
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ require 'rext/all'
25
+ require 'tagz/tagz'
26
+ require 'tagz/version'
27
+
28
+ module Tagz
29
+ autoload :Buffer, 'tagz/buffer'
30
+ autoload :Helpers, 'tagz/helpers'
31
+ end
@@ -0,0 +1,27 @@
1
+
2
+ describe Tagz do
3
+ describe Buffer do
4
+ it "should buffer all tag contents within a block" do
5
+ markup = tag :div do
6
+ tag :label, 'Comments:', :for => :comments
7
+ tag :textarea, :id => :comments
8
+ end
9
+ markup.should have_tag('div') do |div|
10
+ div.should have_tag('label[@for=comments]', 'Comments:')
11
+ div.should have_tag('textarea[@id=comments]')
12
+ end
13
+ end
14
+
15
+ it "should prepend contents when both contents and block are present" do
16
+ markup = tag :div, 'Cookies' do
17
+ tag :label, 'Comments:', :for => :comments
18
+ tag :textarea, :id => :comments
19
+ end
20
+ markup.should have_tag('div') do |div|
21
+ div.inner_text.should match(/^Cookies/)
22
+ div.should have_tag('label[@for=comments]', 'Comments:')
23
+ div.should have_tag('textarea[@id=comments]')
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,69 @@
1
+
2
+ describe Tagz do
3
+ describe Helpers do
4
+ describe "#cdata" do
5
+ it "should return a CDATA tag" do
6
+ cdata('<foo>').should == '<![CDATA[<foo>]]>'
7
+ end
8
+ end
9
+
10
+ describe "#meta" do
11
+ it "should accept name and contents" do
12
+ meta(:keywords, 'some foo bar').should have_tag('meta[@name=keywords]')
13
+ meta(:keywords, 'some foo bar').should have_tag('meta[@contents=some foo bar]')
14
+ end
15
+ end
16
+
17
+ describe "#image" do
18
+ it "should accept a path as the first argument" do
19
+ image('foo.png').should have_tag('img[@src=foo.png]')
20
+ end
21
+
22
+ it "should accept a hash of attributes" do
23
+ image('foo.png', :alt => 'Kung-foo').should have_tag('img[@alt=Kung-foo]')
24
+ end
25
+ end
26
+
27
+ describe "#stylesheet" do
28
+ it "should return inline style tags when a block is passed" do
29
+ markup = stylesheet do
30
+ 'body {}'
31
+ end
32
+ markup.should have_tag('style', 'body {}')
33
+ end
34
+
35
+ it "should assign rel attribute" do
36
+ stylesheet('style.css').should have_tag('link[@rel=stylesheet]')
37
+ end
38
+
39
+ it "should assign href attribute" do
40
+ stylesheet('style.css').should have_tag('link[@href=style.css]')
41
+ end
42
+
43
+ it "should accept a hash of attributes" do
44
+ stylesheet('style.css', :media => :print).should have_tag('link[@media=print]')
45
+ end
46
+ end
47
+ end
48
+
49
+ describe "#javascript" do
50
+ it "should return inline javascript tag when a block is passed" do
51
+ markup = javascript do
52
+ 'foo'
53
+ end
54
+ markup.should have_tag('script', 'foo')
55
+ end
56
+
57
+ it "should assign type attribute" do
58
+ javascript('jquery.js').should have_tag('script[@type=text/javascript]')
59
+ end
60
+
61
+ it "should assign src attribute" do
62
+ javascript('jquery.js').should have_tag('script[@src=jquery.js]')
63
+ end
64
+
65
+ it "should accept a hash of attributes" do
66
+ javascript('jquery.js', :foo => :bar).should have_tag('script[@foo=bar]')
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,8 @@
1
+
2
+ require 'rubygems'
3
+ require 'tagz/import'
4
+ require 'rspec_hpricot_matchers'
5
+
6
+ Spec::Runner.configure do |config|
7
+ config.include RspecHpricotMatchers
8
+ end
data/spec/tagz_spec.rb ADDED
@@ -0,0 +1,25 @@
1
+
2
+ describe Tagz do
3
+ describe "#tag" do
4
+ it "should return a simple tag when only a tag name is passed" do
5
+ tag(:div).should have_tag(:div)
6
+ end
7
+
8
+ it "should self-close appropriate tags automatically" do
9
+ tag(:br).should include('<br/>')
10
+ end
11
+
12
+ it "should allow a hash of attributes to be passed" do
13
+ tag(:input, :type => :text).should have_tag('input[@type=text]')
14
+ end
15
+
16
+ it "should allow contents to be passed" do
17
+ tag(:textarea, 'hello', :id => 'comments').should have_tag('textarea[@id=comments]', 'hello')
18
+ end
19
+
20
+ it "should mirror boolean attributes" do
21
+ tag(:input, :type => :checkbox, :checked => true).should have_tag('input[@checked=checked]')
22
+ tag(:input, :type => :checkbox, :checked => false).should_not have_tag('input[@checked=checked]')
23
+ end
24
+ end
25
+ end
data/tagz.gemspec ADDED
@@ -0,0 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{tagz}
5
+ s.version = "1.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["TJ Holowaychuk"]
9
+ s.date = %q{2009-05-08}
10
+ s.description = %q{Framework independant tag helpers}
11
+ s.email = %q{tj@vision-media.ca}
12
+ s.extra_rdoc_files = ["lib/tagz/buffer.rb", "lib/tagz/helpers.rb", "lib/tagz/import.rb", "lib/tagz/tagz.rb", "lib/tagz/version.rb", "lib/tagz.rb", "README.rdoc", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
13
+ s.files = ["History.rdoc", "lib/tagz/buffer.rb", "lib/tagz/helpers.rb", "lib/tagz/import.rb", "lib/tagz/tagz.rb", "lib/tagz/version.rb", "lib/tagz.rb", "Manifest", "Rakefile", "README.rdoc", "spec/buffer_spec.rb", "spec/helpers_spec.rb", "spec/spec_helper.rb", "spec/tagz_spec.rb", "tagz.gemspec", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
14
+ s.homepage = %q{http://github.com/visionmedia/tagz}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tagz", "--main", "README.rdoc"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{tagz}
18
+ s.rubygems_version = %q{1.3.3}
19
+ s.summary = %q{Framework independant tag helpers}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
+ s.add_runtime_dependency(%q<visionmedia-rext>, [">= 0", "= 0.1.0"])
27
+ s.add_development_dependency(%q<rspec_hpricot_matchers>, [">= 0", "= 1.0.0"])
28
+ else
29
+ s.add_dependency(%q<visionmedia-rext>, [">= 0", "= 0.1.0"])
30
+ s.add_dependency(%q<rspec_hpricot_matchers>, [">= 0", "= 1.0.0"])
31
+ end
32
+ else
33
+ s.add_dependency(%q<visionmedia-rext>, [">= 0", "= 0.1.0"])
34
+ s.add_dependency(%q<rspec_hpricot_matchers>, [">= 0", "= 1.0.0"])
35
+ end
36
+ end
data/tasks/docs.rake ADDED
@@ -0,0 +1,18 @@
1
+
2
+ desc 'Docs'
3
+ task :docs do
4
+ sh 'sdoc -N lib/tagz'
5
+ end
6
+
7
+ namespace :docs do
8
+
9
+ desc 'Remove rdoc products'
10
+ task :remove => [:clobber_docs]
11
+
12
+ desc 'Build docs, and open in browser for viewing (specify BROWSER)'
13
+ task :open => [:docs] do
14
+ browser = ENV["BROWSER"] || "safari"
15
+ sh "open -a #{browser} doc/index.html"
16
+ end
17
+
18
+ end
@@ -0,0 +1,3 @@
1
+
2
+ desc 'Build gemspec file'
3
+ task :gemspec => [:build_gemspec]
data/tasks/spec.rake ADDED
@@ -0,0 +1,25 @@
1
+
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Run all specifications"
5
+ Spec::Rake::SpecTask.new(:spec) do |t|
6
+ t.libs << "lib"
7
+ t.spec_opts = ["--color", "--require", "spec/spec_helper.rb"]
8
+ end
9
+
10
+ namespace :spec do
11
+
12
+ desc "Run all specifications verbosely"
13
+ Spec::Rake::SpecTask.new(:verbose) do |t|
14
+ t.libs << "lib"
15
+ t.spec_opts = ["--color", "--format", "specdoc", "--require", "spec/spec_helper.rb"]
16
+ end
17
+
18
+ desc "Run specific specification verbosely (specify SPEC)"
19
+ Spec::Rake::SpecTask.new(:select) do |t|
20
+ t.libs << "lib"
21
+ t.spec_files = [ENV["SPEC"]]
22
+ t.spec_opts = ["--color", "--format", "specdoc", "--require", "spec/spec_helper.rb"]
23
+ end
24
+
25
+ end
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: visionmedia-tagz
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - TJ Holowaychuk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-05-08 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: visionmedia-rext
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ - - "="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.0
27
+ version:
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec_hpricot_matchers
30
+ type: :development
31
+ version_requirement:
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: "0"
37
+ - - "="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.0.0
40
+ version:
41
+ description: Framework independant tag helpers
42
+ email: tj@vision-media.ca
43
+ executables: []
44
+
45
+ extensions: []
46
+
47
+ extra_rdoc_files:
48
+ - lib/tagz/buffer.rb
49
+ - lib/tagz/helpers.rb
50
+ - lib/tagz/import.rb
51
+ - lib/tagz/tagz.rb
52
+ - lib/tagz/version.rb
53
+ - lib/tagz.rb
54
+ - README.rdoc
55
+ - tasks/docs.rake
56
+ - tasks/gemspec.rake
57
+ - tasks/spec.rake
58
+ files:
59
+ - History.rdoc
60
+ - lib/tagz/buffer.rb
61
+ - lib/tagz/helpers.rb
62
+ - lib/tagz/import.rb
63
+ - lib/tagz/tagz.rb
64
+ - lib/tagz/version.rb
65
+ - lib/tagz.rb
66
+ - Manifest
67
+ - Rakefile
68
+ - README.rdoc
69
+ - spec/buffer_spec.rb
70
+ - spec/helpers_spec.rb
71
+ - spec/spec_helper.rb
72
+ - spec/tagz_spec.rb
73
+ - tagz.gemspec
74
+ - tasks/docs.rake
75
+ - tasks/gemspec.rake
76
+ - tasks/spec.rake
77
+ has_rdoc: false
78
+ homepage: http://github.com/visionmedia/tagz
79
+ post_install_message:
80
+ rdoc_options:
81
+ - --line-numbers
82
+ - --inline-source
83
+ - --title
84
+ - Tagz
85
+ - --main
86
+ - README.rdoc
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: "0"
94
+ version:
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: "1.2"
100
+ version:
101
+ requirements: []
102
+
103
+ rubyforge_project: tagz
104
+ rubygems_version: 1.2.0
105
+ signing_key:
106
+ specification_version: 3
107
+ summary: Framework independant tag helpers
108
+ test_files: []
109
+