Skip to content

Instantly share code, notes, and snippets.

View dockimbel's full-sized avatar

Nenad Rakocevic dockimbel

View GitHub Profile
@dockimbel
dockimbel / gist:8a5bcf3acb470d0dd9f4dd0a07da7817
Created September 8, 2022 14:29
Simple usage example of SCROLLER widget
Red [Needs: View]
scroll-max: 100
start-pos: 0
view [
size 200x200
backdrop cyan
p: panel 100x100 [button "ok"]
do [start-pos: p/offset/y] ;-- saves initial position
@dockimbel
dockimbel / gist:cb5607b0696558d44aa4a3537e930095
Created February 8, 2022 14:13
Global space function stats per type
Red []
count: function [][
list: [native! 0 action! 0 op! 0 function! 0 routine! 0]
foreach w words-of system/words [
if pos: find list type?/word get/any w [pos/2: pos/2 + 1]
]
list
]
@dockimbel
dockimbel / gist:3ebf48b58acdb3781c6e8f7adefe2959
Created December 21, 2021 19:35
Tracing handler for extracting top expressions
Red []
detect: function [
event [word!]
code [any-block! none!]
offset [integer!]
value [any-type!]
ref [any-type!]
frame [pair!]
][
* PROLOG: when entering a function.
* EPILOG: when exiting a function.
* ENTER: when a block is about to be evaluated.
* EXIT: when current evaluated block's end has been reached.
* OPEN: when a new function (any-function!) call is pushed on stack and a new stack frame is opened.
* RETURN: when a function call has returned and its stack frame has been closed.
* FETCH: a value is read from the input block to be evaluated.
* PUSH: a value has been pushed on the stack.
* SET: a set-word is set to a value.
@dockimbel
dockimbel / eval2.red
Created April 3, 2018 10:12
Test script for Red/View Android backend
Red [
Title: "Red Android bridge demo"
Author: "Nenad Rakocevic"
File: %eval2.red
Config: [type: 'dll libRed?: no libRedRT?: yes export-ABI: 'cdecl]
Tabs: 4
Needs: 'View
Rights: "Copyright (C) 2013-2017 Nenad Rakocevic. All rights reserved."
License: {
Distributed under the Boost Software License, Version 1.0.
@dockimbel
dockimbel / brainfuck.red
Created November 29, 2013 23:08
This is a complete (but not fully tested) implementation of a Brainfuck interpreter in Red language, only using the Parse dialect. The extra verbosity comes from the current lack of built-in reversed input parsing. Once reverse parsing will be implemented in the dialect, the `jump-back` rule should be simplified a lot. Note: this is not meant to…
Red [
Author: "Nenad Rakocevic"
Date: 29/11/2013
]
bf: function [prog [string!]][
size: 30000
cells: make string! size
append/dup cells null size
@dockimbel
dockimbel / JSON-mini.red
Last active September 29, 2020 04:13 — forked from Skrylar/JSON.red
JSON minminal parser for Red
Red []
digit-nz: charset "123456789"
digit: append copy digit-nz #"0"
hex: append copy digit "abcdefABCDEF"
sign: charset "+-"
exponent-e: charset "eE"
dquot: #"^""
exponent: [ exponent-e opt sign some digit ]
Red [] L: charset "ABCDEFGHI" D: union N: charset "123456789" charset "0"
repeat y 9 [repeat x 9 [col: either x = 1 [#"^(2028)"][#"A" + (x - 2)]
append p: [] set ref: (to word! rejoin [col y - 1]) make face! [size: 90x24
type: pick [text field] header?: (y = 1) or (x = 1)
offset: -20x10 + as-pair ((x - 1) * size/x + 2) ((y - 1) * size/y + 1)
text: form case [y = 1 [col] x = 1 [y - 1] 'else [copy ""]]
para: make para! [align: pick [center right] header?]
extra: object [name: form ref formula: old: none]
actors: context [on-create: on-unfocus: function [f e][f/color: none
if rel: f/extra/old [react/unlink rel 'all]
@dockimbel
dockimbel / picosheet-packed.red
Last active May 12, 2020 14:35
Native reactive spreadsheet demo in 14 LOC
;-- Each line is limited to 82 characters. Requires Red build from 07/07/2016 at least.
;-- Save it to a file to be able to run it, or type at console's prompt `do [`, paste the code, type `]` and ENTER.
Red [] L: charset "ABCDEFGHI" D: union N: charset "123456789" charset "0" repeat
y 9 [repeat x 9 [col: either x = 1 [#"^(2028)"][#"A" + (x - 2)] append p: [] set
ref:(to word! rejoin [col y - 1]) make face! [size: 90x24 type: pick [text field]
header?: (y = 1) or (x = 1) offset: -20x10 + as-pair ((x - 1) * size/x + 2) ((y
- 1) * size/y + 1) text: form case [y = 1 [col] x = 1 [y - 1] 'else [copy ""]]
para: make para! [align: pick [center right] header?] extra: object [name: form
ref formula: old: none] actors: context [on-create: on-unfocus: function [f e][
Red [] L: charset "ABCDEFGHI" D: union N: charset "123456789" charset "0"
repeat y 9 [repeat x 9 [col: either x = 1 [#"^(2028)"][#"A" + (x - 2)]
append p: [] set ref: (to word! rejoin [col y - 1]) make face! [size: 90x24
type: pick [text field] header?: (y = 1) or (x = 1)
offset: -20x10 + as-pair ((x - 1) * size/x + 2) ((y - 1) * size/y + 1)
text: form case [y = 1 [col] x = 1 [y - 1] 'else [copy ""]]
para: make para! [align: pick [center right] header?]
extra: object [name: form ref formula: old: none]
actors: context [on-create: on-unfocus: function [f e][f/color: none
if rel: f/extra/old [react/unlink rel 'all]