taggart 0.0.6 → 0.0.7

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.
data/README.markdown CHANGED
@@ -126,6 +126,21 @@ Naturally they all also work with attributes.
126
126
  See the `spec/taggart_spec.rb` for more examples (until I have time to do a bigger-better-faster-example file).
127
127
 
128
128
 
129
+ Informational:
130
+ --------------
131
+ If you get lost in Taggart or if you're just curious about what Taggart
132
+ can do, I've created a few informational things for you. In the IRB
133
+ console you can now run:
134
+
135
+ ```ruby
136
+ Taggart.help # For generic information about Taggart (or Taggart.info)
137
+ Taggart.tags # For a list of different tags and other curious
138
+ things.
139
+ ```
140
+
141
+ There's also some constants that you can access, such as `VERSION`, and
142
+ tags, see the aforementioned `Taggart.help` and `Taggart.tags`.
143
+
129
144
  Background:
130
145
  -----------
131
146
  I have a lot of Ruby code that marks some String in an HTML tag, usually with a
@@ -164,6 +179,10 @@ Taggart is now active, which means you can play around.
164
179
  History
165
180
  -------
166
181
 
182
+ - Added informational Taggart.help and Taggart.tags.
183
+ - Moved several tags into arrays for easier reference.
184
+ - Created Taggart::VERSION and Taggart::BUILD for reference and DRYness.
185
+ - Changed some of the labels in the test file.
167
186
  - Added `<table>` to Array that creates single or multi row tables.
168
187
  - Added `<ol>` and `<ul>` tags to the Array so you can now generate lists in one fast action.
169
188
  - Added `<script>`-tag. You can now add `"my-script.js".script` and `"alert('Hello World!')".script`.
@@ -207,8 +226,8 @@ Feedback welcome!!
207
226
 
208
227
  Author: Jocke Selin <jocke@selincite.com> @jockeselin
209
228
 
210
- Date: 2012-03-14
229
+ Date: 2012-05-09
211
230
 
212
- Version: 0.0.6 Build 011
231
+ Version: 0.0.7 Build 012
213
232
 
214
233
  Github: <https://github.com/jocke/taggart>
data/lib/taggart.rb CHANGED
@@ -2,15 +2,153 @@
2
2
  # ===========================================
3
3
  # Author: Jocke Selin <jocke@selincite.com>
4
4
  # @jockeselin
5
- # Date: 2012-03-14
6
- # Version: 0.0.6 Build 011
5
+ # Date: 2012-05-09
6
+ # Version: 0.0.7 Build 012
7
7
  # Github: https://github.com/jocke/taggart
8
8
 
9
9
  module Taggart
10
+
11
+ VERSION = '0.0.7'
12
+ BUILD = '012'
13
+
14
+ def self.help
15
+ puts "Welcome to Taggart (#{VERSION} Build #{BUILD})"
16
+ puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
17
+ puts "Taggart is a library that allows you to easily"
18
+ puts "turn a string (or array) into an HTML tag or more tags"
19
+ puts "by simply calling the 'tag-method' on the string."
20
+ puts "Examples:"
21
+ puts " 'Hello World!'.h1 --> <h1>Hello World!</h1>'"
22
+ puts " 'Important'.span(class: :important) "
23
+ puts " --> <span class=\"important\">Important</span>"
24
+ puts " 'Break'.br --> Break<br />"
25
+ puts " %w(a b c).ul --> <ul><li>a</li><li>b</li><li>c</li></ul>"
26
+ puts "\nFor a list of tags run Taggart.tags"
27
+ puts "Other informational stuff:"
28
+ puts " - Version: Taggart::VERSION"
29
+ puts " - Build: Taggart::BUILD"
30
+ puts "\nPlease note that Taggart is considered 'experimental' (but"
31
+ puts "fairly stable) and in early development, so please help make"
32
+ puts "Taggart better; send suggestions, bug fixes, improvements, etc"
33
+ puts "to the author, and do fork the code and send pull requests if"
34
+ puts "you've made an improvement - Thanks!"
35
+ puts "\n\nAuthor: Jocke Selin <jocke@selincite.com> @jockeselin"
36
+ end
37
+
38
+ def self.info
39
+ self.help
40
+ end
41
+
42
+ def self.tags
43
+ puts "Taggart's tags:"
44
+ puts "~~~~~~~~~~~~~~~"
45
+ puts "This is a list of the tags that Taggart can generate, for your pleasure"
46
+ puts "\nStandard tags:"
47
+ puts "--------------"
48
+ puts "These tags have a start- and end-tag and the take any number of"
49
+ puts "attributes in the form of a hash with key-value pairs."
50
+ output_tags(Taggart::String::STANDARD_TAGS)
51
+ puts "\nSpecial tags"
52
+ puts "------------"
53
+ puts "These tags behave like the Standard tags, but there's already a"
54
+ puts "method defined for the String instance so these tags have to be"
55
+ puts "treated in a slightly special way, in that the tag that's ouputted"
56
+ puts "doesn't have the same method name. I.e to output <tr> you call '._tr'"
57
+ puts "however, you don't really need to bother with knowing this as Taggart"
58
+ puts "does some magic behind the scenes to determine wheter you are asking"
59
+ puts "for a Taggart tag or the original method."
60
+ Taggart::String::SPECIAL_TAGS.sort.each do |tag_pair|
61
+ puts " Tag: #{('<' + tag_pair[0] + '>').ljust(6)} Method: .#{tag_pair[1]}"
62
+ end
63
+ puts "\nSingle Tags"
64
+ puts "-------------"
65
+ puts "Single tags are tags that do not an end tag, <br> is one such tag"
66
+ puts "In Taggart Single Tags behave just like Standard tags; you can"
67
+ puts "add attributes to them."
68
+ output_tags(Taggart::String::SINGLE_TAGS)
69
+ puts "\nSmart Tags"
70
+ puts "------------"
71
+ puts "These tags go to the gifted class and can speak elvish. They know what"
72
+ puts "you want from them. They don't behave like the other ones in the sense"
73
+ puts "that you have a string that you want to turn into something, not just a"
74
+ puts "simple tag."
75
+ puts "Here's the pupils of the gifted class:"
76
+ puts ".img - Turns a URL to an image into an img tag."
77
+ puts ".href - turns a URL into the href-portion of an A-tag, takes the link"
78
+ puts " content as a parameter, and also other attributes as 2nd argument."
79
+ puts ".script - Either turns a URL to a script file into a <script src..></script>"
80
+ puts " tag, or embeds a script source in <script></script> tags. Smart!"
81
+ puts "\nArray tags"
82
+ puts "----------"
83
+ puts "The Array Tags generate HTML tags out of a list of strings in an array."
84
+ puts "For example, you can turn an array into list items by callin the .li-"
85
+ puts "method on the array."
86
+ puts "You can also pass attributes to the tags as with the Standard Tags"
87
+ puts "The tags are:"
88
+ puts " td li"
89
+ puts "\nSmart Array Tags"
90
+ puts "-----------------"
91
+ puts "The Smart Array Tags are all a bit more smartly dressed than the"
92
+ puts "proletarian Array Tags. Namely, they figure out what you do."
93
+ puts "Here's the honour roll"
94
+ puts "Method Tag Special powers"
95
+ puts ".ol - Turns an array into an ordered list, wrapping the array elements"
96
+ puts " in <li> tags so you get your awesome list in one go"
97
+ puts ".ul - The almost identical twin of .ol"
98
+ puts ".tr - Like .ol and .li, but wraps the array in <tr> tags with every"
99
+ puts " element wrapped in a <td> tag."
100
+ puts ".table - The smartest of them all. Creates a complete table from a, one or"
101
+ puts " two dimensional Array. Each array is wrapped in the <tr> tag with"
102
+ puts " every element in the Array in <td> tags. It's all finished off"
103
+ puts " with a decoration of <table>."
104
+ puts "\nTag arrays and methods"
105
+ puts "----------------------"
106
+ puts "You can access the following arrays and methods containing the tags."
107
+ puts "Tags Array Method"
108
+ puts "Standard tags Taggart::String::STANDARD_TAGS Taggart.standard_tags"
109
+ puts "Special tags Taggart::String::SPECIAL_TAGS Taggart.special_tags"
110
+ puts "Single tags Taggart::String::SINGLE_TAGS Taggart.single_tags"
111
+ end
112
+
113
+
114
+ def self.standard_tags
115
+ Taggart::String::STANDARD_TAGS
116
+ end
117
+
118
+ def self.special_tags
119
+ Taggart::String::SPECIAL_TAGS
120
+ end
121
+
122
+ def self.single_tags
123
+ Taggart::String::SINGLE_TAGS
124
+ end
125
+
126
+
127
+ private
128
+
129
+ def self.output_tags(tags)
130
+ columns = 4
131
+ padding = 14
132
+
133
+ print " "
134
+ tags.sort.each_with_index do |tag, index|
135
+ index += 1
136
+ print "#{tag.ljust(padding)}"
137
+ print "\n " if ((index % columns) == 0) and (index > 0)
138
+ end
139
+ puts "\n\n"
140
+ end
141
+
10
142
  module String
11
143
 
12
144
  DEBUG = false
13
-
145
+ STANDARD_TAGS = %w{ h1 h2 h3 h4 h5 h6 a title html head table thead tfoot button fieldset form label
146
+ select legend option textarea body blockquote q tbody th td tfoot style div
147
+ span abbr acronym address dd dl dt li ol caption ul em strong p tt pre sup del
148
+ small cite code } # This is not a complete list - please tweet or pull req.
149
+ SPECIAL_TAGS = [['tr', '_tr'], ['sub', '_sub']]
150
+ TAGS = STANDARD_TAGS + SPECIAL_TAGS
151
+ SINGLE_TAGS = %w{br hr input link meta}
14
152
 
15
153
  # Redefining <tr> to work with both translate-tr and tag-tr
16
154
  def dual_tr(*args)
@@ -60,11 +198,11 @@ module Taggart
60
198
  "<script#{option_str}>#{self}</script>"
61
199
  end
62
200
  end
63
-
64
-
201
+
202
+
65
203
  private
66
-
67
-
204
+
205
+
68
206
  # Parses the options for the tags
69
207
  def parse_options(args)
70
208
  return "" if args.nil?
@@ -106,13 +244,7 @@ module Taggart
106
244
  end
107
245
 
108
246
 
109
- standard_tags = %w{ h1 h2 h3 h4 h5 h6 a title html head table thead tfoot button fieldset form label
110
- select legend option textarea body blockquote q tbody th td tfoot style div
111
- span abbr acronym address dd dl dt li ol caption ul em strong p tt pre sup del
112
- small cite code } # This is not a complete list - please tweet or pull req.
113
- special_tags = [['tr', '_tr'], ['sub', '_sub']]
114
- tags = standard_tags + special_tags
115
- tags.each do |tag|
247
+ TAGS.each do |tag|
116
248
  if tag.class.name == 'String'
117
249
  self.attribute_tag(tag)
118
250
  else
@@ -120,7 +252,8 @@ module Taggart
120
252
  end
121
253
  end
122
254
 
123
- %w{br hr input link meta}.each do |tag|
255
+
256
+ SINGLE_TAGS.each do |tag|
124
257
  self.single_attribute_tag(tag)
125
258
  end
126
259
 
data/spec/taggart_spec.rb CHANGED
@@ -1,7 +1,31 @@
1
- # Run with rake or with: rspec -fd -c taggart_spec.rb
1
+ # Run with rake or with: rspec -fd -c taggart_spec.rb
2
2
 
3
3
  require 'taggart.rb'
4
4
 
5
+ describe Taggart, "informational" do
6
+
7
+ it "should respond to help" do
8
+ Taggart.should respond_to(:help)
9
+ end
10
+
11
+ it "should respond to tags" do
12
+ Taggart.should respond_to(:tags)
13
+ end
14
+
15
+ it "returns an array when asked for standard tags" do
16
+ Taggart.standard_tags.should be_an(Array)
17
+ end
18
+
19
+ it "returns an array when asked for special tags" do
20
+ Taggart.special_tags.should be_an(Array)
21
+ end
22
+
23
+ it "returns an array when asked for single tags" do
24
+ Taggart.single_tags.should be_an(Array)
25
+ end
26
+
27
+ end
28
+
5
29
  describe Taggart::String, "#attribute_tags" do
6
30
 
7
31
  it "returns a standard tag without any attributes" do
@@ -35,23 +59,23 @@ end
35
59
 
36
60
  describe Taggart::Array, "#array_attribute_tag" do
37
61
 
38
- it "returns a the array elements as tags without any attributes" do
62
+ it "returns the elements in the array wrapped with li-tags when calling .li method" do
39
63
  %w{one two three}.li.should == "<li>one</li><li>two</li><li>three</li>"
40
64
  end
41
65
 
42
- it "returns a the array elements as tags with one attribute" do
66
+ it "returns the elements with an attribute wrapped in td when calling the td method on the array" do
43
67
  %w{one two three}.td(class: :programmers).should == "<td class=\"programmers\">one</td><td class=\"programmers\">two</td><td class=\"programmers\">three</td>"
44
68
  end
45
69
 
46
- it "returns a the array elements as tags with two attribute" do
70
+ it "returns the array elements wrapped in td tags and two attributes when called with two attribute parameters" do
47
71
  %w{one two three}.td(class: :programmers, id: :unpossible).should == "<td class=\"programmers\" id=\"unpossible\">one</td><td class=\"programmers\" id=\"unpossible\">two</td><td class=\"programmers\" id=\"unpossible\">three</td>"
48
72
  end
49
73
 
50
- it "returns a the array symbol elements as tags without attributes" do
74
+ it "returns the elements in the array wrapped with td when calling the td method" do
51
75
  [:one, :two, :three].td.should == "<td>one</td><td>two</td><td>three</td>"
52
76
  end
53
77
 
54
- it "returns a the nested array elements as tags without attributes" do
78
+ it "renders a nested set of td-tags when the td method is called no a nested array" do
55
79
  [:one, [:nine, :eight, :seven], :two, :three].td.should == "<td>one</td><td><td>nine</td><td>eight</td><td>seven</td></td><td>two</td><td>three</td>"
56
80
  end
57
81
 
@@ -139,7 +163,7 @@ describe Taggart::Array, "#array_attribute_tag" do
139
163
  end
140
164
 
141
165
 
142
- describe Taggart::String, "Special tags" do
166
+ describe Taggart::String, "Smart tags" do
143
167
  context "href tags" do
144
168
  it "renders a basic <a href>-tag." do
145
169
  "/hello/world.html".href("Hello World").should == "<a href=\"/hello/world.html\">Hello World</a>"
@@ -243,4 +267,4 @@ describe Taggart::Array, "#array_attribute_tag" do
243
267
  end
244
268
  end
245
269
  end
246
- end
270
+ end
data/taggart.gemspec CHANGED
@@ -1,15 +1,18 @@
1
+ require 'date'
2
+ require './lib/taggart.rb'
3
+
1
4
  Gem::Specification.new do |s|
2
- s.name = "taggart"
3
- s.version = "0.0.6"
4
- s.date = "2012-03-14"
5
- s.summary = "Tag Strings with HTML; 'Hello World'.h1"
6
- s.description = "Tag your strings in a simple and easy way by running \"Hello World\".h1 for example."
7
- s.authors = ["Jocke Selin"]
8
- s.email = ["jocke@selincite.com"]
9
- s.homepage = "https://github.com/jocke/taggart"
5
+ s.name = "taggart"
6
+ s.version = Taggart::VERSION
7
+ s.date = Date.today.strftime('%Y-%m-%d')
8
+ s.summary = "Tag Strings with HTML; 'Hello World'.h1"
9
+ s.description = "Tag your strings in a simple and easy way by running \"Hello World\".h1 for example."
10
+ s.authors = ["Jocke Selin"]
11
+ s.email = ["jocke@selincite.com"]
12
+ s.homepage = "https://github.com/jocke/taggart"
10
13
  s.require_paths = ["lib"]
11
- s.files = ["lib/taggart.rb", "Rakefile", "taggart.gemspec", "README.markdown"]
12
- s.test_files = ["spec/taggart_spec.rb"]
14
+ s.files = ["lib/taggart.rb", "Rakefile", "taggart.gemspec", "README.markdown"]
15
+ s.test_files = ["spec/taggart_spec.rb"]
13
16
  s.add_development_dependency "rspec"
14
17
  s.post_install_message = "Thanks for showing interest in Taggart! Please provide feedback to jocke@selincite.com!"
15
- end
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taggart
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-14 00:00:00.000000000 Z
12
+ date: 2012-05-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70344203614200 !ruby/object:Gem::Requirement
16
+ requirement: &70207965639160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70344203614200
24
+ version_requirements: *70207965639160
25
25
  description: Tag your strings in a simple and easy way by running "Hello World".h1
26
26
  for example.
27
27
  email: