bb-ruby 1.0.3 → 1.0.4

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.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YzBkYjZmZTMzM2RmOWIwODBlNjlhZjdkOWRhMzc3M2I1MTM0ZDIwZg==
5
- data.tar.gz: !binary |-
6
- MThhM2Y4ODRhMjZjNTNiMzFjZmI5YzgyOTllZGY3YzEwOTQ1NzA1OQ==
2
+ SHA1:
3
+ metadata.gz: 890a3b596d2881b1e153b7517156830f7825d927
4
+ data.tar.gz: 22584247d6b69600a05bea1f975cef76dd4e93f2
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- Njc2ZDcxNzVlY2I5NTZlOTk0MzM2ZWJlM2IyM2E2ZDlhNjA2MDUwNmRkNjk1
10
- M2NiMjg1NDg5ODEwNzc3OGQwOTkwZjNkMzViZjJiOTIwNDQ2NmRjYzE3OTQ3
11
- YjBhNTZjMjcxMWExNWY1YWFhNTY3YjE1YzUzMjMzZTkzOTIxNGE=
12
- data.tar.gz: !binary |-
13
- NTE3NWJlMmQyYzM1NzQ3Y2YxMGEwMTVhOTNjOWU4OTUzOTVmOTAzODVmZGRk
14
- Mjk3YzkyOTlmZTg5MjRjOTVkNzBkODYyMWUzMTk5MTgyOTYxMGZlNzM1Yzhi
15
- YTE0NmQ2MjI1Y2MyZmM5MmFjNDRkN2ZiYzg2YjI3NmUxMGQ3Mzc=
6
+ metadata.gz: 05ced520bf0cf1c2c980541c4a561d3f014ad53f143c92397c4e53d1dd19ab6d84d6f994159cdfb44c87448465ab36283efb94e3486fb36a8b1332c3568af310
7
+ data.tar.gz: e4e10c20c73427e80561aac51a4e8bc491e209198d3bbc2b23353affa8c4dcd59aec07936c58d5c7878e8c32a905472eb26f52de9a705110839cd0a0b54539a5
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.0.4 2014-01-17
2
+
3
+ * Fix handling of nested tags
4
+
1
5
  == 1.0.3 2013-10-18
2
6
 
3
7
  * Fix but with auto-detection of links without protocol
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bb-ruby (1.0.2)
4
+ bb-ruby (1.0.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -257,13 +257,6 @@ module BBRuby
257
257
  # parse spacing
258
258
  text.gsub!( /\r\n?/, "\n" )
259
259
 
260
- # Special [quote] tag handling
261
- if :enable == method && tags.include?(:quote)
262
- text.gsub!(/\[quote\]/, '<fieldset><legend>Quote:</legend><blockquote>')
263
- text.gsub!(/\[quote(:.*)?="?(.*?)"?\]/, '<fieldset><legend>Quote: \2</legend><blockquote>')
264
- text.gsub!(/\[\/quote\]/, '</blockquote></fieldset>')
265
- end
266
-
267
260
  # return markup
268
261
  text
269
262
  end
@@ -306,32 +299,30 @@ module BBRuby
306
299
  case method
307
300
  when :enable
308
301
  tags_definition.each_value do |t|
309
- if tags.include?( t[4] )
310
- if t[1].class == String
311
- text.gsub!( t[0], t[1] ) # just replace if replacement is String
312
- else
313
- text.gsub!( t[0] ){ t[1].call($~) } # call replacement
314
- # It may be Proc or lambda with one argument
315
- # Argument is MatchData. See 'Bold' tag name for example.
316
- end
317
- end
302
+ gsub!(text, t[0], t[1]) if tags.include?( t[4] )
318
303
  end
319
304
  when :disable
320
305
  # this works nicely because the default is disable and the default set of tags is [] (so none disabled) :)
321
306
  tags_definition.each_value do |t|
322
- unless tags.include?( t[4] )
323
- if t[1].class == String
324
- text.gsub!( t[0], t[1] )
325
- else
326
- text.gsub!( t[0] ){ t[1].call($~) }
327
- end
328
- end
307
+ gsub!(text, t[0], t[1]) unless tags.include?( t[4] )
329
308
  end
330
309
  end
331
310
 
332
311
  text
333
312
  end
334
313
 
314
+ def gsub!(text, pattern, replacement)
315
+ if replacement.class == String
316
+ # just replace if replacement is String
317
+ while text.gsub!( pattern, replacement ); end
318
+ else
319
+ # call replacement
320
+ # It may be Proc or lambda with one argument
321
+ # Argument is MatchData. See 'Bold' tag name for example.
322
+ while text.gsub!( pattern ){ replacement.call($~) }; end
323
+ end
324
+ end
325
+
335
326
  # extracted from Rails ActionPack
336
327
  def simple_format( text )
337
328
  start_tag = '<p>'
@@ -1,3 +1,3 @@
1
1
  module BBRuby
2
- VERSION = "1.0.3"
2
+ VERSION = "1.0.4"
3
3
  end
@@ -112,12 +112,6 @@ class TestBBRuby < Test::Unit::TestCase
112
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)
113
113
  end
