diff --git a/doc/musique-vs-languages-cheatsheet.template b/doc/musique-vs-languages-cheatsheet.template index e24590d..3ee6d7d 100644 --- a/doc/musique-vs-languages-cheatsheet.template +++ b/doc/musique-vs-languages-cheatsheet.template @@ -21,6 +21,8 @@ END INTRO BEGIN TABLE +SECTION Podstawy + n Kategoria m Musique p Python @@ -63,6 +65,36 @@ r return x + y r end c Musique nie rozróżnia funkcji anonimowych i zadeklarowanych +n Instrukcja warunkowa +m if (n == 42) +m [ say 1 ] +m [ say 2 ] +p if n == 42: +p print(1) +p else: +p print(2) +r if n == 42 +r puts 1 +r else +r puts 2 +r end +c Musique nie posiada instrukcji warunkowej, a funkcję if, +c która przyjmuje wartość logiczną i dwa bloki (funkcje anonimowe) +c - jeden z nich zostanie wykonany jeśli warunek jest prawdziwy, +c a drugi jeśli jest fałszywy. +n Wyrażenie warunkowe +m x := if (n == 42) [1] [2] +p x = 1 if n == 42 else 2 +r x = n == 42 ? 1 : 2 + +SECTION Tablice + +n Kategoria +m Musique +p Python +r Ruby (SonicPi) +c Komentarz + n Tablice m x = [1; 2; 3; 4] p x = [1, 2, 3, 4] @@ -104,25 +136,30 @@ r [*1..5].inject(:*) c Musique pozwala zmienić dowolny operator w funkcję c poprzez zapis 'operator jak '* w przykładzie -n Instrukcja warunkowa -m if (n == 42) -m [ say 1 ] -m [ say 2 ] -p if n == 42: -p print(1) -p else: -p print(2) -r if n == 42 -r puts 1 -r else -r puts 2 +n Iteracja po elementach tablicy +m for (up 5) [ i | say i ] +p for i in range(5): +p print(i) +r (0..4).each do |i| +r puts i r end -c Musique nie posiada instrukcji warunkowej, a funkcję if, -c która przyjmuje wartość logiczną i dwa bloki (funkcje anonimowe) -c - jeden z nich zostanie wykonany jeśli warunek jest prawdziwy, -c a drugi jeśli jest fałszywy. -n Wyrażenie warunkowe -m x := if (n == 42) [1] [2] -p x = 1 if n == 42 else 2 -r x = n == 42 ? 1 : 2 +c Podobnie jak w przypadku instrukcji warunkowej, Musique używa funkcji. + +n Sortowanie tablicy +m xs := sort [1; 5; 3; 3; 2] +p xs = sorted([1, 5, 3, 3, 2]) +r xs = [1, 5, 3, 3, 2].sort + + +n Sortowanie wielu tablic w jedną +m xs := sort [1; 5; 3; 3; 2] +m [3; 4; 5] 1 2 3 +p xs = sorted(itertools.chain( +p [1, 5, 3, 3, 2], [3, 4, 5], +p [1], [2], [3] +p )) +c Wiele operacji na tablicach może być wykonywane na dowolnej kombinacji +c tablic i pojedyńczych wartości. Tworzy to jedną tablicę wykoniową. + + END TABLE diff --git a/scripts/code-size.sh b/scripts/code-size.sh new file mode 100755 index 0000000..70fd47a --- /dev/null +++ b/scripts/code-size.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +cloc src/*.cc include/*.hh lib/midi/include lib/midi/src diff --git a/scripts/language-cmp-cheatsheet.py b/scripts/language-cmp-cheatsheet.py index d53ceec..b06b016 100644 --- a/scripts/language-cmp-cheatsheet.py +++ b/scripts/language-cmp-cheatsheet.py @@ -1,9 +1,20 @@ import argparse import os import string -import collections +import dataclasses -Directive = collections.namedtuple("Directive", "line_number type content") +@dataclasses.dataclass +class Section: + name: str + rows: list = dataclasses.field(default_factory=lambda: [{}]) + order: list = dataclasses.field(default_factory=list) + ref: str = "" + +@dataclasses.dataclass +class Directive: + line_number: int + type: str + content: str HTML_TEMPLATE = string.Template(""" @@ -14,15 +25,16 @@ HTML_TEMPLATE = string.Template("""
$intro
-