keynote-client 0.1.1 → 0.1.2

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: cfaa12b5f307472074fcc60d5e2a330bdf6fcf13
4
- data.tar.gz: 5ca99f47532d3e67991094d08e3af33f1199715d
3
+ metadata.gz: 5a92dba499c9e0a5edd26ed9bd77af46c1334bc9
4
+ data.tar.gz: c7dff278572003d453b5662294b0e65ce8be7a27
5
5
  SHA512:
6
- metadata.gz: 15ddfbbd78cd5b0a84eab6b0345748a7b3479333731321566df2ec0ea17842a0fdad29ba7b72f75cb2a4b6ba1bad66fef63dc161a0780cbd51786feda459df06
7
- data.tar.gz: 197ce7995e427743efe033a8843e094ec4932e87a1ad802a62981bdd86eef7df38104d7e7f5a69aa9c0f0f96a55ffe0970c2ff34ff1f9e1b48a210f127a9987e
6
+ metadata.gz: 8e6d94f06400b706bfcaa31309691175344d57d486fc0d8770a8326e35d9380c941909a3988892603cfe63b4e8bfc16e30199f5b53931109ba80ffc0924785c5
7
+ data.tar.gz: 54987691c3b1a076055ab048693e6b5366afc641eb265308782d8029544082837e7e7912d1d2b2c0b6732a60b140bbb6c9aafe9f02a3aaf83b8f3a5750f5ad08
@@ -1,3 +1,7 @@
1
1
  language: ruby
2
+ before_install:
3
+ - gem update bundler
2
4
  rvm:
3
- - 2.2.0
5
+ - 2.2
6
+ - 2.1
7
+ - 2.0
@@ -0,0 +1,5 @@
1
+ guard 'rspec', cmd: 'bundle exec rspec' do
2
+ watch(%r{^spec/.+_spec\.rb$})
3
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
4
+ watch('spec/spec_helper.rb') { "spec" }
5
+ end
data/README.md CHANGED
@@ -64,7 +64,7 @@ slide.body = "Hello, pen."
64
64
 
65
65
  ## Supported OS
66
66
  - OS X El Capitan
67
- - OS X Mavericks
67
+ - OS X Yosemite
68
68
 
69
69
 
70
70
  ## License
data/Rakefile CHANGED
@@ -1,7 +1,17 @@
1
+ require 'bundler'
1
2
  require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
+
4
+ require 'rspec/core'
5
+ require 'rspec/core/rake_task'
6
+
7
+ begin
8
+ Bundler.setup(:default, :development)
9
+ rescue Bundler::BundlerError => e
10
+ $stderr.puts e.message
11
+ $stderr.puts "Run `bundle install` to install missing gems"
12
+ exit e.status_code
13
+ end
3
14
 
4
15
  RSpec::Core::RakeTask.new(:spec)
5
16
 
6
17
  task :default => :spec
7
-
@@ -18,9 +18,13 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_development_dependency "pry", "~> 0.10.1"
21
22
  spec.add_development_dependency "bundler", "~> 1.7"
22
23
  spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "rspec", "~> 3.3.0"
25
+ spec.add_development_dependency "simplecov", "~> 0.10.0"
26
+ spec.add_development_dependency "coveralls", "~> 0.8.2"
27
+ spec.add_development_dependency "guard", "~> 2.13.0"
28
+ spec.add_development_dependency "guard-rspec", "~> 4.6.2"
24
29
  spec.add_dependency "unindent", "~> 1.0"
25
- spec.add_development_dependency "pry"
26
30
  end
@@ -1,8 +1,11 @@
1
- require "keynote/version"
2
- require "keynote/theme"
1
+ require 'unindent'
2
+
3
3
  require "keynote/document"
4
+ require "keynote/theme"
4
5
  require "keynote/master_slide"
5
6
  require "keynote/slide"
7
+ require 'keynote/slide_array'
8
+ require "keynote/version"
6
9
 
7
10
  module Keynote
8
11
  end
@@ -1,6 +1,3 @@
1
- require 'unindent'
2
- require 'keynote/theme'
3
- require 'keynote/slide_array'
4
1
  require 'keynote/util'
5
2
 
6
3
  module Keynote
@@ -1,4 +1,3 @@
1
- require 'unindent'
2
1
  require 'keynote/util'
