rodolfo 0.0.4 → 0.0.5

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rodolfo +9 -15
  3. data/lib/rodolfo.rb +27 -4
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e2aea565827b23bb3911842c4b4ca1cb4b397a0e
4
- data.tar.gz: d8cf525429b159f60bc7ce3c151197d2fce9c321
3
+ metadata.gz: df5eaa2a01e993da8484f0bacefab3f22d88e889
4
+ data.tar.gz: d341e4fde1ce38d657948dc78b24cb47fd3d929c
5
5
  SHA512:
6
- metadata.gz: 568c789d07d2e53efb55bdf684938f962097fdbafad20aa2157e9ef42fe2913299c99d71ffed5d5007d75f7e931afde5db4a1f9df3d657173df992da38e97569
7
- data.tar.gz: 7f72556e283a9cd785952503b256e1afafb01747cca348dd4bf8b248a7b55f8c8074cc839adb3b06a7f30cdfb9af26f45b4de6f1d40dd21491eb0fad60afb9d7
6
+ metadata.gz: 2221a3f3c72fe1e136081b75a36e046639d3edeec121c7af9d41e31db1cdb62089455c34c7d38b63b2fafd1095fbcfb7c69a3324a2087b461bcd06baf43578b6
7
+ data.tar.gz: 6cd22910b4f65fe478f709bbf52c1b4448ff0b604fd0c0b25050d9bfc11f2328d21a2a10a983fcd959f7d7f965951316add168d5e46c3afff25ece2c51e22ec0
data/bin/rodolfo CHANGED
@@ -8,8 +8,7 @@ require File.join(root_path, 'lib', 'rodolfo.rb')
8
8
 
9
9
  opts = Slop.parse do |o|
10
10
  o.string '-t', '--template', 'template name'
11
- o.string '-o', '--output', 'output pdf (optional, you can use stdout instead)'
12
- o.on '--schema', 'print the json schema'
11
+ o.on '--skip-validation', 'skip json schema validation'
13
12
  o.on '--version', 'print the version' do
14
13
  STDOUT.write Rodolfo::VERSION
15
14
  exit 0
@@ -21,19 +20,14 @@ unless opts[:template]
21
20
  exit 1
22
21
  end
23
22
 
24
- package = Rodolfo::Package.new(opts[:template])
25
-
26
- if opts[:schema]
27
- STDOUT.write package.schema
28
- exit 0
29
- end
30
-
31
- json_data = $stdin.tty? ? nil : $stdin.read
23
+ json_data = $stdin.tty? ? {} : $stdin.read
32
24
  data = JSON.parse(json_data, symbolize_names: true)
33
- bytes = package.make data
25
+ package = Rodolfo::Package.new opts[:template], data
34
26
 
35
- if opts[:output]
36
- open(opts[:output], 'wb') { |f| f.puts bytes }
37
- else
38
- STDOUT.write bytes
27
+ unless opts.skip_validation? || package.valid?
28
+ STDOUT.write JSON.dump(package.validation_errors)
29
+ exit 2
39
30
  end
31
+
32
+ STDOUT.write package.make
33
+ exit 0
data/lib/rodolfo.rb CHANGED
@@ -1,15 +1,27 @@
1
+ require 'json'
2
+ require 'json-schema'
1
3
  require 'pathname'
2
4
  require 'prawn'
3
5
  require 'prawn/measurements'
4
6
  require 'prawn/measurement_extensions'
5
7
  require 'prawn/table'
6
8
 
9
+ ##
10
+ # Create PDFs from the CLI using Prawn
7
11
  module Rodolfo
8
- VERSION = '0.0.4'.freeze
12
+ VERSION = '0.0.5'.freeze
9
13
 
14
+ ##
15
+ # Represents a filesystem folder which should contain
16
+ # - schema.json to perform the validation
17
+ # - data.json as example data
18
+ # - template.rb the pdf generator itself
19
+ #
20
+ # It handles methods for manipulate those files and the pdf generation
10
21
  class Package
11
- def initialize(path)
22
+ def initialize(path, data)
12
23
  @path = Pathname.new(path).absolute? ? path : File.join(Dir.pwd, path)
24
+ @data = data
13
25
  @json_file_path = File.join @path, 'schema.json'
14
26
  @template_file_path = File.join @path, 'template'
15
27
  end
@@ -18,9 +30,20 @@ module Rodolfo
18
30
  @json_schema ||= File.read @json_file_path
19
31
  end
20
32
 
21
- def make(data)
33
+ def valid?
34
+ args = schema, @data, { errors_as_objects: true }
35
+ @validation_errors = JSON::Validator.fully_validate(*args)
36
+ @validation_errors.empty?
37
+ end
38
+
39
+ def validation_errors
40
+ valid? unless @validation_errors
41
+ @validation_errors
42
+ end
43
+
44
+ def make
22
45
  require @template_file_path
23
- Rodolfo::Template.new(data).render
46
+ Rodolfo::Template.new(@data).render
24
47
  end
25
48
  end
26
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rodolfo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Initios
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-17 00:00:00.000000000 Z
11
+ date: 2016-10-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Create pdfs with Prawn
14
14
  email: dev@initios.com