md2key 0.5.2 → 0.6.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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/md2key/converter.rb +8 -3
- data/lib/md2key/highlight.rb +3 -10
- data/lib/md2key/keynote.rb +17 -0
- data/lib/md2key/markdown.rb +31 -2
- data/lib/md2key/slide.rb +1 -1
- data/lib/md2key/table.rb +4 -0
- data/lib/md2key/version.rb +1 -1
- data/scripts/create_slide_and_insert_table.scpt +29 -0
- data/scripts/update_table.scpt +22 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c7595398a53c91167545a3c662be59191368ce2
|
4
|
+
data.tar.gz: 3cd48b2fd10db287d216cc66763f42fbea4a6f74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c17ea6fe7f45fc60317e86686aa8045177df35c5ca1010581a8a1afd7dbcacd1d4a390a088da9ac8892bf73258c35229bc72507e2c391406e48eac23ed1814e1
|
7
|
+
data.tar.gz: 07ea02c224a2c633acc4b4c34e9bdc4e256f23bc6fe34d92ace3f9ee846f76babf7951d52dfa92dbfc513b210dc994d515150e66a2e3c7d56a1ee76bcca2e57c
|
data/CHANGELOG.md
CHANGED
data/lib/md2key/converter.rb
CHANGED
@@ -27,9 +27,14 @@ module Md2key
|
|
27
27
|
def generate_contents
|
28
28
|
Keynote.update_cover(@markdown.cover)
|
29
29
|
@markdown.slides.each_with_index do |slide, index|
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
if slide.table
|
31
|
+
Keynote.create_slide_with_table(slide, slide.table.rows, slide.table.columns)
|
32
|
+
Keynote.insert_table(slide.table.data)
|
33
|
+
else
|
34
|
+
Keynote.create_slide(slide)
|
35
|
+
Keynote.insert_image(slide.image) if slide.image
|
36
|
+
Keynote.insert_code(slide.code) if slide.code
|
37
|
+
end
|
33
38
|
end
|
34
39
|
end
|
35
40
|
end
|
data/lib/md2key/highlight.rb
CHANGED
@@ -7,17 +7,10 @@ module Md2key
|
|
7
7
|
|
8
8
|
extension = code.extension || DEFAULT_EXTENSION
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
IO.popen(['highlight', '-O', 'rtf', '-K', '28', '-s', 'rdark', '-k', 'Monaco', file.path], 'r+') do |highlight|
|
15
|
-
IO.popen('pbcopy', 'w+') do |pbcopy|
|
16
|
-
pbcopy.write(highlight.read)
|
17
|
-
end
|
10
|
+
IO.popen("highlight -O rtf -K 28 -s rdark -k Monaco -S #{extension} | pbcopy", 'w+') do |highlight|
|
11
|
+
highlight.write(code.source)
|
12
|
+
highlight.close
|
18
13
|
end
|
19
|
-
ensure
|
20
|
-
file.delete
|
21
14
|
end
|
22
15
|
|
23
16
|
private
|
data/lib/md2key/keynote.rb
CHANGED
@@ -23,6 +23,11 @@ module Md2key
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
+
# @param [Md2key::Slide] slide
|
27
|
+
def create_slide_with_table(slide, rows, columns)
|
28
|
+
execute_applescript('create_slide_and_insert_table', slide.title, TEMPLATE_SLIDE_INDEX, rows, columns)
|
29
|
+
end
|
30
|
+
|
26
31
|
def ensure_template_slide_availability
|
27
32
|
return if slides_count >= 2
|
28
33
|
execute_applescript('create_empty_slide')
|
@@ -49,6 +54,18 @@ module Md2key
|
|
49
54
|
paste_clipboard
|
50
55
|
end
|
51
56
|
|
57
|
+
def insert_table(data)
|
58
|
+
row_index = 1
|
59
|
+
data.each do |row|
|
60
|
+
param = [slides_count, row_index]
|
61
|
+
row.each do |cell|
|
62
|
+
param << cell
|
63
|
+
end
|
64
|
+
execute_applescript('update_table', *param)
|
65
|
+
row_index += 1
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
52
69
|
private
|
53
70
|
|
54
71
|
def insert_code_background
|
data/lib/md2key/markdown.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'md2key/line'
|
2
2
|
require 'md2key/slide'
|
3
|
+
require 'md2key/table'
|
3
4
|
require 'oga'
|
4
5
|
require 'redcarpet'
|
5
6
|
|
@@ -51,6 +52,34 @@ module Md2key
|
|
51
52
|
slide.title = node.text
|
52
53
|
when 'ul'
|
53
54
|
slide.lines.concat(li_lines(node))
|
55
|
+
when 'ol'
|
56
|
+
slide.lines.concat(li_lines(node))
|
57
|
+
when 'table'
|
58
|
+
row_data = []
|
59
|
+
rows = 0
|
60
|
+
columns = 0
|
61
|
+
row_text = []
|
62
|
+
node.children[0].children.each do |child|
|
63
|
+
next if !child.is_a?(Oga::XML::Element) || child.name != 'tr'
|
64
|
+
rows += 1
|
65
|
+
child.children.each do |td|
|
66
|
+
next if !td.is_a?(Oga::XML::Element) || td.name != 'th'
|
67
|
+
columns += 1
|
68
|
+
row_text << td.text
|
69
|
+
end
|
70
|
+
end
|
71
|
+
row_data << row_text
|
72
|
+
node.children[1].children.each do |child|
|
73
|
+
next if !child.is_a?(Oga::XML::Element) || child.name != 'tr'
|
74
|
+
row_text = []
|
75
|
+
child.children.each do |td|
|
76
|
+
next if !td.is_a?(Oga::XML::Element) || td.name != 'td'
|
77
|
+
row_text << td.text
|
78
|
+
end
|
79
|
+
row_data << row_text
|
80
|
+
rows += 1
|
81
|
+
end
|
82
|
+
slide.table = Table.new(rows, columns, row_data)
|
54
83
|
when 'p'
|
55
84
|
node.children.each do |child|
|
56
85
|
if child.is_a?(Oga::XML::Element) && child.name == 'img'
|
@@ -75,7 +104,7 @@ module Md2key
|
|
75
104
|
# @return [Array<Md2Key::Line>]
|
76
105
|
def li_lines(ul_node, indent: 0)
|
77
106
|
return [] unless ul_node.is_a?(Oga::XML::Element)
|
78
|
-
return [] if ul_node.name != 'ul'
|
107
|
+
return [] if ul_node.name != 'ul' && ul_node.name != 'ol'
|
79
108
|
|
80
109
|
lines = []
|
81
110
|
ul_node.children.each do |li_node|
|
@@ -101,7 +130,7 @@ module Md2key
|
|
101
130
|
Redcarpet::Render::XHTML.new(
|
102
131
|
escape_html: true,
|
103
132
|
),
|
104
|
-
fenced_code_blocks: true,
|
133
|
+
fenced_code_blocks: true, :tables => true
|
105
134
|
)
|
106
135
|
redcarpet.render(markdown)
|
107
136
|
end
|
data/lib/md2key/slide.rb
CHANGED
data/lib/md2key/table.rb
ADDED
data/lib/md2key/version.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
on run argv
|
2
|
+
set slideTitle to item 1 of argv
|
3
|
+
set templateIndex to item 2 of argv as number
|
4
|
+
set rowCount to item 3 of argv as number
|
5
|
+
set columnCount to item 4 of argv as number
|
6
|
+
|
7
|
+
set headerRowCount to 1
|
8
|
+
set headerColumnCount to 0
|
9
|
+
set footerRowCount to 0
|
10
|
+
|
11
|
+
tell application "Keynote"
|
12
|
+
set thisDocument to the front document
|
13
|
+
tell thisDocument
|
14
|
+
-- Workaround to select correct master slide. In spite of master slide can be selected by name,
|
15
|
+
-- name property is not limited to be unique.
|
16
|
+
-- So move the focus to second slide and force "make new slide" to use the exact master slide.
|
17
|
+
move slide templateIndex to before slide templateIndex
|
18
|
+
|
19
|
+
set newSlide to make new slide
|
20
|
+
tell newSlide
|
21
|
+
try
|
22
|
+
set base slide to master slide "Title - Top" of thisDocument
|
23
|
+
end try
|
24
|
+
set object text of default title item to slideTitle
|
25
|
+
set newTable to make new table with properties {column count:columnCount, row count:rowCount, footer row count:footerRowCount,header column count:headerColumnCount,header row count:headerRowCount}
|
26
|
+
end tell
|
27
|
+
end tell
|
28
|
+
end tell
|
29
|
+
end run
|
@@ -0,0 +1,22 @@
|
|
1
|
+
on run argv
|
2
|
+
set slideIndex to item 1 of argv as number
|
3
|
+
set rowIndex to item 2 of argv as number
|
4
|
+
|
5
|
+
tell application "Keynote"
|
6
|
+
tell the front document
|
7
|
+
tell slide slideIndex
|
8
|
+
set thisTable to the first table
|
9
|
+
tell thisTable
|
10
|
+
set idx to 1
|
11
|
+
repeat with i in items 3 thru end of argv
|
12
|
+
tell cell rowIndex of column idx
|
13
|
+
set value to i
|
14
|
+
set the font size to 12
|
15
|
+
end tell
|
16
|
+
set idx to idx + 1
|
17
|
+
end repeat
|
18
|
+
end tell
|
19
|
+
end tell
|
20
|
+
end tell
|
21
|
+
end tell
|
22
|
+
end run
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: md2key
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takashi Kokubun
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -119,10 +119,12 @@ files:
|
|
119
119
|
- lib/md2key/markdown.rb
|
120
120
|
- lib/md2key/pbcopy.rb
|
121
121
|
- lib/md2key/slide.rb
|
122
|
+
- lib/md2key/table.rb
|
122
123
|
- lib/md2key/version.rb
|
123
124
|
- md2key.gemspec
|
124
125
|
- scripts/activate_slide.scpt
|
125
126
|
- scripts/create_empty_slide.scpt
|
127
|
+
- scripts/create_slide_and_insert_table.scpt
|
126
128
|
- scripts/create_slide_and_select_body.scpt
|
127
129
|
- scripts/create_slide_and_write_body.scpt
|
128
130
|
- scripts/delete_extra_slides.scpt
|
@@ -133,6 +135,7 @@ files:
|
|
133
135
|
- scripts/paste_clipboard.scpt
|
134
136
|
- scripts/slides_count.scpt
|
135
137
|
- scripts/update_slide.scpt
|
138
|
+
- scripts/update_table.scpt
|
136
139
|
homepage: https://github.com/k0kubun/md2key
|
137
140
|
licenses: []
|
138
141
|
metadata: {}
|
@@ -157,4 +160,3 @@ signing_key:
|
|
157
160
|
specification_version: 4
|
158
161
|
summary: Convert markdown to keynote
|
159
162
|
test_files: []
|
160
|
-
has_rdoc:
|