yasnippetsでFizzBuzz

vim使いにyasの「EmacsLispを評価できる」という長所について解説していて、ふと思いついたので作った。

`(progn
(defun fizzbuzz (i n)
  (if (> i n) ""
    (concat
        (cond ((= 0 (% i 15)) "FizzBuzz")
  	      ((= 0 (% i 3)) "Fizz")
  	      ((= 0 (% i 5)) "Buzz")
	      (t (number-to-string i)))
	"\n"
	(fizzbuzz (+ i 1) n))))

"")
`FizzBuzz to ${1:10}:
${1:$(fizzbuzz 1 (string-to-number text))}

これでfizzbuzzって書いてTABを押せば下のような文字列が挿入される。そして「10」の所にフォーカスがあっていて、数字を編集すると即座にその個数のFizzBuzzにかわる。

FizzBuzz to 10:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz