From 1f09dde66fc934337189c2840689cd958c53cefb Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 17 Jan 2023 21:54:08 +0900 Subject: ソースをハイライト MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- slide.saty | 154 +++++++++++++++++++++++++++++-------------------------------- 1 file changed, 72 insertions(+), 82 deletions(-) (limited to 'slide.saty') diff --git a/slide.saty b/slide.saty index 2285d8d..3d0d7e2 100644 --- a/slide.saty +++ b/slide.saty @@ -1,14 +1,40 @@ @require: class-slydifi/theme/akasaka @require: code-printer/code-design @require: code-printer/code-printer +@require: code-printer/code-theme @require: figbox/figbox -let-block +code-block s = '< - +code-printer?:( - CodePrinter.default - |> CodePrinter.set-number-fun CodeDesign.number-fun-null - )(s); - > +let-block +code-block source keywords = + let syntax = + let void-syntax-rule = CodePrinter.syntax-rule-fun (fun _ -> None) in + CodePrinter.make-syntax (| + line-comment = void-syntax-rule; + block-comment = void-syntax-rule; + string = void-syntax-rule; + keywords = keywords; + identifier = void-syntax-rule; + others = []; + |) + in + '< + +code-printer?:( + CodePrinter.make-config syntax CodeTheme.iceberg-light + |> CodePrinter.set-number-fun CodeDesign.number-fun-null + )(source); + > + +let source = `# +frame{ソースコード}< - +code-block( - `# +frame{PHPとして解釈する}< - +code-block( - `# +frame{PHPとして解釈する}< - +code-block( - `$a = 'a'; $/* 0; # */$a -=begin -();` - ); + +code-block(source)([`$a = 'a';`]); +p{ \inline-code(`$a`); に \inline-code(`'a'`); を代入 } + > + + +frame{PHPとして解釈する}< + +code-block(source)([`$/* 0; # */$a`; `=begin`; `();`]); +p{ \inline-code(`$$a = begin();`); (variable variable) } > +frame{PHPとして解釈する}< - +code-block( - `echo "php\n";` - ); + +code-block(source)([`echo "php\n";`]); +p{ 出力部分。実際の出力には先頭に \inline-code(`#`); が付く } > +frame{PHPとして解釈する}< - +code-block( - `function begin() {} $a = << + + +frame{PHPとして解釈する}< + +code-block(source)([`$a = << +frame{おわりに}< - +fig-center(vconcat [ - textbox{これにもう1言語足したものを}; + +fig-center(vconcat ?:(align-center) [ + gap 20pt; + textbox{来たる3月のPHPerKaigi 2023で、}; gap 20pt; - textbox{PHPerKaigi 2023のPHPerチャレンジに出題します!}; + textbox{ここから\textbf{もう1言語足して}4言語にしたバージョンを}; + gap 20pt; + textbox{弊社デジタルサーカスからPHPerチャレンジの問題として出題します!}; ]); > +frame{Rubyとして解釈する}< - +code-block( - `# +frame{Rubyとして解釈する}< - +code-block( - `$a = 'a'; $/* 0; # */$a` - ); + +code-block(source)([`$a = 'a';`]); +p{ \inline-code(`$a`); に \inline-code(`'a'`); を代入 } + > + + +frame{Rubyとして解釈する}< + +code-block(source)([`$/* 0;`]); +p{ \inline-code(`$/`); はRubyの特殊なグローバル変数。\inline-code(`*`); は乗算 } + > + + +frame{Rubyとして解釈する}< + +code-block(source)([`# */$a`]); +p{ \inline-code(`#`); 以降は行コメント } > +frame{Rubyとして解釈する}< - +code-block( - `=begin -(); -echo "php\n"; -function begin() {} $a = << +frame{Rubyとして解釈する}< - +code-block( - `puts "#ruby"; '` - ); + +code-block(source)([`puts "#ruby";`]); +p{ - 出力部。\inline-code(`'`); からは文字列リテラル + 出力部 } > +frame{Rubyとして解釈する}< - +code-block( - `puts "#ruby"; ' -=cut -print "#perl\n"; -'# '; -nil;` - ); + +code-block(source)([`=cut`; `print "#perl\n";`; `'# ';`]); +p{ 文字列リテラルとして読み飛ばし、行コメント } + > + + +frame{Rubyとして解釈する}< + +code-block(source)([`nil;`]); +p{ - \inline-code(`nil`); はPHPでいう \inline-code(`null`); + Rubyの \inline-code(`nil`); はPHPでいう \inline-code(`null`); } > +frame{Perlとして解釈する}< - +code-block( - `#