3
2
 
4
3
  module Keynote
@@ -19,7 +18,9 @@ module Keynote
19
18
  :transition_properties,
20
19
  )
21
20
 
22
- def initialize(base_slide, arguments = {})
21
+ def initialize(base_slide = nil, arguments = {})
22
+ raise ArgumentError.new('base_slide is not given') unless base_slide
23
+
23
24
  @base_slide = base_slide
24
25
  arguments.each do |attr, val|
25
26
  send("#{attr}=", val)
@@ -27,9 +28,10 @@ module Keynote
27
28
  end
28
29
 
29
30
  def title=(title)
31
+ title = title.gsub(/(\r\n|\r|\n)/) { '\\n' }
30
32
  @title = title
31
- return unless @document
32
- return unless @slide_number
33
+ return unless @document && @slide_number
34
+
33
35
  result = eval_script <<-APPLE.unindent
34
36
  var Keynote = Application("Keynote")
35
37
  var doc = Keynote.documents.byId("#{@document.id}")
@@ -40,9 +42,10 @@ module Keynote
40
42
  end
41
43
 
42
44
  def body=(body)
45
+ body = body.gsub(/(\r\n|\r|\n)/) { '\\n' }
43
46
  @body = body
44
- return unless @document
45
- return unless @slide_number
47
+ return unless @document && @slide_number
48
+
46
49
  result = eval_script <<-APPLE.unindent
47
50
  var Keynote = Application("Keynote")
48
51
  var doc = Keynote.documents.byId("#{@document.id}")
@@ -1,4 +1,3 @@
1
- require 'unindent'
2
1
  require 'keynote/util'
3
2
 
4
3
  module Keynote
@@ -1,5 +1,5 @@
1
1
  module Keynote
2
2
  module Client
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
@@ -0,0 +1,108 @@
1
+ require 'spec_helper'
2
+
3
+ describe Keynote::Slide do
4
+ describe '#initialize' do
5
+ context 'when base_slide is not given' do
6
+ it 'raises an ArgumentError' do
7
+ expect { described_class.new }.to raise_error(ArgumentError)
8
+ end
9
+ end
10
+
11
+ context 'when base_slide is given' do
12
+ it 'returns Slide instance' do
13
+ slide = described_class.new('base_title', title: 'foo')
14
+ expect(slide).to be_a(described_class)
15
+ expect(slide.title).to eq('foo')
16
+ end
17
+ end
18
+ end
19
+
20
+ describe '#title=' do
21
+ subject { slide.title=('new_title') }
22
+
23
+ context 'when document is not set' do
24
+ let(:slide) { described_class.new('base_slide') }
25
+
26
+ it 'does not eval script to update Keynote' do
27
+ expect(slide).not_to receive(:eval_script)
28
+ subject
29
+ end
30
+ end
31
+
32
+ context 'when slide_number is not set'do
33
+ let(:slide) { described_class.new('base_slide', slide_number: 1) }
34
+
35
+ it 'does not eval script to update Keynote' do
36
+ expect(slide).not_to receive(:eval_script)
37
+ subject
38
+ end
39
+ end
40
+
41
+ context 'when both argument is set' do
42
+ let(:slide) do
43
+ described_class.new('base_slide',
44
+ document: Keynote::Document.new(id: 'some-document-id'),
45
+ slide_number: 1
46
+ )
47
+ end
48
+
49
+ it 'evals script to update Keynote' do
50
+ allow(Open3).to receive(:capture2).with(/osascript -l JavaScript/).and_return(["", 1])
51
+ expect(slide).to receive(:eval_script).with(/new_title/)
52
+ subject
53
+ expect(slide.title).to eq('new_title')
54
+ end
55
+ end
56
+ end
57
+
58
+ describe '#body=' do
59
+ subject { slide.body=(new_body) }
60
+
61
+ let(:new_body) { 'new_body' }
62
+
63
+ context 'when document is not set' do
64
+ let(:slide) { described_class.new('base_slide') }
65
+
66
+ it 'does not eval script to update Keynote' do
67
+ expect(slide).not_to receive(:eval_script)
68
+ subject
69
+ end
70
+ end
71
+
72
+ context 'when slide_number is not set'do
73
+ let(:slide) { described_class.new('base_slide', slide_number: 1) }
74
+
75
+ it 'does not eval script to update Keynote' do
76
+ expect(slide).not_to receive(:eval_script)
77
+ subject
78
+ end
79
+ end
80
+
81
+ context 'when document is set' do
82
+ let(:slide) do
83
+ described_class.new('base_slide',
84
+ document: Keynote::Document.new(id: 'some-document-id'),
85
+ slide_number: 1
86
+ )
87
+ end
88
+
89
+ it 'evals script to update Keynote' do
90
+ allow(Open3).to receive(:capture2).with(/osascript -l JavaScript/).and_return(["", 1])
91
+ expect(slide).to receive(:eval_script).with(/new_body/)
92
+ subject
93
+ expect(slide.body).to eq('new_body')
94
+ end
95
+
96
+ context 'and when new_body includes new-line character' do
97
+ let(:new_body) { 'new\nbody' }
98
+
99
+ it 'evals script to update Keynote with escaped new body' do
100
+ allow(Open3).to receive(:capture2).with(/osascript -l JavaScript/).and_return(["", 1])
101
+ expect(slide).to receive(:eval_script).with(/new\\nbody/)
102
+ subject
103
+ expect(slide.body).to eq('new\\nbody')
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
@@ -1,2 +1,21 @@
1
1
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
- require 'keynote/client'
2
+
3
+ require 'simplecov'
4
+ require 'coveralls'
5
+ require 'keynote-client'
6
+
7
+ Bundler.setup(:default, :development)
8
+
9
+ RSpec.configure do |config|
10
+ config.color = true
11
+ config.tty = true
12
+ end
13
+
14
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
15
+ SimpleCov::Formatter::HTMLFormatter,
16
+ Coveralls::SimpleCov::Formatter
17
+ ]
18
+
19
+ SimpleCov.start do
20
+ add_filter '/spec/'
21
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keynote-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ryo katsuma
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-06 00:00:00.000000000 Z
11
+ date: 2015-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.10.1
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.10.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -42,44 +56,86 @@ dependencies:
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ">="
59
+ - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '0'
61
+ version: 3.3.0
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - ">="
66
+ - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '0'
68
+ version: 3.3.0
55
69
  - !ruby/object:Gem::Dependency
