ruby-bbcode 0.0.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +7 -0
- data/README.textile +12 -6
- data/Rakefile +10 -2
- data/lib/ruby-bbcode.rb +55 -178
- data/lib/ruby-bbcode/bbtree.rb +94 -0
- data/lib/ruby-bbcode/tag_collection.rb +99 -0
- data/lib/ruby-bbcode/tag_info.rb +132 -0
- data/lib/ruby-bbcode/tag_node.rb +71 -0
- data/lib/ruby-bbcode/tag_sifter.rb +329 -0
- data/lib/ruby-bbcode/version.rb +5 -2
- data/lib/tags/tags.rb +45 -12
- data/test/current_test.rb +8 -0
- data/test/debugging.rb +93 -0
- data/test/ruby_bbcode_test.rb +107 -32
- data/test/test_helper.rb +16 -5
- data/test/unit/debugging_test.rb +48 -0
- data/test/unit/tag_sifter_test.rb +51 -0
- metadata +67 -22
- data/test/dummy/config/application.rb +0 -14
- data/test/dummy/config/boot.rb +0 -10
- data/test/dummy/config/environment.rb +0 -15
- data/test/dummy/config/environments/test.rb +0 -39
data/test/test_helper.rb
CHANGED
@@ -1,7 +1,18 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'ruby-bbcode'
|
2
|
+
require "test/unit"
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
# This hack allows us to make all the private methods of a class public.
|
5
|
+
class Class
|
6
|
+
def publicize_methods
|
7
|
+
saved_private_instance_methods = self.private_instance_methods
|
8
|
+
self.class_eval { public(*saved_private_instance_methods) }
|
9
|
+
yield
|
10
|
+
self.class_eval { private(*saved_private_instance_methods) }
|
11
|
+
end
|
12
|
+
end
|
6
13
|
|
7
|
-
|
14
|
+
|
15
|
+
# This is for measuring memory usage...
|
16
|
+
def get_current_memory_usage
|
17
|
+
`ps -o rss= -p #{Process.pid}`.to_i
|
18
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'debugging'
|
3
|
+
|
4
|
+
class RubyBbcodeTest < Test::Unit::TestCase
|
5
|
+
include ::RubyBBCode::Tags
|
6
|
+
|
7
|
+
def test_bbtree_to_v
|
8
|
+
text = "[i][b]a[/b][b]a[/b][b]a[/b][b]a[/b]item 1[/i][i]item 2[/i]"
|
9
|
+
visual = <<eos
|
10
|
+
i
|
11
|
+
b
|
12
|
+
"a"
|
13
|
+
b
|
14
|
+
"a"
|
15
|
+
b
|
16
|
+
"a"
|
17
|
+
b
|
18
|
+
"a"
|
19
|
+
"item 1"
|
20
|
+
i
|
21
|
+
"item 2"
|
22
|
+
eos
|
23
|
+
|
24
|
+
tags = @@tags
|
25
|
+
@tag_sifter = RubyBBCode::TagSifter.new(text, tags)
|
26
|
+
@tag_sifter.process_text
|
27
|
+
|
28
|
+
# manually include the debugging methods if they've been disabled for cleanliness purposes
|
29
|
+
@tag_sifter.bbtree.extend(::RubyBBCode::DebugBBTree) unless @tag_sifter.bbtree.respond_to? :to_v
|
30
|
+
|
31
|
+
assert_equal visual, @tag_sifter.bbtree.to_v
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_bbtree_counting_nodes
|
35
|
+
text = "[ol][li][b][/b][b][/b][b][/b][b][/b]item 1[/li][li]item 2[/li][/ol]"
|
36
|
+
tags = @@tags
|
37
|
+
|
38
|
+
@tag_sifter = RubyBBCode::TagSifter.new(text, tags)
|
39
|
+
|
40
|
+
@tag_sifter.process_text
|
41
|
+
|
42
|
+
# manually include debugging methods if needed.
|
43
|
+
@tag_sifter.bbtree.extend(::RubyBBCode::DebugBBTree) unless @tag_sifter.bbtree.respond_to? :count_child_nodes
|
44
|
+
|
45
|
+
assert_equal 9, @tag_sifter.bbtree.count_child_nodes
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TagSifterTest < Test::Unit::TestCase
|
4
|
+
def test_youtube_parser
|
5
|
+
url1 = "http://www.youtube.com/watch?v=E4Fbk52Mk1w"
|
6
|
+
just_an_id = 'E4Fbk52Mk1w'
|
7
|
+
url_without_http = "www.youtube.com/watch?v=E4Fbk52Mk1w"
|
8
|
+
url_without_www = "youtube.com/watch?v=E4Fbk52Mk1w"
|
9
|
+
url_with_feature = "http://www.youtube.com/watch?feature=player_embedded&v=E4Fbk52Mk1w"
|
10
|
+
mock_regex_matches = [/youtube.com.*[v]=([^&]*)/, /youtu.be\/([^&]*)/, /y2u.be\/([^&]*)/]
|
11
|
+
|
12
|
+
expected_output = 'E4Fbk52Mk1w'
|
13
|
+
|
14
|
+
RubyBBCode::TagSifter.publicize_methods do
|
15
|
+
ts = RubyBBCode::TagSifter.new "", ""
|
16
|
+
assert_equal expected_output,
|
17
|
+
ts.conduct_special_formatting(url1, mock_regex_matches)
|
18
|
+
|
19
|
+
assert_equal expected_output,
|
20
|
+
ts.conduct_special_formatting(just_an_id, mock_regex_matches)
|
21
|
+
|
22
|
+
assert_equal expected_output,
|
23
|
+
ts.conduct_special_formatting(url_without_http, mock_regex_matches)
|
24
|
+
|
25
|
+
assert_equal expected_output,
|
26
|
+
ts.conduct_special_formatting(url_without_www, mock_regex_matches)
|
27
|
+
|
28
|
+
assert_equal expected_output,
|
29
|
+
ts.conduct_special_formatting(url_with_feature, mock_regex_matches)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
# I think the answer to this is creating a new tag named [youtube]
|
35
|
+
# but that captures specifically the .be or .com and treats them differently...
|
36
|
+
def test_youtubes_via_there_url_shortener
|
37
|
+
url_from_shortener = "http://youtu.be/E4Fbk52Mk1w"
|
38
|
+
directory_format = "http://youtube.googleapis.com/v/E4Fbk52Mk1w"
|
39
|
+
expected_output = 'E4Fbk52Mk1w'
|
40
|
+
mock_regex_matches = [/youtube.com.*[v]=([^&]*)/, /youtu.be\/([^&]*)/, /y2u.be\/([^&]*)/]
|
41
|
+
|
42
|
+
|
43
|
+
RubyBBCode::TagSifter.publicize_methods do
|
44
|
+
ts = RubyBBCode::TagSifter.new "", ""
|
45
|
+
|
46
|
+
|
47
|
+
assert_equal expected_output,
|
48
|
+
ts.conduct_special_formatting(url_from_shortener, mock_regex_matches) # this test is now hopelessly broken because generating an ID from a link requires that @bbtree.current_node.definition be properly populated with regex matches...
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-bbcode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,31 +9,76 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
12
|
+
date: 2014-10-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
14
46
|
description: Convert BBCode to HTML and check whether the BBCode is valid.
|
15
|
-
email:
|
16
|
-
- maarten.bezemer@gmail.com
|
47
|
+
email: maarten.bezemer@gmail.com
|
17
48
|
executables: []
|
18
49
|
extensions: []
|
19
|
-
extra_rdoc_files:
|
50
|
+
extra_rdoc_files:
|
51
|
+
- README.textile
|
52
|
+
- CHANGELOG.md
|
53
|
+
- MIT-LICENSE
|
20
54
|
files:
|
21
|
-
- lib/tags/tags.rb
|
22
|
-
- lib/ruby-bbcode/version.rb
|
23
55
|
- lib/ruby-bbcode.rb
|
56
|
+
- lib/ruby-bbcode/tag_collection.rb
|
57
|
+
- lib/ruby-bbcode/bbtree.rb
|
58
|
+
- lib/ruby-bbcode/tag_node.rb
|
59
|
+
- lib/ruby-bbcode/tag_info.rb
|
60
|
+
- lib/ruby-bbcode/version.rb
|
61
|
+
- lib/ruby-bbcode/tag_sifter.rb
|
62
|
+
- lib/tags/tags.rb
|
24
63
|
- MIT-LICENSE
|
25
64
|
- Rakefile
|
26
65
|
- README.textile
|
27
|
-
-
|
28
|
-
- test/dummy/config/environments/test.rb
|
29
|
-
- test/dummy/config/application.rb
|
30
|
-
- test/dummy/config/boot.rb
|
31
|
-
- test/dummy/config/environment.rb
|
66
|
+
- CHANGELOG.md
|
32
67
|
- test/test_helper.rb
|
68
|
+
- test/current_test.rb
|
69
|
+
- test/unit/tag_sifter_test.rb
|
70
|
+
- test/unit/debugging_test.rb
|
71
|
+
- test/debugging.rb
|
72
|
+
- test/ruby_bbcode_test.rb
|
33
73
|
homepage: http://github.com/veger/ruby-bbcode
|
34
|
-
licenses:
|
74
|
+
licenses:
|
75
|
+
- MIT
|
35
76
|
post_install_message:
|
36
|
-
rdoc_options:
|
77
|
+
rdoc_options:
|
78
|
+
- --title
|
79
|
+
- Ruby BBCode
|
80
|
+
- --main
|
81
|
+
- README.md
|
37
82
|
require_paths:
|
38
83
|
- lib
|
39
84
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -50,14 +95,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
50
95
|
version: '0'
|
51
96
|
requirements: []
|
52
97
|
rubyforge_project:
|
53
|
-
rubygems_version: 1.8.
|
98
|
+
rubygems_version: 1.8.23
|
54
99
|
signing_key:
|
55
100
|
specification_version: 3
|
56
|
-
summary: ruby-bbcode-0.0
|
101
|
+
summary: ruby-bbcode-1.0.0
|
57
102
|
test_files:
|
58
|
-
- test/ruby_bbcode_test.rb
|
59
|
-
- test/dummy/config/environments/test.rb
|
60
|
-
- test/dummy/config/application.rb
|
61
|
-
- test/dummy/config/boot.rb
|
62
|
-
- test/dummy/config/environment.rb
|
63
103
|
- test/test_helper.rb
|
104
|
+
- test/current_test.rb
|
105
|
+
- test/unit/tag_sifter_test.rb
|
106
|
+
- test/unit/debugging_test.rb
|
107
|
+
- test/debugging.rb
|
108
|
+
- test/ruby_bbcode_test.rb
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require File.expand_path('../boot', __FILE__)
|
2
|
-
|
3
|
-
require 'rails/all'
|
4
|
-
|
5
|
-
Bundler.require
|
6
|
-
require "ruby-bbcode"
|
7
|
-
|
8
|
-
module Dummy
|
9
|
-
class Application < Rails::Application
|
10
|
-
# Configure the default encoding used in templates for Ruby 1.9.
|
11
|
-
config.encoding = "utf-8"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
data/test/dummy/config/boot.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# Load the rails application
|
2
|
-
require File.expand_path('../application', __FILE__)
|
3
|
-
|
4
|
-
|
5
|
-
Dummy::Application.configure do
|
6
|
-
# Log error messages when you accidentally call methods on nil
|
7
|
-
config.whiny_nils = true
|
8
|
-
|
9
|
-
# Print deprecation notices to the stderr
|
10
|
-
config.active_support.deprecation = :stderr
|
11
|
-
end
|
12
|
-
|
13
|
-
|
14
|
-
# Initialize the rails application
|
15
|
-
Dummy::Application.initialize!
|
@@ -1,39 +0,0 @@
|
|
1
|
-
Dummy::Application.configure do
|
2
|
-
# Settings specified here will take precedence over those in config/application.rb
|
3
|
-
|
4
|
-
# The test environment is used exclusively to run your application's
|
5
|
-
# test suite. You never need to work with it otherwise. Remember that
|
6
|
-
# your test database is "scratch space" for the test suite and is wiped
|
7
|
-
# and recreated between test runs. Don't rely on the data there!
|
8
|
-
config.cache_classes = true
|
9
|
-
|
10
|
-
# Configure static asset server for tests with Cache-Control for performance
|
11
|
-
config.serve_static_assets = true
|
12
|
-
config.static_cache_control = "public, max-age=3600"
|
13
|
-
|
14
|
-
# Log error messages when you accidentally call methods on nil
|
15
|
-
config.whiny_nils = true
|
16
|
-
|
17
|
-
# Show full error reports and disable caching
|
18
|
-
config.consider_all_requests_local = true
|
19
|
-
config.action_controller.perform_caching = false
|
20
|
-
|
21
|
-
# Raise exceptions instead of rendering exception templates
|
22
|
-
config.action_dispatch.show_exceptions = false
|
23
|
-
|
24
|
-
# Disable request forgery protection in test environment
|
25
|
-
config.action_controller.allow_forgery_protection = false
|
26
|
-
|
27
|
-
# Tell Action Mailer not to deliver emails to the real world.
|
28
|
-
# The :test delivery method accumulates sent emails in the
|
29
|
-
# ActionMailer::Base.deliveries array.
|
30
|
-
config.action_mailer.delivery_method = :test
|
31
|
-
|
32
|
-
# Use SQL instead of Active Record's schema dumper when creating the test database.
|
33
|
-
# This is necessary if your schema can't be completely dumped by the schema dumper,
|
34
|
-
# like if you have constraints or database-specific column types
|
35
|
-
# config.active_record.schema_format = :sql
|
36
|
-
|
37
|
-
# Print deprecation notices to the stderr
|
38
|
-
config.active_support.deprecation = :stderr
|
39
|
-
end
|