Partie optionnelle : [...]
Partie répétable 0 à N fois : {...}
function trace(f) { | |
return function() { | |
var args = Array.from(arguments); | |
var res = f.apply(null, args); | |
console.debug("%s(%O) = %O", f.name, args, res); | |
return res; | |
}; | |
} |
def parse_http_accept_language_header(langs_str): | |
"""Returns the list of languages from a string formatted | |
according to the Accept-Language HTTP header, by order of | |
preference. | |
""" | |
def get_locale_q_pairs(lang_list): | |
for language in lang_list: | |
locale_q_pair = language.split(";") | |
if len(locale_q_pair) == 1: |
"use strict"; | |
angular.module('timezones', []) | |
.value('CommonTimezones', [ | |
"Africa/Abidjan", | |
"Africa/Accra", | |
"Africa/Addis_Ababa", | |
"Africa/Algiers", | |
"Africa/Asmara", |
angular.module('ngFixedHttp', []) | |
.factory('FixedHttp', ['$http', function($http) { | |
// Can't use $http.post() because JSON format is not | |
// recognized by the web server | |
// See : http://stackoverflow.com/questions/19254029/angularjs-http-post-does-not-send-data | |
// This service is supposed to be used as a replacement for $http | |
// /!\ Not tested | |
// /!\ /!\ Doesn't work with nested JSON objects (must write custom compile function for that) /!\ /!\ |
// Inspired from : http://www.sitepoint.com/multi-threading-javascript/ | |
longOperation: function (fn, initData, interval) { | |
var data = initData, busy = false; | |
var result = $q.defer(); | |
var taskId; | |
var task = function() { | |
if(!busy) { | |
busy = true; | |
var res = fn(data); | |
data = res.data; |
// | |
// Simple template system with plain JS objects, using CSS selectors | |
// Two versions : | |
// * JSON | |
// - based on JSON objects, each element is a property | |
// * JSON-ML : | |
// - inspired from the JSON-ML markup language (http://www.jsonml.org/) | |
// - each element is a list | |
// - element type can contains id and classes like the first version (so, not standard json-ml) | |
// |
# -*- coding: Utf-8 -*- | |
import xml.etree.ElementTree as ET | |
def create_xml_tree(root, dict_tree): | |
# Node : recursively create tree nodes | |
if type(dict_tree) == dict: | |
for k, v in dict_tree.iteritems(): | |
create_xml_tree(ET.SubElement(root, k), v) | |
return root |
def lazy(fun): | |
class Memoizer(object): | |
def __init__(self, fun): | |
self.fun = fun | |
self.set = False | |
self.res = None | |
def __call__(self): | |
if not self.set: | |
self.set = True |
import sys | |
# | |
# Generation config | |
# | |
PRINT_COLS = 8 | |
LETTERS_CHANGED = 2 | |
# |