Skip to content

Instantly share code, notes, and snippets.

@vkz
vkz / init.el
Created February 11, 2016 17:29
Use cider-refresh to get Parens of the Dead reloading
(with-eval-after-load 'cider
(add-hook 'cider-mode-hook
(lambda ()
(add-hook 'after-save-hook 'cider-refresh nil 'make-it-local))))
@vkz
vkz / bleval.clj
Created December 15, 2015 12:39
Clojure's `eval` and namespaces
;; Clojure's eval is dynamic with respect to current namespace.
;; If you ever find yourself in need of eval but want to avoid **wat**
;; moments here's hopefully an illuminating sequence:
user> (in-ns 'bla)
#namespace[bla]
bla> (refer-clojure)
nil
bla> (def x "bla")
#'bla/x
bla> (defn bleval [s]
@vkz
vkz / escodegen-comments.js
Last active February 6, 2023 17:54
Preserve comments with Esprima + Escodegen combination
// escodegen has a fucked up API for attaching comments
// https://github.com/estools/escodegen/issues/10
var esprima = require("esprima");
var es = require("escodegen");
var ast = esprima.parse(
'//comment here\nvar answer = 42;',
{range: true, tokens: true, comment: true});
// attaching comments is a separate step
@vkz
vkz / strings.js
Last active August 29, 2015 14:21
String literal values in JS
// Parse and serialize JS string-literals
var esprima = require("esprima"),
esgen = require("escodegen").generate;
// Esprima.parse differentiates between the string-literal (raw) and it's
// content (value)
esprima.parse('a = "привет"')
// =>
@vkz
vkz / apply.bemhtml
Created April 23, 2015 10:28
apply with mode
block b1, content: applyNext(this.bla = 'bla', 'default', this.ctx.b = 'b')
@vkz
vkz / bemxjst1.md
Last active August 29, 2015 14:11
bemxjst applyCtx() косяк или фича

Отдаем bemxjst такой шаблон:

block('b1').mod('m1', 'v1').content()('B');
block('b1').content()('a');
block('b1').content()(function () {return [applyCtx({'mods': {'m1':'v1'}}), 'b'];});

Получаем такой результат:

function applyc(__$ctx, __$ref) {
@vkz
vkz / grammar.ometajs
Created September 1, 2014 08:53
Breaking associativity in OMeta
var ometajs = require('ometajs'),
Parser = ometajs.grammars.BSJSParser;
// Source: http://tratt.net/laurie/research/pubs/html/tratt__direct_left_recursive_parsing_expression_grammars/
// '1-2-3' -> ((1-2)-3)
ometa a <: Parser {
Expr = Expr:l "-" Num:r -> [l, '-', r]
| Num:i -> [i],
Num = /[0-9]+/
@vkz
vkz / wat.js
Created August 19, 2014 11:10
anything*:binding
var ometajs_ = require('ometajs');
var AbstractGrammar = ometajs_.grammars.AbstractGrammar;
var BSJSParser = ometajs_.grammars.BSJSParser;
var BSJSIdentity = ometajs_.grammars.BSJSIdentity;
var BSJSTranslator = ometajs_.grammars.BSJSTranslator;
var ometajs = require('ometajs');
var G = function G(source, opts) {
AbstractGrammar.call(this, source, opts);
};
G.grammarName = 'G';

Keybase proof

I hereby claim:

  • I am vkz on github.
  • I am vkz (https://keybase.io/vkz) on keybase.
  • I have a public key whose fingerprint is 2DA6 BA4C 29F6 F80C 8D81 BA14 8D00 922A 68A7 0A21

To claim this, I am signing this object:

@vkz
vkz / FSharp.Charting.sh
Last active August 29, 2015 13:57
FSharp.Charting issue #29
bash-3.2$ pwd
/Users/vkz/Projects/chart
bash-3.2$ ls
a.fsx packages.config
bash-3.2$ cat packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="FSharp.Charting.Gtk" version="0.90.5" targetFramework="net40" />