56
- name: unindent
70
+ name: simplecov
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '1.0'
62
- type: :runtime
75
+ version: 0.10.0
76
+ type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '1.0'
82
+ version: 0.10.0
69
83
  - !ruby/object:Gem::Dependency
70
- name: pry
84
+ name: coveralls
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.8.2
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.8.2
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - ">="
101
+ - - "~>"
74
102
  - !ruby/object:Gem::Version
75
- version: '0'
103
+ version: 2.13.0
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - ">="
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 2.13.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 4.6.2
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
81
123
  - !ruby/object:Gem::Version
82
- version: '0'
124
+ version: 4.6.2
125
+ - !ruby/object:Gem::Dependency
126
+ name: unindent
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.0'
83
139
  description: keynote-client provides a high level API like ActiveRecord style to control
84
140
  your Keynote.
85
141
  email:
@@ -92,6 +148,7 @@ files:
92
148
  - ".rspec"
93
149
  - ".travis.yml"
94
150
  - Gemfile
151
+ - Guardfile
95
152
  - LICENSE.txt
96
153
  - README.md
97
154
  - Rakefile
@@ -104,7 +161,7 @@ files:
104
161
  - lib/keynote/theme.rb
105
162
  - lib/keynote/util.rb
106
163
  - lib/keynote/version.rb
107
- - spec/keynote/client_spec.rb
164
+ - spec/keynote/slide_spec.rb
108
165
  - spec/spec_helper.rb
109
166
  homepage: https://github.com/katsuma/keynote-client
110
167
  licenses:
@@ -131,5 +188,5 @@ signing_key:
131
188
  specification_version: 4
132
189
  summary: keynote client with high level API.
133
190
  test_files:
134
- - spec/keynote/client_spec.rb
191
+ - spec/keynote/slide_spec.rb
135
192
  - spec/spec_helper.rb
@@ -1,11 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Keynote::Client do
4
- it 'has a version number' do
5
- expect(Keynote::Client::VERSION).not_to be nil
6
- end
7
-
8
- it 'does something useful' do
9
- expect(false).to eq(true)
10
- end
11
- end