prawnto_2 0.2.0.beta4 → 0.2.0.beta6

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/Gemfile CHANGED
@@ -3,6 +3,6 @@ source "http://rubygems.org"
3
3
  # Specify your gem's dependencies in my_project.gemspec
4
4
  gemspec
5
5
 
6
- gem "spork", "~> 0.9.0.rc9"
6
+ gem "spork", ">= 0.9.0"
7
7
  gem "rspec-rails"
8
8
  gem "mocha"
data/README.rdoc CHANGED
@@ -16,7 +16,7 @@ This is my attempt to merge the various forks of the prawnto gem, and <b>update
16
16
 
17
17
  In your <code>Gemfile</code>:
18
18
 
19
- gem "prawnto_2", "0.2.0.beta3", :require => "prawnto"
19
+ gem "prawnto_2", "0.2.0.beta6", :require => "prawnto"
20
20
 
21
21
  Then run:
22
22
 
@@ -19,7 +19,7 @@ module Prawnto
19
19
  instance.prawnto :inline => true, :instance_variables_from => calling_object
20
20
  end
21
21
 
22
- return instance.render_to_string(:action => template, :template => false, :format => :pdf).html_safe
22
+ return instance.render_to_string(:action => template, :template => false, :formats => [:pdf]).html_safe
23
23
  end
24
24
 
25
25
  end
@@ -33,17 +33,29 @@ module Prawnto
33
33
  vars = object.instance_variables.map(&:to_s) - exclude.map(&:to_s)
34
34
  vars.each { |name| instance_variable_set(name, object.instance_variable_get(name)) }
35
35
  end
36
+
37
+ def push_instance_variables_to(object, exclude = [])
38
+ vars = instance_variables.map(&:to_s) - exclude.map(&:to_s)
39
+ vars.each { |name| object.instance_variable_set(name, instance_variable_get(name)) }
40
+ end
36
41
 
37
- def method_missing(m, *args)
42
+ # This method is a little hacky with pushing the instance variables back. I would prefer to use bindings, but wasn't having much luck.
43
+ def method_missing(m, *args, &block)
38
44
  begin
39
45
  super
40
46
  rescue
41
47
  if pdf.respond_to?(m.to_s)
42
- pdf.send(m, *args)
48
+ pdf.send(m, *args, &block)
43
49
  elsif @calling_object.respond_to?(m.to_s)
44
- @calling_object.send(m, *args)
50
+ push_instance_variables_to @calling_object
51
+ res = @calling_object.send(m, *args, &block)
52
+ copy_instance_variables_from @calling_object
53
+ res
45
54
  elsif @calling_object != @view_context and @view_context.respond_to?(m.to_s)
46
- @view_context.send(m, *args)
55
+ push_instance_variables_to @view_context
56
+ res = @view_context.send(m, *args, &block)
57
+ copy_instance_variables_from @view_context
58
+ res
47
59
  else
48
60
  raise
49
61
  end
data/prawnto.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  Gem::Specification.new do |s|
3
3
  s.name = "prawnto_2"
4
- s.version = '0.2.0.beta4'
4
+ s.version = '0.2.0.beta6'
5
5
  s.author = ["Forrest"]
6
6
  s.email = ["development@forrestzeisler.com"]
7
7
  s.date = Time.now.utc.strftime("%Y-%m-%d")
