markabb 0.0.1
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/.gitignore +7 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/Readme.md +4 -0
- data/lib/markabb/classes/parser.rb +50 -0
- data/lib/markabb/classes/tag.rb +61 -0
- data/lib/markabb/config.rb +47 -0
- data/lib/markabb/parse.rb +29 -0
- data/lib/markabb/tags/formatting.rb +10 -0
- data/lib/markabb/tags/image.rb +2 -0
- data/lib/markabb/tags/link.rb +2 -0
- data/lib/markabb/tags/list.rb +3 -0
- data/lib/markabb/tags/table.rb +4 -0
- data/lib/markabb/version.rb +4 -0
- data/lib/markabb.rb +32 -0
- data/markabb.gemspec +20 -0
- data/spec/macros/formatting_macros.rb +25 -0
- data/spec/markabb_parse_spec.rb +49 -0
- data/spec/markabb_spec.rb +16 -0
- data/spec/markabb_tags_spec.rb +21 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/tags/formatting_spec.rb +26 -0
- data/spec/tags/image_spec.rb +13 -0
- data/spec/tags/link_spec.rb +20 -0
- data/spec/tags/table_spec.rb +19 -0
- metadata +113 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/Readme.md
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
module Markabb
|
2
|
+
# Markab parser
|
3
|
+
# Takes a Markabb::Config object and a string as an input
|
4
|
+
class Parser
|
5
|
+
attr_reader :output
|
6
|
+
|
7
|
+
# Creates the parser object
|
8
|
+
def initialize(config, s)
|
9
|
+
@string = s
|
10
|
+
@config = config
|
11
|
+
@output = @string
|
12
|
+
parse
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def parse
|
18
|
+
disable_html if @config.disable_html
|
19
|
+
add_line_breaks
|
20
|
+
run_tags
|
21
|
+
end
|
22
|
+
|
23
|
+
def run_tags
|
24
|
+
Markabb::Tags.each do |k, v|
|
25
|
+
if v.is_a? Hash
|
26
|
+
unless @config["disable_#{k}".to_sym]
|
27
|
+
v.each do |sk, sv|
|
28
|
+
apply_tag(sv) unless @config["disable_#{sk}".to_sym]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
else
|
32
|
+
apply_tag(v)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def apply_tag(tag)
|
38
|
+
@output = tag.run(@output, @config)
|
39
|
+
end
|
40
|
+
|
41
|
+
def disable_html
|
42
|
+
@output = @output.gsub("<","<").gsub(">",">")
|
43
|
+
end
|
44
|
+
|
45
|
+
def add_line_breaks
|
46
|
+
@output = @output.gsub(/\n/, '<br />')
|
47
|
+
@output = @output.gsub(/<br \/>\[(ul|li|ol|tr|td|th)/,'[\1').gsub(/<br \/>\[\/(ul|li|ol|table|tr|td|th)/,'[/\1')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Markabb
|
2
|
+
# The hash which markabb stores all the avaliable tags in
|
3
|
+
Tags = {}
|
4
|
+
|
5
|
+
# Inserts a tag into Markabb::Tags
|
6
|
+
#
|
7
|
+
# Takes 3 inputs:
|
8
|
+
# name - a symbol which is used as its key
|
9
|
+
# tag - a Markabb::Tag object
|
10
|
+
# group - a way to group similar tags so they can all be disabled
|
11
|
+
#
|
12
|
+
# register_tag(:foo, Markabb::Tag, :bar)
|
13
|
+
#
|
14
|
+
# would produce a tags hash of
|
15
|
+
#
|
16
|
+
# {:bar => {:foo => Markabb::Tag}}
|
17
|
+
def self.register_tag(name, tag, group = nil)
|
18
|
+
if group
|
19
|
+
Tags[group] ||= {}
|
20
|
+
Tags[group][name] = tag
|
21
|
+
else
|
22
|
+
Tags[name] = tag
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Removes a tag from Markabb::Tags
|
27
|
+
# takes the symbol for the key to delete
|
28
|
+
def self.remove_tag(name)
|
29
|
+
Tags.delete(name)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Used for all tags (passed to register_tag)
|
33
|
+
# Takes a REGEX matcher and a string to replace it with
|
34
|
+
class Tag
|
35
|
+
attr_reader :matcher, :replace
|
36
|
+
|
37
|
+
# Creates the Markabb::Tag object
|
38
|
+
def initialize(matcher, replace)
|
39
|
+
@matcher = matcher
|
40
|
+
@replace = replace
|
41
|
+
end
|
42
|
+
|
43
|
+
# Runs the tag on the input string
|
44
|
+
#
|
45
|
+
# Takes the target string and a Markabb::Config object
|
46
|
+
def run(s, config)
|
47
|
+
s.gsub(@matcher, generate_replacement(@replace, config))
|
48
|
+
end
|
49
|
+
|
50
|
+
# Generates the replacement string
|
51
|
+
#
|
52
|
+
# Takes the replacement string and a config object
|
53
|
+
def generate_replacement(replace, config)
|
54
|
+
if replace.scan(/config\[:(.*?)\]/) != [] then
|
55
|
+
return replace.gsub(/config\[(.*?)\]/, config[$1.to_sym])
|
56
|
+
else
|
57
|
+
return replace
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Markabb
|
2
|
+
# The config class, inherits from Hash
|
3
|
+
# Borrowed from mina (https://github.com/nadarei/mina)
|
4
|
+
class Config < Hash
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
load_default_config
|
8
|
+
end
|
9
|
+
|
10
|
+
# Allows access to the hash though methods
|
11
|
+
# Provides all getter, setter and query methods for any key in the hash
|
12
|
+
def method_missing(meth, *args, &blk)
|
13
|
+
name = meth.to_s
|
14
|
+
return evaluate(self[meth]) if name.size == 1
|
15
|
+
# Ruby 1.8.7 doesn't let you do string[-1]
|
16
|
+
key, suffix = name[0..-2].to_sym, name[-1..-1]
|
17
|
+
case suffix
|
18
|
+
when '='
|
19
|
+
self[key] = args.first
|
20
|
+
when '?'
|
21
|
+
include? key
|
22
|
+
when '!'
|
23
|
+
raise Error, "Setting :#{key} is not set" unless include?(key)
|
24
|
+
evaluate self[key]
|
25
|
+
else
|
26
|
+
evaluate self[meth]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Returns a value or runs a proc depending on the value in the hash
|
31
|
+
def evaluate(value)
|
32
|
+
if value.is_a?(Proc)
|
33
|
+
value.call
|
34
|
+
else
|
35
|
+
value
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Sets the default config values
|
40
|
+
def load_default_config
|
41
|
+
self[:disable_html] ||= true
|
42
|
+
self[:url_target] ||= "_BLANK"
|
43
|
+
self[:image_alt] ||= "Posted Image"
|
44
|
+
self[:table_width] ||= "100%"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Markabb
|
2
|
+
# Passes the string to an instance of Markabb::Parser
|
3
|
+
#
|
4
|
+
# Can be passed a block to change the config
|
5
|
+
def self.parse(s)
|
6
|
+
# Set the config
|
7
|
+
config = @config
|
8
|
+
if block_given?
|
9
|
+
config = Config.new unless @config
|
10
|
+
yield(config)
|
11
|
+
else
|
12
|
+
raise "Please configure Markabb before using it" unless @config
|
13
|
+
end
|
14
|
+
output = Parser.new(config, s).output
|
15
|
+
if needs_html_safe?
|
16
|
+
return output.html_safe
|
17
|
+
else
|
18
|
+
return output
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.needs_html_safe?
|
23
|
+
if defined? Rails
|
24
|
+
return Rails.version =~ /^3\./
|
25
|
+
else
|
26
|
+
return false
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
Markabb.register_tag :bold, Markabb::Tag.new(/\[b\](.*?)\[\/b\]/, '<b>\1</b>'), :formatting
|
2
|
+
Markabb.register_tag :italic, Markabb::Tag.new(/\[i\](.*?)\[\/i\]/, '<i>\1</i>'), :formatting
|
3
|
+
Markabb.register_tag :underline, Markabb::Tag.new(/\[u\](.*?)\[\/u\]/, '<u>\1</u>'), :formatting
|
4
|
+
Markabb.register_tag :center, Markabb::Tag.new(/\[center\](.*?)\[\/center\]/, '<center>\1</center>'), :formatting
|
5
|
+
Markabb.register_tag :left, Markabb::Tag.new(/\[left\](.*?)\[\/left\]/, '<left>\1</left>'), :formatting
|
6
|
+
Markabb.register_tag :right, Markabb::Tag.new(/\[right\](.*?)\[\/right\]/, '<right>\1</right>'), :formatting
|
7
|
+
Markabb.register_tag :heading_1, Markabb::Tag.new(/\[h1\](.*?)\[\/h1\]/, '<h1>\1</h1>'), :formatting
|
8
|
+
Markabb.register_tag :heading_2, Markabb::Tag.new(/\[h2\](.*?)\[\/h2\]/, '<h2>\1</h2>'), :formatting
|
9
|
+
Markabb.register_tag :heading_3, Markabb::Tag.new(/\[h3\](.*?)\[\/h3\]/, '<h3>\1</h3>'), :formatting
|
10
|
+
Markabb.register_tag :heading_4, Markabb::Tag.new(/\[h4\](.*?)\[\/h4\]/, '<h4>\1</h4>'), :formatting
|
@@ -0,0 +1,3 @@
|
|
1
|
+
Markabb.register_tag :un_ordered, Markabb::Tag.new(/\[ul\](.*?)\[\/ul\]/, '<ul>\1</ul>'), :list
|
2
|
+
Markabb.register_tag :ordered, Markabb::Tag.new(/\[ol\](.*?)\[\/ol\]/, '<ol>\1</ol>'), :list
|
3
|
+
Markabb.register_tag :list_item, Markabb::Tag.new(/\[li\](.*?)\[\/li\]/, '<li>\1</li>'), :list
|
@@ -0,0 +1,4 @@
|
|
1
|
+
Markabb.register_tag :table, Markabb::Tag.new(/\[table\](.*?)\[\/table\]/, '<table width="config[:table_width]">\1</table>'), :table
|
2
|
+
Markabb.register_tag :table_row, Markabb::Tag.new(/\[tr\](.*?)\[\/tr\]/, '<tr>\1</tr>'), :table
|
3
|
+
Markabb.register_tag :table_cell, Markabb::Tag.new(/\[td\](.*?)\[\/td\]/, '<td>\1</td>'), :table
|
4
|
+
Markabb.register_tag :table_header, Markabb::Tag.new(/\[th\](.*?)\[\/th\]/, '<th>\1</th>'), :table
|
data/lib/markabb.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Top Level Requires
|
2
|
+
require "markabb/config"
|
3
|
+
require "markabb/parse"
|
4
|
+
require "markabb/version"
|
5
|
+
# Clases
|
6
|
+
require "markabb/classes/parser"
|
7
|
+
require "markabb/classes/tag"
|
8
|
+
|
9
|
+
# Main Markabb Module, all code is a sub of this
|
10
|
+
module Markabb
|
11
|
+
# Exposes a new config object to a block
|
12
|
+
# Called with:
|
13
|
+
# Markabb.configure do |c|
|
14
|
+
# c.foo = 'bar'
|
15
|
+
# end
|
16
|
+
def self.configure
|
17
|
+
@config = Config.new
|
18
|
+
yield @config
|
19
|
+
end
|
20
|
+
|
21
|
+
# Exposes the config object for use in your code
|
22
|
+
def self.config
|
23
|
+
@config
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Tags
|
28
|
+
require "markabb/tags/formatting"
|
29
|
+
require "markabb/tags/image"
|
30
|
+
require "markabb/tags/link"
|
31
|
+
require "markabb/tags/list"
|
32
|
+
require "markabb/tags/table"
|
data/markabb.gemspec
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "markabb/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "markabb"
|
7
|
+
s.version = Markabb::VERSION
|
8
|
+
s.authors = ["Adam \"Arcath\" Laycock"]
|
9
|
+
s.email = ["gems@arcath.net"]
|
10
|
+
s.homepage = "http://markabb.arcath.net"
|
11
|
+
s.summary = %q{Provides BBCode for Ruby and Rails}
|
12
|
+
s.description = %q{Provides BBCode for Ruby and Rails}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
s.add_development_dependency "rspec"
|
20
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module MarkabbMacros
|
2
|
+
module Formatting
|
3
|
+
def self.included(base)
|
4
|
+
base.extend(ClassMethods)
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def it_should_apply_formatting(*formats)
|
9
|
+
formats.each do |format|
|
10
|
+
it "should apply the #{format[0]} tag to text" do
|
11
|
+
default_config
|
12
|
+
Markabb.parse("[#{format[1]}]#{format[0]}[/#{format[1]}]").should eq("<#{format[1]}>#{format[0]}</#{format[1]}>")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should not apply the bold tag to text if it is disbaled" do
|
16
|
+
default_config
|
17
|
+
Markabb.parse "[#{format[1]}]#{format[0]}[/#{format[1]}]" do |c|
|
18
|
+
c["disable_#{format[0]}".to_sym] = true
|
19
|
+
end.should eq("[#{format[1]}]#{format[0]}[/#{format[1]}]")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Markabb, "#parse" do
|
4
|
+
it "should take a string" do
|
5
|
+
default_config
|
6
|
+
Markabb.parse "this"
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should raise a exception if Markabb is not configured" do
|
10
|
+
Markabb.blank_config
|
11
|
+
lambda { Markabb.parse "this" }.should raise_exception
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should allow for config via a block" do
|
15
|
+
default_config
|
16
|
+
Markabb.parse "this" do |c|
|
17
|
+
c.foo = 'bar'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should allow for no config if using a block" do
|
22
|
+
Markabb.blank_config
|
23
|
+
Markabb.parse "this" do |c|
|
24
|
+
c.foo = 'bar'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should disable html" do
|
29
|
+
default_config
|
30
|
+
Markabb.parse("<b>BOLD</b>").should eq "<b>BOLD</b>"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should allow html if told to" do
|
34
|
+
default_config
|
35
|
+
Markabb.parse "<b>BOLD</b>" do |c|
|
36
|
+
c.disable_html = false
|
37
|
+
end.should eq "<b>BOLD</b>"
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should add line breaks" do
|
41
|
+
default_config
|
42
|
+
Markabb.parse("this\nthat").should eq "this<br />that"
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should correct line breaks" do
|
46
|
+
default_config
|
47
|
+
Markabb.parse("this\nthat\n[table]\n[tr][/tr]\n[/table]").should eq "this<br />that<br /><table width=\"100%\"><tr></tr></table>"
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Markabb do
|
4
|
+
it "should take a block" do
|
5
|
+
Markabb.configure do |c|
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should store config" do
|
10
|
+
Markabb.configure do |c|
|
11
|
+
c.foo = 'bar'
|
12
|
+
end
|
13
|
+
|
14
|
+
Markabb.config.foo.should eq 'bar'
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Markabb::Tag do
|
4
|
+
it "should have a tags hash" do
|
5
|
+
Markabb::Tags.should be_a Hash
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should allow tag registration" do
|
9
|
+
Markabb.register_tag :foo, Markabb::Tag.new(/foo/, 'bar')
|
10
|
+
Markabb::Tags[:foo].should be_a Markabb::Tag
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should allow tag removal" do
|
14
|
+
Markabb.remove_tag :foo
|
15
|
+
Markabb::Tags[:foo].should be_nil
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have the bold tag" do
|
19
|
+
Markabb::Tags[:formatting][:bold].should be_a Markabb::Tag
|
20
|
+
end
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Formatting Tags" do
|
4
|
+
include MarkabbMacros::Formatting
|
5
|
+
|
6
|
+
it_should_apply_formatting ['bold','b'],
|
7
|
+
['italic','i'],
|
8
|
+
['underline','u'],
|
9
|
+
['un_ordered', 'ul'],
|
10
|
+
['ordered', 'ol'],
|
11
|
+
['list_item', 'li'],
|
12
|
+
['center', 'center'],
|
13
|
+
['left', 'left'],
|
14
|
+
['right', 'right'],
|
15
|
+
['heading_1', 'h1'],
|
16
|
+
['heading_2', 'h2'],
|
17
|
+
['heading_3', 'h3'],
|
18
|
+
['heading_4', 'h4']
|
19
|
+
|
20
|
+
it "should disable all formatting" do
|
21
|
+
Markabb.configure do |c|
|
22
|
+
c.disable_formatting = true
|
23
|
+
end
|
24
|
+
Markabb.parse("[b]Bold[/b]").should eq("[b]Bold[/b]")
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Image Tags" do
|
4
|
+
it "should apply the image tag" do
|
5
|
+
default_config
|
6
|
+
Markabb.parse("[img]http://www.example.com/img.png[/img]").should eq('<img src="http://www.example.com/img.png" alt="Posted Image" />')
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should apply the image tag with alt" do
|
10
|
+
default_config
|
11
|
+
Markabb.parse("[img alt=Alt Tag]http://www.example.com/img.png[/img]").should eq('<img src="http://www.example.com/img.png" alt="Alt Tag" />')
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Link Tags" do
|
4
|
+
it "should parse urls" do
|
5
|
+
default_config
|
6
|
+
Markabb.parse("[url]http://www.example.com[/url]").should eq('<a href="http://www.example.com" target="_BLANK">http://www.example.com</a>')
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should change the target if asked" do
|
10
|
+
default_config
|
11
|
+
Markabb.parse "[url]http://www.example.com[/url]" do |c|
|
12
|
+
c.url_target = "waffle"
|
13
|
+
end.should eq('<a href="http://www.example.com" target="waffle">http://www.example.com</a>')
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should change the title when using that tag" do
|
17
|
+
default_config
|
18
|
+
Markabb.parse("[url=http://www.example.com]Example[/url]").should eq('<a href="http://www.example.com" target="_BLANK">Example</a>')
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Table Tags" do
|
4
|
+
include MarkabbMacros::Formatting
|
5
|
+
|
6
|
+
it_should_apply_formatting ['table_header', 'th'],
|
7
|
+
['table_row', 'tr'],
|
8
|
+
['table_cell', 'td']
|
9
|
+
|
10
|
+
it "should draw a table with a width" do
|
11
|
+
Markabb.parse("[table]table[/table]").should eq("<table width=\"100%\">table</table>")
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should alow you to change the width" do
|
15
|
+
Markabb.parse "[table]table[/table]" do |c|
|
16
|
+
c.table_width = "75%"
|
17
|
+
end.should eq("<table width=\"75%\">table</table>")
|
18
|
+
end
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: markabb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Adam "Arcath" Laycock
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2012-06-24 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rspec
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
description: Provides BBCode for Ruby and Rails
|
36
|
+
email:
|
37
|
+
- gems@arcath.net
|
38
|
+
executables: []
|
39
|
+
|
40
|
+
extensions: []
|
41
|
+
|
42
|
+
extra_rdoc_files: []
|
43
|
+
|
44
|
+
files:
|
45
|
+
- .gitignore
|
46
|
+
- Gemfile
|
47
|
+
- Rakefile
|
48
|
+
- Readme.md
|
49
|
+
- lib/markabb.rb
|
50
|
+
- lib/markabb/classes/parser.rb
|
51
|
+
- lib/markabb/classes/tag.rb
|
52
|
+
- lib/markabb/config.rb
|
53
|
+
- lib/markabb/parse.rb
|
54
|
+
- lib/markabb/tags/formatting.rb
|
55
|
+
- lib/markabb/tags/image.rb
|
56
|
+
- lib/markabb/tags/link.rb
|
57
|
+
- lib/markabb/tags/list.rb
|
58
|
+
- lib/markabb/tags/table.rb
|
59
|
+
- lib/markabb/version.rb
|
60
|
+
- markabb.gemspec
|
61
|
+
- spec/macros/formatting_macros.rb
|
62
|
+
- spec/markabb_parse_spec.rb
|
63
|
+
- spec/markabb_spec.rb
|
64
|
+
- spec/markabb_tags_spec.rb
|
65
|
+
- spec/spec_helper.rb
|
66
|
+
- spec/tags/formatting_spec.rb
|
67
|
+
- spec/tags/image_spec.rb
|
68
|
+
- spec/tags/link_spec.rb
|
69
|
+
- spec/tags/table_spec.rb
|
70
|
+
has_rdoc: true
|
71
|
+
homepage: http://markabb.arcath.net
|
72
|
+
licenses: []
|
73
|
+
|
74
|
+
post_install_message:
|
75
|
+
rdoc_options: []
|
76
|
+
|
77
|
+
require_paths:
|
78
|
+
- lib
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
hash: 3
|
94
|
+
segments:
|
95
|
+
- 0
|
96
|
+
version: "0"
|
97
|
+
requirements: []
|
98
|
+
|
99
|
+
rubyforge_project:
|
100
|
+
rubygems_version: 1.4.2
|
101
|
+
signing_key:
|
102
|
+
specification_version: 3
|
103
|
+
summary: Provides BBCode for Ruby and Rails
|
104
|
+
test_files:
|
105
|
+
- spec/macros/formatting_macros.rb
|
106
|
+
- spec/markabb_parse_spec.rb
|
107
|
+
- spec/markabb_spec.rb
|
108
|
+
- spec/markabb_tags_spec.rb
|
109
|
+
- spec/spec_helper.rb
|
110
|
+
- spec/tags/formatting_spec.rb
|
111
|
+
- spec/tags/image_spec.rb
|
112
|
+
- spec/tags/link_spec.rb
|
113
|
+
- spec/tags/table_spec.rb
|