bb-ruby 0.9.5 → 0.9.8
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/.gitignore +9 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +14 -0
- data/History.txt +17 -0
- data/Rakefile +11 -31
- data/bb-ruby.gemspec +17 -0
- data/lib/bb-ruby.rb +45 -35
- data/lib/bb-ruby/version.rb +3 -0
- data/test/{test_bb-ruby.rb → bb-ruby_test.rb} +53 -40
- metadata +40 -67
- data/Manifest.txt +0 -8
- data/PostInstall.txt +0 -2
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/History.txt
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
== 0.9.8 2012-10-03
|
2
|
+
|
3
|
+
* replace deprecated html <u> tag
|
4
|
+
* added align tag for floating images
|
5
|
+
* fixed nested quotes
|
6
|
+
|
7
|
+
== 0.9.7 2012-08-20
|
8
|
+
|
9
|
+
* merged with marcandre's fork:
|
10
|
+
* Simplify dev setup using bundler
|
11
|
+
* Allow quotes in URL
|
12
|
+
|
13
|
+
== 0.9.6 2012-08-17
|
14
|
+
|
15
|
+
* added align tag for floating images and other things
|
16
|
+
* fixed nested quotes
|
17
|
+
|
1
18
|
== 0.9.5 2010-02-26
|
2
19
|
|
3
20
|
* added to_html_with_formatting(!) methods
|
data/Rakefile
CHANGED
@@ -1,31 +1,11 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
13
|
-
p.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
14
|
-
p.rubyforge_name = p.name # TODO this is default value
|
15
|
-
p.extra_dev_deps = [
|
16
|
-
['newgem', ">= #{::Newgem::VERSION}"]
|
17
|
-
]
|
18
|
-
|
19
|
-
p.clean_globs |= %w[**/.DS_Store tmp *.log]
|
20
|
-
path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
|
21
|
-
p.remote_rdoc_dir = File.join(path.gsub(/^#{p.rubyforge_name}\/?/,''), 'rdoc')
|
22
|
-
p.rsync_args = '-av --delete --ignore-errors'
|
23
|
-
|
24
|
-
p.readme_file = "README.rdoc"
|
25
|
-
end
|
26
|
-
|
27
|
-
require 'newgem/tasks' # load /tasks/*.rake
|
28
|
-
Dir['tasks/**/*.rake'].each { |t| load t }
|
29
|
-
|
30
|
-
# TODO - want other tests/tasks run by default? Add them to the list
|
31
|
-
# task :default => [:spec, :features]
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require "rake/testtask"
|
4
|
+
|
5
|
+
Rake::TestTask.new(:test) do |t|
|
6
|
+
t.libs << 'lib'
|
7
|
+
t.libs << 'test'
|
8
|
+
t.pattern = 'test/**/*_test.rb'
|
9
|
+
t.verbose = false
|
10
|
+
end
|
11
|
+
|
data/bb-ruby.gemspec
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/bb-ruby/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Craig P. Jolicoeur"]
|
6
|
+
gem.email = ["cpjolicoeur@gmail.com"]
|
7
|
+
gem.description = %q{BBCode for Ruby}
|
8
|
+
gem.summary = %q{BBRuby is a BBCode implementation for Ruby. It will convert strings with BBCode markup to their HTML equivalent}
|
9
|
+
gem.homepage = ""
|
10
|
+
|
11
|
+
gem.files = `git ls-files`.split($\)
|
12
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
+
gem.name = "bb-ruby"
|
15
|
+
gem.require_paths = ["lib"]
|
16
|
+
gem.version = BBRuby::VERSION
|
17
|
+
end
|
data/lib/bb-ruby.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
|
-
|
2
|
-
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
1
|
+
require "bb-ruby/version"
|
3
2
|
|
4
3
|
module BBRuby
|
5
|
-
VERSION = '0.9.5'
|
6
|
-
|
7
4
|
# allowable image formats
|
8
5
|
@@imageformats = 'png|bmp|jpg|gif|jpeg'
|
6
|
+
@@quote_matcher = '("|'|)'
|
9
7
|
|
10
8
|
# built-in BBCode tabs that will be processed
|
11
9
|
@@tags = {
|
@@ -24,7 +22,7 @@ module BBRuby
|
|
24
22
|
:italics],
|
25
23
|
'Underline' => [
|
26
24
|
/\[u(:.+)?\](.*?)\[\/u\1?\]/mi,
|
27
|
-
'<
|
25
|
+
'<span style="text-decoration:underline;">\2</span>',
|
28
26
|
'Underline',
|
29
27
|
'Use it for [u]important[/u] things or something',
|
30
28
|
:underline],
|
@@ -53,14 +51,14 @@ module BBRuby
|
|
53
51
|
'[code]some code[/code]',
|
54
52
|
:code],
|
55
53
|
'Size' => [
|
56
|
-
/\[size
|
57
|
-
'<span style="font-size: \
|
54
|
+
/\[size=#{@@quote_matcher}(.*?)\1\](.*?)\[\/size\]/im,
|
55
|
+
'<span style="font-size: \2px;">\3</span>',
|
58
56
|
'Change text size',
|
59
57
|
'[size=20]Here is some larger text[/size]',
|
60
58
|
:size],
|
61
59
|
'Color' => [
|
62
|
-
/\[color
|
63
|
-
'<span style="color: \
|
60
|
+
/\[color=#{@@quote_matcher}(\w+|\#\w{6})\1(:.+)?\](.*?)\[\/color\3?\]/im,
|
61
|
+
'<span style="color: \2;">\4</span>',
|
64
62
|
'Change text color',
|
65
63
|
'[color=red]This is red text[/color]',
|
66
64
|
:color],
|
@@ -89,7 +87,7 @@ module BBRuby
|
|
89
87
|
'[*]list item',
|
90
88
|
:listitem],
|
91
89
|
'Unordered list (alternative)' => [
|
92
|
-
/\[list(:.*)?\]((?:(
|
90
|
+
/\[list(:.*)?\]((?:(?!\[list(:.*)?\]).)*)\[\/list(:.)?\1?\]/mi,
|
93
91
|
'<ul>\2</ul>',
|
94
92
|
'Unordered list item',
|
95
93
|
'[list][*]item 1[*] item2[/list]',
|
@@ -125,7 +123,7 @@ module BBRuby
|
|
125
123
|
'[dd]my definition[/dd',
|
126
124
|
:definition],
|
127
125
|
'Quote' => [
|
128
|
-
/\[quote(:.*)?=
|
126
|
+
/\[quote(:.*)?=(?:")?(.*?)(?:")?\](.*?)\[\/quote\1?\]/mi,
|
129
127
|
'<fieldset><legend>\2</legend><blockquote>\3</blockquote></fieldset>',
|
130
128
|
'Quote with citation',
|
131
129
|
"[quote=mike]Now is the time...[/quote]",
|
@@ -137,7 +135,7 @@ module BBRuby
|
|
137
135
|
"[quote]Now is the time...[/quote]",
|
138
136
|
:quote],
|
139
137
|
'Link' => [
|
140
|
-
/\[url=(.*?)
|
138
|
+
/\[url=(?:")?(.*?)(?:")?\](.*?)\[\/url\]/mi,
|
141
139
|
'<a href="\1">\2</a>',
|
142
140
|
'Hyperlink to somewhere else',
|
143
141
|
'Maybe try looking on [url=http://google.com]Google[/url]?',
|
@@ -153,17 +151,17 @@ module BBRuby
|
|
153
151
|
' <a href="\2">\2</a>',
|
154
152
|
'Hyperlink (automatic)',
|
155
153
|
'Maybe try looking on http://www.google.com',
|
156
|
-
:link],
|
154
|
+
:link],
|
157
155
|
'Image (Resized)' => [
|
158
|
-
/\[img(:.+)? size
|
156
|
+
/\[img(:.+)? size=#{@@quote_matcher}(\d+)x(\d+)\2\](.*?)\[\/img\1?\]/im,
|
159
157
|
'<img src="\5" style="width: \3px; height: \4px;" />',
|
160
|
-
'Display an image with a set width and height',
|
158
|
+
'Display an image with a set width and height',
|
161
159
|
'[img size=96x96]http://www.google.com/intl/en_ALL/images/logo.gif[/img]',
|
162
160
|
:image],
|
163
161
|
'Image (Alternative)' => [
|
164
162
|
/\[img=([^\[\]].*?)\.(#{@@imageformats})\]/im,
|
165
163
|
'<img src="\1.\2" alt="" />',
|
166
|
-
'Display an image (alternative format)',
|
164
|
+
'Display an image (alternative format)',
|
167
165
|
'[img=http://myimage.com/logo.gif]',
|
168
166
|
:image],
|
169
167
|
'Image' => [
|
@@ -171,31 +169,31 @@ module BBRuby
|
|
171
169
|
'<img src="\2.\3" alt="" />',
|
172
170
|
'Display an image',
|
173
171
|
'Check out this crazy cat: [img]http://catsweekly.com/crazycat.jpg[/img]',
|
174
|
-
:image],
|
172
|
+
:image],
|
175
173
|
'YouTube' => [
|
176
174
|
/\[youtube\](.*?)\?v=([\w\d\-]+).*\[\/youtube\]/im,
|
177
175
|
# '<object width="400" height="330"><param name="movie" value="http://www.youtube.com/v/\2"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/\2" type="application/x-shockwave-flash" wmode="transparent" width="400" height="330"></embed></object>',
|
178
176
|
'<object width="320" height="265"><param name="movie" value="http://www.youtube.com/v/\2"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/\2" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed></object>',
|
179
|
-
'Display a video from YouTube.com',
|
177
|
+
'Display a video from YouTube.com',
|
180
178
|
'[youtube]http://youtube.com/watch?v=E4Fbk52Mk1w[/youtube]',
|
181
179
|
:video],
|
182
180
|
'YouTube (Alternative)' => [
|
183
181
|
/\[youtube\](.*?)\/v\/([\w\d\-]+)\[\/youtube\]/im,
|
184
182
|
# '<object width="400" height="330"><param name="movie" value="http://www.youtube.com/v/\2"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/\2" type="application/x-shockwave-flash" wmode="transparent" width="400" height="330"></embed></object>',
|
185
183
|
'<object width="320" height="265"><param name="movie" value="http://www.youtube.com/v/\2"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/\2" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed></object>',
|
186
|
-
'Display a video from YouTube.com (alternative format)',
|
184
|
+
'Display a video from YouTube.com (alternative format)',
|
187
185
|
'[youtube]http://youtube.com/watch/v/E4Fbk52Mk1w[/youtube]',
|
188
186
|
:video],
|
189
187
|
'Vimeo' => [
|
190
188
|
/\[vimeo\](.*?)\/(\d+)\[\/vimeo\]/im,
|
191
189
|
'<object type="application/x-shockwave-flash" width="500" height="350" data="http://www.vimeo.com/moogaloop.swf?clip_id=\2"><param name="quality" value="best" /><param name="allowfullscreen" value="true" /><param name="scale" value="showAll" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=\2" /></object>',
|
192
|
-
'Display a video from Vimeo',
|
190
|
+
'Display a video from Vimeo',
|
193
191
|
'[vimeo]http://www.vimeo.com/3485239[/vimeo]',
|
194
192
|
:video],
|
195
193
|
'Google Video' => [
|
196
194
|
/\[gvideo\](.*?)\?docid=([-]{0,1}\d+).*\[\/gvideo\]/mi,
|
197
195
|
'<embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=\2" flashvars=""> </embed>',
|
198
|
-
'Display a video from Google Video',
|
196
|
+
'Display a video from Google Video',
|
199
197
|
'[gvideo]http://video.google.com/videoplay?docid=-2200109535941088987[/gvideo]',
|
200
198
|
:video],
|
201
199
|
'Email' => [
|
@@ -203,7 +201,13 @@ module BBRuby
|
|
203
201
|
'<a href="mailto:\2">\2</a>',
|
204
202
|
'Link to email address',
|
205
203
|
'[email]wadus@wadus.com[/email]',
|
206
|
-
:email]
|
204
|
+
:email],
|
205
|
+
'Align' => [
|
206
|
+
/\[align=(.*?)\](.*?)\[\/align\]/mi,
|
207
|
+
"<span class=\"bb-ruby_align_\\1\" style=\"float:\\1;\">\\2</span>",
|
208
|
+
'Align this object using float',
|
209
|
+
'Here\'s a wrapped image: [align=right][img]image.png[/img][/align]',
|
210
|
+
:align]
|
207
211
|
}
|
208
212
|
|
209
213
|
class << self
|
@@ -245,24 +249,27 @@ module BBRuby
|
|
245
249
|
#
|
246
250
|
def to_html(text, tags_alternative_definition={}, escape_html=true, method=:disable, *tags)
|
247
251
|
text = process_tags(text, tags_alternative_definition, escape_html, method, *tags)
|
248
|
-
|
252
|
+
|
249
253
|
# parse spacing
|
250
254
|
text.gsub!( /\r\n?/, "\n" )
|
251
255
|
text.gsub!( /\n/, "<br />\n" )
|
256
|
+
text.gsub!(/\[quote\]/, '<fieldset><legend>Quote:</legend><blockquote>')
|
257
|
+
text.gsub!(/\[quote(:.*)?="?(.*?)"?\]/, '<fieldset><legend>Quote: \2</legend><blockquote>')
|
258
|
+
text.gsub!(/\[\/quote\]/, '</blockquote></fieldset>')
|
252
259
|
|
253
260
|
# return markup
|
254
261
|
text
|
255
262
|
end
|
256
|
-
|
263
|
+
|
257
264
|
# The same as BBRuby.to_html except the output is passed through simple_format first
|
258
265
|
#
|
259
|
-
# Returns text transformed into HTML using simple formatting rules. Two or more consecutive newlines(\n\n)
|
260
|
-
# are considered as a paragraph and wrapped in <p> tags. One newline (\n) is considered as a linebreak and
|
266
|
+
# Returns text transformed into HTML using simple formatting rules. Two or more consecutive newlines(\n\n)
|
267
|
+
# are considered as a paragraph and wrapped in <p> tags. One newline (\n) is considered as a linebreak and
|
261
268
|
# a <br /> tag is appended. This method does not remove the newlines from the text.
|
262
269
|
#
|
263
270
|
def to_html_with_formatting(text, tags_alternative_definition={}, escape_html=true, method=:disable, *tags)
|
264
271
|
text = process_tags(text, tags_alternative_definition, escape_html, method, *tags)
|
265
|
-
|
272
|
+
|
266
273
|
# parse spacing
|
267
274
|
simple_format( text )
|
268
275
|
end
|
@@ -271,19 +278,21 @@ module BBRuby
|
|
271
278
|
def tag_list
|
272
279
|
@@tags
|
273
280
|
end
|
274
|
-
|
281
|
+
|
275
282
|
private
|
276
|
-
|
283
|
+
|
277
284
|
def process_tags(text, tags_alternative_definition={}, escape_html=true, method=:disable, *tags)
|
278
285
|
text = text.dup
|
279
|
-
|
280
|
-
# escape "<, >, &" to remove any html
|
286
|
+
|
287
|
+
# escape "<, >, &" and quotes to remove any html
|
281
288
|
if escape_html
|
282
289
|
text.gsub!( '&', '&' )
|
283
290
|
text.gsub!( '<', '<' )
|
284
291
|
text.gsub!( '>', '>' )
|
292
|
+
text.gsub!( '"', '"' )
|
293
|
+
text.gsub!( "'", ''' )
|
285
294
|
end
|
286
|
-
|
295
|
+
|
287
296
|
tags_definition = @@tags.merge(tags_alternative_definition)
|
288
297
|
|
289
298
|
# parse bbcode tags
|
@@ -294,10 +303,10 @@ module BBRuby
|
|
294
303
|
# this works nicely because the default is disable and the default set of tags is [] (so none disabled) :)
|
295
304
|
tags_definition.each_value { |t| text.gsub!(t[0], t[1]) unless tags.include?(t[4]) }
|
296
305
|
end
|
297
|
-
|
306
|
+
|
298
307
|
text
|
299
308
|
end
|
300
|
-
|
309
|
+
|
301
310
|
# extracted from Rails ActionPack
|
302
311
|
def simple_format( text )
|
303
312
|
start_tag = '<p>'
|
@@ -310,7 +319,8 @@ module BBRuby
|
|
310
319
|
end
|
311
320
|
end # class << self
|
312
321
|
|
313
|
-
end
|
322
|
+
end
|
323
|
+
|
314
324
|
|
315
325
|
class String
|
316
326
|
# Convert a string with BBCode markup into its corresponding HTML markup
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
|
+
#coding: utf-8
|
2
3
|
|
3
4
|
require File.dirname(__FILE__) + '/test_helper.rb'
|
4
5
|
|
@@ -11,47 +12,51 @@ class TestBBRuby < Test::Unit::TestCase
|
|
11
12
|
assert_equal "<strong>line 1<br />\nline 2</strong>", "[b:7a9ca2c5c3]line 1\nline 2[/b:7a9ca2c5c3]".bbcode_to_html
|
12
13
|
assert_equal "<strong>1. text 1:</strong> text 2<br />\n<strong>2. text 3</strong>", "[b:post_uid0]1. text 1:[/b:post_uid0] text 2\n[b:post_uid0]2. text 3[/b:post_uid0]".bbcode_to_html
|
13
14
|
end
|
14
|
-
|
15
|
+
|
15
16
|
def test_em
|
16
17
|
assert_equal '<em>simple</em>', '[i]simple[/i]'.bbcode_to_html
|
17
18
|
assert_equal '<em>simple</em>', '[i:7a9ca2c5c3]simple[/i:7a9ca2c5c3]'.bbcode_to_html
|
18
19
|
assert_equal "<em>line 1<br />\nline 2</em>", "[i:7a9ca2c5c3]line 1\nline 2[/i:7a9ca2c5c3]".bbcode_to_html
|
19
20
|
end
|
20
|
-
|
21
|
+
|
21
22
|
def test_u
|
22
|
-
assert_equal '<
|
23
|
-
assert_equal '<
|
24
|
-
assert_equal "
|
23
|
+
assert_equal '<span style="text-decoration:underline;">simple</span>', '[u]simple[/u]'.bbcode_to_html
|
24
|
+
assert_equal '<span style="text-decoration:underline;">simple</span>', '[u:7a9ca2c5c3]simple[/u:7a9ca2c5c3]'.bbcode_to_html
|
25
|
+
assert_equal '<span style="text-decoration:underline;">line 1<br />\nline 2</span>', "[u:7a9ca2c5c3]line 1\nline 2[/u:7a9ca2c5c3]".bbcode_to_html
|
25
26
|
end
|
26
|
-
|
27
|
+
|
27
28
|
def test_del
|
28
29
|
assert_equal '<del>simple</del>', '[del]simple[/del]'.bbcode_to_html
|
29
30
|
assert_equal '<del>simple</del>', '[del:7a9ca2c5c3]simple[/del:7a9ca2c5c3]'.bbcode_to_html
|
30
31
|
assert_equal '<del>simple</del>', '[s]simple[/s]'.bbcode_to_html
|
31
32
|
assert_equal '<del>simple</del>', '[s:7a9ca2c5c3]simple[/s:7a9ca2c5c3]'.bbcode_to_html
|
32
33
|
end
|
33
|
-
|
34
|
+
|
34
35
|
def test_ins
|
35
36
|
assert_equal '<ins>simple</ins>', '[ins]simple[/ins]'.bbcode_to_html
|
36
37
|
assert_equal '<ins>simple</ins>', '[ins:7a9ca2c5c3]simple[/ins:7a9ca2c5c3]'.bbcode_to_html
|
37
|
-
end
|
38
|
-
|
38
|
+
end
|
39
|
+
|
39
40
|
def test_code
|
40
41
|
assert_equal '<code>simple</code>', '[code]simple[/code]'.bbcode_to_html
|
41
42
|
assert_equal '<code>simple</code>', '[code:7a9ca2c5c3]simple[/code:7a9ca2c5c3]'.bbcode_to_html
|
42
43
|
assert_equal "<code>var bxi = 0;<br />\n//Holds current speed of scrolling menu</code>", "[code:1:91cbdd72b7]var bxi = 0;\n//Holds current speed of scrolling menu[/code:1:91cbdd72b7]".bbcode_to_html
|
43
|
-
end
|
44
|
-
|
44
|
+
end
|
45
|
+
|
45
46
|
def test_size
|
46
47
|
assert_equal '<span style="font-size: 32px;">12px Text</span>', '[size=32]12px Text[/size]'.bbcode_to_html
|
48
|
+
assert_equal '<span style="font-size: 32px;">12px Text</span>', '[size="32"]12px Text[/size]'.bbcode_to_html
|
49
|
+
assert_equal '<span style="font-size: 32px;">12px Text</span>', '[size=\'32\']12px Text[/size]'.bbcode_to_html
|
47
50
|
end
|
48
|
-
|
51
|
+
|
49
52
|
def test_color
|
50
53
|
assert_equal '<span style="color: red;">Red Text</span>', '[color=red]Red Text[/color]'.bbcode_to_html
|
54
|
+
assert_equal '<span style="color: red;">Red Text</span>', '[color="red"]Red Text[/color]'.bbcode_to_html
|
55
|
+
assert_equal '<span style="color: red;">Red Text</span>', '[color=\'red\']Red Text[/color]'.bbcode_to_html
|
51
56
|
assert_equal '<span style="color: #ff0023;">Hex Color Text</span>', '[color=#ff0023]Hex Color Text[/color]'.bbcode_to_html
|
52
57
|
assert_equal '<span style="color: #B23803;">text</span>', '[color=#B23803:05d7c56429]text[/color:05d7c56429]'.bbcode_to_html
|
53
58
|
end
|
54
|
-
|
59
|
+
|
55
60
|
def test_ordered_list
|
56
61
|
assert_equal '<ol><li>item 1</li><li>item 2</li></ol>', '[ol][li]item 1[/li][li]item 2[/li][/ol]'.bbcode_to_html
|
57
62
|
assert_equal '<ol><li>item 1</li><li>item 2</li></ol>', '[ol][*]item 1[*]item 2[/ol]'.bbcode_to_html
|
@@ -61,16 +66,18 @@ class TestBBRuby < Test::Unit::TestCase
|
|
61
66
|
assert_equal '<ul><li>item 1</li><li>item 2</li></ul>', '[ul][li]item 1[/li][li]item 2[/li][/ul]'.bbcode_to_html
|
62
67
|
assert_equal '<ul><li>item 1</li><li>item 2</li></ul>', '[ul][*]item 1[*]item 2[/ul]'.bbcode_to_html
|
63
68
|
end
|
64
|
-
|
69
|
+
|
65
70
|
def test_list_unordered
|
66
71
|
assert_equal '<ul><li>item 1</li><li>item 2</li></ul>', '[list][li]item 1[/li][li]item 2[/li][/list]'.bbcode_to_html
|
72
|
+
#Added this test which raising an error because of the "list" word in list items.
|
73
|
+
assert_equal '<ul><li>list item 1</li><li>list item 2</li></ul>', '[list][li]list item 1[/li][li]list item 2[/li][/list]'.bbcode_to_html
|
67
74
|
assert_equal '<ul><li>item 1</li><li>item 2</li></ul>', '[list:7a9ca2c5c3][li]item 1[/li][li]item 2[/li][/list:o:7a9ca2c5c3]'.bbcode_to_html
|
68
|
-
assert_equal '<ul><li>item 1</li><li>item 2</li></ul><ul><li>item 3</li><li>item 4</li></ul>',
|
75
|
+
assert_equal '<ul><li>item 1</li><li>item 2</li></ul><ul><li>item 3</li><li>item 4</li></ul>',
|
69
76
|
'[list:7a9ca2c5c3][li]item 1[/li][li]item 2[/li][/list:o:7a9ca2c5c3][list:7a9ca2c5c3][li]item 3[/li][li]item 4[/li][/list:o:7a9ca2c5c3]'.bbcode_to_html
|
70
|
-
assert_equal '<ul><li>item 1</li><li>item 2</li></ul><ul><li>item 3</li><li>item 4</li></ul><ul><li>item 5</li><li>item 6</li></ul><ul><li>item 7</li><li>item 8</li></ul>',
|
77
|
+
assert_equal '<ul><li>item 1</li><li>item 2</li></ul><ul><li>item 3</li><li>item 4</li></ul><ul><li>item 5</li><li>item 6</li></ul><ul><li>item 7</li><li>item 8</li></ul>',
|
71
78
|
'[list:7a9ca2c5c3][li]item 1[/li][li]item 2[/li][/list:o:7a9ca2c5c3][list:7a9ca2c5c3][li]item 3[/li][li]item 4[/li][/list:o:7a9ca2c5c3][list:7a9ca2c5c3][li]item 5[/li][li]item 6[/li][/list:o:7a9ca2c5c3][list:7a9ca2c5c3][li]item 7[/li][li]item 8[/li][/list:o:7a9ca2c5c3]'.bbcode_to_html
|
72
79
|
end
|
73
|
-
|
80
|
+
|
74
81
|
def test_list_unordered_alternative
|
75
82
|
assert_equal '<li>item1</li><li>item2</li>', '[*:asdf]item1[*:asdf]item2'.bbcode_to_html
|
76
83
|
assert_equal '<ul><li>item1</li><li>item2</li></ul>', '[list:5d7cf5560a][*]item1[*]item2[/list:u:5d7cf5560a]'.bbcode_to_html
|
@@ -86,61 +93,65 @@ class TestBBRuby < Test::Unit::TestCase
|
|
86
93
|
assert_equal '<ol sytle="list-style-type: lower-alpha;"><li>item 1</li><li>item 2</li></ol>', '[list=a][li]item 1[/li][li]item 2[/li][/list]'.bbcode_to_html
|
87
94
|
assert_equal '<ol sytle="list-style-type: lower-alpha;"><li>item 1</li><li>item 2</li></ol>', '[list=a:7a9ca2c5c3][li]item 1[/li][li]item 2[/li][/list:o:7a9ca2c5c3]'.bbcode_to_html
|
88
95
|
end
|
89
|
-
|
96
|
+
|
90
97
|
def test_two_lists
|
91
|
-
assert_equal '<ul><li>item1</li><li>item2</li></ul><ul><li>item1</li><li>item2</li></ul>',
|
98
|
+
assert_equal '<ul><li>item1</li><li>item2</li></ul><ul><li>item1</li><li>item2</li></ul>',
|
92
99
|
'[list:5d7cf5560a][*:5d7cf5560a]item1[*:5d7cf5560a]item2[/list:u:5d7cf5560a][list:5d7cf5560a][*:5d7cf5560a]item1[*:5d7cf5560a]item2[/list:u:5d7cf5560a]'.bbcode_to_html
|
93
100
|
end
|
94
|
-
|
101
|
+
|
95
102
|
def test_definition_list_term_definition
|
96
103
|
assert_equal '<dl><dt>term 1</dt><dd>definition 1</dd><dt>term 2</dt><dd>definition 2</dd></dl>', '[dl][dt]term 1[/dt][dd]definition 1[/dd][dt]term 2[/dt][dd]definition 2[/dd][/dl]'.bbcode_to_html
|
97
104
|
end
|
98
|
-
|
105
|
+
|
99
106
|
def test_quote
|
100
107
|
assert_equal '<fieldset><blockquote>quoting</blockquote></fieldset>', '[quote]quoting[/quote]'.bbcode_to_html
|
101
108
|
assert_equal '<fieldset><blockquote>quoting</blockquote></fieldset>', '[quote]quoting[/quote]'.bbcode_to_html.bbcode_to_html({}, false, :disable)
|
102
|
-
assert_equal '<fieldset><legend>black</legend><blockquote>si el niño hubiera sido de
|
103
|
-
assert_equal '<fieldset><legend>black</legend><blockquote>si el niño hubiera sido de
|
109
|
+
assert_equal '<fieldset><legend>black</legend><blockquote>si el niño hubiera sido de "penalty" le hubieran llamado <strong>system Error</strong>!!! :)</blockquote></fieldset>', "[quote:7a9ca2c5c3=\"black\"]si el niño hubiera sido de \"penalty\" le hubieran llamado [b:7a9ca2c5c3]system Error[/b:7a9ca2c5c3]!!! :)[/quote:7a9ca2c5c3]".bbcode_to_html
|
110
|
+
assert_equal '<fieldset><legend>black</legend><blockquote>si el niño hubiera sido de "penalty" le hubieran llamado <strong>system Error</strong>!!! :)</blockquote></fieldset>', "[quote:7a9ca2c5c3=\"black\"]si el niño hubiera sido de \"penalty\" le hubieran llamado [b:7a9ca2c5c3]system Error[/b:7a9ca2c5c3]!!! :)[/quote:7a9ca2c5c3]".bbcode_to_html.bbcode_to_html({}, false, :disable)
|
104
111
|
assert_equal '<fieldset><legend>Who</legend><blockquote>said that</blockquote></fieldset>', '[quote=Who]said that[/quote]'.bbcode_to_html
|
105
112
|
assert_equal '<fieldset><legend>Who</legend><blockquote>said that</blockquote></fieldset>', '[quote=Who]said that[/quote]'.bbcode_to_html.bbcode_to_html({}, false, :disable)
|
106
113
|
end
|
107
|
-
|
114
|
+
|
108
115
|
def test_double_quote
|
109
116
|
assert_equal '<fieldset><legend>Kitten</legend><blockquote><fieldset><legend>creatiu</legend><blockquote>f1</blockquote></fieldset>f2</blockquote></fieldset>',
|
110
117
|
'[quote:26fe26a6a9="Kitten"][quote:26fe26a6a93="creatiu"]f1[/quote:26fe26a6a93]f2[/quote:26fe26a6a9]'.bbcode_to_html.bbcode_to_html({}, false, :disable)
|
111
118
|
end
|
112
|
-
|
119
|
+
|
113
120
|
def test_link
|
114
121
|
assert_equal '<a href="http://google.com">Google</a>', '[url=http://google.com]Google[/url]'.bbcode_to_html
|
115
122
|
assert_equal '<a href="http://google.com">http://google.com</a>', '[url]http://google.com[/url]'.bbcode_to_html
|
116
123
|
assert_equal '<a href="http://www.altctrlsupr.com/dmstk/kdd070803/00.html"> ABRIR ALBUM </a>','[URL=http://www.altctrlsupr.com/dmstk/kdd070803/00.html] ABRIR ALBUM [/URL]'.bbcode_to_html
|
117
124
|
assert_equal %Q(<a href="http://www.altctrlsupr.com/dmstk/kdd070803/00.html"> ABRIR<br />\nALBUM </a>),"[URL=http://www.altctrlsupr.com/dmstk/kdd070803/00.html] ABRIR\nALBUM [/URL]".bbcode_to_html
|
118
125
|
assert_equal '<a href="http://www.urimalet.com/cadaverex.mp3">aha</a>', "[URL=http://www.urimalet.com/cadaverex.mp3]aha[/URL]".bbcode_to_html
|
126
|
+
# allow quoted urls:
|
127
|
+
assert_equal '<a href="http://www.apple.com">aha</a>', '[URL="http://www.apple.com"]aha[/URL]'.bbcode_to_html
|
119
128
|
end
|
120
|
-
|
129
|
+
|
121
130
|
def test_image
|
122
131
|
assert_equal '<img src="http://zoople/hochzeit.png" alt="" />', '[img]http://zoople/hochzeit.png[/img]'.bbcode_to_html
|
123
132
|
assert_equal '<img src="http://zoople/hochzeit.png" alt="" />', '[img=http://zoople/hochzeit.png]'.bbcode_to_html
|
124
133
|
assert_equal '<img src="http://zoople/hochzeit.png" style="width: 95px; height: 96px;" />', '[img size=95x96]http://zoople/hochzeit.png[/img]'.bbcode_to_html
|
125
134
|
assert_equal '<img src="http://zoople/hochzeit.png" alt="" />', '[img:7a9ca2c5c3]http://zoople/hochzeit.png[/img:7a9ca2c5c3]'.bbcode_to_html
|
126
135
|
assert_equal '<img src="http://zoople/hochzeit.png" style="width: 95px; height: 96px;" />', '[img:7a9ca2c5c3 size=95x96]http://zoople/hochzeit.png[/img:7a9ca2c5c3]'.bbcode_to_html
|
136
|
+
assert_equal '<img src="http://zoople/hochzeit.png" style="width: 95px; height: 96px;" />', '[img:7a9ca2c5c3 size="95x96"]http://zoople/hochzeit.png[/img:7a9ca2c5c3]'.bbcode_to_html
|
137
|
+
assert_equal '<img src="http://zoople/hochzeit.png" style="width: 95px; height: 96px;" />', '[img:7a9ca2c5c3 size=\'95x96\']http://zoople/hochzeit.png[/img:7a9ca2c5c3]'.bbcode_to_html
|
127
138
|
assert_equal '<img src="http://www.marcodigital.com/sitanddie/sitanddiepequeño.jpg" alt="" />', '[img:post_uid0]http://www.marcodigital.com/sitanddie/sitanddiepequeño.jpg[/img:post_uid0]'.bbcode_to_html
|
128
139
|
end
|
129
|
-
|
140
|
+
|
130
141
|
def test_youtube
|
131
142
|
# Uncomment below if using 4:3 format youtube video embed
|
132
143
|
# assert_equal '<object width="320" height="265"><param name="movie" value="http://www.youtube.com/v/E4Fbk52Mk1w"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/E4Fbk52Mk1w" type="application/x-shockwave-flash" wmode="transparent" width="320" height="265"></embed></object>','[youtube]http://youtube.com/watch?v=E4Fbk52Mk1w[/youtube]'.bbcode_to_html
|
133
144
|
assert_equal '<object width="320" height="265"><param name="movie" value="http://www.youtube.com/v/E4Fbk52Mk1w"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/E4Fbk52Mk1w" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed></object>', '[youtube]http://youtube.com/watch?v=E4Fbk52Mk1w[/youtube]'.bbcode_to_html
|
134
145
|
end
|
135
|
-
|
146
|
+
|
136
147
|
def test_vimeo
|
137
148
|
assert_equal '<object type="application/x-shockwave-flash" width="500" height="350" data="http://www.vimeo.com/moogaloop.swf?clip_id=3485239"><param name="quality" value="best" /><param name="allowfullscreen" value="true" /><param name="scale" value="showAll" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=3485239" /></object>', '[vimeo]http://www.vimeo.com/3485239[/vimeo]'.bbcode_to_html
|
138
149
|
end
|
139
|
-
|
150
|
+
|
140
151
|
def test_google_video
|
141
152
|
assert_equal '<embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-2200109535941088987" flashvars=""> </embed>', '[gvideo]http://video.google.com/videoplay?docid=-2200109535941088987[/gvideo]'.bbcode_to_html
|
142
153
|
end
|
143
|
-
|
154
|
+
|
144
155
|
def test_email
|
145
156
|
assert_equal '<a href="mailto:wadus@wadus.com">wadus@wadus.com</a>', '[email]wadus@wadus.com[/email]'.bbcode_to_html
|
146
157
|
end
|
@@ -160,6 +171,8 @@ class TestBBRuby < Test::Unit::TestCase
|
|
160
171
|
assert_equal "1 is < 2", '1 is < 2'.bbcode_to_html({}, false)
|
161
172
|
assert_equal "2 is > 1", '2 is > 1'.bbcode_to_html
|
162
173
|
assert_equal "2 is > 1", '2 is > 1'.bbcode_to_html({}, false)
|
174
|
+
assert_equal %Q{"double quotes" and 'single quotes'}, %Q{"double quotes" and 'single quotes'}.bbcode_to_html
|
175
|
+
assert_equal %Q{"double quotes" and 'single quotes'}, %Q{"double quotes" and 'single quotes'}.bbcode_to_html({}, false)
|
163
176
|
end
|
164
177
|
|
165
178
|
def test_disable_tags
|
@@ -179,12 +192,12 @@ class TestBBRuby < Test::Unit::TestCase
|
|
179
192
|
assert_equal "<strong>foobar</strong>", foo.bbcode_to_html!
|
180
193
|
assert_equal "<strong>foobar</strong>", foo
|
181
194
|
end
|
182
|
-
|
195
|
+
|
183
196
|
def test_to_html_with_no_markup
|
184
197
|
foo = "first paragraph\n\nsecond paragraph\nwith a linebreak"
|
185
198
|
assert_equal "first paragraph<br />\n<br />\nsecond paragraph<br />\nwith a linebreak", foo.bbcode_to_html
|
186
199
|
end
|
187
|
-
|
200
|
+
|
188
201
|
def test_to_html_with_formatting
|
189
202
|
foo = "first paragraph\n\nsecond paragraph\nwith a linebreak"
|
190
203
|
assert_equal %Q(<p>first paragraph</p>\n\n<p>second paragraph\n<br />with a linebreak</p>), foo.bbcode_to_html_with_formatting
|
@@ -193,11 +206,11 @@ class TestBBRuby < Test::Unit::TestCase
|
|
193
206
|
def test_self_tag_list
|
194
207
|
assert_equal 32, BBRuby.tag_list.size
|
195
208
|
end
|
196
|
-
|
209
|
+
|
197
210
|
def test_redefinition_of_tag_html
|
198
211
|
mydef = {
|
199
212
|
'Quote' => [
|
200
|
-
/\[quote(:.*)?=
|
213
|
+
/\[quote(:.*)?=(?:")?(.*?)(?:")?\](.*?)\[\/quote\1?\]/mi,
|
201
214
|
'<div class="quote"><p><cite>\2</cite></p><blockquote>\3</blockquote></div>',
|
202
215
|
'Quote with citation',
|
203
216
|
nil, nil,
|
@@ -205,13 +218,13 @@ class TestBBRuby < Test::Unit::TestCase
|
|
205
218
|
'Image (Resized)' => [
|
206
219
|
/\[img(:.+)? size=(['"]?)(\d+)x(\d+)\2\](.*?)\[\/img\1?\]/im,
|
207
220
|
'<div class="post_image"><img src="\5" style="width: \3px; height: \4px;" /></div>',
|
208
|
-
'Display an image with a set width and height',
|
221
|
+
'Display an image with a set width and height',
|
209
222
|
'[img size=96x96]http://www.google.com/intl/en_ALL/images/logo.gif[/img]',
|
210
223
|
:image],
|
211
224
|
'Image (Alternative)' => [
|
212
225
|
/\[img=([^\[\]].*?)\.(png|bmp|jpg|gif|jpeg)\]/im,
|
213
226
|
'<div class="post_image"><img src="\1.\2" alt="" /></div>',
|
214
|
-
'Display an image (alternative format)',
|
227
|
+
'Display an image (alternative format)',
|
215
228
|
'[img=http://myimage.com/logo.gif]',
|
216
229
|
:image],
|
217
230
|
'Image' => [
|
@@ -219,7 +232,7 @@ class TestBBRuby < Test::Unit::TestCase
|
|
219
232
|
'<div class="post_image"><img src="\2.\3" alt="" /></div>',
|
220
233
|
'Display an image',
|
221
234
|
'Check out this crazy cat: [img]http://catsweekly.com/crazycat.jpg[/img]',
|
222
|
-
:image],
|
235
|
+
:image],
|
223
236
|
}
|
224
237
|
assert_equal '<div class="quote"><p><cite>Who</cite></p><blockquote>said that</blockquote></div>', '[quote=Who]said that[/quote]'.bbcode_to_html(mydef)
|
225
238
|
assert_equal '<div class="quote"><p><cite>flandepan</cite></p><blockquote>hola</blockquote></div>', '[quote:0fc8a224d2="flandepan"]hola[/quote:0fc8a224d2]'.bbcode_to_html(mydef)
|
@@ -227,12 +240,12 @@ class TestBBRuby < Test::Unit::TestCase
|
|
227
240
|
end
|
228
241
|
|
229
242
|
def test_multiple_tag_test
|
230
|
-
assert_equal "<strong>bold</strong><em>italic</em><
|
231
|
-
assert_equal "<strong>bold</strong><em>italic</em><
|
243
|
+
assert_equal "<strong>bold</strong><em>italic</em><span style=\"text-decoration:underline;\">underline</span><fieldset><blockquote>quote</blockquote></fieldset><a href=\"foobar\">link</a>", "[b]bold[/b][i]italic[/i][u]underline[/u][quote]quote[/quote][url=foobar]link[/url]".bbcode_to_html
|
244
|
+
assert_equal "<strong>bold</strong><em>italic</em><span style=\"text-decoration:underline;\">underline</span><fieldset><blockquote>quote</blockquote></fieldset><a href=\"foobar\">link</a>", "[b]bold[/b][i]italic[/i][u]underline[/u][quote]quote[/quote][url=foobar]link[/url]".bbcode_to_html({}, true, :enable, :bold, :italics, :underline, :link, :quote)
|
232
245
|
end
|
233
246
|
|
234
247
|
def test_no_ending_tag
|
235
|
-
assert_equal "this [b]should not be bold", "this [b]should not be bold".bbcode_to_html
|
248
|
+
assert_equal "this [b]should not be bold", "this [b]should not be bold".bbcode_to_html
|
236
249
|
end
|
237
250
|
|
238
251
|
def test_no_start_tag
|
metadata
CHANGED
@@ -1,86 +1,59 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: bb-ruby
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.8
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
|
-
authors:
|
7
|
-
- Craig P Jolicoeur
|
7
|
+
authors:
|
8
|
+
- Craig P. Jolicoeur
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: newgem
|
17
|
-
type: :development
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 1.5.2
|
24
|
-
version:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: hoe
|
27
|
-
type: :development
|
28
|
-
version_requirement:
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 2.3.2
|
34
|
-
version:
|
35
|
-
description: BBRuby is a BBCode (http://www.bbcode.org) implementation for Ruby. It will convert strings with BBCode markup to their HTML equivalent.
|
36
|
-
email:
|
12
|
+
date: 2012-10-03 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: BBCode for Ruby
|
15
|
+
email:
|
37
16
|
- cpjolicoeur@gmail.com
|
38
17
|
executables: []
|
39
|
-
|
40
18
|
extensions: []
|
41
|
-
|
42
|
-
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- .gitignore
|
22
|
+
- Gemfile
|
23
|
+
- Gemfile.lock
|
43
24
|
- History.txt
|
44
|
-
- Manifest.txt
|
45
|
-
- PostInstall.txt
|
46
|
-
files:
|
47
|
-
- History.txt
|
48
|
-
- Manifest.txt
|
49
|
-
- PostInstall.txt
|
50
25
|
- README.rdoc
|
51
26
|
- Rakefile
|
27
|
+
- bb-ruby.gemspec
|
52
28
|
- lib/bb-ruby.rb
|
53
|
-
-
|
29
|
+
- lib/bb-ruby/version.rb
|
30
|
+
- test/bb-ruby_test.rb
|
54
31
|
- test/test_helper.rb
|
55
|
-
|
56
|
-
homepage: http://bb-ruby.rubyforge.org
|
32
|
+
homepage: ''
|
57
33
|
licenses: []
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
- --main
|
62
|
-
- README.rdoc
|
63
|
-
require_paths:
|
34
|
+
post_install_message:
|
35
|
+
rdoc_options: []
|
36
|
+
require_paths:
|
64
37
|
- lib
|
65
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
77
50
|
requirements: []
|
78
|
-
|
79
|
-
|
80
|
-
rubygems_version: 1.3.5
|
51
|
+
rubyforge_project:
|
52
|
+
rubygems_version: 1.8.21
|
81
53
|
signing_key:
|
82
54
|
specification_version: 3
|
83
|
-
summary: BBRuby is a BBCode
|
84
|
-
|
85
|
-
|
55
|
+
summary: BBRuby is a BBCode implementation for Ruby. It will convert strings with
|
56
|
+
BBCode markup to their HTML equivalent
|
57
|
+
test_files:
|
58
|
+
- test/bb-ruby_test.rb
|
86
59
|
- test/test_helper.rb
|
data/Manifest.txt
DELETED
data/PostInstall.txt
DELETED