Skip to content

Instantly share code, notes, and snippets.

Sistema de Regras e Customização de Apps

Este padrão de sistema prescreve um sistema de regras e customização com três chamadas.

  • Data layer: Busca dados de bancos de dados e/ou arquivos de configuração.
  • Evaluation layer: Contém funções que podem combinar argumentos de função e/ou dados da camada de dados em um resultado final.
  • Calling layer: Chama a evaluation layer (ex.: if(await rule.timeline.enable(userData)) { ... }).

Regras na data layer e evaluation layer são estruturadas em forma de árvore.

#!/usr/bin/guile -s
!#
(use-modules (srfi srfi-1))
(define (dir-to-vec dir)
(case dir
('left '(-1 0))
('right '(1 0))
('up '(0 -1))
(define (transform-at x i proc)
(define x-left (take x i))
(define x-right (drop x (+ i 1)))
(define x-target (list-ref x i))
(list
(concatenate
(list x-left (list (proc x-target)) x-right)
)
x-target
// ASCII text string rendering example:
void render_text(FT_Face *ft_face, const char *msg, void **vertex_buffer, void **texture_bitmap) {
unsigned msg_len = strlen(msg);
const char *unique_chars;
unsigned unique_chars_len;
Aeon_Operation aeon_op;
Aeon_Glyph_Info *glyphs;
Aeon_Glyph_Info *glyph;
var tf = require("right-angle");
var calc = tf.loadPage("calculator");
module.exports = {
"I (add|subtract|multiply|divide) '(.*)' (and|by|from) '(.*)'": {
composite: true,
run: function(operation, first, conjunction, second) {
var opTable = {
"add": "+",
"subtract": "-",
"multiply": "*",
{
"path": "brand",
"label": "Brand",
"fieldSpec": {
"type": "dropdown",
"allowCustom": true,
"values": {
"audio-technica": "Audio-Technica",
"beats-dr-dre": "Beats by Dr. Dre",
"bose": "Bose",
var current;
setInterval(function() {
if(!current) {
return;
}
if(current.results_.failedCount > 0) {
process.exit();
}
if(this.exit) {
this.exit();
}
// vs.
this.exit && this.exit();
<label:episodeMenu>\
<clear><d40>\
Episode 1
The First Turnabout
- Back
- Confirm
<choice:```{
Back: () => {
<clear><d30>\
Phoenix Wright
Ace Attorney
- New Game
- Continue
- Quit
<choice:```{
"New Game": () => {