bbcoder 0.1.6 → 0.2.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/lib/bbcoder/base.rb CHANGED
@@ -10,7 +10,7 @@ class BBCoder
10
10
  end
11
11
 
12
12
  def initialize(text)
13
- @raw = text.split(/(\[[^\]]+\])/i).select {|string| string.size > 0}
13
+ @raw = text.split(/(\[[^\[\]]+\])/i).select {|string| string.size > 0}
14
14
  end
15
15
 
16
16
  def to_html
@@ -8,29 +8,29 @@ class BBCoder
8
8
  @_meta = {}
9
9
  end
10
10
 
11
- def push(tag)
12
- tag, meta = if tag.include?("=")
13
- splits = tag.split("=")
11
+ def push(original_tag)
12
+ tag, meta = if original_tag.include?("=")
13
+ splits = original_tag.split("=")
14
14
  [splits.shift.downcase.to_sym, splits.join('=')]
15
15
  else
16
- [tag.downcase.to_sym, nil]
16
+ [original_tag.downcase.to_sym, nil]
17
17
  end
18
18
 
19
19
  if criteria_met?(tag)
20
20
  _internal.push(tag)
21
21
  _meta[size] = meta
22
22
  else
23
- buffer.push(BBCoder::Tag.reform(tag, meta))
23
+ buffer.push(BBCoder::Tag.reform(original_tag, meta))
24
24
  end
25
25
  end
26
26
 
27
27
  # logic when popping specific tag
28
- def pop(tag)
29
- tag = tag.downcase.to_sym
28
+ def pop(original_tag)
29
+ tag = original_tag.downcase.to_sym
30
30
 
31
31
  # no more tags left to pop || this tag isn't in the list
32
32
  if empty? || !include?(tag)
33
- buffer.push("[/#{tag}]")
33
+ buffer.push("[/#{original_tag}]")
34
34
  elsif last == tag
35
35
  buffer.push(BBCoder::Tag.to_html(_internal.pop, _meta.delete(size+1), buffer.pop(+1)))
36
36
  elsif include?(tag)
@@ -1,3 +1,3 @@
1
1
  class BBCoder
2
- VERSION = "0.1.6"
2
+ VERSION = "0.2.0"
3
3
  end
data/spec/bbcoder_spec.rb CHANGED
@@ -29,6 +29,26 @@ EOS
29
29
  string.bbcode_to_html.should == result
30
30
  end
31
31
 
32
+ it "should parse content with ] in it" do
33
+ '[p]Hi :][/p]'.bbcode_to_html.should == '<p>Hi :]</p>'
34
+ end
35
+
36
+ it "should parse content with [ in it" do
37
+ '[p]Bye :[[/p]'.bbcode_to_html.should == '<p>Bye :[</p>'
38
+ end
39
+
40
+ it "should act cool and parse content with lots of [ and ] in it" do
41
+ '[b]Bye :[ Bye :[ Miss :] [i]American :] wait...[/i] :[]..:()[/b]'.bbcode_to_html.should == '<strong>Bye :[ Bye :[ Miss :] <em>American :] wait...</em> :[]..:()</strong>'
42
+ end
43
+
44
+ it "should not downcase content that looks like a tag when being reformed" do
45
+ '[ Miss ]'.bbcode_to_html.should == '[ Miss ]'
46
+ end
47
+
48
+ it "should not downcase content that looks like a tag when being reformed" do
49
+ '[/ Mister ]'.bbcode_to_html.should == '[/ Mister ]'
50
+ end
51
+
32
52
  it "should return tags as text on blank content" do
33
53
  '[img][/img]'.bbcode_to_html.should == '[img][/img]'
34
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbcoder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.2.0
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-01-13 00:00:00.000000000Z
12
+ date: 2012-02-07 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &8964480 !ruby/object:Gem::Requirement
16
+ requirement: &17173760 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *8964480
24
+ version_requirements: *17173760
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rr
27
- requirement: &8964060 !ruby/object:Gem::Requirement
27
+ requirement: &17173340 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *8964060
35
+ version_requirements: *17173340
36
36
  description: A gem for parsing bbcode that doesn't rely on regular expressions
37
37
  email:
38
38
  - machinist@asceth.com