bb-ruby 0.9.4 → 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/README.rdoc +6 -0
- data/Rakefile +3 -0
- data/lib/bb-ruby.rb +53 -12
- data/test/test_bb-ruby.rb +10 -0
- metadata +2 -2
data/History.txt
CHANGED
data/README.rdoc
CHANGED
@@ -55,6 +55,12 @@ Define your own translation, in order to be more flexible:
|
|
55
55
|
}
|
56
56
|
|
57
57
|
text.bbcode_to_html(my_blockquote)
|
58
|
+
|
59
|
+
You can also use the simple_format method of ActionPack by using the *_with_formatting methods:
|
60
|
+
|
61
|
+
output = text.bbcode_to_html_with_formatting
|
62
|
+
output = text.bbcode_to_html_with_formatting!
|
63
|
+
|
58
64
|
|
59
65
|
== TAGS PROCESSED:
|
60
66
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
%w[rubygems rake rake/clean fileutils newgem rubigen hoe].each { |f| require f }
|
2
2
|
require File.dirname(__FILE__) + '/lib/bb-ruby'
|
3
3
|
|
4
|
+
Hoe.plugin :newgem
|
5
|
+
Hoe.plugin :website
|
6
|
+
|
4
7
|
# Generate all the Rake tasks
|
5
8
|
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
6
9
|
$hoe = Hoe.spec('bb-ruby') do |p|
|
data/lib/bb-ruby.rb
CHANGED
@@ -2,7 +2,7 @@ $:.unshift(File.dirname(__FILE__)) unless
|
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
4
|
module BBRuby
|
5
|
-
VERSION = '0.9.
|
5
|
+
VERSION = '0.9.5'
|
6
6
|
|
7
7
|
# allowable image formats
|
8
8
|
@@imageformats = 'png|bmp|jpg|gif|jpeg'
|
@@ -244,7 +244,38 @@ module BBRuby
|
|
244
244
|
# BBRuby.to_html(text, {}, true, :disable, :image, :video, :color)
|
245
245
|
#
|
246
246
|
def to_html(text, tags_alternative_definition={}, escape_html=true, method=:disable, *tags)
|
247
|
-
text = text
|
247
|
+
text = process_tags(text, tags_alternative_definition, escape_html, method, *tags)
|
248
|
+
|
249
|
+
# parse spacing
|
250
|
+
text.gsub!( /\r\n?/, "\n" )
|
251
|
+
text.gsub!( /\n/, "<br />\n" )
|
252
|
+
|
253
|
+
# return markup
|
254
|
+
text
|
255
|
+
end
|
256
|
+
|
257
|
+
# The same as BBRuby.to_html except the output is passed through simple_format first
|
258
|
+
#
|
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
|
261
|
+
# a <br /> tag is appended. This method does not remove the newlines from the text.
|
262
|
+
#
|
263
|
+
def to_html_with_formatting(text, tags_alternative_definition={}, escape_html=true, method=:disable, *tags)
|
264
|
+
text = process_tags(text, tags_alternative_definition, escape_html, method, *tags)
|
265
|
+
|
266
|
+
# parse spacing
|
267
|
+
simple_format( text )
|
268
|
+
end
|
269
|
+
|
270
|
+
# Returns the list of tags processed by BBRuby in a Hash object
|
271
|
+
def tag_list
|
272
|
+
@@tags
|
273
|
+
end
|
274
|
+
|
275
|
+
private
|
276
|
+
|
277
|
+
def process_tags(text, tags_alternative_definition={}, escape_html=true, method=:disable, *tags)
|
278
|
+
text = text.dup
|
248
279
|
|
249
280
|
# escape "<, >, &" to remove any html
|
250
281
|
if escape_html
|
@@ -263,18 +294,19 @@ module BBRuby
|
|
263
294
|
# this works nicely because the default is disable and the default set of tags is [] (so none disabled) :)
|
264
295
|
tags_definition.each_value { |t| text.gsub!(t[0], t[1]) unless tags.include?(t[4]) }
|
265
296
|
end
|
266
|
-
|
267
|
-
# parse spacing
|
268
|
-
text.gsub!( /\r\n?/, "\n" )
|
269
|
-
text.gsub!( /\n/, "<br />\n" )
|
270
|
-
|
271
|
-
# return markup
|
297
|
+
|
272
298
|
text
|
273
299
|
end
|
274
|
-
|
275
|
-
#
|
276
|
-
def
|
277
|
-
|
300
|
+
|
301
|
+
# extracted from Rails ActionPack
|
302
|
+
def simple_format( text )
|
303
|
+
start_tag = '<p>'
|
304
|
+
text = text.to_s.dup
|
305
|
+
text.gsub!(/\r\n?/, "\n") # \r\n and \r => \n
|
306
|
+
text.gsub!(/\n\n+/, "</p>\n\n#{start_tag}") # 2+ newline => paragraph
|
307
|
+
text.gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline => br
|
308
|
+
text.insert 0, start_tag
|
309
|
+
text << "</p>"
|
278
310
|
end
|
279
311
|
end # class << self
|
280
312
|
|
@@ -332,4 +364,13 @@ class String
|
|
332
364
|
def bbcode_to_html!(tags_alternative_definition = {}, escape_html=true, method=:disable, *tags)
|
333
365
|
self.replace(BBRuby.to_html(self, tags_alternative_definition, escape_html, method, *tags))
|
334
366
|
end
|
367
|
+
|
368
|
+
def bbcode_to_html_with_formatting(tags_alternative_definition = {}, escape_html=true, method=:disable, *tags)
|
369
|
+
BBRuby.to_html_with_formatting(self, tags_alternative_definition, escape_html, method, *tags)
|
370
|
+
end
|
371
|
+
|
372
|
+
# Replace the string contents with the HTML-converted markup using simple_format
|
373
|
+
def bbcode_to_html_with_formatting!(tags_alternative_definition = {}, escape_html=true, method=:disable, *tags)
|
374
|
+
self.replace(BBRuby.to_html_with_formatting(self, tags_alternative_definition, escape_html, method, *tags))
|
375
|
+
end
|
335
376
|
end
|
data/test/test_bb-ruby.rb
CHANGED
@@ -179,6 +179,16 @@ class TestBBRuby < Test::Unit::TestCase
|
|
179
179
|
assert_equal "<strong>foobar</strong>", foo.bbcode_to_html!
|
180
180
|
assert_equal "<strong>foobar</strong>", foo
|
181
181
|
end
|
182
|
+
|
183
|
+
def test_to_html_with_no_markup
|
184
|
+
foo = "first paragraph\n\nsecond paragraph\nwith a linebreak"
|
185
|
+
assert_equal "first paragraph<br />\n<br />\nsecond paragraph<br />\nwith a linebreak", foo.bbcode_to_html
|
186
|
+
end
|
187
|
+
|
188
|
+
def test_to_html_with_formatting
|
189
|
+
foo = "first paragraph\n\nsecond paragraph\nwith a linebreak"
|
190
|
+
assert_equal %Q(<p>first paragraph</p>\n\n<p>second paragraph\n<br />with a linebreak</p>), foo.bbcode_to_html_with_formatting
|
191
|
+
end
|
182
192
|
|
183
193
|
def test_self_tag_list
|
184
194
|
assert_equal 32, BBRuby.tag_list.size
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bb-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Craig P Jolicoeur
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-02-26 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|