Skip to content

Instantly share code, notes, and snippets.

View pasaran's full-sized avatar

Sergey Nikitin pasaran

View GitHub Profile
<func:function name="child-node">
<xsl:param name="elements"/>
<xsl:variable name="nodes">
<xsl:element name="{name()}">
<xsl:for-each select="str:tokenize($elements, ',| ')">
<xsl:element name="{normalize-space(.)}"/>
</xsl:for-each>
</xsl:element>
</xsl:variable>
<func:result select="exsl:node-set($nodes)/*/*"/>
@pasaran
pasaran / require-all.js
Created April 23, 2012 09:13
Require all modules in directory
// --------------------------------------------------------------------------------------------------------------- //
var fs_ = require('fs');
var path_ = require('path');
// --------------------------------------------------------------------------------------------------------------- //
var basedir = path_.dirname(module.parent.filename);
/**
@pasaran
pasaran / data.json
Created September 13, 2012 16:47
Example of yate templates
{
"settings": {
"foo": "low",
"bar": "high",
"baz": "low"
},
"values": [ "low", "high" ]
}
@pasaran
pasaran / f1.js
Created October 25, 2012 16:11
Compare different eval's in node.js
module.exports = function(data) {
var s = '';
s += '<div class="hello">';
s += 'Hello, ' + data.username;
s += '</div>';
return s;
};
@pasaran
pasaran / 01.parser.html
Created October 29, 2012 08:56
parser.01
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>parser.01</title>
<script src="01.parser.js"></script>
</head>
<body>
<script>
@pasaran
pasaran / 02.grammar.js
Created October 29, 2012 11:27
parser.02
var tokens = {};
tokens.ADD = /^[+-]/;
tokens.MUL = /^[*/%]/;
tokens.NUMBER = /^[0-9]+(\.[0-9]+)?/;
// --------------------------------------------------------------------------------------------------------------- //
var rules = {};
@pasaran
pasaran / 03.ast.js
Created November 6, 2012 11:59
03.parser
var AST = function() {};
AST.prototype.init = function() {
this.p = {};
};
AST.prototype.walk = function(callback) {
callback.call(this);
var p = this.p;
@pasaran
pasaran / ast.js
Created November 6, 2012 12:40
Работа с ast
function code(ast) {
switch (ast.id) {
case 'or':
case 'and':
case 'eq':
case 'rel':
case 'add':
case 'mul':
return code(ast.left) + ast.op + code(ast.right);
@pasaran
pasaran / README.md
Last active December 13, 2015 22:48

Черновой прототип для выбора "мастер"-вкладки. Например, мастер-вкладка будет держать один websocket-коннект к серверу, а остальные вкладки с тем же сайтом, будут его использовать. Что делать, если мастер-вкладка вдруг закрыта? Нужно выбрать новую.

После клонирования репозитория, нужно поднять над этими файлами какой-нибудь веб-сервер, например так:

python -m SimpleHTTPServer 8000

После чего, можно открывать вкладки по адресу http://127.0.0.1:8000.

function add1(x, y) {
return x + y;
}
function sub1(x, y) {
return x - y;
}
function mul1(x, y) {
return x * y;