tilt-prawn 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f834300538204e2b38ac214dc4521c744e7959f9
4
- data.tar.gz: d11db0cf35b829d8fe9d816019efa2c84f13dc47
3
+ metadata.gz: f0a35a8cd9c83e420dc8cc7826d9ef8aa962efe9
4
+ data.tar.gz: d7356ebc81a1f6887557e9cc1e757d3a2be0d8d4
5
5
  SHA512:
6
- metadata.gz: 1149556ba66caa439e5647b120f6b6702285079040c2a3d427680252da88621760cc45e6801e2d59b0d23a9634542492c92369ad3cdeedc7512bdba8498eafbf
7
- data.tar.gz: 60788fbccc796a919099c18f4ec0c180e97a9633668d3a774516ae4da8a8cb631e17946c9605d3d13a24e3197dd84f1139d4cdd0d0fe73d7af1d0adb6733025d
6
+ metadata.gz: f934330b71be18b75aa39c950baa417aedc680b42553807dfe5e8aa69455bb581a02d8d876daf18a1912c66f1ca996d8d48c033485ce867d5e7fd740d2b6ad4b
7
+ data.tar.gz: 015f05a5d2744d51ed5e521fff3e298703be71fe9843d21ed02c3e3312a841955c7fb5b776f18f359e39ec5ddb625944dcff05a0b8973f719cfa7163cb58fa8d
data/README.md ADDED
@@ -0,0 +1,79 @@
1
+ # tilt-prawn [![Build Status](https://travis-ci.org/fengb/tilt-prawn.png?branch=master)](https://travis-ci.org/fengb/tilt-prawn)
2
+
3
+ Adds support for rendering [Prawn](http://prawn.majesticseacreature.com/) templates using [Tilt](https://github.com/rtomayko/tilt).
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'tilt-prawn'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install tilt-prawn
18
+
19
+ ## Usage
20
+
21
+ Create a Prawn template file with a `.prawn` extension
22
+
23
+ Example, in `hello.prawn`:
24
+
25
+ ```ruby
26
+ pdf.text "Hello #{name}"
27
+ ```
28
+
29
+ Then, render the template with Ruby:
30
+
31
+ ```ruby
32
+ require 'tilt/prawn'
33
+
34
+ template = Tilt.new('hello.prawn')
35
+ puts template.render(nil, name: 'Bob')
36
+ ```
37
+
38
+ ## Customization
39
+
40
+ Additional convenience methods may be added to the rendering engine:
41
+
42
+ ```ruby
43
+ Tilt::PrawnTemplate.extend_engine do
44
+ def date_text(date)
45
+ text date.strftime('%b %d, %Y')
46
+ end
47
+ end
48
+ ```
49
+
50
+ `date_text` is now available as an instance method on the renderer:
51
+
52
+ ```ruby
53
+ pdf.date_text(Date.today)
54
+ ```
55
+
56
+ If you defined an external class as a base template, you may use it instead of
57
+ the default class:
58
+
59
+ ```ruby
60
+ class CustomEngine < Prawn::Document
61
+ end
62
+
63
+ Tilt::PrawnTemplate.engine = CustomEngine
64
+ ```
65
+
66
+ Alternatively, may be passed in as an argument to the template constructor:
67
+
68
+ ```ruby
69
+ template = Tilt.new('hello.prawn', engine: CustomEngine)
70
+ puts template.render
71
+ ```
72
+
73
+ ## Contributing
74
+
75
+ 1. Fork it
76
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
77
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
78
+ 4. Push to the branch (`git push origin my-new-feature`)
79
+ 5. Create new Pull Request
@@ -1,5 +1,5 @@
1
1
  module Tilt
2
2
  module Prawn
3
- VERSION = '0.0.1'
3
+ VERSION = '0.1.0'
4
4
  end
5
5
  end
data/lib/tilt/prawn.rb CHANGED
@@ -4,43 +4,51 @@ require 'tilt/prawn/version'
4
4
 
5
5
  module Tilt
6
6
  class PrawnTemplate < Template
7
- self.default_mime_type = 'application/pdf'
7
+ class Engine < ::Prawn::Document
8
+ end
9
+
10
+ class << self
11
+ attr_accessor :engine
8
12
 
9
- def self.engine_initialized?
10
- defined? ::Prawn::Document
13
+ def reset_engine!
14
+ self.engine = Engine
15
+ Engine.instance_methods(false).each do |method|
16
+ Engine.send(:undef_method, method)
17
+ end
18
+ end
11
19
  end
12
20
 
13
- def initialize_engine
14
- require_template_library 'prawn'
21
+ self.default_mime_type = 'application/pdf'
22
+ self.reset_engine!
23
+
24
+ def self.extend_engine(&block)
25
+ Engine.class_eval(&block)
15
26
  end
16
27
 
17
28
  def prepare
18
29
  end
19
30
 
31
+ def engine
32
+ @options[:engine] || self.class.engine
33
+ end
34
+
20
35
  def evaluate(scope, locals, &block)
21
- doc = ::Prawn::Document.new do |pdf|
22
- if data.respond_to?(:call)
23
- scope = scope.dup # preserve scope object on caller
24
- locals.each do |key, val|
25
- scope.define_singleton_method(key) { val }
26
- end
27
- scope.instance_exec(pdf, &data)
28
- else
29
- context = scope.instance_eval { binding }
30
- if context.respond_to?(:local_variable_set)
31
- locals.each do |key, val|
32
- context.local_variable_set(key, val)
33
- end
34
- else
35
- locals.each do |key, val|
36
- # Wow, what a hack
37
- context.eval("#{key} = #{val.inspect}")
38
- end
39
- end
40
- context.eval(data)
36
+ scope = scope ? scope.dup : Object.new
37
+ pdf = engine.new
38
+ if data.respond_to?(:call)
39
+ locals.each do |key, val|
40
+ scope.define_singleton_method(key) { val }
41
41
  end
42
+ scope.instance_exec(pdf, &data)
43
+ else
44
+ locals[:pdf] = pdf
45
+ super(scope, locals, &block)
42
46
  end
43
- doc.render
47
+ pdf.render
48
+ end
49
+
50
+ def precompiled_template(local_keys)
51
+ data
44
52
  end
45
53
  end
46
54
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tilt-prawn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Feng
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-08 00:00:00.000000000 Z
11
+ date: 2014-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tilt
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.3'
69
- - !ruby/object:Gem::Dependency
70
- name: pry
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0.10'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.10'
83
69
  description: tilt-prawn integrates prawn with tilt
84
70
  email: contact@fengb.info
85
71
  executables: []
@@ -87,10 +73,11 @@ extensions: []
87
73
  extra_rdoc_files: []
88
74
  files:
89
75
  - LICENSE
76
+ - README.md
90
77
  - lib/tilt-prawn.rb
91
78
  - lib/tilt/prawn.rb
92
79
  - lib/tilt/prawn/version.rb
93
- homepage:
80
+ homepage: https://github.com/fengb/tilt-prawn
94
81
  licenses:
95
82
  - MIT
96
83
  metadata: {}