bbcoder 0.2.0 → 1.0.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.lock +11 -11
- data/README.md +5 -3
- data/lib/bbcoder/tag.rb +28 -7
- data/lib/bbcoder/version.rb +1 -1
- data/lib/bbcoder.rb +2 -2
- data/spec/bbcoder_spec.rb +14 -0
- data/spec/tag_spec.rb +91 -0
- metadata +25 -8
data/Gemfile.lock
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
bbcoder (0.
|
4
|
+
bbcoder (1.0.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
|
-
diff-lcs (1.1.
|
10
|
-
rr (1.0.
|
11
|
-
rspec (2.
|
12
|
-
rspec-core (~> 2.
|
13
|
-
rspec-expectations (~> 2.
|
14
|
-
rspec-mocks (~> 2.
|
15
|
-
rspec-core (2.
|
16
|
-
rspec-expectations (2.
|
17
|
-
diff-lcs (~> 1.1.
|
18
|
-
rspec-mocks (2.
|
9
|
+
diff-lcs (1.1.3)
|
10
|
+
rr (1.0.4)
|
11
|
+
rspec (2.9.0)
|
12
|
+
rspec-core (~> 2.9.0)
|
13
|
+
rspec-expectations (~> 2.9.0)
|
14
|
+
rspec-mocks (~> 2.9.0)
|
15
|
+
rspec-core (2.9.0)
|
16
|
+
rspec-expectations (2.9.1)
|
17
|
+
diff-lcs (~> 1.1.3)
|
18
|
+
rspec-mocks (2.9.0)
|
19
19
|
|
20
20
|
PLATFORMS
|
21
21
|
ruby
|
data/README.md
CHANGED
@@ -41,8 +41,8 @@ Configuration Examples
|
|
41
41
|
tag :ol
|
42
42
|
tag :li, :parents => [:ol, :ul]
|
43
43
|
|
44
|
-
tag :img, :match => /^.*(png|bmp|
|
45
|
-
%(<a href="#{content}"><img src="#{content}" /></a>)
|
44
|
+
tag :img, :match => /^.*(png|bmp|jpe?g|gif)$/ do
|
45
|
+
%(<a href="#{singular? ? meta : content}"><img src="#{singular? ? meta : content}" /></a>)
|
46
46
|
end
|
47
47
|
|
48
48
|
tag :code do
|
@@ -66,7 +66,9 @@ Configuration Examples
|
|
66
66
|
Options for #tag
|
67
67
|
|
68
68
|
* :as (symbol) -> use this as the html element ([b] becomes strong)
|
69
|
-
* :match (regex) -> convert this tag and its content to html only if the content matches the regex
|
69
|
+
* :match (regex) -> convert this tag and its content to html only if the content and meta matches the regex (see img tag above for example)
|
70
|
+
* :match_meta (regex) -> same as :match except only for meta
|
71
|
+
* :match_content (regex) -> same as :match except only for content
|
70
72
|
* :parents ([symbol]) -> ignore this tag if there is no open tag that matches its parents
|
71
73
|
* :singular (true|false) -> use this if the tag does not require an ending tag
|
72
74
|
|
data/lib/bbcoder/tag.rb
CHANGED
@@ -8,7 +8,7 @@ class BBCoder
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def to_html(meta, content, singularity = false)
|
11
|
-
return self.class.reform(name, meta, content, true) unless content_valid?(content)
|
11
|
+
return self.class.reform(name, meta, content, singularity, true) unless content_valid?(content, singularity) && meta_valid?(meta, singularity)
|
12
12
|
|
13
13
|
if options[:block].nil?
|
14
14
|
"<#{options[:as]}>#{content}</#{options[:as]}>"
|
@@ -22,12 +22,33 @@ class BBCoder
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
26
|
-
return true if
|
25
|
+
def meta_valid?(meta, singularity)
|
26
|
+
return true if meta.nil?
|
27
|
+
|
28
|
+
unless options[:match].nil?
|
29
|
+
return false if meta.match(options[:match]).nil?
|
30
|
+
end
|
31
|
+
|
32
|
+
unless options[:match_meta].nil?
|
33
|
+
return false if meta.match(options[:match_meta]).nil?
|
34
|
+
end
|
35
|
+
|
36
|
+
return true
|
37
|
+
end
|
38
|
+
|
39
|
+
def content_valid?(content, singularity)
|
40
|
+
return true if content.nil? && (options[:singular] && singularity)
|
27
41
|
return false if content.nil?
|
28
|
-
return true if options[:match].nil?
|
29
42
|
|
30
|
-
|
43
|
+
unless options[:match].nil?
|
44
|
+
return false if content.match(options[:match]).nil?
|
45
|
+
end
|
46
|
+
|
47
|
+
unless options[:match_content].nil?
|
48
|
+
return false if content.match(options[:match_content]).nil?
|
49
|
+
end
|
50
|
+
|
51
|
+
return true
|
31
52
|
end
|
32
53
|
|
33
54
|
def parents
|
@@ -53,8 +74,8 @@ class BBCoder
|
|
53
74
|
end
|
54
75
|
end
|
55
76
|
|
56
|
-
def reform(tag, meta, content = nil, force_end = false)
|
57
|
-
if content.nil? && !force_end
|
77
|
+
def reform(tag, meta, content = nil, singularity = false, force_end = false)
|
78
|
+
if (content.nil? && !force_end) || singularity
|
58
79
|
%(#{reform_open(tag, meta)})
|
59
80
|
else
|
60
81
|
%(#{reform_open(tag, meta)}#{content}#{reform_end(tag)})
|
data/lib/bbcoder/version.rb
CHANGED
data/lib/bbcoder.rb
CHANGED
@@ -56,8 +56,8 @@ BBCoder.configure do
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
tag :img, :match => /^.*(png|bmp|
|
60
|
-
%(<a href="#{content}"><img src="#{content}" /></a>)
|
59
|
+
tag :img, :match => /^.*(png|bmp|jpe?g|gif)$/, :singular => true do
|
60
|
+
%(<a href="#{singular? ? meta : content}"><img src="#{singular? ? meta : content}" /></a>)
|
61
61
|
end
|
62
62
|
|
63
63
|
tag :youtube do
|
data/spec/bbcoder_spec.rb
CHANGED
@@ -136,6 +136,20 @@ EOS
|
|
136
136
|
it "should handle singular tags in non singular form" do
|
137
137
|
"[p]I [sub]me[/sub] think [sub]thought[/sub]; therefore [sup]well[/sup] I am[/p]".bbcode_to_html.should == "<p>I <sub>me</sub> think <sub>thought</sub>; therefore <sup>well</sup> I am</p>"
|
138
138
|
end
|
139
|
+
|
140
|
+
it "should handle incorrect singular tags" do
|
141
|
+
"[img=image.exe]".bbcode_to_html.should == "[img=image.exe]"
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
context "with bad matches" do
|
146
|
+
it "should handle an img tag match for content" do
|
147
|
+
"[img]image.exe[/img]".bbcode_to_html.should == "[img]image.exe[/img]"
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should handle an img tag match for meta" do
|
151
|
+
"[img=image.exe]".bbcode_to_html.should == "[img=image.exe]"
|
152
|
+
end
|
139
153
|
end
|
140
154
|
end
|
141
155
|
|
data/spec/tag_spec.rb
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BBCoder::Tag do
|
4
|
+
|
5
|
+
context "#meta_valid?" do
|
6
|
+
context "with match_meta" do
|
7
|
+
before do
|
8
|
+
@tag = BBCoder::Tag.new("img", :match_meta => /^.*(png|bmp|jpg|gif)$/)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should return false when tag meta is invalid" do
|
12
|
+
@tag.meta_valid?("image.exe", false).should == false
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return true when tag meta is valid" do
|
16
|
+
@tag.meta_valid?("image.png", false).should == true
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should return true when tag meta is nil" do
|
20
|
+
@tag.meta_valid?(nil, false).should == true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "with match" do
|
25
|
+
before do
|
26
|
+
@tag = BBCoder::Tag.new("img", :match => /^.*(png|bmp|jpg|gif)$/)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return false when tag meta is invalid" do
|
30
|
+
@tag.meta_valid?("image.exe", false).should == false
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return true when tag meta is valid" do
|
34
|
+
@tag.meta_valid?("image.png", false).should == true
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should return true when tag meta is nil" do
|
38
|
+
@tag.meta_valid?(nil, false).should == true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end # #meta_valid?
|
42
|
+
|
43
|
+
context "#content_valid?" do
|
44
|
+
context "with match_content" do
|
45
|
+
before do
|
46
|
+
@tag = BBCoder::Tag.new("strong", :match_content => /^.*(png|bmp|jpg|gif)$/)
|
47
|
+
@singular_tag = BBCoder::Tag.new("strong", :match_content => /^.*(png|bmp|jpg|gif)$/, :singular => true)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should return false when tag content is invalid" do
|
51
|
+
@tag.content_valid?("image.exe", false).should == false
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should return true when tag content is valid" do
|
55
|
+
@tag.content_valid?("image.png", false).should == true
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should return false if content is nil" do
|
59
|
+
@tag.content_valid?(nil, false).should == false
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should return true when tag content is nil and tag is singular" do
|
63
|
+
@singular_tag.content_valid?(nil, true).should == true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context "with match" do
|
68
|
+
before do
|
69
|
+
@tag = BBCoder::Tag.new("strong", :match => /^.*(png|bmp|jpg|gif)$/)
|
70
|
+
@singular_tag = BBCoder::Tag.new("strong", :match => /^.*(png|bmp|jpg|gif)$/, :singular => true)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should return false when tag content is invalid" do
|
74
|
+
@tag.content_valid?("image.exe", false).should == false
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should return true when tag content is valid" do
|
78
|
+
@tag.content_valid?("image.png", false).should == true
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should return false if content is nil" do
|
82
|
+
@tag.content_valid?(nil, false).should == false
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should return true when tag content is nil and tag is singular" do
|
86
|
+
@singular_tag.content_valid?(nil, true).should == true
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end # #content_valid?
|
90
|
+
end
|
91
|
+
|
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.
|
4
|
+
version: 1.0.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-
|
12
|
+
date: 2012-04-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rr
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,7 +37,12 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
description: A gem for parsing bbcode that doesn't rely on regular expressions
|
37
47
|
email:
|
38
48
|
- machinist@asceth.com
|
@@ -61,6 +71,7 @@ files:
|
|
61
71
|
- spec/buffer_spec.rb
|
62
72
|
- spec/buffer_tags_spec.rb
|
63
73
|
- spec/spec_helper.rb
|
74
|
+
- spec/tag_spec.rb
|
64
75
|
homepage: http://github.com/asceth/bbcoder
|
65
76
|
licenses: []
|
66
77
|
post_install_message:
|
@@ -81,8 +92,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
92
|
version: '0'
|
82
93
|
requirements: []
|
83
94
|
rubyforge_project: bbcoder
|
84
|
-
rubygems_version: 1.8.
|
95
|
+
rubygems_version: 1.8.21
|
85
96
|
signing_key:
|
86
97
|
specification_version: 3
|
87
98
|
summary: BBCode parser
|
88
|
-
test_files:
|
99
|
+
test_files:
|
100
|
+
- spec/base_spec.rb
|
101
|
+
- spec/bbcoder_spec.rb
|
102
|
+
- spec/buffer_spec.rb
|
103
|
+
- spec/buffer_tags_spec.rb
|
104
|
+
- spec/spec_helper.rb
|
105
|
+
- spec/tag_spec.rb
|