trainbbcode 0.3.5 → 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/Manifest CHANGED
@@ -1,6 +1,13 @@
1
- Manifest
2
1
  README.rdoc
3
2
  Rakefile
4
3
  init.rb
5
4
  lib/trainbbcode.rb
5
+ lib/trainbbcode/application_helper.rb
6
+ lib/trainbbcode/configure.rb
7
+ lib/trainbbcode/css.rb
8
+ lib/trainbbcode/parse.rb
9
+ lib/trainbbcode/string.rb
10
+ lib/trainbbcode/swear_filter.rb
11
+ lib/trainbbcode/tags.rb
6
12
  trainbbcode.gemspec
13
+ Manifest
data/README.rdoc CHANGED
@@ -6,7 +6,7 @@ Rails Gem for BBCode
6
6
 
7
7
  === As a Gem
8
8
 
9
- gem install trainbbcode
9
+ gem install trainbbcode
10
10
 
11
11
  For rails you will need to add:
12
12
 
@@ -15,25 +15,38 @@ For rails you will need to add:
15
15
  to config/enviroments.rb and then install the gem using:
16
16
 
17
17
  rake gems:install
18
+
19
+ === As a Plugin
20
+
21
+ script/plugin install git://github.com/Arcath/TrainBBCode
18
22
 
19
23
  == Usage
20
24
 
21
- This adds a method to string of .tbbc which lets you parse the code like this:
25
+ The easiest way to use tbbc is with the string method provided, for example
26
+
27
+ >> "[b]Bold[/b]".tbbc
28
+ => "<strong>Bold</strong>"
29
+
30
+ == Configuration
31
+
32
+ === On the fly
33
+
34
+ If you want to quickly change something, e.g. disable a tag for a specific .tbbc call then you can configure it in the call:
22
35
 
23
- "[b]bold text[/b] and [i]italic[/i]".tbbc
36
+ >> "[b]Bold[/b] [i]Italic[/i]".tbbc(:strong_enabled => false)
37
+ => "[b]Bold[/b] <i>Italic</i>"
24
38
 
25
- that would output:
39
+ Whilst this method works its not the cleanest way of doing it. Its fine for simple things like disabling a single tag (e.g. tables in signatures) but when defining custom tags or the coderay css its better to use the other config method
26
40
 
27
- "<strong>bold text</strong> and <i>italic</i>"
41
+ === Globaly
28
42
 
29
- Or you can configure it by creating a TBBC object and running "conf"
43
+ This is done using config/tbbc.rb, this file needs to look like this:
30
44
 
31
- tbbc=TBBC.new
32
- tbbc.config(:strong_enabled => false)
33
- tbbc.parse("[b]bold text[/b] and [i]italic[/i]")
34
-
35
- This would output:
45
+ class TBBC
46
+ def user_config
47
+ #Change the Config here
48
+ @config[:strong_enabled] = false
49
+ end
50
+ end
36
51
 
37
- "[b]bold text[/b] and <i>italic</i>"
38
-
39
- For More information and examples visit http://www.arcath.net/pages/2
52
+ That would produce the same output as the on the fly config but would work when ever you used .tbbc in the project.
data/Rakefile CHANGED
@@ -2,9 +2,9 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('trainbbcode','0.3.5') do |p|
5
+ Echoe.new('trainbbcode','1.0.0') do |p|
6
6
  p.description = "Provides BBCode for Ruby."
7
- p.url = "http://www.arcath.net/pages/2"
7
+ p.url = "http://www.arcath.net/"
8
8
  p.author = "Adam \"Arcath\" Laycock"
9
9
  p.email = "adam@arcath.net"
10
10
  p.ignore_pattern= ["tmp/*", "scripts/*"]