114
114
 
115
- # FIXME: failing test
116
- # def test_double_quote
117
- # assert_equal '<fieldset><legend>Kitten</legend><blockquote><fieldset><legend>Quote: &quot;creatiu&quot;</legend><blockquote>f1</blockquote></fieldset>f2</blockquote></fieldset>',
118
- # '[quote:26fe26a6a9="Kitten"][quote:26fe26a6a93="creatiu"]f1[/quote:26fe26a6a93]f2[/quote:26fe26a6a9]'.bbcode_to_html.bbcode_to_html({}, false, :disable)
119
- # end
120
-
121
115
  def test_link
122
116
  assert_equal '<a href="http://google.com">Google</a>', '[url=http://google.com]Google[/url]'.bbcode_to_html
123
117
  assert_equal '<a href="http://google.com">http://google.com</a>', '[url]http://google.com[/url]'.bbcode_to_html
@@ -323,4 +317,11 @@ class TestBBRuby < Test::Unit::TestCase
323
317
  assert_equal '<span class="copy">&copy; 2913-3013 The Company, Ltd.</span>', '[copy/]'.bbcode_to_html(mydef)
324
318
  end
325
319
 
320
+ def test_nested_tags
321
+ assert_equal '<span style="color: red;">Red Text<span style="color: green;">Green Text</span>Red Again</span>', '[color=red]Red Text[color=green]Green Text[/color]Red Again[/color]'.bbcode_to_html
322
+ assert_equal '<fieldset><blockquote>first<fieldset><blockquote>second</blockquote></fieldset>first again</blockquote></fieldset>', '[quote]first[quote]second[/quote]first again[/quote]'.bbcode_to_html
323
+ assert_equal '<fieldset><legend>first author</legend><blockquote>first<fieldset><legend>second author</legend><blockquote>second</blockquote></fieldset>first again</blockquote></fieldset>', '[quote="first author"]first[quote="second author"]second[/quote]first again[/quote]'.bbcode_to_html
324
+ assert_equal '<fieldset><legend>Kitten</legend><blockquote><fieldset><legend>creatiu</legend><blockquote>f1</blockquote></fieldset>f2</blockquote></fieldset>', '[quote:26fe26a6a9="Kitten"][quote:26fe26a6a93="creatiu"]f1[/quote:26fe26a6a93]f2[/quote:26fe26a6a9]'.bbcode_to_html.bbcode_to_html({}, false, :disable)
325
+ end
326
+
326
327
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bb-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig P. Jolicoeur
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-18 00:00:00.000000000 Z
11
+ date: 2014-01-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: BBCode for Ruby
14
14
  email:
@@ -17,8 +17,8 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - .gitignore
21
- - .travis.yml
20
+ - ".gitignore"
21
+ - ".travis.yml"
22
22
  - CHANGELOG
23
23
  - Gemfile
24
24
  - Gemfile.lock
@@ -40,17 +40,17 @@ require_paths:
40
40
  - lib
41
41
  required_ruby_version: !ruby/object:Gem::Requirement
42
42
  requirements:
43
- - - ! '>='
43
+ - - ">="
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
46
  required_rubygems_version: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - ! '>='
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0'
51
51
  requirements: []
52
52
  rubyforge_project:
53
- rubygems_version: 2.1.9
53
+ rubygems_version: 2.2.1
54
54
  signing_key:
55
55
  specification_version: 4
56
56
  summary: BBRuby is a BBCode implementation for Ruby. It will convert strings with