dvorak 0.0.2 → 0.0.3

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