auto_html 1.3.7 → 1.4.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/README.md +4 -23
- data/Rakefile +1 -1
- data/lib/auto_html/base.rb +4 -1
- data/lib/auto_html/filters/image.rb +4 -2
- data/lib/auto_html/filters/link.rb +3 -2
- data/lib/auto_html.rb +5 -0
- data/test/functional/auto_html_for_test.rb +8 -2
- data/test/unit/auto_html_test.rb +8 -8
- data/test/unit/filters/image_test.rb +16 -16
- data/test/unit/filters/link_test.rb +9 -15
- metadata +34 -6
data/README.md
CHANGED
@@ -56,9 +56,9 @@ AutoHtml is highly customizable, and you can easily create new filters that will
|
|
56
56
|
end
|
57
57
|
|
58
58
|
|
59
|
-
## Non-
|
59
|
+
## Non-ActiveRecord models
|
60
60
|
|
61
|
-
AutoHtml uses standard ActiveModel API
|
61
|
+
AutoHtml uses standard ActiveModel API, which means that you can include AutoHtmlFor module (that automates transformation of the field) in any non-ActiveRecord model that uses ActiveModel. Here's working [mongoid](http://mongoid.org/) example:
|
62
62
|
|
63
63
|
class Post
|
64
64
|
include Mongoid::Document
|
@@ -80,31 +80,12 @@ For filter list and options they support check: <http://github.com/dejan/auto_ht
|
|
80
80
|
|
81
81
|
## Install
|
82
82
|
|
83
|
-
|
84
|
-
|
85
|
-
As from version 1.2.0 auto_html uses Rails' engine for discovering links. There are some bugs with that engine in versions under Rails 2.3.2. so it's recommended you use auto_html 1.1.2 in that case, since internal engine is used in that version.
|
86
|
-
|
87
|
-
for Rails <= 2.3.1 use auto_html 1.1.2<br/>
|
88
|
-
for Rails >= 2.3.2 use the latest auto_html
|
89
|
-
|
90
|
-
### As a gem
|
91
|
-
|
92
|
-
To enable the library in your Rails 2.1-2.3 project, use the gem configuration method in "config/environment.rb"
|
93
|
-
|
94
|
-
Rails::Initializer.run do |config|
|
95
|
-
config.gem 'auto_html'
|
96
|
-
end
|
97
|
-
|
98
|
-
In Rails 3.0 specify the gem in your Gemfile
|
83
|
+
Specify the gem in Gemfile of the project
|
99
84
|
|
100
85
|
gem "auto_html"
|
101
86
|
|
102
|
-
### As a Rails plugin
|
103
|
-
|
104
|
-
script/plugin install git://github.com/dejan/auto_html.git
|
105
|
-
|
106
87
|
|
107
88
|
## Credits
|
108
89
|
|
109
90
|
Author: [Dejan Simic](http://github.com/dejan)<br/>
|
110
|
-
Contributors: [Claudio Perez Gamayo](http://github.com/crossblaim), [Matt Polito](http://github.com/mattpolito), [Ryan Heneise](http://github.com/mysmallidea), [Caleb Wright](http://github.com/fabrikagency), [Derrick Camerino](https://github.com/robustdj), [Daniel Weinmann](https://github.com/danielweinmann)
|
91
|
+
Contributors: [Claudio Perez Gamayo](http://github.com/crossblaim), [Matt Polito](http://github.com/mattpolito), [Ryan Heneise](http://github.com/mysmallidea), [Caleb Wright](http://github.com/fabrikagency), [Derrick Camerino](https://github.com/robustdj), [Daniel Weinmann](https://github.com/danielweinmann), [Edgars Beigarts](ebeigarts)
|
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ end
|
|
10
10
|
|
11
11
|
desc 'Test with recent versions of Rails'
|
12
12
|
task :test_with_recent do
|
13
|
-
versions = ['2.3.8', '3.0.3']
|
13
|
+
versions = ['2.1.0', '2.2.2', '2.3.8', '3.0.3', '3.0.9']
|
14
14
|
versions.each do |v|
|
15
15
|
puts "\n###### TESTING WITH RAILS #{v}"
|
16
16
|
ENV['RAILS_VERSION'] = v
|
data/lib/auto_html/base.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
|
1
|
+
require 'tag_helper'
|
2
|
+
|
3
|
+
AutoHtml.add_filter(:image).with({:alt => ''}) do |text, options|
|
2
4
|
text.gsub(/https?:\/\/.+\.(jpg|jpeg|bmp|gif|png)(\?\S+)?/i) do |match|
|
3
|
-
|
5
|
+
TagHelper.image_tag(match, options)
|
4
6
|
end
|
5
7
|
end
|
data/lib/auto_html.rb
CHANGED
@@ -6,6 +6,11 @@ Dir["#{File.dirname(__FILE__) + '/auto_html/filters'}/**/*"].each do |filter|
|
|
6
6
|
require "#{filter}"
|
7
7
|
end
|
8
8
|
|
9
|
+
# if rails
|
9
10
|
if defined?(ActiveRecord::Base)
|
10
11
|
ActiveRecord::Base.send :include, AutoHtmlFor
|
12
|
+
|
13
|
+
module ActionView::Helpers::TextHelper
|
14
|
+
include AutoHtml
|
15
|
+
end
|
11
16
|
end
|
@@ -6,7 +6,7 @@ class Article < ActiveRecord::Base
|
|
6
6
|
html_escape
|
7
7
|
youtube(:width => 400, :height => 250)
|
8
8
|
image
|
9
|
-
link(:target => "_blank"
|
9
|
+
link(:target => "_blank")
|
10
10
|
simple_format
|
11
11
|
end
|
12
12
|
end
|
@@ -19,6 +19,12 @@ class AutoHtmlForTest < Test::Unit::TestCase
|
|
19
19
|
assert_equal '<p>Yo!</p>', @article.body_html
|
20
20
|
end
|
21
21
|
|
22
|
+
def test_html_safe
|
23
|
+
return unless "".respond_to?(:html_safe?)
|
24
|
+
@article = Article.new(:body => 'Yo!')
|
25
|
+
assert @article.body_html.html_safe?
|
26
|
+
end
|
27
|
+
|
22
28
|
def test_transform_after_save
|
23
29
|
@article = Article.new(:body => 'Yo!')
|
24
30
|
@article.save!
|
@@ -35,6 +41,6 @@ class AutoHtmlForTest < Test::Unit::TestCase
|
|
35
41
|
@article = Article.create!(:body => 'Yo!')
|
36
42
|
@article.update_attributes(:body => 'http://vukajlija.com')
|
37
43
|
@article.save!
|
38
|
-
assert_equal '<p><a href="http://vukajlija.com"
|
44
|
+
assert_equal '<p><a href="http://vukajlija.com" target="_blank">http://vukajlija.com</a></p>', @article.body_html
|
39
45
|
end
|
40
46
|
end
|
data/test/unit/auto_html_test.rb
CHANGED
@@ -14,27 +14,27 @@ class AutoHtmlTest < Test::Unit::TestCase
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_should_apply_simple_format_and_image_filter
|
17
|
-
result = auto_html("Check the logo: http://rors.org/images/rails.png") { simple_format; image }
|
18
|
-
assert_equal '<p>Check the logo: <img src="http://rors.org/images/rails.png"
|
17
|
+
result = auto_html("Check the logo: http://rors.org/images/rails.png") { simple_format; image(:alt => nil) }
|
18
|
+
assert_equal '<p>Check the logo: <img src="http://rors.org/images/rails.png" /></p>', result
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_should_apply_simple_format_image_and_link_filter
|
22
|
-
result = auto_html("Check the logo: http://rors.org/images/rails.png. Visit: http://rubyonrails.org") { simple_format; image; link }
|
23
|
-
assert_equal '<p>Check the logo: <img src="http://rors.org/images/rails.png"
|
22
|
+
result = auto_html("Check the logo: http://rors.org/images/rails.png. Visit: http://rubyonrails.org") { simple_format; image(:alt => nil); link }
|
23
|
+
assert_equal '<p>Check the logo: <img src="http://rors.org/images/rails.png" />. Visit: <a href="http://rubyonrails.org" >http://rubyonrails.org</a></p>', result
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_should_apply_simple_format_image_and_redcloth_and_link_filter
|
27
|
-
result = auto_html('Check the logo: http://rors.org/images/rails.png. Visit: http://rubyonrails.org and "Read the Guides":http://guides.rubyonrails.org/') { simple_format; image; redcloth; link }
|
28
|
-
assert_equal '<p>Check the logo: <img src="http://rors.org/images/rails.png"
|
27
|
+
result = auto_html('Check the logo: http://rors.org/images/rails.png. Visit: http://rubyonrails.org and "Read the Guides":http://guides.rubyonrails.org/') { simple_format; image(:alt => nil); redcloth; link }
|
28
|
+
assert_equal '<p>Check the logo: <img src="http://rors.org/images/rails.png" />. Visit: <a href="http://rubyonrails.org" >http://rubyonrails.org</a> and <a href="http://guides.rubyonrails.org/">Read the Guides</a></p>', result
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_should_return_blank_if_input_is_blank
|
32
|
-
result = auto_html("") { simple_format; image; link }
|
32
|
+
result = auto_html("") { simple_format; image(:alt => nil); link }
|
33
33
|
assert_equal "", result
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_should_not_apply_simple_format_if_input_is_nil
|
37
|
-
result = auto_html(nil) { simple_format; image; link }
|
37
|
+
result = auto_html(nil) { simple_format; image(:alt => nil); link }
|
38
38
|
assert_equal "", result
|
39
39
|
end
|
40
40
|
|
@@ -3,8 +3,8 @@ require File.expand_path('../../unit_test_helper', __FILE__)
|
|
3
3
|
class ImageTest < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def test_transform
|
6
|
-
result = auto_html('http://rors.org/images/rails.png') { image }
|
7
|
-
assert_equal '<img src="http://rors.org/images/rails.png"
|
6
|
+
result = auto_html('http://rors.org/images/rails.png') { image({:alt => nil}) }
|
7
|
+
assert_equal '<img src="http://rors.org/images/rails.png" />', result
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_dont_transform
|
@@ -13,38 +13,38 @@ class ImageTest < Test::Unit::TestCase
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_transform2
|
16
|
-
result = auto_html('http://farm4.static.flickr.com/3459/3270173112_5099d3d730.jpg') { image }
|
17
|
-
assert_equal '<img src="http://farm4.static.flickr.com/3459/3270173112_5099d3d730.jpg"
|
16
|
+
result = auto_html('http://farm4.static.flickr.com/3459/3270173112_5099d3d730.jpg') { image({:alt => nil}) }
|
17
|
+
assert_equal '<img src="http://farm4.static.flickr.com/3459/3270173112_5099d3d730.jpg" />', result
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_transform3
|
21
|
-
result = auto_html('http://www.lockhartfineart.com/images/Rio_Grande_Frost.JPG') { image }
|
22
|
-
assert_equal '<img src="http://www.lockhartfineart.com/images/Rio_Grande_Frost.JPG"
|
21
|
+
result = auto_html('http://www.lockhartfineart.com/images/Rio_Grande_Frost.JPG') { image({:alt => nil}) }
|
22
|
+
assert_equal '<img src="http://www.lockhartfineart.com/images/Rio_Grande_Frost.JPG" />', result
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_transform4
|
26
|
-
result = auto_html('http://www.lockhartfineart.com/images/Rio_Grande_Frost.JPG') { image }
|
27
|
-
assert_equal '<img src="http://www.lockhartfineart.com/images/Rio_Grande_Frost.JPG"
|
26
|
+
result = auto_html('http://www.lockhartfineart.com/images/Rio_Grande_Frost.JPG') { image({:alt => nil}) }
|
27
|
+
assert_equal '<img src="http://www.lockhartfineart.com/images/Rio_Grande_Frost.JPG" />', result
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_transform5
|
31
|
-
result = auto_html('http://farm4.static.flickr.com/3664/3512431377_71b8d002ef.jpg?v=0') { image }
|
32
|
-
assert_equal '<img src="http://farm4.static.flickr.com/3664/3512431377_71b8d002ef.jpg?v=0"
|
31
|
+
result = auto_html('http://farm4.static.flickr.com/3664/3512431377_71b8d002ef.jpg?v=0') { image({:alt => nil}) }
|
32
|
+
assert_equal '<img src="http://farm4.static.flickr.com/3664/3512431377_71b8d002ef.jpg?v=0" />', result
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_transform6
|
36
|
-
result = auto_html('Do you like this logo http://rors.org/images/rails.png? Yeah?') { image }
|
37
|
-
assert_equal 'Do you like this logo <img src="http://rors.org/images/rails.png"
|
36
|
+
result = auto_html('Do you like this logo http://rors.org/images/rails.png? Yeah?') { image({:alt => nil}) }
|
37
|
+
assert_equal 'Do you like this logo <img src="http://rors.org/images/rails.png" />? Yeah?', result
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_transform7
|
41
|
-
result = auto_html('http://tbn3.google.com/images?q=tbn:vS-jtEi9Xc8K6M:http://upload.wikimedia.org/wikipedia/commons/b/ba/Potturinn.jpeg') { image }
|
42
|
-
assert_equal '<img src="http://tbn3.google.com/images?q=tbn:vS-jtEi9Xc8K6M:http://upload.wikimedia.org/wikipedia/commons/b/ba/Potturinn.jpeg"
|
41
|
+
result = auto_html('http://tbn3.google.com/images?q=tbn:vS-jtEi9Xc8K6M:http://upload.wikimedia.org/wikipedia/commons/b/ba/Potturinn.jpeg') { image({:alt => nil}) }
|
42
|
+
assert_equal '<img src="http://tbn3.google.com/images?q=tbn:vS-jtEi9Xc8K6M:http://upload.wikimedia.org/wikipedia/commons/b/ba/Potturinn.jpeg" />', result
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_https
|
46
|
-
result = auto_html('https://img.skitch.com/20100910-1wrbg5749xe29ya5t3s85bnaiy.png') { image }
|
47
|
-
assert_equal '<img src="https://img.skitch.com/20100910-1wrbg5749xe29ya5t3s85bnaiy.png"
|
46
|
+
result = auto_html('https://img.skitch.com/20100910-1wrbg5749xe29ya5t3s85bnaiy.png') { image({:alt => nil}) }
|
47
|
+
assert_equal '<img src="https://img.skitch.com/20100910-1wrbg5749xe29ya5t3s85bnaiy.png" />', result
|
48
48
|
end
|
49
49
|
|
50
50
|
end
|
@@ -4,49 +4,43 @@ class LinkTest < Test::Unit::TestCase
|
|
4
4
|
|
5
5
|
def test_transform
|
6
6
|
result = auto_html("http://vukajlija.com") { link }
|
7
|
-
assert_equal '<a href="http://vukajlija.com">http://vukajlija.com</a>', result
|
7
|
+
assert_equal '<a href="http://vukajlija.com" >http://vukajlija.com</a>', result
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_transform_with_the_slash_at_the_end
|
11
11
|
result = auto_html("http://github.com/") { link }
|
12
|
-
assert_equal '<a href="http://github.com/">http://github.com/</a>', result
|
12
|
+
assert_equal '<a href="http://github.com/" >http://github.com/</a>', result
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_transform_with_param
|
16
16
|
result = auto_html('http://example.com/abc?query=ruby') { link }
|
17
|
-
assert_equal '<a href="http://example.com/abc?query=ruby">http://example.com/abc?query=ruby</a>', result
|
17
|
+
assert_equal '<a href="http://example.com/abc?query=ruby" >http://example.com/abc?query=ruby</a>', result
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_transform_with_param_and_trailing_dot
|
21
21
|
result = auto_html('http://example.com/abc?query=ruby.') { link }
|
22
|
-
assert_equal '<a href="http://example.com/abc?query=ruby">http://example.com/abc?query=ruby</a>.', result
|
22
|
+
assert_equal '<a href="http://example.com/abc?query=ruby" >http://example.com/abc?query=ruby</a>.', result
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_transform_with_anchor_and_trailing_dot
|
26
26
|
result = auto_html('http://example.com/example#id=123.12.') { link }
|
27
|
-
assert_equal '<a href="http://example.com/example#id=123.12">http://example.com/example#id=123.12</a>.', result
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_transform_with_params
|
31
|
-
url = 'http://www.youtube.com/watch?v=s5C5Zk4kobo&feature=related'
|
32
|
-
# uses auto_link instead raw to support both Rails 2 & 3
|
33
|
-
assert_equal(ActionView::Base.new.auto_link(url), auto_html(url) { link })
|
27
|
+
assert_equal '<a href="http://example.com/example#id=123.12" >http://example.com/example#id=123.12</a>.', result
|
34
28
|
end
|
35
29
|
|
36
30
|
def test_transform_with_commas
|
37
31
|
result = auto_html('http://www.dw-world.de/dw/article/0,,4708386,00.html?maca=ser-rss-ser-all-1494-rdf') { link }
|
38
|
-
assert_equal '<a href="http://www.dw-world.de/dw/article/0,,4708386,00.html?maca=ser-rss-ser-all-1494-rdf">http://www.dw-world.de/dw/article/0,,4708386,00.html?maca=ser-rss-ser-all-1494-rdf</a>', result
|
32
|
+
assert_equal '<a href="http://www.dw-world.de/dw/article/0,,4708386,00.html?maca=ser-rss-ser-all-1494-rdf" >http://www.dw-world.de/dw/article/0,,4708386,00.html?maca=ser-rss-ser-all-1494-rdf</a>', result
|
39
33
|
end
|
40
34
|
|
41
35
|
def test_transform_complex_url
|
42
36
|
url = 'http://www.google.com/#q=nikola+tesla&ct=tesla09&oi=ddle&fp=Xmf0jJ9P_V0'
|
43
37
|
# uses auto_link instead raw to support both Rails 2 & 3
|
44
|
-
assert_equal(
|
38
|
+
assert_equal('<a href="http://www.google.com/#q=nikola+tesla&ct=tesla09&oi=ddle&fp=Xmf0jJ9P_V0" >http://www.google.com/#q=nikola+tesla&ct=tesla09&oi=ddle&fp=Xmf0jJ9P_V0</a>', auto_html(url) { link })
|
45
39
|
end
|
46
40
|
|
47
41
|
def test_transform_with_options
|
48
|
-
result = auto_html("http://rors.org") { link :
|
49
|
-
assert_equal '<a href="http://rors.org"
|
42
|
+
result = auto_html("http://rors.org") { link :target => "_blank" }
|
43
|
+
assert_equal '<a href="http://rors.org" target="_blank">http://rors.org</a>', result
|
50
44
|
end
|
51
45
|
|
52
46
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auto_html
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 4
|
9
|
+
- 0
|
10
|
+
version: 1.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dejan Simic
|
@@ -15,11 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-07-09 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
22
|
+
name: rinku
|
23
23
|
prerelease: false
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
@@ -32,6 +32,34 @@ dependencies:
|
|
32
32
|
version: "0"
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: tag_helper
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: RedCloth
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :runtime
|
62
|
+
version_requirements: *id003
|
35
63
|
description: Automatically transforms URIs (via domain) and includes the destination resource (Vimeo, YouTube movie, image, ...) in your document
|
36
64
|
email: desimic@gmail.com
|
37
65
|
executables: []
|