@@ -0,0 +1,76 @@
1
+ %PDF-1.3
2
+ %����
3
+ 1 0 obj
4
+ << /Creator <feff0050007200610077006e>
5
+ /Producer <feff0050007200610077006e>
6
+ >>
7
+ endobj
8
+ 2 0 obj
9
+ << /Type /Catalog
10
+ /Pages 3 0 R
11
+ >>
12
+ endobj
13
+ 3 0 obj
14
+ << /Type /Pages
15
+ /Count 1
16
+ /Kids [5 0 R]
17
+ >>
18
+ endobj
19
+ 4 0 obj
20
+ << /Length 112
21
+ >>
22
+ stream
23
+ q
24
+
25
+ BT
26
+ 36 747.384 Td
27
+ /F1.0 12 Tf
28
+ [<746573742031>] TJ
29
+ ET
30
+
31
+
32
+ BT
33
+ 36 733.512 Td
34
+ /F1.0 12 Tf
35
+ [<746573742032>] TJ
36
+ ET
37
+
38
+ Q
39
+
40
+ endstream
41
+ endobj
42
+ 5 0 obj
43
+ << /Type /Page
44
+ /Parent 3 0 R
45
+ /MediaBox [0 0 612.0 792.0]
46
+ /Contents 4 0 R
47
+ /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
48
+ /Font << /F1.0 6 0 R
49
+ >>
50
+ >>
51
+ >>
52
+ endobj
53
+ 6 0 obj
54
+ << /Type /Font
55
+ /Subtype /Type1
56
+ /BaseFont /Helvetica
57
+ /Encoding /WinAnsiEncoding
58
+ >>
59
+ endobj
60
+ xref
61
+ 0 7
62
+ 0000000000 65535 f
63
+ 0000000015 00000 n
64
+ 0000000109 00000 n
65
+ 0000000158 00000 n
66
+ 0000000215 00000 n
67
+ 0000000378 00000 n
68
+ 0000000556 00000 n
69
+ trailer
70
+ << /Size 7
71
+ /Root 2 0 R
72
+ /Info 1 0 R
73
+ >>
74
+ startxref
75
+ 653
76
+ %%EOF
@@ -9,5 +9,14 @@ class TestController < ApplicationController
9
9
  @x = 1
10
10
  render :action => "dsl_render"
11
11
  end
12
+
13
+ def instance_var_test
14
+ @x = 1
15
+ render :action => "instance_var_test"
16
+ end
17
+
18
+ def yield_block_in_helper_test
19
+ render :action => "yield_block_in_helper_test"
20
+ end
12
21
 
13
22
  end
@@ -2,4 +2,17 @@ module ApplicationHelper
2
2
  def some_helper
3
3
  "this is from a helper"
4
4
  end
5
+
6
+ def x_output_helper
7
+ @x.to_s
8
+ end
9
+
10
+ def set_x_to_3_in_helper
11
+ @x = 3
12
+ end
13
+
14
+ def yield_this_block
15
+ yield
16
+ end
17
+
5
18
  end
@@ -2,7 +2,7 @@ class SuperModel
2
2
 
3
3
  def to_pdf
4
4
  @x = 1
5
- Prawnto::ModelRenderer.to_string "test/default_render.pdf", self
5
+ Prawnto::ModelRenderer.to_string "test/default_render", self
6
6
  end
7
7
 
8
8
  end
@@ -0,0 +1,15 @@
1
+ text "Complex Example"
2
+ text "@x = #{@x}"
3
+ @x = 2
4
+ text x_output_helper
5
+
6
+ if @x.to_s != x_output_helper
7
+ raise "Variable did not carry over"
8
+ end
9
+
10
+ set_x_to_3_in_helper
11
+
12
+ if @x != 3
13
+ raise "Variable did not carry over"
14
+ end
15
+
@@ -0,0 +1,4 @@
1
+ text "test 1"
2
+ yield_this_block {
3
+ text "test 2"
4
+ }
@@ -1,6 +1,8 @@
1
1
  Rails.application.routes.draw do
2
2
  get "/default_render" => "test#default_render"
3
3
  get "/dsl_render" => "test#dsl_render"
4
+ get "/instance_var_test" => "test#instance_var_test"
5
+ get "/yield_block_in_helper_test" => "test#yield_block_in_helper_test"
4
6
 
5
7
  root :to => "test#default_render"
6
8
  end
@@ -2,7 +2,7 @@ require File.expand_path("../spec_helper.rb", File.dirname(__FILE__))
2
2
 
3
3
  describe TestController do
4
4
 
5
- describe "GET default_render" do
5
+ describe "simple" do
6
6
  it "returns correct PDF" do
7
7
  get "/default_render.pdf"
8
8
  response.should be_success
@@ -11,10 +11,22 @@ describe TestController do
11
11
  body_binary = response.body.bytes.to_a
12
12
  body_binary.should == asset_binary