@@ -0,0 +1,50 @@
1
+ class TBBC
2
+ # Configures TBBC, loads a config file if present and the defaults
3
+ def conf(config)
4
+ @config = config || {}
5
+ load_config_from_defaults
6
+ if File.exist?("config/tbbc.rb")
7
+ load_config_from_file
8
+ end
9
+ end
10
+
11
+ private
12
+
13
+ # Loads the users config file
14
+ def load_config_from_file
15
+ load 'config/tbbc.rb'
16
+ user_config
17
+ end
18
+
19
+ # Loads the default config.
20
+ #
21
+ # Is non-overiding so any config set by the user in thier own file remains.
22
+ def load_config_from_defaults
23
+ @config[:configed_by] ||= "user"
24
+ @config[:image_alt] ||= "Posted Image"
25
+ @config[:url_target] ||= "_BLANK"
26
+ @config[:allow_defaults] ||= true
27
+ @config[:table_width] ||= "100%"
28
+ @config[:syntax_highlighting] ||= true
29
+ @config[:syntax_highlighting_html] ||= "color:#E7BE69"
30
+ @config[:syntax_highlighting_comment] ||= "color:#BC9358; font-style: italic;"
31
+ @config[:syntax_highlighting_escaped] ||= "color:#509E4F"
32
+ @config[:syntax_highlighting_class] ||= "color:#FFF"
33
+ @config[:syntax_highlighting_constant] ||= "color:#FFF"
34
+ @config[:syntax_highlighting_float] ||= "color:#A4C260"
35
+ @config[:syntax_highlighting_function] ||= "color:#FFC56D"
36
+ @config[:syntax_highlighting_global] ||= "color:#D0CFFE"
37
+ @config[:syntax_highlighting_integer] ||= "color:#A4C260"
38
+ @config[:syntax_highlighting_inline] ||= "background:#151515"
39
+ @config[:syntax_highlighting_instance] ||= "color:#D0CFFE"
40
+ @config[:syntax_highlighting_doctype] ||= "color:#E7BE69"
41
+ @config[:syntax_highlighting_keyword] ||= "color:#CB7832"
42
+ @config[:syntax_highlighting_regex] ||= "color:#A4C260"
43
+ @config[:syntax_highlighting_string] ||= "color:#A4C260"
44
+ @config[:syntax_highlighting_symbol] ||= "color:#6C9CBD"
45
+ @config[:syntax_highlighting_html] ||= "color:#E7BE69"
46
+ @config[:syntax_highlighting_boolean] ||= "color:#6C9CBD"
47
+ @config[:syntax_highlighting_line_numbers]||= :inline
48
+ @config[:swear_words] ||= []
49
+ end
50
+ end
@@ -0,0 +1,42 @@
1
+ class TBBC
2
+
3
+ def css(config = nil)
4
+ conf config
5
+ output=" <style type=\"text/css\">
6
+ .CodeRay {
7
+ background-color: #232323;
8
+ border: 1px solid black;
9
+ font-family: 'Courier New', 'Terminal', monospace;
10
+ color: #E6E0DB;
11
+ padding: 3px 5px;
12
+ overflow: auto;
13
+ font-size: 12px;
14
+ margin: 12px 0;
15
+ }
16
+ .CodeRay pre {
17
+ margin: 0px;
18
+ padding: 0px;
19
+ }
20
+
21
+ .CodeRay .an { #{@config[:syntax_highlighting_html]} } /* html attribute */
22
+ .CodeRay .c { #{@config[:syntax_highlighting_comment]} } /* comment */
23
+ .CodeRay .ch { #{@config[:syntax_highlighting_escaped]} } /* escaped character */
24
+ .CodeRay .cl { #{@config[:syntax_highlighting_class]} } /* class */
25
+ .CodeRay .co { #{@config[:syntax_highlighting_constant]} } /* constant */
26
+ .CodeRay .fl { #{@config[:syntax_highlighting_float]} } /* float */
27
+ .CodeRay .fu { #{@config[:syntax_highlighting_function]} } /* function */
28
+ .CodeRay .gv { #{@config[:syntax_highlighting_global]} } /* global variable */
29
+ .CodeRay .i { #{@config[:syntax_highlighting_integer]} } /* integer */
30
+ .CodeRay .il { #{@config[:syntax_highlighting_inline]} } /* inline code */
31
+ .CodeRay .iv { #{@config[:syntax_highlighting_instance]} } /* instance variable */
32
+ .CodeRay .pp { #{@config[:syntax_highlighting_doctype]} } /* doctype */
33
+ .CodeRay .r { #{@config[:syntax_highlighting_keyword]} } /* keyword */
34
+ .CodeRay .rx { #{@config[:syntax_highlighting_regex]} } /* regex */
35
+ .CodeRay .s { #{@config[:syntax_highlighting_string]} } /* string */
36
+ .CodeRay .sy { #{@config[:syntax_highlighting_symbol]} } /* symbol */
37
+ .CodeRay .ta { #{@config[:syntax_highlighting_html]} } /* html tag */
38
+ .CodeRay .pc { #{@config[:syntax_highlighting_boolean]} } /* boolean */
39
+ </style>"
40
+ return output
41
+ end
42
+ end
@@ -0,0 +1,37 @@
1
+ class TBBC
2
+ # Parses the input and returns it in tbbc form.
3
+ #
4
+ # TBBC.new.parse("[b]Bold[/b]")
5
+ #
6
+ # Would return "<strong>Bold</strong>"
7
+ def parse(input)
8
+ #Remove the < and > which will disable all HTML
9
+ input=input.gsub("<","&lt;").gsub(">","&gt;") unless @config[:disable_html] == false
10
+ #CodeRay
11
+ input=coderay(input) unless @config[:syntax_highlighting] == false
12
+ #Convert new lines to <br />'s
13
+ input=input.gsub(/\n/,'<br />') unless @config[:newline_enabled] == false
14
+ #[nobbc] tags
15
+ input=nobbc input unless @config[:nobbc_enabled] == false
16
+ #Swear Filtering
17
+ input=swear_filter(input) unless @config[:swear_filter_enabled] == false
18
+ #Loading Custom Tags
19
+ begin
20
+ if @config[:custom_tags] then
21
+ @config[:custom_tags].each do |tag|
22
+ input=runtag(input,tag)
23
+ end
24
+ end
25
+ rescue
26
+ input+="<br />Custom Tags failed to run"
27
+ end
28
+ #Loading Default Tags and applying them
29
+ if @config[:allow_defaults] then
30
+ TBBC::Tags.each do |tag|
31
+ input=runtag(input,tag)
32
+ end
33
+ end
34
+ input=correctbrs input
35
+ return input
36
+ end
37
+ end
@@ -0,0 +1,14 @@
1
+ class String
2
+ # Allows for "[b]Bold[/b]".tbbc
3
+ #
4
+ # This method is also configurable, taking the normal configuration options.
5
+ #
6
+ # "[b]Bold [i]and italic[/i][/b]".tbbc(:strong_enabled => false, :italic_enabled => false)
7
+ #
8
+ # Will return "[b]Bold [i]and italic[/i][/b]"
9
+ def tbbc(conf = nil)
10
+ bbc=TBBC.new
11
+ bbc.conf(conf) if conf
12
+ bbc.parse(self)
13
+ end
14
+ end
@@ -0,0 +1,46 @@
1
+ class TBBC
2
+ Tags = [[/\[b\](.*?)\[\/b\]/,'<strong>\1</strong>',:strong_enabled],
3
+ [/\[i\](.*?)\[\/i\]/,'<i>\1</i>',:italic_enabled],
4
+ [/\[u\](.*?)\[\/u\]/,'<u>\1</u>',:underline_enabled],
5
+ [/\[url\](.*?)\[\/url\]/,'<a href="\1" target="@config[:url_target]">\1</a>',:url_enabled],
6
+ [/\[url=(.*?)\](.*?)\[\/url\]/,'<a href="\1" target="@config[:url_target]">\2</a>',:url_enabled],
7
+ [/\[url=(.*?) target=(.*?)\](.*?)\[\/url\]/,'<a href="\1" target="\2">\3</a>',:url_enabled],
8
+ [/\[img\](.*?)\[\/img\]/,'<img src="\1" alt="@config[:image_alt]" />',:image_enabled],
9
+ [/\[img alt=(.*?)\](.*?)\[\/img\]/,'<img src="\2" alt="\1" />',:image_enabled],
10
+ [/\[ul\](.*?)\[\/ul\]/,'<ul>\1</ul>',:list_enabled],
11
+ [/\[ol\](.*?)\[\/ol\]/,'<ol>\1</ol>',:list_enabled],
12
+ [/\[li\](.*?)\[\/li\]/,'<li>\1</li>',:list_enabled],
13
+ [/\[quote\](.*?)\[\/quote\]/,'<blockquote>\1</blockquote>',:quote_enabled],
14
+ [/\[quote=(.*?)\](.*?)\[\/quote\]/,'<blockquote><i>Posted by <b>\1</b></i><br />\2</blockquote>',:quote_enabled],
15
+ [/\[color=(.*?)\](.*?)\[\/color\]/,'<span style="color:\1;">\2</span>',:color_enabled],
16
+ [/\[center\](.*?)\[\/center\]/,'<div style="text-align:center">\1</div>',:alignment_enabled],
17
+ [/\[left\](.*?)\[\/left\]/,'<div style="text-align:left">\1</div>',:alignment_enabled],
18
+ [/\[right\](.*?)\[\/right\]/,'<div style="text-align:right">\1</div>',:alignment_enabled],
19
+ [/\[acronym=(.*?)\](.*?)\[\/acronym\]/,'<acronym title="\1">\2</acronym>',:acronym_enabled],
20
+ [/\[table\](.*?)\[\/table\]/,'<table width="@config[:table_width]">\1</table>',:table_enabled],
21
+ [/\[tr\](.*?)\[\/tr\]/,'<tr>\1</tr>',:table_enabled],
22
+ [/\[td\](.*?)\[\/td\]/,'<td>\1</td>',:table_enabled],
23
+ [/\[th\](.*?)\[\/th\]/,'<th>\1</th>',:table_enabled]]
24
+
25
+ private
26
+
27
+ # Runs the given tag array on the given string.
28
+ def runtag(s,tag)
29
+ check = tag[2]
30
+ check = @config[tag[2]] if is_symbol? tag[2]
31
+ s=s.gsub(tag[0],replace_config_values(tag[1])) unless check == false
32
+ s
33
+ end
34
+
35
+ def is_symbol?(v)
36
+ v == v.to_sym
37
+ end
38
+
39
+ def replace_config_values(s)
40
+ if s.scan(/@config\[:(.*?)\]/) != [] then
41
+ return s.gsub(/@config\[:(.*?)\]/,@config[$1.to_sym])
42
+ else
43
+ return s
44
+ end
45
+ end
46
+ end
data/lib/trainbbcode.rb CHANGED
@@ -1,109 +1,26 @@
1
+ require 'trainbbcode/parse.rb'
2
+ require 'trainbbcode/tags.rb'
3
+ require 'trainbbcode/configure.rb'
4
+ require 'trainbbcode/string.rb'
5
+ require 'trainbbcode/css.rb'
6
+ require 'trainbbcode/swear_filter.rb'
7
+ require 'rubygems'
8
+ require 'coderay'
9
+
10
+ #Helper Method
11
+ require 'trainbbcode/application_helper.rb'
12
+ ActionView::Base.send :include, TBBCHelper
13
+
1
14
  class TBBC
15
+ # Creates a new TBBC class with everything set to default
16
+ #
17
+ # Also sets :configed_by to "system"
2
18
  def initialize
3
19
  self.conf(:configed_by => "system")
4
- @securitykey="#{Time.now.to_i}"
5
- end
6
- def conf(config)
7
- require 'rubygems'
8
- require 'coderay'
9
- config[:configed_by] ||= "user"
10
- config[:image_alt] ||= "Posted Image"
11
- config[:url_target] ||= "_BLANK"
12
- config[:allow_defaults] ||= true
13
- config[:table_width] ||= "100%"
14
- config[:syntax_highlighting] ||= true
15
- config[:syntax_highlighting_html] ||= "color: #E7BE69"
16
- config[:syntax_highlighting_comment] ||= "color:#BC9358; font-style: italic;"
17
- config[:syntax_highlighting_escaped] ||= "color:#509E4F"
18
- config[:syntax_highlighting_class] ||= "color:#FFF"
19
- config[:syntax_highlighting_constant] ||= "color:#FFF"
20
- config[:syntax_highlighting_float] ||= "color:#A4C260"
21
- config[:syntax_highlighting_function] ||= "color:#FFC56D"
22
- config[:syntax_highlighting_global] ||= "color:#D0CFFE"
23
- config[:syntax_highlighting_integer] ||= "color:#A4C260"
24
- config[:syntax_highlighting_inline] ||= "background:#151515"
25
- config[:syntax_highlighting_instance] ||= "color:#D0CFFE"
26
- config[:syntax_highlighting_doctype] ||= "color:#E7BE69"
27
- config[:syntax_highlighting_keyword] ||= "color:#CB7832"
28
- config[:syntax_highlighting_regex] ||= "color:#A4C260"
29
- config[:syntax_highlighting_string] ||= "color:#A4C260"
30
- config[:syntax_highlighting_symbol] ||= "color:#6C9CBD"
31
- config[:syntax_highlighting_html] ||= "color:#E7BE69"
32
- config[:syntax_highlighting_boolean] ||= "color:#6C9CBD"
33
- config[:syntax_highlighting_line_numbers]||= :inline
34
- #Instanize the config variable
35
- @config=config
36
- end
37
- def parse(s)
38
- #Remove the < and > which will disable all HTML
39
- s=s.gsub("<","&lt;").gsub(">","&gt;") unless @config[:disable_html] == false
40
- #CodeRay
41
- s=coderay(s) unless @config[:syntax_highlighting] == false
42
- #Convert new lines to <br />'s
43
- s=s.gsub(/\n/,'<br />') unless @config[:newline_enabled] == false
44
- #[nobbc] tags
45
- s=nobbc s unless @config[:nobbc_enabled] == false
46
- #Loading Custom Tags
47
- begin
48
- if @config[:custom_tags] then
49
- @config[:custom_tags].each do |tag|
50
- s=s.gsub(tag[0],tag[1]) unless tag[2] == false
51
- end
52
- end
53
- rescue
54
- s+="<br />Custom Tags failed to run"
55
- end
56
- #Loading Default Tags and applying them
57
- if @config[:allow_defaults] then
58
- tags=load_default_tags
59
- tags.each do |tag|
60
- s=s.gsub(tag[0],tag[1]) unless tag[2] == false
61
- end
62
- end
63
- s=correctbrs s
64
- return s
65
- end
66
- def load_default_tags
67
- tags=[
68
- #Bold
69
- [/\[b\](.*?)\[\/b\]/,'<strong>\1</strong>',@config[:strong_enabled]],
70
- #Italic
71
- [/\[i\](.*?)\[\/i\]/,'<i>\1</i>',@config[:italic_enabled]],
72
- #Underline
73
- [/\[u\](.*?)\[\/u\]/,'<u>\1</u>',@config[:underline_enabled]],
74
- #Url
75
- [/\[url\](.*?)\[\/url\]/,'<a href="\1" target="' + @config[:url_target] +'">\1</a>',@config[:url_enabled]],
76
- [/\[url=(.*?)\](.*?)\[\/url\]/,'<a href="\1" target="' + @config[:url_target] + '">\2</a>',@config[:url_enabled]],
77
- [/\[url=(.*?) target=(.*?)\](.*?)\[\/url\]/,'<a href="\1" target="\2">\3</a>',@config[:url_enabled]],
78
- #Image
79
- [/\[img\](.*?)\[\/img\]/,'<img src="\1" alt="'+ @config[:image_alt] + '" />',@config[:image_enabled]],
80
- [/\[img alt=(.*?)\](.*?)\[\/img\]/,'<img src="\2" alt="\1" />',@config[:image_enabled]],
81
- #Un-Ordered List
82
- [/\[ul\](.*?)\[\/ul\]/,'<ul>\1</ul>',@config[:list_enabled]],
83
- #Ordered List
84
- [/\[ol\](.*?)\[\/ol\]/,'<ol>\1</ol>',@config[:list_enabled]],
85
- #List Item
86
- [/\[li\](.*?)\[\/li\]/,'<li>\1</li>',@config[:list_enabled]],
87
- #Quote
88
- [/\[quote\](.*?)\[\/quote\]/,'<blockquote>\1</blockquote>',@config[:quote_enabled]],
89
- [/\[quote=(.*?)\](.*?)\[\/quote\]/,'<blockquote><i>Posted by <b>\1</b></i><br />\2</blockquote>',@config[:quote_enabled]],
90
- #Color
91
- [/\[color=(.*?)\](.*?)\[\/color\]/,'<span style="color:\1;">\2</span>',@config[:color_enabled]],
92
- #Alignment
93
- [/\[center\](.*?)\[\/center\]/,'<div style="text-align:center">\1</div>',@config[:alignment_enabled]],
94
- [/\[left\](.*?)\[\/left\]/,'<div style="text-align:left">\1</div>',@config[:alignment_enabled]],
95
- [/\[right\](.*?)\[\/right\]/,'<div style="text-align:right">\1</div>',@config[:alignment_enabled]],
96
- #Acronym
97
- [/\[acronym=(.*?)\](.*?)\[\/acronym\]/,'<acronym title="\1">\2</acronym>',@config[:acronym_enabled]],
98
- #Tables
99
- #Table Tag
100
- [/\[table\](.*?)\[\/table\]/,'<table width="' + @config[:table_width]+ '">\1</table>',@config[:table_enabled]],
101
- #Table Elements
102
- [/\[tr\](.*?)\[\/tr\]/,'<tr>\1</tr>',@config[:table_enabled]],
103
- [/\[td\](.*?)\[\/td\]/,'<td>\1</td>',@config[:table_enabled]],
104
- [/\[th\](.*?)\[\/th\]/,'<th>\1</th>',@config[:table_enabled]]
105
- ]
106
20
  end
21
+
22
+ private
23
+
107
24
  def nobbc(s)
108
25
  find=s.scan(/\[nobbc\](.*?)\[\/nobbc\]/)
109
26
  find.each do |f|
@@ -112,67 +29,23 @@ class TBBC
112
29
  end
113
30
  return s
114
31
  end
115
- def css
116
- output="<style type=\"text/css\">
117
- .CodeRay {
118
- background-color: #232323;
119
- border: 1px solid black;
120
- font-family: 'Courier New', 'Terminal', monospace;
121
- color: #E6E0DB;
122
- padding: 3px 5px;
123
- overflow: auto;
124
- font-size: 12px;
125
- margin: 12px 0;
126
- }
127
- .CodeRay pre {
128
- margin: 0px;
129
- padding: 0px;
130
- }
131
-
132
- .CodeRay .an { #{@config[:syntax_highlighting_html]} } /* html attribute */
133
- .CodeRay .c { #{@config[:syntax_highlighting_comment]} } /* comment */
134
- .CodeRay .ch { #{@config[:syntax_highlighting_escaped]} } /* escaped character */
135
- .CodeRay .cl { #{@config[:syntax_highlighting_class]} } /* class */
136
- .CodeRay .co { #{@config[:syntax_highlighting_constant]} } /* constant */
137
- .CodeRay .fl { #{@config[:syntax_highlighting_float]} } /* float */
138
- .CodeRay .fu { #{@config[:syntax_highlighting_function]} } /* function */
139
- .CodeRay .gv { #{@config[:syntax_highlighting_global]} } /* global variable */
140
- .CodeRay .i { #{@config[:syntax_highlighting_integer]} } /* integer */
141
- .CodeRay .il { #{@config[:syntax_highlighting_inline]} } /* inline code */
142
- .CodeRay .iv { #{@config[:syntax_highlighting_instance]} } /* instance variable */
143
- .CodeRay .pp { #{@config[:syntax_highlighting_doctype]} } /* doctype */
144
- .CodeRay .r { #{@config[:syntax_highlighting_keyword]} } /* keyword */
145
- .CodeRay .rx { #{@config[:syntax_highlighting_regex]} } /* regex */
146
- .CodeRay .s { #{@config[:syntax_highlighting_string]} } /* string */
147
- .CodeRay .sy { #{@config[:syntax_highlighting_symbol]} } /* symbol */
148
- .CodeRay .ta { #{@config[:syntax_highlighting_html]} } /* html tag */
149
- .CodeRay .pc { #{@config[:syntax_highlighting_boolean]} } /* boolean */
150
- </style>"
151
- return output
152
- end
32
+
153
33
  def correctbrs(s)
154
34
  #Corrects the extra brs
155
35
  s=s.gsub(/<br \/><(ul|li|table|tr|td|th)/,'<\1')
156
36
  s=s.gsub(/<br \/><\/(ul|li|table|tr|td|th)/,'</\1')
157
37
  end
158
- def coderay(s)
159
- s=s.gsub("\r","")
160
- scan=s.scan(/\[code lang=(.+?)\](.+?)\[\/code\]/m)
161
- scan.each do |a|
162
- parse=a[1].gsub("&lt;","<").gsub("&gt;",">")
163
- lang=a[0]
38
+
39
+ def coderay(input)
40
+ input=input.gsub("\r","")
41
+ scan=input.scan(/\[code lang=(.+?)\](.+?)\[\/code\]/m)
42
+ scan.each do |splits|
43
+ parse=splits[1].gsub("&lt;","<").gsub("&gt;",">")
44
+ lang=splits[0]
164
45
  parsed="[nobbc]" + CodeRay.scan(parse, lang).div(:css => :class, :line_numbers => @config[:syntax_highlighting_line_numbers]) + "[/nobbc]"
165
- s=s.gsub("[code lang=#{a[0]}]#{a[1]}[/code]",parsed)
46
+ input=input.gsub("[code lang=#{lang}]#{splits[1]}[/code]",parsed)
166
47
  end
167
- s
168
- end
169
- end
170
-
171
- #Add .tbbc to Strings
172
- class String
173
- def tbbc(conf = nil)
174
- bbc=TBBC.new
175
- bbc.conf(conf) if conf
176
- bbc.parse(self)
48
+ input
177
49
  end
50
+
178
51
  end
data/trainbbcode.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{trainbbcode}
5
- s.version = "0.3.5"
5
+ s.version = "1.0.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Adam \"Arcath\" Laycock"]
9
- s.date = %q{2010-03-31}
9
+ s.date = %q{2010-07-06}
10
10
  s.description = %q{Provides BBCode for Ruby.}
11
11
  s.email = %q{adam@arcath.net}
12
- s.extra_rdoc_files = ["README.rdoc", "lib/trainbbcode.rb"]
13
- s.files = ["Manifest", "README.rdoc", "Rakefile", "init.rb", "lib/trainbbcode.rb", "trainbbcode.gemspec"]
14
- s.homepage = %q{http://www.arcath.net/pages/2}
12
+ s.extra_rdoc_files = ["README.rdoc", "lib/trainbbcode.rb", "lib/trainbbcode/configure.rb", "lib/trainbbcode/css.rb", "lib/trainbbcode/parse.rb", "lib/trainbbcode/string.rb", "lib/trainbbcode/tags.rb"]
13
+ s.files = ["README.rdoc", "Rakefile", "init.rb", "lib/trainbbcode.rb", "lib/trainbbcode/configure.rb", "lib/trainbbcode/css.rb", "lib/trainbbcode/parse.rb", "lib/trainbbcode/string.rb", "lib/trainbbcode/tags.rb", "Manifest", "trainbbcode.gemspec"]
14
+ s.homepage = %q{http://www.arcath.net/}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Trainbbcode", "--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = %q{trainbbcode}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trainbbcode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam "Arcath" Laycock
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-03-31 00:00:00 +01:00
12
+ date: 2010-07-06 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -31,15 +31,25 @@ extensions: []
31
31
  extra_rdoc_files:
32
32
  - README.rdoc
33
33
  - lib/trainbbcode.rb
34
+ - lib/trainbbcode/configure.rb
35
+ - lib/trainbbcode/css.rb
36
+ - lib/trainbbcode/parse.rb
37
+ - lib/trainbbcode/string.rb
38
+ - lib/trainbbcode/tags.rb
34
39
  files:
35
- - Manifest
36
40
  - README.rdoc
37
41
  - Rakefile
38
42
  - init.rb
39
43
  - lib/trainbbcode.rb
44
+ - lib/trainbbcode/configure.rb
45
+ - lib/trainbbcode/css.rb
46
+ - lib/trainbbcode/parse.rb
47
+ - lib/trainbbcode/string.rb
48
+ - lib/trainbbcode/tags.rb
49
+ - Manifest
40
50
  - trainbbcode.gemspec
41
51
  has_rdoc: true
42
- homepage: http://www.arcath.net/pages/2
52
+ homepage: http://www.arcath.net/
43
53
  licenses: []
44
54
 
45
55
  post_install_message: