dvorak 0.0.2 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5ae32ee6e3ece5ff0e2496c7aade5447558f7400
4
- data.tar.gz: 973482274832da346470d9120b2ec170174f9eee
3
+ metadata.gz: 9a74b7a76d0b25c86e5b0052343e28db8abef939
4
+ data.tar.gz: c0122e2ac8662397c83f61f0a081e4d71bee0612
5
5
  SHA512:
6
- metadata.gz: 5de3e2b5978e6fff58e9db419a3fd008dc2c8666c478b1d6eed749266f4d3c52e76aa888b2a61c8cc362ecb3d06993db176bccde1c220fa1590e0dfdd9c11661
7
- data.tar.gz: 27628b295717f1667805aebb33ec5644b2c1d62df16d0bb50053d803cadb59d2cfc61d52171097702ea2bcd2a731ce8a7db20807d65a9fe597548817a2f1c100
6
+ metadata.gz: d8100854134bbdebe049a10de12f246b291e642e907b57d443d05fbc2097b22528a3caef1cecdfdb778a378ba10ffa1b53a27d2b69a8366b2d12416c55b3e9f7
7
+ data.tar.gz: ff65866ad8c85a2bc79447bd60489f1217156469d210ec1e069c23bf82f3f9d877dab8cfd4bdb90761853135e9e977ebb2bea9d003078e33d7c793797c91a33b
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  test_game
19
+ notes.md
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency 'thor'
22
+ spec.add_dependency 'prawn'
22
23
 
23
24
  spec.add_development_dependency "bundler", "~> 1.3"
24
25
  spec.add_development_dependency 'rake'
@@ -26,4 +27,7 @@ Gem::Specification.new do |spec|
26
27
  spec.add_development_dependency 'rspec'
27
28
  spec.add_development_dependency 'cucumber'
28
29
  spec.add_development_dependency 'coveralls'
30
+ spec.add_development_dependency 'pry'
31
+ spec.add_development_dependency 'pdf-reader'
32
+
29
33
  end
@@ -5,5 +5,6 @@ Feature: PDF Generation
5
5
  When I generate the deck
6
6
  And I list the directories in my project
7
7
  Then I should see the directory "output"
8
- #And I should see the file "output/cards.pdf"
8
+ And I should see the file "output/cards.pdf"
9
+ And the PDF should have 4 pages
9
10
 
@@ -1,5 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../../lib/dvorak'
2
2
  require 'fileutils'
3
+ require 'pdf/reader'
4
+ require 'pry'
3
5
 
4
6
  Given(/^I create a new deck named "(.*?)"$/) do |deck_name|
5
7
  @deck_name = deck_name
@@ -26,3 +28,8 @@ end
26
28
  Then(/^I should see the file "(.*?)"$/) do |file|
27
29
  expect(@files).to include("#{@deck_name}/#{file}")
28
30
  end
31
+
32
+ Then(/^the PDF should have (\d+) pages$/) do |count|
33
+ reader = PDF::Reader.new("#{@deck_name}/output/cards.pdf")
34
+ expect(reader.page_count.to_s).to eq count
35
+ end
@@ -1,13 +1,29 @@
1
+ require 'prawn'
2
+ require 'yaml'
3
+
1
4
  module Dvorak
2
5
  class PDFGenerator
3
6
  attr_reader :result
4
7
 
5
8
  def generate
6
9
  if Dir.exist?('cards')
7
- Dir.mkdir("output")
10
+ FileUtils.mkdir_p("output")
11
+
12
+ actions = YAML.load_file('cards/actions.yml')
13
+ things = YAML.load_file('cards/things.yml')
14
+
15
+ on_first_page = true
16
+ Prawn::Document.generate('output/cards.pdf') do
17
+ (things+actions).each do |action|
18
+ start_new_page unless on_first_page
19
+ text_box action['title']
20
+ on_first_page = false
21
+ end
22
+ end
23
+
8
24
  @result = 'Success!'
9
25
  else
10
- @result = 'Directory `game` does not exist. Please us `dvorak new GAME_NAME` to create a new project.'
26
+ @result = 'Directory `cards` does not exist. Please use `dvorak new GAME_NAME` to create a new project.'
11
27
  exit 1
