magick_title 0.1.8 → 0.2.0.rc1

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 CHANGED
@@ -3,8 +3,8 @@ Magick Title
3
3
 
4
4
  Want beautiful copyright-protected browser-compatible custom-smoothed & kerned fonts? MagickTitle delivers just that by using [imagemagick](http://www.imagemagick.org/script/index.php) to generate titles based on the options you provide.
5
5
 
6
- ** ----- in beta! ----- **
7
-
6
+ Want your titles to be automagically created for your Rails apps' models? Check out [has_magick_title](https://github.com/citrus/has_magick_title).
7
+
8
8
 
9
9
  Requirements
10
10
  ------------
@@ -21,7 +21,7 @@ As usual, just use the `gem install` command:
21
21
 
22
22
  Or add magick_title as a gem in your Gemfile:
23
23
 
24
- gem 'magick_title', '>= 0.1.7'
24
+ gem 'magick_title', '>= 0.1.8'
25
25
 
26
26
  Then run `bundle install`
27
27
 
@@ -163,9 +163,8 @@ To Do
163
163
  * Write more tests
164
164
  * Smart option validation (:color => 'fff' converts to :color => '#fff' and :color => 'pink' fails)
165
165
  * More documentation
166
- * Auto ActiveRecord integration (`has_magick_title` class method)
167
166
  * Heroku support / tempfiles / base64
168
- * Clean up and publish demo app
167
+ * Clean up and publish demo app (/test/dummy)
169
168
 
170
169
 
171
170
  License
@@ -137,15 +137,7 @@ module MagickTitle
137
137
  def to_html(opts={})
138
138
  opts = { :parent => nil } if opts === false
139
139
  opts = { :parent => opts } if opts.is_a?(String)
140
- opts = options[:to_html].merge(:alt => text, :src => url).merge(opts)
141
- parent = opts.delete(:parent)
142
- tag = %(<img#{hash_to_attributes(opts)}/>)
143
- if parent
144
- ptag = parent.is_a?(String) ? parent : parent.is_a?(Hash) ? parent.delete(:tag) : nil
145
- ptag ||= "h1"
146
- tag = %(<#{ptag}#{hash_to_attributes(parent)}>#{tag}</#{ptag}>)
147
- end
148
- tag
140
+ Renderer.to_html(text, url, options[:to_html].merge(opts))
149
141
  end
150
142
 
151
143
 
@@ -222,16 +214,6 @@ module MagickTitle
222
214
  end
223
215
  dupe || file
224
216
  end
225
-
226
-
227
- # Converts a hash to a string of html style key="value" pairs
228
- def hash_to_attributes(hash)
229
- attributes = []
230
- return "" unless hash.is_a?(Hash)
231
- hash.each { |key, value| attributes << %(#{key}="#{value}") if value and 0 < value.length }
232
- return "" if attributes.length == 0
233
- " " + attributes.join(" ").strip
234
- end
235
217
 
236
218
  end # Image
237
219
 
@@ -0,0 +1,36 @@
1
+ module MagickTitle
2
+
3
+ module Renderer
4
+
5
+ extend self
6
+
7
+ # Creates and HTML image tag with the options provided
8
+ def to_html(text, url, opts={})
9
+ opts = { :parent => nil } if opts === false
10
+ opts = { :parent => opts } if opts.is_a?(String)
11
+ opts[:alt] ||= text
12
+ opts.merge!(:src => url)
13
+ parent = opts.delete(:parent)
14
+ tag = %(<img#{hash_to_attributes(opts)}/>)
15
+ if parent
16
+ ptag = parent.is_a?(String) ? parent : parent.is_a?(Hash) ? parent.delete(:tag) : nil
17
+ ptag ||= "h1"
18
+ tag = %(<#{ptag}#{hash_to_attributes(parent)}>#{tag}</#{ptag}>)
19
+ end
20
+ tag
21
+ end
22
+
23
+ private
24
+
25
+ # Converts a hash to a string of html style key="value" pairs
26
+ def hash_to_attributes(hash)
27
+ attributes = []
28
+ return "" unless hash.is_a?(Hash)
29
+ hash.each { |key, value| attributes << %(#{key}="#{value}") if value and 0 < value.length }
30
+ return "" if attributes.length == 0
31
+ " " + attributes.join(" ").strip
32
+ end
33
+
34
+ end # Renderer
35
+
36
+ end # MagickTitle
@@ -1,3 +1,3 @@
1
1
  module MagickTitle
2
- VERSION = "0.1.8"
2
+ VERSION = "0.2.0.rc1"
3
3
  end
data/lib/magick_title.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'magick_title/hash'
2
2
  require 'magick_title/options'
3
3
  require 'magick_title/image'
4
+ require 'magick_title/renderer'
4
5
 
5
6
  module MagickTitle
6
7
 
data/test/test_dsl.rb CHANGED
@@ -33,4 +33,4 @@ class TestDsl < Test::Unit::TestCase
33
33
  assert_equal "h2", MagickTitle.styles[:h2][:to_html][:parent][:tag]
34
34
  end
35
35
 
36
- end
36
+ end
data/test/test_image.rb CHANGED
@@ -182,4 +182,4 @@ class TestImage < Test::Unit::TestCase
182
182
 
183
183
  end
184
184
 
185
- end
185
+ end
@@ -15,9 +15,9 @@ class TestMagickTitle < Test::Unit::TestCase
15
15
 
16
16
  should "not get cut off" do
17
17
 
18
- @title = MagickTitle.say("HELLO MAGICK TITLE OF DOOM!", :font_path => "/Users/Spencer/Library/Fonts", :font => "HelveticaNeueLTStd-UltLt.otf", :color => "#000000")
18
+ @title = MagickTitle.say("HELLO MAGICK TITLE OF DOOM!", :color => "#000000")
19
19
  assert File.exists?(@title.fullpath)
20
20
 
21
21
  end
22
22
 
23
- end
23
+ end
data/test/test_options.rb CHANGED
@@ -2,6 +2,14 @@ require 'helper'
2
2
 
3
3
  class TestOptions < Test::Unit::TestCase
4
4
 
5
+ def setup
6
+ @font_path = MagickTitle.options[:font_path]
7
+ end
8
+
9
+ def teardown
10
+ MagickTitle.options[:font_path] = @font_path
11
+ end
12
+
5
13
  should "raise error on invalid option" do
6
14
 
7
15
  assert_raise(NoMethodError) do
@@ -9,9 +17,16 @@ class TestOptions < Test::Unit::TestCase
9
17
  end
10
18
 
11
19
  assert_raise(NoMethodError) do
12
- MagickTitle.option[:size] = 56
20
+ MagickTitle.options[:size] = 56
13
21
  end
14
22
 
15
23
  end
16
-
17
- end
24
+
25
+ should "use custom font path" do
26
+ MagickTitle.options[:font_path] = File.expand_path("../dummy/fonts/custom/nested", __FILE__)
27
+ assert File.exists?(File.join(MagickTitle.options[:font_path], "Lobster.ttf"))
28
+ @title = MagickTitle.say("Hello Magick Title with Custom font path!", :font => "Lobster.ttf")
29
+ assert File.exists?(@title.fullpath)
30
+ end
31
+
32
+ end
@@ -3,7 +3,7 @@
3
3
 
4
4
  require 'helper'
5
5
 
6
- class TestToHtml < Test::Unit::TestCase
6
+ class TestRenderer < Test::Unit::TestCase
7
7
 
8
8
  def assert_opening_tag(html, tag, inline=false)
9
9
  assert html.match(Regexp.new("#{'^' unless inline}<#{tag}\s?")), "#{tag} opening tag"
@@ -17,8 +17,25 @@ class TestToHtml < Test::Unit::TestCase
17
17
  assert html.match(/\/>$/), "Has self closing tag"
18
18
  end
19
19
 
20
+ context "the renderer by itself" do
20
21
 
21
- context "an existing title" do
22
+ should "create the most basic tag" do
23
+ tag = %(<img alt="Hello" src="test.jpg"/>)
24
+ html = MagickTitle::Renderer.to_html("Hello", "test.jpg", false)
25
+ assert_equal tag, html
26
+ end
27
+
28
+ should "create the most basic tag inside a parent" do
29
+ tag = %(<p><img alt="Hello" src="test.jpg"/></p>)
30
+ html = MagickTitle::Renderer.to_html("Hello", "test.jpg", "p")
31
+ assert_equal tag, html
32
+ end
33
+
34
+
35
+
36
+ end
37
+
38
+ context "with an existing title" do
22
39
 
23
40
  setup do
24
41
  @title = MagickTitle::Image.create("hello mr. to_html!")
@@ -74,4 +91,5 @@ class TestToHtml < Test::Unit::TestCase
74
91
 
75
92
  end
76
93
 
77
- end
94
+
95
+ end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magick_title
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.8
4
+ prerelease: 6
5
+ version: 0.2.0.rc1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Spencer Steffen
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-05 00:00:00 -07:00
13
+ date: 2011-05-24 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -53,9 +53,9 @@ files:
53
53
  - lib/magick_title/hash.rb
54
54
  - lib/magick_title/image.rb
55
55
  - lib/magick_title/options.rb
56
+ - lib/magick_title/renderer.rb
56
57
  - lib/magick_title/version.rb
57
58
  - magick_title.gemspec
58
- - test/bench/hash_to_attributes.rb
59
59
  - test/dummy/.gitignore
60
60
  - test/dummy/Gemfile
61
61
  - test/dummy/app.rb
@@ -65,6 +65,7 @@ files:
65
65
  - test/dummy/fonts/PermanentMarker.ttf
66
66
  - test/dummy/fonts/Raleway-Thin.ttf
67
67
  - test/dummy/fonts/RockSalt.ttf
68
+ - test/dummy/fonts/custom/nested/Lobster.ttf
68
69
  - test/dummy/public/favicon.ico
69
70
  - test/dummy/public/javascripts/jquery-1.5.1.min.js
70
71
  - test/dummy/public/javascripts/jquery-ui-1.8.10.custom.min.js
@@ -92,7 +93,7 @@ files:
92
93
  - test/test_image.rb
93
94
  - test/test_magick_title.rb
94
95
  - test/test_options.rb
95
- - test/test_to_html.rb
96
+ - test/test_renderer.rb
96
97
  has_rdoc: true
97
98
  homepage: https://github.com/citrus/magick_title
98
99
  licenses: []
@@ -111,9 +112,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
112
  required_rubygems_version: !ruby/object:Gem::Requirement
112
113
  none: false
113
114
  requirements:
114
- - - ">="
115
+ - - ">"
115
116
  - !ruby/object:Gem::Version
116
- version: "0"
117
+ version: 1.3.1
117
118
  requirements: []
118
119
 
119
120
  rubyforge_project: magick_title
@@ -122,7 +123,6 @@ signing_key:
122
123
  specification_version: 3
123
124
  summary: Converts text to an image using imagemagick.
124
125
  test_files:
125
- - test/bench/hash_to_attributes.rb
126
126
  - test/dummy/.gitignore
127
127
  - test/dummy/Gemfile
128
128
  - test/dummy/app.rb
@@ -132,6 +132,7 @@ test_files:
132
132
  - test/dummy/fonts/PermanentMarker.ttf
133
133
  - test/dummy/fonts/Raleway-Thin.ttf
134
134
  - test/dummy/fonts/RockSalt.ttf
135
+ - test/dummy/fonts/custom/nested/Lobster.ttf
135
136
  - test/dummy/public/favicon.ico
136
137
  - test/dummy/public/javascripts/jquery-1.5.1.min.js
137
138
  - test/dummy/public/javascripts/jquery-ui-1.8.10.custom.min.js
@@ -159,4 +160,4 @@ test_files:
159
160
  - test/test_image.rb
160
161
  - test/test_magick_title.rb
161
162
  - test/test_options.rb
162
- - test/test_to_html.rb
163
+ - test/test_renderer.rb
@@ -1,34 +0,0 @@
1
- require 'benchmark'
2
-
3
- puts "Benchmark Hash to Attribtes"
4
- puts " string vs array"
5
- puts "-" * 50
6
-
7
- # Converts a hash to a string of html style key="value" pairs
8
- def hash_to_attributes_using_string(hash)
9
- attributes = ""
10
- return attributes unless hash.is_a?(Hash)
11
- hash.each { |key, value| attributes << key.to_s << "=\"" << value.strip << "\" " if value and 0 < value.length }
12
- attributes.strip
13
- end
14
-
15
- def hash_to_attributes_using_array(hash)
16
- attributes = []
17
- return attributes unless hash.is_a?(Hash)
18
- hash.each { |key, value| attributes << %(#{key}="#{value.strip}") if value and 0 < value.length }
19
- attributes.join(" ")
20
- end
21
-
22
-
23
- @hash = { :id => "some-html-id", :class => "a-css-class-that-is-long ", :href => "http://google.com ", :title => "Visit Google!", :rel => "that-related-thing" }
24
-
25
- using_string = hash_to_attributes_using_string(@hash)
26
- using_array = hash_to_attributes_using_array(@hash)
27
-
28
- raise "Strings don't match!" unless using_string == using_array
29
-
30
- n = 999999999999999999999
31
- Benchmark.bm do |x|
32
- x.report { hash_to_attributes_using_string(@hash) }
33
- x.report { hash_to_attributes_using_array(@hash) }
34
- end