rodolfo 0.0.4 → 0.0.5

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 +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