rodolfo 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/rodolfo +33 -0
  3. data/lib/rodolfo.rb +38 -0
  4. metadata +46 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 773520f2d80304bcc6c699ff1f767b5e59264026
4
+ data.tar.gz: 405f21606fa584c43c1b5b8dc7082a30c5afabe5
5
+ SHA512:
6
+ metadata.gz: 0a489720dadbfdf746154c590636b8848cf81f3c33dd54284b09fe2f3f51cbfb042d4e466184a6c07e71885910e4fe1f2c421c3bedc0faa5b996e654bcb53d4a
7
+ data.tar.gz: 4f13e0b3dc02b3d4e77c7f3a6ef289af66df69273e56668699a2c52a5ccbc0b333bff0d3be173220cbfc3b9ca47208c5ce6987d1f14c10e4c8dbc4f0f11a676b
data/bin/rodolfo ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ root_path = File.dirname __dir__
4
+
5
+ require 'json'
6
+ require 'slop'
7
+ require File.join(root_path, 'lib', 'rodolfo.rb')
8
+
9
+ opts = Slop.parse do |o|
10
+ o.string '-t', '--template', 'template name'
11
+ o.string '-o', '--output', 'output pdf (optional, you can use stdout instead)'
12
+ o.on '--version', 'print the version' do
13
+ puts Slop::VERSION
14
+ exit
15
+ end
16
+ end
17
+
18
+ json_data = $stdin.tty? ? nil : $stdin.read
19
+
20
+ unless json_data && opts[:template]
21
+ puts 'Missing json data throught stdin' unless json_data
22
+ puts opts
23
+ exit
24
+ end
25
+
26
+ data = JSON.parse(json_data, symbolize_names: true)
27
+ bytes = Rodolfo::Pdf.new(opts[:template]).make data
28
+
29
+ if opts[:output]
30
+ open(opts[:output], 'wb') { |f| f.puts bytes }
31
+ else
32
+ STDOUT.write bytes
33
+ end
data/lib/rodolfo.rb ADDED
@@ -0,0 +1,38 @@
1
+ module Rodolfo
2
+ class Pdf
3
+ def initialize(path)
4
+ @package = TemplatePackage.new path
5
+ end
6
+
7
+ def schema
8
+ @package.schema
9
+ end
10
+
11
+ def make(data)
12
+ require 'prawn'
13
+ require 'prawn/measurements'
14
+ require 'prawn/measurement_extensions'
15
+ require 'prawn/table'
16
+
17
+ p = @package.proc_maker(data)
18
+ Prawn::Document.new(&p).render
19
+ end
20
+ end
21
+
22
+ class TemplatePackage
23
+ def initialize(path)
24
+ @path = path
25
+ @json_file_path = File.join @path, 'schema.json'
26
+ @template_file_path = File.join @path, 'template.rb'
27
+ end
28
+
29
+ def schema
30
+ @json_schema ||= File.read @json_file_path
31
+ end
32
+
33
+ def proc_maker(data)
34
+ require @template_file_path
35
+ Rodolfo.make_proc data
36
+ end
37
+ end
38
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rodolfo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Initios
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-14 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Create pdfs with Prawn
14
+ email: dev@initios.com
15
+ executables:
16
+ - rodolfo
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/rodolfo
21
+ - lib/rodolfo.rb
22
+ homepage: https://github.com/initios/rodolfo
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '2.0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.5.1
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: rodolfo
46
+ test_files: []