md2key 0.1.0
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 +7 -0
- data/.gitignore +9 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/README.md +16 -0
- data/Rakefile +1 -0
- data/bin/md2key +6 -0
- data/lib/md2key/cli.rb +22 -0
- data/lib/md2key/converter.rb +25 -0
- data/lib/md2key/keynote.rb +68 -0
- data/lib/md2key/markdown.rb +34 -0
- data/lib/md2key/slide.rb +8 -0
- data/lib/md2key/version.rb +3 -0
- data/lib/md2key.rb +5 -0
- data/md2key.gemspec +25 -0
- metadata +129 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 03c093137f38b66d60bfe02ec6766822479cb4a5
|
4
|
+
data.tar.gz: 8b5eea09a394b24dc08afc3073472f0ac583a79c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7393fbd9bfd79b9f23d148607e3bcaa941dc6119b3098e04a9b5d5a83b3cba6ba0a640550d1c91129ca531044f4fbe37cef464fd685af39f28c94c4ec99b9eb2
|
7
|
+
data.tar.gz: 9f25a59dfd8ad606d288988e2b72ec988de7251ff548802736500f541bbc39c83e9b2556b0f2df25804d560fa752a02d00f55a385b2d4997c6d4cc25d7f7c43c
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Md2key
|
2
|
+
|
3
|
+
Convert your markdown to keynote.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
- 1. Create a keynote document
|
8
|
+
- 2. Create a first slide as master slide
|
9
|
+
- 3. Create a second slide as template slide and activate it
|
10
|
+
- 4. Then execute `md2key markdown.md`
|
11
|
+
|
12
|
+

|
13
|
+
|
14
|
+
## License
|
15
|
+
|
16
|
+
MIT License
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/md2key
ADDED
data/lib/md2key/cli.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
module Md2key
|
4
|
+
class CLI < Thor
|
5
|
+
desc 'convert MARKDOWN', 'Convert markdown to keynote'
|
6
|
+
def convert(path)
|
7
|
+
Converter.convert_markdown(path)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
# Shorthand for `md2key convert`
|
13
|
+
def method_missing(*args)
|
14
|
+
return super(*args) if args.length > 1
|
15
|
+
default_task(args.first.to_s)
|
16
|
+
end
|
17
|
+
|
18
|
+
def default_task(arg)
|
19
|
+
convert(arg)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Md2key
|
2
|
+
class Converter
|
3
|
+
def self.convert_markdown(path)
|
4
|
+
abort "md2key: `#{path}` does not exist" unless File.exist?(path)
|
5
|
+
|
6
|
+
self.new(path).generate_keynote!
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(path)
|
10
|
+
@markdown = Markdown.new(path)
|
11
|
+
end
|
12
|
+
|
13
|
+
def generate_keynote!
|
14
|
+
Keynote.activate
|
15
|
+
@markdown.slides.each_with_index do |slide, index|
|
16
|
+
if index == 0
|
17
|
+
Keynote.create_master(slide.title, slide.lines.join("\n"))
|
18
|
+
next
|
19
|
+
end
|
20
|
+
Keynote.create_slide(slide.title, slide.lines.join("\n"))
|
21
|
+
end
|
22
|
+
Keynote.delete_template_slide
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'unindent'
|
2
|
+
|
3
|
+
module Md2key
|
4
|
+
class Keynote
|
5
|
+
class << self
|
6
|
+
def activate
|
7
|
+
tell_keynote(<<-APPLE.unindent)
|
8
|
+
activate
|
9
|
+
APPLE
|
10
|
+
end
|
11
|
+
|
12
|
+
# You must provide a first slide as a master slide.
|
13
|
+
def create_master(title, sub)
|
14
|
+
tell_keynote(<<-APPLE.unindent)
|
15
|
+
tell document 1
|
16
|
+
tell slide 1
|
17
|
+
set object text of default title item to "#{title}"
|
18
|
+
set object text of default body item to "#{sub}"
|
19
|
+
end tell
|
20
|
+
end tell
|
21
|
+
APPLE
|
22
|
+
end
|
23
|
+
|
24
|
+
# You must provide a second slide as a template slide.
|
25
|
+
# It will be deleted.
|
26
|
+
def delete_template_slide
|
27
|
+
tell_keynote(<<-APPLE.unindent)
|
28
|
+
tell document 1
|
29
|
+
delete slide 2
|
30
|
+
end tell
|
31
|
+
APPLE
|
32
|
+
end
|
33
|
+
|
34
|
+
def create_slide(title, content)
|
35
|
+
tell_keynote(<<-APPLE.unindent)
|
36
|
+
tell document 1
|
37
|
+
set newSlide to make new slide
|
38
|
+
|
39
|
+
tell newSlide
|
40
|
+
set object text of default title item to "#{title}"
|
41
|
+
set object text of default body item to "#{content}"
|
42
|
+
end tell
|
43
|
+
end tell
|
44
|
+
APPLE
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def tell_keynote(script)
|
50
|
+
lines = [
|
51
|
+
'tell application "Keynote"',
|
52
|
+
*script.split("\n").map { |l| l.prepend(' ') },
|
53
|
+
'end tell',
|
54
|
+
]
|
55
|
+
execute_applescript(lines.join("\n"))
|
56
|
+
end
|
57
|
+
|
58
|
+
def execute_applescript(script)
|
59
|
+
file = Tempfile.new('applescript')
|
60
|
+
file.write(script)
|
61
|
+
file.close
|
62
|
+
system('osascript', file.path)
|
63
|
+
ensure
|
64
|
+
file.delete
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Md2key
|
2
|
+
class Markdown
|
3
|
+
def initialize(path)
|
4
|
+
@markdown = File.read(path)
|
5
|
+
end
|
6
|
+
|
7
|
+
def slides
|
8
|
+
@slides ||= parse_markdown
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def parse_markdown
|
14
|
+
slides = []
|
15
|
+
slide = Slide.new
|
16
|
+
|
17
|
+
@markdown.each_line do |line|
|
18
|
+
line = line.strip
|
19
|
+
case line
|
20
|
+
when /^--+$/
|
21
|
+
slides << slide
|
22
|
+
slide = Slide.new
|
23
|
+
when /^# *(.+)$/
|
24
|
+
slide.title = $1
|
25
|
+
when /^- *(.+)$/
|
26
|
+
slide.lines << $1
|
27
|
+
else
|
28
|
+
slide.lines << line unless line.empty?
|
29
|
+
end
|
30
|
+
end
|
31
|
+
slides << slide
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/md2key/slide.rb
ADDED
data/lib/md2key.rb
ADDED
data/md2key.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'md2key/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "md2key"
|
8
|
+
spec.version = Md2key::VERSION
|
9
|
+
spec.authors = ["Takashi Kokubun"]
|
10
|
+
spec.email = ["takashi-kokubun@cookpad.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Convert markdown to keynote}
|
13
|
+
spec.description = %q{Convert markdown to keynote}
|
14
|
+
spec.homepage = "https://github.com/k0kubun/md2key"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.add_dependency "thor", "~> 0.19"
|
21
|
+
spec.add_dependency "unindent", "~> 1.0"
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
23
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
24
|
+
spec.add_development_dependency "pry"
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: md2key
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Takashi Kokubun
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-08-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.19'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.19'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: unindent
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.10'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.10'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Convert markdown to keynote
|
84
|
+
email:
|
85
|
+
- takashi-kokubun@cookpad.com
|
86
|
+
executables:
|
87
|
+
- md2key
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- ".travis.yml"
|
93
|
+
- Gemfile
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- bin/md2key
|
97
|
+
- lib/md2key.rb
|
98
|
+
- lib/md2key/cli.rb
|
99
|
+
- lib/md2key/converter.rb
|
100
|
+
- lib/md2key/keynote.rb
|
101
|
+
- lib/md2key/markdown.rb
|
102
|
+
- lib/md2key/slide.rb
|
103
|
+
- lib/md2key/version.rb
|
104
|
+
- md2key.gemspec
|
105
|
+
homepage: https://github.com/k0kubun/md2key
|
106
|
+
licenses: []
|
107
|
+
metadata: {}
|
108
|
+
post_install_message:
|
109
|
+
rdoc_options: []
|
110
|
+
require_paths:
|
111
|
+
- lib
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
requirements: []
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 2.4.5
|
125
|
+
signing_key:
|
126
|
+
specification_version: 4
|
127
|
+
summary: Convert markdown to keynote
|
128
|
+
test_files: []
|
129
|
+
has_rdoc:
|