12
28
  end
13
29
  end
@@ -1,3 +1,3 @@
1
1
  module Dvorak
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,9 +1,13 @@
1
1
  require 'spec_helper'
2
2
  require 'dvorak/pdf_generator'
3
+ require 'dvorak/cli'
4
+ require 'pdf/reader'
3
5
 
4
6
  module Dvorak
5
7
  describe 'PDFGenerator' do
6
8
  before do
9
+ Dvorak::CLI.source_root(File.expand_path('../../../../templates', __FILE__))
10
+ FileUtils.rm_r('test_game') if Dir.exist?('test_game')
7
11
  @generator = PDFGenerator.new
8
12
  end
9
13
 
@@ -18,7 +22,7 @@ module Dvorak
18
22
  @generator.generate
19
23
  rescue SystemExit
20
24
  end
21
- expect(@generator.result).to eq 'Directory `game` does not exist. Please us `dvorak new GAME_NAME` to create a new project.'
25
+ expect(@generator.result).to eq 'Directory `cards` does not exist. Please use `dvorak new GAME_NAME` to create a new project.'
22
26
  end
23
27
 
24
28
  it 'exits with non-zero status' do
@@ -28,22 +32,55 @@ module Dvorak
28
32
  end
29
33
  end
30
34
 
31
- context 'cards directory is present' do
35
+ context 'game already created' do
32
36
  before do
33
- Dir.stub(:exist?).with('cards') { true }
37
+ cli = Dvorak::CLI.new
38
+ cli.new('test_game')
39
+ Dir.chdir('test_game')
34
40
  end
35
41
 
36
- it 'sets result to a succes message' do
42
+ after do
43
+ Dir.chdir('..')
44
+ end
45
+
46
+ context 'cards directory is present' do
47
+ it 'sets result to a success message' do
48
+ @generator.generate
49
+ expect(@generator.result).to eq 'Success!'
50
+ end
51
+ end
52
+
53
+ context 'output directory does not already exist' do
54
+ it 'creates an output directory' do
55
+ @generator.generate
56
+ expect(File.exist?('output')).to be_true
57
+ end
58
+ end
59
+
60
+ context 'output directory already exists' do
61
+ it 'can run generate multiple times without complaint' do
62
+ @generator.generate
63
+ @generator.generate
64
+ end
65
+ end
66
+
67
+ it 'creates a pdf file of the cards' do
37
68
  @generator.generate
38
- expect(@generator.result).to eq 'Success!'
69
+ expect(File.exist?('output/cards.pdf')).to be_true
39
70
  end
40
71
 
41
- it 'creates an output directory' do
42
- expect(Dir).to receive(:mkdir).with("output")
72
+ it 'creates a PDF with a page for each card in the deck' do
43
73
  @generator.generate
74
+ reader = PDF::Reader.new("output/cards.pdf")
75
+
76
+ expect(reader.pages.map(&:text)).to match_array [
77
+ 'Yolokitten',
78
+ 'Lolcat',
79
+ 'Harmony',
80
+ 'Unity'
81
+ ]
44
82
  end
45
83
  end
46
-
47
84
  end
48
85
  end
49
86
  end
@@ -1,4 +1,6 @@
1
1
  require 'coveralls'
2
+ require 'pry'
3
+
2
4
  Coveralls.wear!
3
5
 
4
6
  RSpec.configure do |config|
@@ -1,4 +1,6 @@
1
1
  -
2
- title: Example Action
2
+ title: Yolokitten
3
+ type: Action
4
+ -
5
+ title: Lolcat
3
6
  type: Action
4
-
@@ -1,3 +1,6 @@
1
1
  -
2
- title: Example Thing
2
+ title: Harmony
3
+ type: Thing
4
+ -
5
+ title: Unity
3
6
  type: Thing
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dvorak
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Kelly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-25 00:00:00.000000000 Z
11
+ date: 2014-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: prawn
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,34 @@ dependencies:
94
108
  - - '>='
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pdf-reader
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
97
139
  description: Create Dvorak deck PDFs using YAML files.
98
140
  email:
99
141
  - polymonic@gmail.com