markabb 0.0.2 → 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/benchmark +20 -0
- data/lib/markabb/classes/callback.rb +13 -0
- data/lib/markabb/classes/tag.rb +30 -6
- data/lib/markabb/config.rb +1 -0
- data/lib/markabb/highlighters/coderay.rb +17 -0
- data/lib/markabb/tags/formatting.rb +10 -10
- data/lib/markabb/tags/image.rb +1 -1
- data/lib/markabb/tags/link.rb +1 -1
- data/lib/markabb/tags/list.rb +16 -3
- data/lib/markabb/tags/table.rb +6 -6
- data/lib/markabb/version.rb +1 -1
- data/lib/markabb.rb +5 -0
- data/markabb.gemspec +3 -0
- data/spec/highlighters/coderay_spec.rb +16 -0
- data/spec/highlighters/raw_spec.rb +1 -0
- data/spec/markabb_callback_spec.rb +32 -0
- data/spec/markabb_tags_spec.rb +15 -1
- data/spec/spec_helper.rb +13 -1
- data/spec/tags/list_spec.rb +8 -0
- metadata +34 -3
data/benchmark
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env ruby -wKU
|
|
2
|
+
require 'benchmark'
|
|
3
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
4
|
+
require 'markabb'
|
|
5
|
+
puts "Benchmarking Markabb"
|
|
6
|
+
|
|
7
|
+
Markabb.configure do |c|
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
simple_string = "[b]Bold[/b]"
|
|
11
|
+
multi_format = "[b]bold [i]italic[/i][/b][u]underline[/u]"
|
|
12
|
+
|
|
13
|
+
Benchmark.bm do |x|
|
|
14
|
+
x.report("1 string:") { simple_string.markabb }
|
|
15
|
+
x.report("100 strings:") { 100.times do simple_string.markabb end }
|
|
16
|
+
x.report("1 multi format:") { multi_format.markabb }
|
|
17
|
+
x.report("100 multi formats:") { 100.times do multi_format.markabb end }
|
|
18
|
+
x.report("1000 string parses") { 500.times do multi_format.markabb
|
|
19
|
+
simple_string.markabb end }
|
|
20
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Markabb
|
|
2
|
+
# Class for callbacks, all callbacks should be an instance of this.
|
|
3
|
+
class Callback
|
|
4
|
+
def initialize(proc)
|
|
5
|
+
@proc = proc
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
# Passes all the options found in the gsub from the tag (see Markabb::Tag) to the Proc
|
|
9
|
+
def run(ar)
|
|
10
|
+
@proc.call *ar
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
data/lib/markabb/classes/tag.rb
CHANGED
|
@@ -39,20 +39,40 @@ module Markabb
|
|
|
39
39
|
|
|
40
40
|
# Creates the Markabb::Tag object
|
|
41
41
|
def initialize(matcher, replace)
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
if matcher.is_a? String
|
|
43
|
+
@matcher = generate_matcher(matcher)
|
|
44
|
+
elsif matcher.is_a? Regexp
|
|
45
|
+
@matcher = matcher
|
|
46
|
+
else
|
|
47
|
+
raise 'matcher is not valid'
|
|
48
|
+
end
|
|
49
|
+
if replace.is_a? String
|
|
50
|
+
@replace = replace
|
|
51
|
+
elsif replace.is_a? Markabb::Callback
|
|
52
|
+
@replace = false
|
|
53
|
+
@callback = replace
|
|
54
|
+
else
|
|
55
|
+
raise 'Replace is not valid'
|
|
56
|
+
end
|
|
44
57
|
end
|
|
45
58
|
|
|
46
59
|
# Runs the tag on the input string
|
|
47
60
|
#
|
|
48
61
|
# Takes the target string and a Markabb::Config object
|
|
49
62
|
def run(s, config)
|
|
50
|
-
|
|
63
|
+
if @replace
|
|
64
|
+
return s.gsub(@matcher, generate_replacement(@replace, config))
|
|
65
|
+
elsif @callback
|
|
66
|
+
return run_callback(s)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
private
|
|
71
|
+
|
|
72
|
+
def run_callback(s)
|
|
73
|
+
s.gsub(@matcher) { |match| @callback.run(match.scan(@matcher).first) }
|
|
51
74
|
end
|
|
52
75
|
|
|
53
|
-
# Generates the replacement string
|
|
54
|
-
#
|
|
55
|
-
# Takes the replacement string and a config object
|
|
56
76
|
def generate_replacement(replace, config)
|
|
57
77
|
if replace.scan(/config\[:(.*?)\]/) != [] then
|
|
58
78
|
return replace.gsub(/config\[(.*?)\]/, config[$1.to_sym])
|
|
@@ -60,5 +80,9 @@ module Markabb
|
|
|
60
80
|
return replace
|
|
61
81
|
end
|
|
62
82
|
end
|
|
83
|
+
|
|
84
|
+
def generate_matcher(tag)
|
|
85
|
+
/\[#{tag}\](.*?)\[\/#{tag}\]/
|
|
86
|
+
end
|
|
63
87
|
end
|
|
64
88
|
end
|
data/lib/markabb/config.rb
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Markabb
|
|
2
|
+
module Highlighters
|
|
3
|
+
# Markabb Syntax Highlighter for CodeRay
|
|
4
|
+
#
|
|
5
|
+
# See http://http://coderay.rubychan.de/ for CodeRay
|
|
6
|
+
class Coderay < Markabb::SyntaxHighlighter
|
|
7
|
+
# Takes the language and string as an option and passes config from Markabb for coderay
|
|
8
|
+
#
|
|
9
|
+
# See http://coderay.rubychan.de/ for CodeRays configuration options
|
|
10
|
+
def parse(lang, s)
|
|
11
|
+
"[nobbc]" + ::CodeRay.scan(s, lang).div(Markabb.config.coderay_options) + "[/nobbc]"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
Markabb.register_highlighter(:coderay, Markabb::Highlighters::Coderay)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
Markabb.register_tag :bold, Markabb::Tag.new(
|
|
2
|
-
Markabb.register_tag :italic, Markabb::Tag.new(
|
|
3
|
-
Markabb.register_tag :underline, Markabb::Tag.new(
|
|
4
|
-
Markabb.register_tag :center, Markabb::Tag.new(
|
|
5
|
-
Markabb.register_tag :left, Markabb::Tag.new(
|
|
6
|
-
Markabb.register_tag :right, Markabb::Tag.new(
|
|
7
|
-
Markabb.register_tag :heading_1, Markabb::Tag.new(
|
|
8
|
-
Markabb.register_tag :heading_2, Markabb::Tag.new(
|
|
9
|
-
Markabb.register_tag :heading_3, Markabb::Tag.new(
|
|
10
|
-
Markabb.register_tag :heading_4, Markabb::Tag.new(
|
|
1
|
+
Markabb.register_tag :bold, Markabb::Tag.new('b', '<b>\1</b>'), :formatting
|
|
2
|
+
Markabb.register_tag :italic, Markabb::Tag.new('i', '<i>\1</i>'), :formatting
|
|
3
|
+
Markabb.register_tag :underline, Markabb::Tag.new('u', '<u>\1</u>'), :formatting
|
|
4
|
+
Markabb.register_tag :center, Markabb::Tag.new('center', '<center>\1</center>'), :formatting
|
|
5
|
+
Markabb.register_tag :left, Markabb::Tag.new('left', '<left>\1</left>'), :formatting
|
|
6
|
+
Markabb.register_tag :right, Markabb::Tag.new('right', '<right>\1</right>'), :formatting
|
|
7
|
+
Markabb.register_tag :heading_1, Markabb::Tag.new('h1', '<h1>\1</h1>'), :formatting
|
|
8
|
+
Markabb.register_tag :heading_2, Markabb::Tag.new('h2', '<h2>\1</h2>'), :formatting
|
|
9
|
+
Markabb.register_tag :heading_3, Markabb::Tag.new('h3', '<h3>\1</h3>'), :formatting
|
|
10
|
+
Markabb.register_tag :heading_4, Markabb::Tag.new('h4', '<h4>\1</h4>'), :formatting
|
data/lib/markabb/tags/image.rb
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Markabb.register_tag :image, Markabb::Tag.new(
|
|
1
|
+
Markabb.register_tag :image, Markabb::Tag.new('img', '<img src="\1" alt="config[:image_alt]" />'), :image
|
|
2
2
|
Markabb.register_tag :image_with_alt, Markabb::Tag.new(/\[img alt=(.*?)\](.*?)\[\/img\]/, '<img src="\2" alt="\1" />'), :image
|
data/lib/markabb/tags/link.rb
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Markabb.register_tag :url, Markabb::Tag.new(
|
|
1
|
+
Markabb.register_tag :url, Markabb::Tag.new('url', '<a href="\1" target="config[:url_target]">\1</a>'), :link
|
|
2
2
|
Markabb.register_tag :url_with_title, Markabb::Tag.new(/\[url=(.*?)\](.*?)\[\/url\]/, '<a href="\1" target="config[:url_target]">\2</a>'), :link
|
data/lib/markabb/tags/list.rb
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
list_callback = Markabb::Callback.new(Proc.new { |s|
|
|
2
|
+
if s =~ /\[\*\]/
|
|
3
|
+
tag = "ul"
|
|
4
|
+
elsif s =~ /\[#\]/
|
|
5
|
+
tag = "ol"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
items = s.gsub(/\[list\]/, '').gsub(/\[\/list\]/, '').gsub(/\[(\*|#)\](.*?)(\[|<|$)/, '<li>\2</li>\3').gsub(/<\/li><br \/><li>/, '</li><li>')
|
|
9
|
+
|
|
10
|
+
"<#{tag}>#{items}</#{tag}>"
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
Markabb.register_tag :un_ordered, Markabb::Tag.new('ul', '<ul>\1</ul>'), :lists
|
|
14
|
+
Markabb.register_tag :ordered, Markabb::Tag.new('ol', '<ol>\1</ol>'), :lists
|
|
15
|
+
Markabb.register_tag :list_item, Markabb::Tag.new('li', '<li>\1</li>'), :lists
|
|
16
|
+
Markabb.register_tag :smart_list, Markabb::Tag.new(/\[list\](.*?)\[\/list\]/, list_callback), :lists
|
data/lib/markabb/tags/table.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Markabb.register_tag :table, Markabb::Tag.new(
|
|
2
|
-
Markabb.register_tag :table_tr, Markabb::Tag.new(
|
|
3
|
-
Markabb.register_tag :table_td, Markabb::Tag.new(
|
|
4
|
-
Markabb.register_tag :table_header, Markabb::Tag.new(
|
|
5
|
-
Markabb.register_tag :table_row, Markabb::Tag.new(
|
|
6
|
-
Markabb.register_tag :table_cell, Markabb::Tag.new(
|
|
1
|
+
Markabb.register_tag :table, Markabb::Tag.new('table', '<table width="config[:table_width]">\1</table>'), :table
|
|
2
|
+
Markabb.register_tag :table_tr, Markabb::Tag.new('tr', '<tr>\1</tr>'), :table
|
|
3
|
+
Markabb.register_tag :table_td, Markabb::Tag.new('td', '<td>\1</td>'), :table
|
|
4
|
+
Markabb.register_tag :table_header, Markabb::Tag.new('th', '<th>\1</th>'), :table
|
|
5
|
+
Markabb.register_tag :table_row, Markabb::Tag.new('row', '<tr>\1</tr>'), :table
|
|
6
|
+
Markabb.register_tag :table_cell, Markabb::Tag.new('cell', '<td>\1</td>'), :table
|
data/lib/markabb/version.rb
CHANGED
data/lib/markabb.rb
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
|
+
# Gems
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
require 'coderay'
|
|
1
4
|
# Top Level Requires
|
|
2
5
|
require "markabb/config"
|
|
3
6
|
require "markabb/parse"
|
|
4
7
|
require "markabb/version"
|
|
5
8
|
# Clases
|
|
9
|
+
require "markabb/classes/callback"
|
|
6
10
|
require "markabb/classes/parser"
|
|
7
11
|
require "markabb/classes/tag"
|
|
8
12
|
require "markabb/classes/string"
|
|
9
13
|
require "markabb/classes/syntax_highlighter"
|
|
10
14
|
# Highlighters
|
|
15
|
+
require "markabb/highlighters/coderay"
|
|
11
16
|
require "markabb/highlighters/raw"
|
|
12
17
|
|
|
13
18
|
# Main Markabb Module, all code is a sub of this
|
data/markabb.gemspec
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Markabb::Highlighters::Coderay do
|
|
4
|
+
it "should be selectable" do
|
|
5
|
+
default_config
|
|
6
|
+
Markabb.config.syntax_highlighter = :coderay
|
|
7
|
+
"[code lang=ruby]:foo => 'bar'[/code]".markabb
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should allow you configure coderay" do
|
|
11
|
+
default_config
|
|
12
|
+
Markabb.config.syntax_highlighter = :coderay
|
|
13
|
+
Markabb.config.coderay_options = {:line_numbers => :inline}
|
|
14
|
+
"[code lang=ruby]:foo => 'bar'[/code]".markabb.should =~ /"#n1"/
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Markabb::Callback do
|
|
4
|
+
it "should take a proc" do
|
|
5
|
+
cb = Markabb::Callback.new(Proc.new { })
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should take an argument and pass it to the proc" do
|
|
9
|
+
sample_callback.run("this").should eq "THIS"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should allow callbacks to be called from Markabb::Tag" do
|
|
13
|
+
Markabb.register_tag :upcase, Markabb::Tag.new('up', sample_callback)
|
|
14
|
+
"[up]this[/up]".markabb.should eq "THIS"
|
|
15
|
+
Markabb.remove_tag :upcase
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should only parse the contents of the tag" do
|
|
19
|
+
Markabb.register_tag :upcase, Markabb::Tag.new('up', sample_callback)
|
|
20
|
+
"[up]this[/up] that [up]foo[/up]".markabb.should eq "THIS that FOO"
|
|
21
|
+
Markabb.remove_tag :upcase
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should work with multi input procs" do
|
|
25
|
+
callback = Markabb::Callback.new(Proc.new { |foo, bar|
|
|
26
|
+
"Foo: #{foo}, Bar: #{bar}"
|
|
27
|
+
})
|
|
28
|
+
Markabb.register_tag :foobar, Markabb::Tag.new(/\[foo=(.*?)\](.*?)\[\/foo\]/, callback)
|
|
29
|
+
"[foo=this]that[/foo]".markabb.should eq "Foo: this, Bar: that"
|
|
30
|
+
Markabb.remove_tag :foobar
|
|
31
|
+
end
|
|
32
|
+
end
|
data/spec/markabb_tags_spec.rb
CHANGED
|
@@ -6,7 +6,7 @@ describe Markabb::Tag do
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
it "should allow tag registration" do
|
|
9
|
-
Markabb.register_tag :foo, Markabb::Tag.new(/foo/, '
|
|
9
|
+
Markabb.register_tag :foo, Markabb::Tag.new(/foo/, 'foo')
|
|
10
10
|
Markabb::Tags[:foo].should be_a Markabb::Tag
|
|
11
11
|
end
|
|
12
12
|
|
|
@@ -31,4 +31,18 @@ describe Markabb::Tag do
|
|
|
31
31
|
default_config
|
|
32
32
|
"blah [nobbc][b]bold[/b][/nobbc] blah".markabb.should eq "blah [b]bold[/b] blah"
|
|
33
33
|
end
|
|
34
|
+
|
|
35
|
+
it "should support simple tag creators" do
|
|
36
|
+
tag = Markabb::Tag.new('bi', '<b><i>\1</i></b>')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should have a working simple tag" do
|
|
40
|
+
default_config
|
|
41
|
+
tag = Markabb::Tag.new('bi', '<b><i>\1</i></b>')
|
|
42
|
+
tag.run("[bi]test[/bi]", Markabb.config).should eq "<b><i>test</i></b>"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should raise an exception if a bad matcher is given" do
|
|
46
|
+
lambda { Markabb::Tag.new(7, '<b><i>\1</i></b>') }.should raise_exception
|
|
47
|
+
end
|
|
34
48
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -15,5 +15,17 @@ def default_config
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def sample_tag
|
|
18
|
-
Markabb.register_tag :test, Markabb::Tag.new(/
|
|
18
|
+
Markabb.register_tag :test, Markabb::Tag.new(/123/, '456'), :group
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def sample_proc
|
|
22
|
+
Proc.new { |s| upcase(s) }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def sample_callback
|
|
26
|
+
Markabb::Callback.new(sample_proc)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def upcase(s)
|
|
30
|
+
s.upcase
|
|
19
31
|
end
|
data/spec/tags/list_spec.rb
CHANGED
|
@@ -6,4 +6,12 @@ describe "List Tags" do
|
|
|
6
6
|
it_should_apply_formatting ['un_ordered', 'ul'],
|
|
7
7
|
['ordered', 'ol'],
|
|
8
8
|
['list_item', 'li']
|
|
9
|
+
|
|
10
|
+
it "should use ul with smart list *" do
|
|
11
|
+
"[list][*]foo\n[*]bar[/list]".markabb.should eq "<ul><li>foo</li><li>bar</li></ul>"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should use ol with smart list #" do
|
|
15
|
+
"[list][#]foo\n[/list]".markabb.should eq "<ol><li>foo</li></ol>"
|
|
16
|
+
end
|
|
9
17
|
end
|
metadata
CHANGED
|
@@ -3,10 +3,10 @@ name: markabb
|
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
|
5
5
|
segments:
|
|
6
|
+
- 1
|
|
6
7
|
- 0
|
|
7
8
|
- 0
|
|
8
|
-
|
|
9
|
-
version: 0.0.2
|
|
9
|
+
version: 1.0.0
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Adam "Arcath" Laycock
|
|
@@ -14,7 +14,7 @@ autorequire:
|
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
16
|
|
|
17
|
-
date: 2012-07-
|
|
17
|
+
date: 2012-07-12 00:00:00 +01:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
@@ -29,6 +29,30 @@ dependencies:
|
|
|
29
29
|
version: "0"
|
|
30
30
|
type: :development
|
|
31
31
|
version_requirements: *id001
|
|
32
|
+
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: yard
|
|
34
|
+
prerelease: false
|
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
segments:
|
|
40
|
+
- 0
|
|
41
|
+
version: "0"
|
|
42
|
+
type: :development
|
|
43
|
+
version_requirements: *id002
|
|
44
|
+
- !ruby/object:Gem::Dependency
|
|
45
|
+
name: coderay
|
|
46
|
+
prerelease: false
|
|
47
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
|
48
|
+
requirements:
|
|
49
|
+
- - ">="
|
|
50
|
+
- !ruby/object:Gem::Version
|
|
51
|
+
segments:
|
|
52
|
+
- 0
|
|
53
|
+
version: "0"
|
|
54
|
+
type: :runtime
|
|
55
|
+
version_requirements: *id003
|
|
32
56
|
description: Provides BBCode for Ruby and Rails
|
|
33
57
|
email:
|
|
34
58
|
- gems@arcath.net
|
|
@@ -44,12 +68,15 @@ files:
|
|
|
44
68
|
- Gemfile
|
|
45
69
|
- Rakefile
|
|
46
70
|
- Readme.md
|
|
71
|
+
- benchmark
|
|
47
72
|
- lib/markabb.rb
|
|
73
|
+
- lib/markabb/classes/callback.rb
|
|
48
74
|
- lib/markabb/classes/parser.rb
|
|
49
75
|
- lib/markabb/classes/string.rb
|
|
50
76
|
- lib/markabb/classes/syntax_highlighter.rb
|
|
51
77
|
- lib/markabb/classes/tag.rb
|
|
52
78
|
- lib/markabb/config.rb
|
|
79
|
+
- lib/markabb/highlighters/coderay.rb
|
|
53
80
|
- lib/markabb/highlighters/raw.rb
|
|
54
81
|
- lib/markabb/parse.rb
|
|
55
82
|
- lib/markabb/tags/formatting.rb
|
|
@@ -60,8 +87,10 @@ files:
|
|
|
60
87
|
- lib/markabb/tags/table.rb
|
|
61
88
|
- lib/markabb/version.rb
|
|
62
89
|
- markabb.gemspec
|
|
90
|
+
- spec/highlighters/coderay_spec.rb
|
|
63
91
|
- spec/highlighters/raw_spec.rb
|
|
64
92
|
- spec/macros/formatting_macros.rb
|
|
93
|
+
- spec/markabb_callback_spec.rb
|
|
65
94
|
- spec/markabb_parse_spec.rb
|
|
66
95
|
- spec/markabb_spec.rb
|
|
67
96
|
- spec/markabb_string_spec.rb
|
|
@@ -104,8 +133,10 @@ signing_key:
|
|
|
104
133
|
specification_version: 3
|
|
105
134
|
summary: Provides BBCode for Ruby and Rails
|
|
106
135
|
test_files:
|
|
136
|
+
- spec/highlighters/coderay_spec.rb
|
|
107
137
|
- spec/highlighters/raw_spec.rb
|
|
108
138
|
- spec/macros/formatting_macros.rb
|
|
139
|
+
- spec/markabb_callback_spec.rb
|
|
109
140
|
- spec/markabb_parse_spec.rb
|
|
110
141
|
- spec/markabb_spec.rb
|
|
111
142
|
- spec/markabb_string_spec.rb
|