taggart 0.0.4 → 0.0.5
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 +195 -0
- data/lib/taggart.rb +29 -76
- data/spec/taggart_spec.rb +14 -0
- data/taggart.gemspec +4 -4
- metadata +6 -6
- data/README +0 -57
data/README.markdown
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
Taggart allows you to tag Strings with HTML
|
|
2
|
+
===========================================
|
|
3
|
+
How and what
|
|
4
|
+
------------
|
|
5
|
+
```ruby
|
|
6
|
+
"Hello World!".h1
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
returns
|
|
10
|
+
|
|
11
|
+
```html
|
|
12
|
+
<h1>Hello World!</h1>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
or try (in bad typographical taste)
|
|
16
|
+
|
|
17
|
+
```ruby
|
|
18
|
+
"Important!".em.strong
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
to get
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<em><strong>Important!</em></strong>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
or do some more nesting
|
|
28
|
+
|
|
29
|
+
```ruby
|
|
30
|
+
("Label".td + "Value".td).tr.table
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
to render a small table
|
|
34
|
+
|
|
35
|
+
```html
|
|
36
|
+
<table><tr><td>Label</td><td>Value</td></tr></table>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Add HTML attributes as Ruby parameters.
|
|
40
|
+
|
|
41
|
+
```ruby
|
|
42
|
+
"hello".span(class: 'stuff', id: 'thing')
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
to get a nice HTML string like this
|
|
46
|
+
|
|
47
|
+
```html
|
|
48
|
+
<span class="stuff" id="thing">hello</span>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
You can also use arrays, how about this table?
|
|
52
|
+
|
|
53
|
+
```ruby
|
|
54
|
+
(%w(r1c1 r1c2 r1c3).td.tr + %w(r2c1 r2c2 r2c3).td.tr).table
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
will produce this HTML (author's line breaks and indentation)
|
|
58
|
+
|
|
59
|
+
```html
|
|
60
|
+
<table>
|
|
61
|
+
<tr>
|
|
62
|
+
<td>r1c1</td>
|
|
63
|
+
<td>r1c2</td>
|
|
64
|
+
<td>r1c3</td>
|
|
65
|
+
</tr>
|
|
66
|
+
<tr>
|
|
67
|
+
<td>r2c1</td>
|
|
68
|
+
<td>r2c2</td>
|
|
69
|
+
<td>r2c3</td>
|
|
70
|
+
</tr>
|
|
71
|
+
</table>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Naturally we can do single tags too.
|
|
75
|
+
|
|
76
|
+
```ruby
|
|
77
|
+
"Gimme a".br
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
will return.
|
|
81
|
+
|
|
82
|
+
```html
|
|
83
|
+
Gimme a<br />
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Also try some of the 'cleverness', for example calling `.script` on a `.js` file will yield a different result compared to running it on a Javascript.
|
|
87
|
+
Like this:
|
|
88
|
+
|
|
89
|
+
```ruby
|
|
90
|
+
"alert('This string will pop up an alert!')".script
|
|
91
|
+
```
|
|
92
|
+
gives you
|
|
93
|
+
```html
|
|
94
|
+
<script id="pants_pants" type="text/javascript">alert('This string will pop up an alert!')</script>"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
whereas this string
|
|
98
|
+
|
|
99
|
+
```ruby
|
|
100
|
+
"/script/awesomes_script.js".script
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
gives you this
|
|
104
|
+
|
|
105
|
+
```html
|
|
106
|
+
"<script type="text/javascript" src="/script/awesomes_script.js"></script>"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Naturally this also works with attributes.
|
|
110
|
+
|
|
111
|
+
See the `spec/taggart_spec.rb` for more examples (until I have time to do a bigger-better-faster-example file).
|
|
112
|
+
|
|
113
|
+
Background:
|
|
114
|
+
-----------
|
|
115
|
+
I have a lot of Ruby code that marks some String in an HTML tag, usually with a
|
|
116
|
+
specific CSS class. Or perhaps a link or so.
|
|
117
|
+
It's not particularly nice to write `"<strong>#{my_variable}</strong>"`. The more
|
|
118
|
+
complex the Ruby code is, the worse it is to have `"`, `#`, `{` or `}` soiling the code.
|
|
119
|
+
I was looking at the code and I thought, wouldn't it be nice if I could just tell that piece
|
|
120
|
+
of String that it's supposed to be a `<span>` or some other tag. One could simply
|
|
121
|
+
write `my_variable.strong` to get the job done. **Taggart** was born.
|
|
122
|
+
|
|
123
|
+
The Idea
|
|
124
|
+
--------
|
|
125
|
+
The idea was to simplify the code and make it easier and faster for me to add arbitrary HTML into my
|
|
126
|
+
non-HTML code. I wanted to stop breaking my fingers trying to get the _quote-string-hash-curlybrackets-code-curlybrackets-morestrings-quote_
|
|
127
|
+
right on my keyboard.
|
|
128
|
+
It was _never_ intended to be a full-fledged HTML page renderer. If you want to use it for that, I'd love to see the result, though.
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
Installation:
|
|
132
|
+
-------------
|
|
133
|
+
Install the gem:
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
gem install taggart
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Then load Taggart with:
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
require 'taggart'
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Taggart is now active, which means you can play around.
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
History
|
|
149
|
+
-------
|
|
150
|
+
- Added <script>-tag. You can now add ``"my-script.js".script`` and ``"alert('Hello World!')".script`.
|
|
151
|
+
- Added several tags (still not a complete list, tweet or send a pull request for more tags.)
|
|
152
|
+
- Removed several 'if DEBUG' lines
|
|
153
|
+
- Removed examples and most comments from taggart.rb file
|
|
154
|
+
- Converted the README to markdown for a bit better formatting fun.
|
|
155
|
+
- Added `.href` and `.img` feature.
|
|
156
|
+
- Created Gem
|
|
157
|
+
- Pushed code to Git.
|
|
158
|
+
- Created test Gem.
|
|
159
|
+
- Added files to create Gem and reorganised the file structure.
|
|
160
|
+
- Made `dual_sub()` pass all the tests, and added the examples from `.tr` (translate) Ruby docs to the test.
|
|
161
|
+
- More work on the "dynamic namespace clash resolver", in other words, `.tr` and sub work in both classic and Taggart way.
|
|
162
|
+
- Initial version of "dynamic namespace clash resolver" to fix issues with `.tr`.
|
|
163
|
+
- Added basic RSpec test.
|
|
164
|
+
- Added namespacing for Strings and Arrays.
|
|
165
|
+
- Implemented arrays; `["Label", "Value"].td.tr.table` and `["First", "Second", "Third"].li.ol`.
|
|
166
|
+
- Tidied up things a bit.
|
|
167
|
+
- Added a version of attributes `"Red".span(class: 'red')`.
|
|
168
|
+
- First version. Basic tags.
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
Future???
|
|
172
|
+
---------
|
|
173
|
+
With your blessing. Like Ozzy said; _"The crazier you get, the crazier Ozzy gets!"_, or something.
|
|
174
|
+
|
|
175
|
+
* Potential validations, could check file, size, etc
|
|
176
|
+
* Switch between HTML and XHTML.
|
|
177
|
+
* Full fledged examples.
|
|
178
|
+
* Please send suggestions.
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
Issues:
|
|
182
|
+
-------
|
|
183
|
+
- `"hello".sub('world', 'world')` returns `<sub world world>hello</sub>`. Not really perfect.
|
|
184
|
+
- Please help me test it out.
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
Feedback welcome!!
|
|
188
|
+
|
|
189
|
+
Author: Jocke Selin <jocke@selincite.com> @jockeselin
|
|
190
|
+
|
|
191
|
+
Date: 2012-03-09
|
|
192
|
+
|
|
193
|
+
Version: 0.0.5 Build 010
|
|
194
|
+
|
|
195
|
+
Github: <https://github.com/jocke/taggart>
|
data/lib/taggart.rb
CHANGED
|
@@ -1,74 +1,22 @@
|
|
|
1
|
-
# Taggart
|
|
2
|
-
#
|
|
3
|
-
# Background:
|
|
4
|
-
# It's not particularly nice to write "<strong>#{my_variable}</strong>" when
|
|
5
|
-
# One could simply write my_variable.strong. The more complex the Ruby code
|
|
6
|
-
# is, the nicer it is to not have ", #, { or } soiling the code.
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
# Playtime:
|
|
10
|
-
# Install the gem:
|
|
11
|
-
# gem install taggart
|
|
12
|
-
# Then load Taggart with:
|
|
13
|
-
# require 'taggart'
|
|
14
|
-
# Taggart is now active, which means you can play around.
|
|
15
|
-
# Try:
|
|
16
|
-
# "Hello World".h1
|
|
17
|
-
# Or (typographically bad taste):
|
|
18
|
-
# "Important".em.strong
|
|
19
|
-
# Or do some proper nesting:
|
|
20
|
-
# ("Label".td + "Value".td)._tr.table
|
|
21
|
-
# Add attributes
|
|
22
|
-
# "hello".span(class: 'stuff', id: 'thing')
|
|
23
|
-
# How about a table using arrays?:
|
|
24
|
-
# (%w(r1c1 r1c2 r1c3).td.tr + %w(r2c1 r2c2 r2c3).td.tr).table
|
|
25
|
-
# We can also do single tags.
|
|
26
|
-
# "Gimme a".br
|
|
27
|
-
#
|
|
28
|
-
# Issues:
|
|
29
|
-
# - "hello".sub('world', 'world') returns
|
|
30
|
-
# "<sub world world>hello</sub>"
|
|
31
|
-
# Not really perfect
|
|
32
|
-
#
|
|
33
|
-
# Future??? (with your blessing)
|
|
34
|
-
# - Potential validations - could check file, size, etc
|
|
35
|
-
#
|
|
36
|
-
# History
|
|
37
|
-
# - Added href and img feature.
|
|
38
|
-
# - Created Gem
|
|
39
|
-
# - Pushed code to Git.
|
|
40
|
-
# - Created test Gem.
|
|
41
|
-
# - Added files to create Gem and reorganised the file structure.
|
|
42
|
-
# - Made dual_sub pass all the tests, and added the examples from .tr (translate) Ruby docs to the test.
|
|
43
|
-
# - More work on the "dynamic namespace clash resolver", in other words, tr and sub work in both classic and Taggart way.
|
|
44
|
-
# - Initial version of "dynamic namespace clash resolver" to fix issues with .tr
|
|
45
|
-
# - Added basic RSpec test.
|
|
46
|
-
# - Added namespacing for Strings and Arrays
|
|
47
|
-
# - Implemented arrays; ["Label", "Value"].td.tr.table and ["First", "Second", "Third"].li.ol
|
|
48
|
-
# - Tidied up things a bit.
|
|
49
|
-
# - Added a version of attributes ("Red".span(class: 'red'))
|
|
50
|
-
# - First version. Basic tags.
|
|
51
|
-
#
|
|
52
|
-
# Feedback welcome!!
|
|
53
|
-
#
|
|
1
|
+
# Taggart allows you to tag Strings with HTML
|
|
2
|
+
# ===========================================
|
|
54
3
|
# Author: Jocke Selin <jocke@selincite.com>
|
|
55
|
-
#
|
|
56
|
-
#
|
|
4
|
+
# @jockeselin
|
|
5
|
+
# Date: 2012-03-09
|
|
6
|
+
# Version: 0.0.5 Build 010
|
|
57
7
|
# Github: https://github.com/jocke/taggart
|
|
58
8
|
|
|
59
9
|
module Taggart
|
|
60
10
|
module String
|
|
61
11
|
|
|
62
12
|
DEBUG = false
|
|
13
|
+
|
|
63
14
|
|
|
64
15
|
# Redefining <tr> to work with both translate-tr and tag-tr
|
|
65
16
|
def dual_tr(*args)
|
|
66
|
-
puts "Args size: #{args.size}" if DEBUG
|
|
67
17
|
if ((args.size == 2) && (args[0].is_a? String) && (args[1].is_a? String))
|
|
68
|
-
puts "Send '#{args[0]}', '#{args[1]}' to translate-tr" if DEBUG
|
|
69
18
|
self.translate(args[0], args[1])
|
|
70
19
|
else
|
|
71
|
-
puts "Send to tag-tr" if DEBUG
|
|
72
20
|
self._tr(args.first)
|
|
73
21
|
end
|
|
74
22
|
end
|
|
@@ -76,14 +24,11 @@ module Taggart
|
|
|
76
24
|
|
|
77
25
|
# Redefining <sub> to work with both substitute-sub and tag-sub
|
|
78
26
|
def dual_sub(*args, &block)
|
|
79
|
-
puts "Args size: #{args.size}" if DEBUG
|
|
80
27
|
if (args[0].is_a? Hash)
|
|
81
|
-
puts "Send to tag-sub" if DEBUG
|
|
82
28
|
self._sub(args.first)
|
|
83
29
|
elsif args.empty?
|
|
84
30
|
self._sub
|
|
85
31
|
else
|
|
86
|
-
puts "Send '#{args[0]}', '#{args[1]}' to substitute-sub" if DEBUG
|
|
87
32
|
if block_given?
|
|
88
33
|
self.substitute(args[0]) { |*args| block.call(*args) }
|
|
89
34
|
else
|
|
@@ -105,12 +50,23 @@ module Taggart
|
|
|
105
50
|
"<img#{option_str} />"
|
|
106
51
|
end
|
|
107
52
|
|
|
53
|
+
|
|
54
|
+
def script(*args)
|
|
55
|
+
if self[-3, 3] == '.js' # We've got a Jabbarscript file (could/should cater for all script types. VBScript, heheeh!)
|
|
56
|
+
option_str = parse_options(args << {type: "text/javascript", src: self})
|
|
57
|
+
"<script#{option_str}></script>"
|
|
58
|
+
else
|
|
59
|
+
option_str = parse_options(args << {type: "text/javascript"})
|
|
60
|
+
"<script#{option_str}>#{self}</script>"
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
108
64
|
|
|
109
65
|
private
|
|
66
|
+
|
|
110
67
|
|
|
111
68
|
# Parses the options for the tags
|
|
112
69
|
def parse_options(args)
|
|
113
|
-
# puts "parse_options: args #{args.inspect})" if DEBUG
|
|
114
70
|
return "" if args.nil?
|
|
115
71
|
output = []
|
|
116
72
|
args.each do |argument|
|
|
@@ -122,7 +78,7 @@ module Taggart
|
|
|
122
78
|
output << "#{key.to_s}=\"#{value}\""
|
|
123
79
|
end
|
|
124
80
|
else
|
|
125
|
-
|
|
81
|
+
raise "Argument of type #{argument.class.name} is not implemented"
|
|
126
82
|
end
|
|
127
83
|
end
|
|
128
84
|
return "" if output.empty?
|
|
@@ -132,7 +88,6 @@ module Taggart
|
|
|
132
88
|
|
|
133
89
|
# Defines a single tag, such as <br /> or <hr />
|
|
134
90
|
def self.single_attribute_tag(tag)
|
|
135
|
-
puts "Defining single-tag '#{tag}'" if DEBUG
|
|
136
91
|
define_method(tag) do |*args|
|
|
137
92
|
option_str = parse_options(args)
|
|
138
93
|
"#{self}<#{tag}#{option_str} />"
|
|
@@ -151,10 +106,12 @@ module Taggart
|
|
|
151
106
|
end
|
|
152
107
|
|
|
153
108
|
|
|
154
|
-
standard_tags
|
|
155
|
-
|
|
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']]
|
|
156
114
|
tags = standard_tags + special_tags
|
|
157
|
-
puts "Tag definitions: #{tags.inspect}" if DEBUG
|
|
158
115
|
tags.each do |tag|
|
|
159
116
|
if tag.class.name == 'String'
|
|
160
117
|
self.attribute_tag(tag)
|
|
@@ -163,7 +120,7 @@ module Taggart
|
|
|
163
120
|
end
|
|
164
121
|
end
|
|
165
122
|
|
|
166
|
-
%w{br hr}.each do |tag|
|
|
123
|
+
%w{br hr input link meta}.each do |tag|
|
|
167
124
|
self.single_attribute_tag(tag)
|
|
168
125
|
end
|
|
169
126
|
|
|
@@ -174,16 +131,15 @@ module Taggart
|
|
|
174
131
|
|
|
175
132
|
DEBUG = false
|
|
176
133
|
|
|
134
|
+
|
|
177
135
|
# Defines a standard tag that can create attributes
|
|
178
136
|
def self.array_attribute_tag(tag, tag_name = nil)
|
|
179
137
|
tag_name ||= tag
|
|
180
138
|
puts "Defining array tag '#{(tag + "',").ljust(12)} with method name: '#{tag_name}'" if DEBUG
|
|
181
139
|
define_method(tag_name) do |*args|
|
|
182
140
|
args = args.first if args # Only using the first of the array
|
|
183
|
-
puts "Array:#{tag_name} (with args #{args.inspect})" if DEBUG
|
|
184
141
|
result = []
|
|
185
142
|
self.each do |object|
|
|
186
|
-
puts "Object: #{object.inspect} (Type: #{object.class.name})" if DEBUG
|
|
187
143
|
if object.is_a? String
|
|
188
144
|
result << object.send(tag_name.to_sym, args)
|
|
189
145
|
elsif object.is_a? Symbol
|
|
@@ -196,11 +152,8 @@ module Taggart
|
|
|
196
152
|
end
|
|
197
153
|
end
|
|
198
154
|
|
|
199
|
-
|
|
200
|
-
#
|
|
201
|
-
# [:aaaa, [:bbb, :ccc, :ddd], :fff, :ggg].td
|
|
202
|
-
# ["Joe", "Marcus", "Chris", "Jim", "Aaron"]
|
|
203
|
-
# %w{One Two Three Four}.td(class: :numbers)
|
|
155
|
+
|
|
156
|
+
# Defines tags for the Array class.
|
|
204
157
|
%w{td li}.each do |tag|
|
|
205
158
|
self.array_attribute_tag(tag)
|
|
206
159
|
end
|
|
@@ -227,4 +180,4 @@ end
|
|
|
227
180
|
|
|
228
181
|
class Array
|
|
229
182
|
include Taggart::Array
|
|
230
|
-
end
|
|
183
|
+
end
|
data/spec/taggart_spec.rb
CHANGED
|
@@ -175,6 +175,20 @@ describe Taggart::Array, "#array_attribute_tag" do
|
|
|
175
175
|
end
|
|
176
176
|
end
|
|
177
177
|
|
|
178
|
+
context "script tags" do
|
|
179
|
+
it "should render a script tag with src-attribute when the string ends in .js" do
|
|
180
|
+
"/jabbarscript/waste_cpu_cycles.js".script.should == "<script type=\"text/javascript\" src=\"/jabbarscript/waste_cpu_cycles.js\"></script>"
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it "should render a script tag with src-attribute and an id-attribute when the string ends in .js" do
|
|
184
|
+
"/jabbarscript/fancy_pants.js".script(id: 'fancy_fancy').should == "<script id=\"fancy_fancy\" type=\"text/javascript\" src=\"/jabbarscript/fancy_pants.js\"></script>"
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
it "should render a script tag with when the string does not ends in .js" do
|
|
188
|
+
"document.write(\"Hello World!\");".script(id: 'pants_pants').should == "<script id=\"pants_pants\" type=\"text/javascript\">document.write(\"Hello World!\");</script>"
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
178
192
|
context "combinations" do
|
|
179
193
|
it "renders a clickable image" do
|
|
180
194
|
"/path/to/img.png".img({class: :thumbnail}).a(href: '/hello/world.html').should == "<a href=\"/hello/world.html\"><img class=\"thumbnail\" src=\"/path/to/img.png\" /></a>"
|
data/taggart.gemspec
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = "taggart"
|
|
3
|
-
s.version = "0.0.
|
|
4
|
-
s.date = "2012-03-
|
|
5
|
-
s.summary = "
|
|
3
|
+
s.version = "0.0.5"
|
|
4
|
+
s.date = "2012-03-09"
|
|
5
|
+
s.summary = "Tag Strings with HTML; 'Hello World'.h1"
|
|
6
6
|
s.description = "Tag your strings in a simple and easy way by running \"Hello World\".h1 for example."
|
|
7
7
|
s.authors = ["Jocke Selin"]
|
|
8
8
|
s.email = ["jocke@selincite.com"]
|
|
9
9
|
s.homepage = "https://github.com/jocke/taggart"
|
|
10
10
|
s.require_paths = ["lib"]
|
|
11
|
-
s.files = ["lib/taggart.rb", "Rakefile", "taggart.gemspec", "README"]
|
|
11
|
+
s.files = ["lib/taggart.rb", "Rakefile", "taggart.gemspec", "README.markdown"]
|
|
12
12
|
s.test_files = ["spec/taggart_spec.rb"]
|
|
13
13
|
s.add_development_dependency "rspec"
|
|
14
14
|
s.post_install_message = "Thanks for showing interest in Taggart! Please provide feedback to jocke@selincite.com!"
|
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.
|
|
4
|
+
version: 0.0.5
|
|
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-
|
|
12
|
+
date: 2012-03-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rspec
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70190373434460 !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: *
|
|
24
|
+
version_requirements: *70190373434460
|
|
25
25
|
description: Tag your strings in a simple and easy way by running "Hello World".h1
|
|
26
26
|
for example.
|
|
27
27
|
email:
|
|
@@ -33,7 +33,7 @@ files:
|
|
|
33
33
|
- lib/taggart.rb
|
|
34
34
|
- Rakefile
|
|
35
35
|
- taggart.gemspec
|
|
36
|
-
- README
|
|
36
|
+
- README.markdown
|
|
37
37
|
- spec/taggart_spec.rb
|
|
38
38
|
homepage: https://github.com/jocke/taggart
|
|
39
39
|
licenses: []
|
|
@@ -59,7 +59,7 @@ rubyforge_project:
|
|
|
59
59
|
rubygems_version: 1.8.16
|
|
60
60
|
signing_key:
|
|
61
61
|
specification_version: 3
|
|
62
|
-
summary:
|
|
62
|
+
summary: Tag Strings with HTML; 'Hello World'.h1
|
|
63
63
|
test_files:
|
|
64
64
|
- spec/taggart_spec.rb
|
|
65
65
|
has_rdoc:
|
data/README
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
Taggart is a proof-of-concept to "decorate" strings with HTML tags.
|
|
2
|
-
===================================================================
|
|
3
|
-
Background:
|
|
4
|
-
It's not particularly nice to write "<strong>#{my_variable}</strong>" when
|
|
5
|
-
One could simply write my_variable.strong. The more complex the Ruby code
|
|
6
|
-
is, the nicer it is to not have ", #, { or } soiling the code.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Playtime:
|
|
10
|
-
Install the gem:
|
|
11
|
-
gem install taggart
|
|
12
|
-
Then load Taggart with:
|
|
13
|
-
require 'taggart'
|
|
14
|
-
Taggart is now active, which means you can play around.
|
|
15
|
-
Try:
|
|
16
|
-
"Hello World".h1
|
|
17
|
-
Or (typographically bad taste):
|
|
18
|
-
"Important".em.strong
|
|
19
|
-
Or do some proper nesting:
|
|
20
|
-
("Label".td + "Value".td)._tr.table
|
|
21
|
-
Add attributes
|
|
22
|
-
"hello".span(class: 'stuff', id: 'thing')
|
|
23
|
-
How about a table using arrays?:
|
|
24
|
-
(%w(r1c1 r1c2 r1c3).td.tr + %w(r2c1 r2c2 r2c3).td.tr).table
|
|
25
|
-
We can also do single tags.
|
|
26
|
-
"Gimme a".br
|
|
27
|
-
|
|
28
|
-
Issues:
|
|
29
|
-
- "hello".sub('world', 'world') returns
|
|
30
|
-
"<sub world world>hello</sub>"
|
|
31
|
-
Not really perfect
|
|
32
|
-
|
|
33
|
-
Future??? (with your blessing)
|
|
34
|
-
- Potential validations - could check file, size, etc
|
|
35
|
-
|
|
36
|
-
History
|
|
37
|
-
- Added href and img feature.
|
|
38
|
-
- Created Gem
|
|
39
|
-
- Pushed code to Git.
|
|
40
|
-
- Created test Gem.
|
|
41
|
-
- Added files to create Gem and reorganised the file structure.
|
|
42
|
-
- Made dual_sub pass all the tests, and added the examples from .tr (translate) Ruby docs to the test.
|
|
43
|
-
- More work on the "dynamic namespace clash resolver", in other words, tr and sub work in both classic and Taggart way.
|
|
44
|
-
- Initial version of "dynamic namespace clash resolver" to fix issues with .tr
|
|
45
|
-
- Added basic RSpec test.
|
|
46
|
-
- Added namespacing for Strings and Arrays
|
|
47
|
-
- Implemented arrays; ["Label", "Value"].td.tr.table and ["First", "Second", "Third"].li.ol
|
|
48
|
-
- Tidied up things a bit.
|
|
49
|
-
- Added a version of attributes ("Red".span(class: 'red'))
|
|
50
|
-
- First version. Basic tags.
|
|
51
|
-
|
|
52
|
-
Feedback welcome!!
|
|
53
|
-
|
|
54
|
-
Author: Jocke Selin <jocke@selincite.com>
|
|
55
|
-
Date: 2012-02-16
|
|
56
|
-
Version: 0.0.4 Build 009
|
|
57
|
-
Github: https://github.com/jocke/taggart
|