rabbit-slide-hasumikin-ToyamaRubyKaigi01 2019.11.3.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a702c4fda6262d6f6919a4414ccd016723f6f6a0ea7d0f5cbb60affb2b923de0
4
+ data.tar.gz: 3cfe649c53337323d2f8df4dee75af7103d5a3dafcd3a008d3f0d0c4f2b4d9f3
5
+ SHA512:
6
+ metadata.gz: '088c4286ce162971fd229dc8f4e8c91104724a0566a76291a1a49d07ee4bc1cf20e14eeee5556f3786f3840e7130287a96ec6212b699ef0f890e7945089574e4'
7
+ data.tar.gz: 4883ca504e33e8e8d79aac6589acb8f31c6a9bfbf5059f430471887ef7a6f775c8b6aaaf5628da2e2ba135f3ca96b8d5f9c9aee8890b9400c24b29c852bdb67b
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ mruby-de-Hello-World.rab
data/README.rd ADDED
@@ -0,0 +1,24 @@
1
+ = mruby de Hello World!
2
+
3
+ The Presentation for RubyKaigiToyama01 by hasumikin
4
+
5
+ == For author
6
+
7
+ === Show
8
+
9
+ rake
10
+
11
+ === Publish
12
+
13
+ rake publish
14
+
15
+ == For viewers
16
+
17
+ === Install
18
+
19
+ gem install rabbit-slide-hasumikin-ToyamaRubyKaigi01
20
+
21
+ === Show
22
+
23
+ rabbit rabbit-slide-hasumikin-ToyamaRubyKaigi01.gem
24
+
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
data/config.yaml ADDED
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: ToyamaRubyKaigi01
3
+ base_name: mruby-de-Hello-World
4
+ tags:
5
+ - mruby
6
+ - compiler
7
+ - parser
8
+ - lemon
9
+ presentation_date: '2019-11-03'
10
+ presentation_start_time:
11
+ presentation_end_time:
12
+ version: 2019.11.3.0
13
+ licenses: []
14
+ slideshare_id:
15
+ speaker_deck_id:
16
+ ustream_id:
17
+ vimeo_id:
18
+ youtube_id:
19
+ author:
20
+ markup_language: :rd
21
+ name: HASUMI Hitoshi
22
+ email: hasumikin@gmail.com
23
+ rubygems_user: hasumikin
24
+ slideshare_user:
25
+ speaker_deck_user:
Binary file
Binary file
data/images/borges.jpg ADDED
Binary file
data/images/hasumi.jpg ADDED
Binary file
data/images/himi.jpg ADDED
Binary file
Binary file
data/images/mark32.png ADDED
Binary file
data/images/mark48.png ADDED
Binary file
data/images/mark64.png ADDED
Binary file
data/images/matz.jpg ADDED
Binary file
Binary file
Binary file
Binary file
data/images/rwc.png ADDED
Binary file
data/images/rwc4.png ADDED
Binary file
Binary file
@@ -0,0 +1,482 @@
1
+ = mruby de Hello World!
2
+
3
+ # : subtitle
4
+ # SUBTITLE
5
+ : author
6
+ HASUMI Hitoshi @hasumikin
7
+ : institution
8
+ Monstar Lab, Shimane office
9
+ : content-source
10
+ 富山Ruby会議01
11
+ : date
12
+ 2019-11-03
13
+ : start-time
14
+ 2019-11-03T15:40:00+0900
15
+ : end-time
16
+ 2019-11-03T16:04:59+0900
17
+ : theme
18
+ theme
19
+
20
+ = Matsue
21
+ # image
22
+ # src = images/松江城_Matsue.rb.16x9.jpg
23
+ # relative_height = 100
24
+ == プロパティ
25
+ : hide-title
26
+ true
27
+
28
+ = Today is
29
+
30
+ = Today is
31
+ (('tag:center'))
32
+ \n\n\n\n
33
+ (('tag:x-large:My birthday 🎂'))
34
+
35
+ = me
36
+ * HASUMI Hitoshi
37
+ * @hasumikin
38
+ * Microcontroller\ndetective
39
+ * RubyKaigi 2018, 2019
40
+ * RubyWorld 2018
41
+ * KRKRB 2019 (Poland)
42
+ * RubyConf 2019 (the US)
43
+ # image
44
+ # src = images/hasumi.jpg
45
+ # align = right
46
+ # relative-height = 80
47
+
48
+ = RubyWorld Conference 2019
49
+ # image
50
+ # src = images/rwc.png
51
+ # relative-height = 80
52
+
53
+ (('tag:center'))
54
+ Nov. 7-8, 2019 / Matz江, the Holy City of Ruby + 🍶
55
+
56
+ = RubyWorld Conference 2019
57
+ (('tag:center'))
58
+ \n\n
59
+ (('tag:x-large:🍶熱燗 sponsored'))
60
+ \n\n
61
+ (('tag:x-large:by Monstar Lab'))
62
+
63
+ = Monstar Lab
64
+ # image
65
+ # src = images/monstarlab.png
66
+ # relative_height = 110
67
+
68
+ = Monstar Lab
69
+ (('tag:center'))
70
+ \n\n\n\n
71
+ We don't have Toyama office, though
72
+
73
+ = Monstar Lab
74
+ # image
75
+ # src = images/noboru_i.jpg
76
+ # relative_height = 80
77
+
78
+ (('tag:center'))
79
+ @noboru_i
80
+
81
+ = Monstar Lab
82
+ (('tag:center'))
83
+ \n\n\n\n
84
+ 石倉神
85
+
86
+ = Monstar Lab
87
+ (('tag:center'))
88
+ \n\n\n\n
89
+ いわゆるゴッド
90
+
91
+ = Monstar Lab
92
+ # image
93
+ # src = images/ishikura.jpg
94
+ # relative_height = 80
95
+
96
+ (('tag:center'))
97
+ この人です
98
+
99
+ = Monstar Lab
100
+ (('tag:center'))
101
+ \n\n\n\n
102
+ WE ARE HIRING!
103
+
104
+ = Monstar Lab
105
+ # image
106
+ # src = images/ishikura.jpg
107
+ # relative_height = 80
108
+
109
+ (('tag:center'))
110
+ 採用してます
111
+
112
+ = mruby de Hello World!
113
+ (('tag:center'))
114
+ \n\n\n\n
115
+ How to code
116
+
117
+ = mruby de Hello World!
118
+ # enscript C
119
+ 5249 5445 3030 3036 9a78 0000 0062 4d41
120
+ 545a 3030 3030 4952 4550 0000 0044 3030
121
+ 3032 0000 0060 0001 0004 0000 0000 000c
122
+ 1001 4f02 002e 0100 0137 0167 0000 0001
123
+ 0000 0c48 656c 6c6f 2057 6f72 6c64 2100
124
+ 0000 0100 0470 7574 7300 454e 4400 0000
125
+ 0008
126
+
127
+ = puts "Hello World!"
128
+ # enscript C
129
+ 5249 5445 3030 3036 9a78 0000 0062 4d41 RITE0006.x...bMA
130
+ 545a 3030 3030 4952 4550 0000 0044 3030 TZ0000IREP...D00
131
+ 3032 0000 0060 0001 0004 0000 0000 000c 02...`..........
132
+ 1001 4f02 002e 0100 0137 0167 0000 0001 ..O......7.g....
133
+ 0000 0c48 656c 6c6f 2057 6f72 6c64 2100 ...Hello World!.
134
+ 0000 0100 0470 7574 7300 454e 4400 0000 .....puts.END...
135
+ 0008 ..
136
+
137
+ (('tag:center'))
138
+ \n\n
139
+ VM code
140
+
141
+ = CRuby, mruby and mruby/c
142
+ # image
143
+ # src = images/VM_code.png
144
+ # relative_height = 105
145
+
146
+ = CRuby(2.6.4) + Ruby code
147
+ # enscript ruby
148
+ puts "Hello World!"
149
+ rss = `ps -o rss= -p #{Process.pid}`.to_f / 1024
150
+ vsz = `ps -o vsz= -p #{Process.pid}`.to_f / 1024
151
+ puts "RSS: #{rss} MB"
152
+ puts "VSZ: #{vsz} MB"
153
+
154
+ # $ ruby hello.rb
155
+ # Hello World!
156
+ # RSS: 13.63671875 MB
157
+ # VSZ: 78.6328125 MB
158
+
159
+ = mruby(2.0.1) + Ruby code
160
+ # enscript C
161
+ #include <mruby.h>
162
+ #include <mruby/compile.h> // compile at runtime
163
+ int main(void) {
164
+ mrb_state *mrb = mrb_open();
165
+ char code[] = "puts 'Hello World!'";
166
+ mrb_load_string(mrb, code);
167
+ mrb_close(mrb);
168
+ return 0;
169
+ }
170
+ // $ valgrind ./hello_ruby
171
+ // (...)
172
+ // Hello World!
173
+ // ==18802==
174
+ // ==18802== HEAP SUMMARY:
175
+ // ==18802== in use at exit: 0 bytes in 0 blocks
176
+ // ==18802== total heap usage: 3,067 allocs, 3,067 frees,
177
+ // 379,851 bytes allocated
178
+
179
+ = mruby(2.0.1) + VM code
180
+ # enscript C
181
+ #include <mruby.h>
182
+ #include <mruby/irep.h>
183
+ #include "hello.c" // compiled by mrbc
184
+ int main(void) {
185
+ mrb_state *mrb = mrb_open();
186
+ mrb_load_irep(mrb, hello);
187
+ mrb_close(mrb);
188
+ return 0;
189
+ }
190
+ // $ valgrind ./hello_vm
191
+ // (...)
192
+ // Hello World!
193
+ // ==18858==
194
+ // ==18858== HEAP SUMMARY:
195
+ // ==18858== in use at exit: 0 bytes in 0 blocks
196
+ // ==18858== total heap usage: 3,057 allocs, 3,057 frees,
197
+ // 329,083 bytes allocated
198
+
199
+
200
+ = mruby/c(2.0) + VM code
201
+ # enscript C
202
+ #include "mrubyc/src/mrubyc.h"
203
+ #include "hello.c"
204
+ #define MEMORY_SIZE (1024 * 12) // RAM:12KB
205
+ static uint8_t my_memory_pool[MEMORY_SIZE];
206
+ int main(void) {
207
+ mrbc_init(my_memory_pool, MEMORY_SIZE);
208
+ mrbc_create_task(hello, 0);
209
+ mrbc_run();
210
+ return 0;
211
+ }
212
+
213
+ = Hello memory usage
214
+ # RT
215
+
216
+ , CRuby + Ruby code, mruby + Ruby code, mruby + VM code, mruby/c + VM code
217
+
218
+ ROM, 18MB(*), 3561KB, 2736KB, 148KB
219
+ RAM, 13MB, 370KB, 321KB, 12KB
220
+ ROM\n / RAM, 1.3, 9.6, 8.5, 12.3
221
+
222
+ (('tag:center'))
223
+ (*)...binary size of `bin/ruby` itself
224
+
225
+ = CRuby, mruby and mruby/c
226
+ # image
227
+ # src = images/VM_code.png
228
+ # relative_height = 105
229
+
230
+ = mruby compiler
231
+ (('tag:center'))
232
+ \n\n\n\n
233
+ How to code?
234
+
235
+ = Steps of coding a compiler
236
+ * Tokenize (Scan, Lexical analyze)
237
+ * Parse
238
+ * Generate Code
239
+
240
+ (('tag:center'))
241
+ \n\n
242
+ Not detailed enough 😵
243
+
244
+ = Steps of coding a compiler
245
+ * Tokenize (Scan, Lexical analyze)
246
+ * Find keywords
247
+ * Classify tokens
248
+ * Parse
249
+ * Make syntax tree
250
+ * Make symbol table
251
+ * Make literal pool
252
+ * Count local variables and registers
253
+ * Make each scopes (文字数
254
+ * Make header and footer
255
+
256
+ = Steps of coding a compiler
257
+ * Tokenize (Scan, Lexical analyze)
258
+ * Parse
259
+ * Generate Code
260
+
261
+ (('tag:center'))
262
+ \n\n
263
+ Just outlines for today
264
+
265
+ = mruby compiler written in CRuby
266
+ (('tag:center'))
267
+ \n
268
+ github.com/hasumikin/mmrbc.gem
269
+
270
+ = mruby compiler written in CRuby
271
+ (('tag:center'))
272
+ \n
273
+ github.com/hasumikin/mmrbc.gem
274
+ \n\n\n
275
+ for only `puts "Hello World!"` 😂\n
276
+ `[identifier] "[string literal]"`
277
+
278
+ = mruby compiler written in CRuby
279
+ (('tag:center'))
280
+ \n
281
+ github.com/hasumikin/mmrbc.gem
282
+ \n\n\n
283
+ for only `puts "Hello World!"` 😂\n
284
+ `[identifier] "[string literal]"`
285
+ \n\n\n
286
+ but no cheat 😤
287
+
288
+ = Tokenizer
289
+ * FLEX is a tokenizer generator
290
+ * You can write tokenizer from scratch w/o FLEX
291
+ * CRuby, mruby and mmrbc.gem, too
292
+
293
+ # enscript Ruby
294
+ puts("Hello World!")
295
+ ....................
296
+ p
297
+ pu
298
+ put
299
+ puts
300
+ puts( # look ahead
301
+ puts # detemine a token
302
+
303
+ = Tokenizer of Ruby
304
+ * It has state
305
+
306
+ # enscript sh
307
+ $ irb
308
+ irb(main):001:0> [1, 2, 3].each do |n|
309
+ irb(main):002:1*
310
+
311
+ * `do` keyword sets tokenizer_state as EXPR_BEG
312
+ * irb can delay parsing until it becomes EXPR_END with `end` keyword
313
+
314
+ = Parser and Parser generator
315
+ * Parser
316
+ * Syntactic analysis of token list
317
+ * Parser generator
318
+ * Generates C code of parser by syntactic definition (and "reduction" code)
319
+ * Parse algorithms
320
+ * LL(n), LR(n), etc.
321
+
322
+ = Parse algorithm - LL(1)/LR(1)
323
+ * LL(k) = Left to right, Leftmost derivation
324
+ * You can write LL parser from scratch
325
+ * LR(k) = Left to right, Rightmost derivation
326
+ * You can hardly write LR parser from scratch
327
+ * You should use parser generator
328
+ * LALR(k) is a variation of LR
329
+ * (k) = length of lookahead symbols
330
+
331
+ = Parser generator
332
+ (('tag:center'))
333
+ \n\n\n\n
334
+ YACC/BISON
335
+
336
+ = YACC/BISON
337
+ * Most popular parser genarator
338
+ * Used in CRuby, mruby, bash, Blawn, etc.
339
+ * BISON is a GNU version of YACC
340
+ * Thread safe (Reentrant)
341
+ * Genarates LALR(1) parser
342
+
343
+ = However
344
+
345
+ = However
346
+ (('tag:center'))
347
+ \n\n\n\n
348
+ (('tag:x-large:I don't use YACC/BISON'))
349
+
350
+ = So?
351
+
352
+ = So?
353
+ (('tag:center'))
354
+ \n\n\n\n
355
+ (('tag:x-large:LEMON, instead'))
356
+
357
+ = LEMON?
358
+ * Parser generator of SQLite
359
+ * A part of SQLite project
360
+ * Generates LALR(1) parser code
361
+ * as well as YACC/BISON does
362
+ * Doesn't use global variable to pass information between parser and tokenizer
363
+ * YACC/BISON does
364
+ * Tokenizer calls parser in LEMON
365
+ * Parser calls tokenizer in YACC/BISON
366
+
367
+ = Parser calls tokenizer in YACC/BISON
368
+ # enscript C
369
+ int yyparse(parser_state *p) {
370
+ ...
371
+ yynewstate:
372
+ ...
373
+ yychar = yylex (&yylval, p); // calls tokenizer
374
+ ...
375
+ goto yynewstate;
376
+ ...
377
+ }
378
+
379
+ = Tokenizer calls parser in LEMON
380
+ # enscript C
381
+ void Tokenize(char *code) {
382
+ ...
383
+ while (token == get_token(code)) {
384
+ ...
385
+ Parse(parser, token, value); // calls parser
386
+ ...
387
+ }
388
+ Parse(parser, 0, NULL);
389
+ }
390
+
391
+ = Parsing "Hello World!" in YACC
392
+ #enscript sh
393
+ # an excerpt from mruby/mrbgems/mruby-compiler/core/parse.y
394
+ primary : literal
395
+ | string
396
+ (...)
397
+ ;
398
+ literal : numeric
399
+ (...)
400
+ ;
401
+ string : string_fragment;
402
+ | string string_fragment
403
+ { $$ = concat_string(p, $1, $2); }
404
+ ;
405
+ string_fragment : tSTRING_BEG string_rep tSTRING
406
+ { $$ = new_dstr(p, push($2, $3)); };
407
+ string_rep : string_interp
408
+ | string_rep string_interp
409
+ { $$ = append($1, $2); };
410
+ string_interp : tSTRING_MID
411
+ { $$ = list1($1); };
412
+
413
+ = Parsing "Hello World!" in LEMON
414
+ #enscript sh
415
+ # an excerpt from mmrbc.gem/ext/mmrbc/parse.y
416
+ primary ::= literal.
417
+ primary ::= string.
418
+ literal ::= numeric.
419
+ string ::= string_fragment.
420
+ string_fragment(A) ::= STRING_BEG string_rep(C) STRING.
421
+ { A = new_dstr(p, list3(atom(ATOM_string_add),
422
+ list1(atom(ATOM_string_content)), C)); }
423
+ string_rep ::= string_interp.
424
+ string_rep(A) ::= string_rep(B) string_interp(C).
425
+ { A = append(B, C); }
426
+ string_interp(A) ::= STRING_MID(B).
427
+ { A = list2(atom(ATOM_at_tstring_content),
428
+ literal(B)); }
429
+
430
+ = ((* *))
431
+ (('tag:center'))
432
+ \n\n
433
+ \n\n
434
+ (('tag:xx-large:DEMO?'))
435
+ == prop
436
+ : hide-title
437
+ true
438
+
439
+ = Future work
440
+
441
+ = Future work ->{mmrbc + mruby/c}
442
+ * More syntax than `puts "Hello World!"`
443
+ * Rewrite mmrbc.gem into C
444
+ * And embed it with mruby/c in one-chip microcontroller which has less than 512KB ROM and 128KB RAM
445
+
446
+ = Future work ->{mmrbc + mruby/c}
447
+ # image
448
+ # src = images/VM_code.png
449
+ # relative_height = 105
450
+
451
+ = Future work ->{mmrbc + mruby/c}
452
+ # image
453
+ # src = images/VM_code_2.png
454
+ # relative_height = 105
455
+
456
+ = Future work ->{mmrbc + mruby/c}
457
+ (('tag:center'))
458
+ \n\n
459
+ "LEMON would generate smaller binary than YACC."
460
+ \n\n
461
+
462
+ # image
463
+ # src = images/matz.jpg
464
+ # align = center
465
+ # relative_height = 70
466
+
467
+ = Future work ->{mmrbc + mruby/c}
468
+ (('tag:center'))
469
+ \n\n
470
+ (('tag:large:Possibly and hopefully,'))\n
471
+ (('tag:large:I will see you on'))\n
472
+ (('tag:large:RubyKaigi2020 at Matsumoto'))
473
+
474
+ = ((* *))
475
+ (('tag:center'))
476
+ \n\n
477
+ \n\n
478
+ (('tag:xx-large:Thank you!'))
479
+ == prop
480
+ : hide-title
481
+ true
482
+
data/theme.rb ADDED
@@ -0,0 +1,104 @@
1
+ # puts font_families.sort
2
+ @xx_large_font_size = screen_size(11 * Pango::SCALE)
3
+ @x_large_font_size = screen_size(9 * Pango::SCALE)
4
+ @large_font_size = screen_size(7 * Pango::SCALE)
5
+ @normal_font_size = screen_size(4.5 * Pango::SCALE)
6
+ @small_font_size = screen_size(4 * Pango::SCALE)
7
+ @x_small_font_size = screen_size(3.5 * Pango::SCALE)
8
+ @xx_small_font_size = screen_size(3 * Pango::SCALE)
9
+
10
+ @default_headline_line_color = '#888888'
11
+ @font_family = find_font_family('Rockwell')
12
+ #@foreground = "yellow"
13
+ @foreground = "#d9333f" # タイトルスライドの文字色
14
+
15
+ @table_frame_color = "#ffffff"
16
+ @table_fill_color = "#0f0428"
17
+ @table_body_frame_color = "#ffffff"
18
+ @table_body_fill_color = "#3f3468"
19
+ @table_head_frame_color = "#ffffff"
20
+ @table_head_fill_color = "#rf0428"
21
+
22
+ @monospace_font_family = 'Ricty Discord'
23
+ @preformatted_fill_color = '#000000'
24
+ # @preformatted_centering = true
25
+ @space = screen_y(1)
26
+
27
+ include_theme('default')
28
+
29
+ match(Slide, HeadLine) do |heads|
30
+ heads.prop_set("size", @large_font_size)
31
+ heads.prop_set("weight", "normal")
32
+ set_font_family(heads)
33
+ end
34
+
35
+ match Slide do |slides|
36
+ slides.each do |slide|
37
+ # スライドの文字色
38
+ slide.prop_set("foreground", "#fef263")
39
+ end
40
+ end
41
+
42
+ @slide_headline_hide = true
43
+ #match Slide do |slides|
44
+ # slides.each do |slide|
45
+ # slide.prop_set("hide_title", true)
46
+ # end
47
+ #end
48
+
49
+ @title_slide_background_image = 'images/himi.jpg'
50
+ include_theme("title-slide-background-image")
51
+
52
+ @slide_background_image = 'images/slide-background.png'
53
+ include_theme("slide-background-image")
54
+
55
+ @slide_logo_image = 'images/mark48.png'
56
+ include_theme('slide-logo')
57
+
58
+ @item_image = 'images/mark48.png'
59
+
60
+ include_theme("default-item-mark")
61
+
62
+ add_image_path("rabbit-images")
63
+
64
+ slide_body = [Slide, Body]
65
+ item_list_item = [ItemList, ItemListItem]
66
+
67
+ indent = 70
68
+
69
+ match(*(slide_body + (item_list_item * 1))) do |items|
70
+ name = "item1"
71
+ items.delete_pre_draw_proc_by_name(name)
72
+ items.delete_post_draw_proc_by_name(name)
73
+ draw_image_mark(items, @item_image, name, indent: indent)
74
+ end
75
+
76
+ match(*(slide_body + (item_list_item * 2))) do |items|
77
+ name = "item2"
78
+ items.delete_pre_draw_proc_by_name(name)
79
+ items.delete_post_draw_proc_by_name(name)
80
+ draw_image_mark(items, @item_image, name, indent: indent)
81
+ end
82
+
83
+ match(*(slide_body + (item_list_item * 3))) do |items|
84
+ name = "item3"
85
+ items.delete_pre_draw_proc_by_name(name)
86
+ items.delete_post_draw_proc_by_name(name)
87
+ draw_image_mark(items, @item_image, name, indent: indent)
88
+ end
89
+
90
+ enum_list_item = [EnumList, EnumListItem]
91
+
92
+ match(*(slide_body + enum_list_item + item_list_item)) do |items|
93
+ name = "enum-item1"
94
+ items.delete_pre_draw_proc_by_name(name)
95
+ items.delete_post_draw_proc_by_name(name)
96
+ draw_image_mark(items, @item_image, name, indent: indent)
97
+ end
98
+
99
+ match(*(slide_body + enum_list_item + (item_list_item * 2))) do |items|
100
+ name = "enum-item2"
101
+ items.delete_pre_draw_proc_by_name(name)
102
+ items.delete_post_draw_proc_by_name(name)
103
+ draw_image_mark(items, @item_image, name, indent: indent)
104
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-hasumikin-ToyamaRubyKaigi01
3
+ version: !ruby/object:Gem::Version
4
+ version: 2019.11.3.0
5
+ platform: ruby
6
+ authors:
7
+ - HASUMI Hitoshi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-11-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ description: The Presentation for RubyKaigiToyama01 by hasumikin
28
+ email:
29
+ - hasumikin@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rabbit"
35
+ - README.rd
36
+ - Rakefile
37
+ - config.yaml
38
+ - images/VM_code.png
39
+ - images/VM_code_2.png
40
+ - images/borges.jpg
41
+ - images/hasumi.jpg
42
+ - images/himi.jpg
43
+ - images/ishikura.jpg
44
+ - images/mark32.png
45
+ - images/mark48.png
46
+ - images/mark64.png
47
+ - images/matz.jpg
48
+ - images/monstarlab.png
49
+ - images/mrubycKaigi02.png
50
+ - images/noboru_i.jpg
51
+ - images/rwc.png
52
+ - images/rwc4.png
53
+ - images/slide-background.png
54
+ - images/松江城_Matsue.rb.16x9.jpg
55
+ - images/松江城_Matsue.rb.jpg
56
+ - mruby-de-Hello-World.rab
57
+ - pdf/ToyamaRubyKaigi01-mruby-de-Hello-World.pdf
58
+ - theme.rb
59
+ homepage: https://slide.rabbit-shocker.org/authors/hasumikin/ToyamaRubyKaigi01/
60
+ licenses: []
61
+ metadata: {}
62
+ post_install_message:
63
+ rdoc_options: []
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubygems_version: 3.0.3
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: mruby de Hello World!
81
+ test_files: []