bb-ruby 0.9.8 → 1.0
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/Gemfile +4 -0
- data/Gemfile.lock +3 -1
- data/History.txt +9 -1
- data/README.rdoc +14 -0
- data/Rakefile +1 -0
- data/lib/bb-ruby.rb +25 -7
- data/lib/bb-ruby/version.rb +1 -1
- data/test/bb-ruby_test.rb +64 -10
- metadata +5 -5
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 1.0 2013-05-9
|
2
|
+
|
3
|
+
* Enable Procs to be used in custom defined replacements
|
4
|
+
|
5
|
+
== 0.9.9 2013-02-2
|
6
|
+
|
7
|
+
* Dont insert any extra html tags if just using .to_html method
|
8
|
+
|
1
9
|
== 0.9.8 2012-10-03
|
2
10
|
|
3
11
|
* replace deprecated html <u> tag
|
@@ -54,4 +62,4 @@
|
|
54
62
|
|
55
63
|
* No major enhancements:
|
56
64
|
* Small point release for moving gem from Github to RubyForge
|
57
|
-
* Gem is no longer served from github via cpjolicoeur-bbruby. Gem is now served directly from Rubyforge via bb-ruby
|
65
|
+
* Gem is no longer served from github via cpjolicoeur-bbruby. Gem is now served directly from Rubyforge via bb-ruby
|
data/README.rdoc
CHANGED
@@ -55,6 +55,20 @@ Define your own translation, in order to be more flexible:
|
|
55
55
|
}
|
56
56
|
|
57
57
|
text.bbcode_to_html(my_blockquote)
|
58
|
+
|
59
|
+
Define Proc as replacement:
|
60
|
+
|
61
|
+
module BBRuby
|
62
|
+
@@tags = @@tags.merge({
|
63
|
+
'File' => [
|
64
|
+
/\[file(:.*)?=(.*?)\](.*?)\[\/file\1?\]/mi,
|
65
|
+
lambda{ |e| "<div class="file"><p><cite>#{e[3]}</cite></p><blockquote>#{file_read_method(e[2])}</blockquote></div>"},
|
66
|
+
'File content with citation',
|
67
|
+
'[file=script.rb]Script Caption[/file]',
|
68
|
+
:file
|
69
|
+
],
|
70
|
+
})
|
71
|
+
end
|
58
72
|
|
59
73
|
You can also use the simple_format method of ActionPack by using the *_with_formatting methods:
|
60
74
|
|
data/Rakefile
CHANGED
data/lib/bb-ruby.rb
CHANGED
@@ -10,7 +10,7 @@ module BBRuby
|
|
10
10
|
# tag name => [regex, replace, description, example, enable/disable symbol]
|
11
11
|
'Bold' => [
|
12
12
|
/\[b(:.*)?\](.*?)\[\/b\1?\]/mi,
|
13
|
-
'<strong>\2</strong>',
|
13
|
+
'<strong>\2</strong>', #Proc alternative for example: lambda{ |e| "<strong>#{e[2]}</strong>" }
|
14
14
|
'Embolden text',
|
15
15
|
'Look [b]here[/b]',
|
16
16
|
:bold],
|
@@ -252,10 +252,10 @@ module BBRuby
|
|
252
252
|
|
253
253
|
# parse spacing
|
254
254
|
text.gsub!( /\r\n?/, "\n" )
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
255
|
+
|
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>')
|
259
259
|
|
260
260
|
# return markup
|
261
261
|
text
|
@@ -298,10 +298,28 @@ module BBRuby
|
|
298
298
|
# parse bbcode tags
|
299
299
|
case method
|
300
300
|
when :enable
|
301
|
-
tags_definition.each_value
|
301
|
+
tags_definition.each_value do |t|
|
302
|
+
if tags.include?( t[4] )
|
303
|
+
if t[1].class == String
|
304
|
+
text.gsub!( t[0], t[1] ) # just replace if replacement is String
|
305
|
+
else
|
306
|
+
text.gsub!( t[0] ){ t[1].call($~) } # call replacement
|
307
|
+
# It may be Proc or lambda with one argument
|
308
|
+
# Argument is MatchData. See 'Bold' tag name for example.
|
309
|
+
end
|
310
|
+
end
|
311
|
+
end
|
302
312
|
when :disable
|
303
313
|
# this works nicely because the default is disable and the default set of tags is [] (so none disabled) :)
|
304
|
-
tags_definition.each_value
|
314
|
+
tags_definition.each_value do |t|
|
315
|
+
unless tags.include?( t[4] )
|
316
|
+
if t[1].class == String
|
317
|
+
text.gsub!( t[0], t[1] )
|
318
|
+
else
|
319
|
+
text.gsub!( t[0] ){ t[1].call($~) }
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
305
323
|
end
|
306
324
|
|
307
325
|
text
|
data/lib/bb-ruby/version.rb
CHANGED
data/test/bb-ruby_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
#coding: utf-8
|
3
3
|
|
4
|
-
require
|
4
|
+
require 'test_helper.rb'
|
5
5
|
|
6
6
|
class TestBBRuby < Test::Unit::TestCase
|
7
7
|
|
@@ -9,20 +9,20 @@ class TestBBRuby < Test::Unit::TestCase
|
|
9
9
|
assert_equal '<strong>simple</strong>', '[b]simple[/b]'.bbcode_to_html
|
10
10
|
assert_equal '<strong>simple</strong>', '[b:7a9ca2c5c3]simple[/b:7a9ca2c5c3]'.bbcode_to_html
|
11
11
|
assert_equal %Q(<strong>simple</strong>), BBRuby.to_html( %Q([b:7a9ca2c5c3]simple[/b:7a9ca2c5c3]) )
|
12
|
-
assert_equal "<strong>line 1
|
13
|
-
assert_equal "<strong>1. text 1:</strong> text 2
|
12
|
+
assert_equal "<strong>line 1\nline 2</strong>", "[b:7a9ca2c5c3]line 1\nline 2[/b:7a9ca2c5c3]".bbcode_to_html
|
13
|
+
assert_equal "<strong>1. text 1:</strong> text 2\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
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_em
|
17
17
|
assert_equal '<em>simple</em>', '[i]simple[/i]'.bbcode_to_html
|
18
18
|
assert_equal '<em>simple</em>', '[i:7a9ca2c5c3]simple[/i:7a9ca2c5c3]'.bbcode_to_html
|
19
|
-
assert_equal "<em>line 1
|
19
|
+
assert_equal "<em>line 1\nline 2</em>", "[i:7a9ca2c5c3]line 1\nline 2[/i:7a9ca2c5c3]".bbcode_to_html
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_u
|
23
23
|
assert_equal '<span style="text-decoration:underline;">simple</span>', '[u]simple[/u]'.bbcode_to_html
|
24
24
|
assert_equal '<span style="text-decoration:underline;">simple</span>', '[u:7a9ca2c5c3]simple[/u:7a9ca2c5c3]'.bbcode_to_html
|
25
|
-
assert_equal
|
25
|
+
assert_equal %Q(<span style="text-decoration:underline;">line 1\nline 2</span>), "[u:7a9ca2c5c3]line 1\nline 2[/u:7a9ca2c5c3]".bbcode_to_html
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_del
|
@@ -40,7 +40,7 @@ class TestBBRuby < Test::Unit::TestCase
|
|
40
40
|
def test_code
|
41
41
|
assert_equal '<code>simple</code>', '[code]simple[/code]'.bbcode_to_html
|
42
42
|
assert_equal '<code>simple</code>', '[code:7a9ca2c5c3]simple[/code:7a9ca2c5c3]'.bbcode_to_html
|
43
|
-
assert_equal "<code>var bxi = 0
|
43
|
+
assert_equal "<code>var bxi = 0;\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
|
44
44
|
end
|
45
45
|
|
46
46
|
def test_size
|
@@ -113,7 +113,7 @@ class TestBBRuby < Test::Unit::TestCase
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def test_double_quote
|
116
|
-
assert_equal '<fieldset><legend>Kitten</legend><blockquote><fieldset><legend>creatiu
|
116
|
+
assert_equal '<fieldset><legend>Kitten</legend><blockquote><fieldset><legend>Quote: "creatiu"</legend><blockquote>f1</blockquote></fieldset>f2</blockquote></fieldset>',
|
117
117
|
'[quote:26fe26a6a9="Kitten"][quote:26fe26a6a93="creatiu"]f1[/quote:26fe26a6a93]f2[/quote:26fe26a6a9]'.bbcode_to_html.bbcode_to_html({}, false, :disable)
|
118
118
|
end
|
119
119
|
|
@@ -121,7 +121,7 @@ class TestBBRuby < Test::Unit::TestCase
|
|
121
121
|
assert_equal '<a href="http://google.com">Google</a>', '[url=http://google.com]Google[/url]'.bbcode_to_html
|
122
122
|
assert_equal '<a href="http://google.com">http://google.com</a>', '[url]http://google.com[/url]'.bbcode_to_html
|
123
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
|
124
|
-
assert_equal %Q(<a href="http://www.altctrlsupr.com/dmstk/kdd070803/00.html"> ABRIR
|
124
|
+
assert_equal %Q(<a href="http://www.altctrlsupr.com/dmstk/kdd070803/00.html"> ABRIR\nALBUM </a>),"[URL=http://www.altctrlsupr.com/dmstk/kdd070803/00.html] ABRIR\nALBUM [/URL]".bbcode_to_html
|
125
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
126
|
# allow quoted urls:
|
127
127
|
assert_equal '<a href="http://www.apple.com">aha</a>', '[URL="http://www.apple.com"]aha[/URL]'.bbcode_to_html
|
@@ -195,7 +195,7 @@ class TestBBRuby < Test::Unit::TestCase
|
|
195
195
|
|
196
196
|
def test_to_html_with_no_markup
|
197
197
|
foo = "first paragraph\n\nsecond paragraph\nwith a linebreak"
|
198
|
-
assert_equal
|
198
|
+
assert_equal foo, foo.bbcode_to_html
|
199
199
|
end
|
200
200
|
|
201
201
|
def test_to_html_with_formatting
|
@@ -204,7 +204,7 @@ class TestBBRuby < Test::Unit::TestCase
|
|
204
204
|
end
|
205
205
|
|
206
206
|
def test_self_tag_list
|
207
|
-
assert_equal
|
207
|
+
assert_equal 33, BBRuby.tag_list.size
|
208
208
|
end
|
209
209
|
|
210
210
|
def test_redefinition_of_tag_html
|
@@ -256,4 +256,58 @@ class TestBBRuby < Test::Unit::TestCase
|
|
256
256
|
assert_equal "this [b]should not do formatting[/i]", "this [b]should not do formatting[/i]".bbcode_to_html
|
257
257
|
end
|
258
258
|
|
259
|
+
## proc tests below
|
260
|
+
def test_redefinition_replacement_to_proc # contrived example
|
261
|
+
mydef = {
|
262
|
+
'Quote' => [
|
263
|
+
/\[quote(:.*)?=(?:")?(.*?)(?:")?\](.*?)\[\/quote\1?\]/mi,
|
264
|
+
lambda { |e| "<div class=\"quote\"><p><cite>#{e[2]}</cite></p><blockquote>#{e[3]}</blockquote></div>"},
|
265
|
+
'Quote with citation (lambda)',
|
266
|
+
nil, nil,
|
267
|
+
:quote]
|
268
|
+
}
|
269
|
+
assert_equal '<div class="quote"><p><cite>Who</cite></p><blockquote>said that</blockquote></div>', '[quote=Who]said that[/quote]'.bbcode_to_html(mydef)
|
270
|
+
end
|
271
|
+
|
272
|
+
def test_proc_modifer # sum as example
|
273
|
+
mydef = {
|
274
|
+
'Sum (lambda)' => [
|
275
|
+
/\[sum(:.*)?=(?:")?(.*?)(?:")?\](\d+?)\+(\d+?)\[\/sum\1?\]/mi,
|
276
|
+
lambda { |e| "<span class=\"#{e[2]}\">#{e[3].to_i + e[4].to_i}</span>"},
|
277
|
+
'Sum (lambda)',
|
278
|
+
nil, nil,
|
279
|
+
:sum]
|
280
|
+
}
|
281
|
+
assert_equal '<span class="sum">4</span>', '[sum=sum]2+2[/sum]'.bbcode_to_html(mydef)
|
282
|
+
end
|
283
|
+
|
284
|
+
# for next test
|
285
|
+
def sum a, b; a + b end
|
286
|
+
|
287
|
+
def test_proc_include_method # sum as example
|
288
|
+
mydef = {
|
289
|
+
'Sum (lambda)' => [
|
290
|
+
/\[sum(:.*)?=(?:")?(.*?)(?:")?\](\d+?)\+(\d+?)\[\/sum\1?\]/mi,
|
291
|
+
lambda { |e| "<span class=\"#{e[2]}\">#{sum(e[3].to_i, e[4].to_i)}</span>"},
|
292
|
+
'Sum (lambda)',
|
293
|
+
nil, nil,
|
294
|
+
:sum]
|
295
|
+
}
|
296
|
+
assert_equal '<span class="sum">4</span>', '[sum=sum]2+2[/sum]'.bbcode_to_html(mydef)
|
297
|
+
end
|
298
|
+
|
299
|
+
# Proc.new{} as opposed to lambda{} may have not params
|
300
|
+
def test_proc_instead_of_lambda # copyright
|
301
|
+
copyright = "2913-3013 The Company, Ltd."
|
302
|
+
mydef = {
|
303
|
+
'copy' => [
|
304
|
+
/\[copy\/\]/mi,
|
305
|
+
Proc.new{"<span class=\"copy\">© #{copyright}</span>"},
|
306
|
+
'Copy (Proc)',
|
307
|
+
nil, nil,
|
308
|
+
:copy]
|
309
|
+
}
|
310
|
+
assert_equal '<span class="copy">© 2913-3013 The Company, Ltd.</span>', '[copy/]'.bbcode_to_html(mydef)
|
311
|
+
end
|
312
|
+
|
259
313
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bb-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.8
|
5
4
|
prerelease:
|
5
|
+
version: '1.0'
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Craig P. Jolicoeur
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-05-10 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: BBCode for Ruby
|
15
15
|
email:
|
@@ -36,20 +36,20 @@ rdoc_options: []
|
|
36
36
|
require_paths:
|
37
37
|
- lib
|
38
38
|
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
39
|
requirements:
|
41
40
|
- - ! '>='
|
42
41
|
- !ruby/object:Gem::Version
|
43
42
|
version: '0'
|
44
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
43
|
none: false
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
45
|
requirements:
|
47
46
|
- - ! '>='
|
48
47
|
- !ruby/object:Gem::Version
|
49
48
|
version: '0'
|
49
|
+
none: false
|
50
50
|
requirements: []
|
51
51
|
rubyforge_project:
|
52
|
-
rubygems_version: 1.8.
|
52
|
+
rubygems_version: 1.8.23
|
53
53
|
signing_key:
|
54
54
|
specification_version: 3
|
55
55
|
summary: BBRuby is a BBCode implementation for Ruby. It will convert strings with
|