13
13
  end
14
+
15
+
16
+ it "shares values/changes of instance vars between view and helpers" do
17
+ expect { get "/instance_var_test.pdf" }.should_not raise_error
18
+ end
19
+
20
+ it "should render items in a block passed to a helper" do
21
+ get "/yield_block_in_helper_test.pdf"
22
+ asset_binary = File.open(TEST_ASSETS + "/yield_block_in_helper_test.pdf").read.bytes.to_a
23
+ body_binary = response.body.bytes.to_a
24
+ body_binary.should == asset_binary
25
+ end
14
26
  end
15
27
 
16
28
 
17
- describe "GET dsl_render" do
29
+ describe "dsl" do
18
30
  it "returns correct PDF" do
19
31
  get "/dsl_render.pdf"
20
32
  response.should be_success
@@ -24,5 +36,5 @@ describe TestController do
24
36
  body_binary.should == asset_binary
25
37
  end
26
38
  end
27
-
39
+
28
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prawnto_2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.beta4
4
+ version: 0.2.0.beta6
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-22 00:00:00.000000000Z
12
+ date: 2012-01-23 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70215973019900 !ruby/object:Gem::Requirement
16
+ requirement: &70328106613180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70215973019900
24
+ version_requirements: *70328106613180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: prawn
27
- requirement: &70215973019200 !ruby/object:Gem::Requirement
27
+ requirement: &70328106612700 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 0.12.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70215973019200
35
+ version_requirements: *70328106612700
36
36
  description: Simple PDF generation using the prawn library.
37
37
  email:
38
38
  - development@forrestzeisler.com
@@ -60,6 +60,7 @@ files:
60
60
  - script/rails
61
61
  - spec/assets/default_render.pdf
62
62
  - spec/assets/dsl_render.pdf
63
+ - spec/assets/yield_block_in_helper_test.pdf
63
64
  - spec/dummy/.rspec
64
65
  - spec/dummy/.sass-cache/387f7b3fde13680ae5a79212c089f81d2d418f1e/application.css.scssc
65
66
  - spec/dummy/.sass-cache/6a18c557e07dbc07a14d0809be02d4f21f1dbe91/_shared.css.scssc
@@ -82,6 +83,8 @@ files:
82
83
  - spec/dummy/app/views/pdf_emailer/email_with_attachment.text.erb
83
84
  - spec/dummy/app/views/test/default_render.pdf.prawn
84
85
  - spec/dummy/app/views/test/dsl_render.pdf.prawn
86
+ - spec/dummy/app/views/test/instance_var_test.pdf.prawn
87
+ - spec/dummy/app/views/test/yield_block_in_helper_test.pdf.prawn
85
88
  - spec/dummy/config.ru
86
89
  - spec/dummy/config/application.rb
87
90
  - spec/dummy/config/boot.rb
@@ -139,6 +142,7 @@ summary: This gem allows you to use the PDF mime-type and the simple prawn synta
139
142
  test_files:
140
143
  - spec/assets/default_render.pdf
141
144
  - spec/assets/dsl_render.pdf
145
+ - spec/assets/yield_block_in_helper_test.pdf
142
146
  - spec/dummy/.rspec
143
147
  - spec/dummy/.sass-cache/387f7b3fde13680ae5a79212c089f81d2d418f1e/application.css.scssc
144
148
  - spec/dummy/.sass-cache/6a18c557e07dbc07a14d0809be02d4f21f1dbe91/_shared.css.scssc
@@ -161,6 +165,8 @@ test_files:
161
165
  - spec/dummy/app/views/pdf_emailer/email_with_attachment.text.erb
162
166
  - spec/dummy/app/views/test/default_render.pdf.prawn
163
167
  - spec/dummy/app/views/test/dsl_render.pdf.prawn
168
+ - spec/dummy/app/views/test/instance_var_test.pdf.prawn
169
+ - spec/dummy/app/views/test/yield_block_in_helper_test.pdf.prawn
164
170
  - spec/dummy/config.ru
165
171
  - spec/dummy/config/application.rb
166
172
  - spec/dummy/config/boot.rb