• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

AltME groups: search

Help · search scripts · search articles · search mailing list

results summary

worldhits
r4wp56
r3wp188
total:244

results window for this page: [start: 101 end: 200]

world-name: r3wp

Group: !AltME ... Discussion about AltME [web-public]
Maxim:
9-Dec-2009
to me the problem is that MS should have created a real application 
framework... actually, only Apple with OSX seems to be really close 
to this.


there should be THREE root directories and only three dirs for each 
application.  windows has dozens, which is crazy.
1. Application SOURCE data (.exe, libs, datafile, etc)
2. Application STORAGE data (game saves, defaults
3. Application Temporary data, flushed on program quit by the OS.


within Storage, you'd have application and user-based storage and 
that's it.


The os refuses to execute any file not within application source 
dir, so you have already clamped down on a lot of security issues. 
 a list of approved .exe is stored whenever you launch an application 
for the first time.


for a bit more flexibility, several application dirs could exist, 
so that you can do stuff like compile items and run them locally 
within your dev environment, but these dirs would be explicitely 
registered within the os.


on install the Application should be required to ask permission (like 
flash) in how much space will be stored within STORAGE if it exceeds 
a max default, independently of SOURCE.


The implementation of MyXxxx folders is completely horrendous, and 
should be a simple and ubiquitous form that has one entry for each 
media type, and a browser where you want to put your stuff (which 
might not be user-specific).


IIRC this was addressed in Vista, but then they went and added aliases 
to everything, which raises errors in the explorer, cause you can't 
use them.  They alias core windows directories in other languages, 
the result being that explorer and actual disk info are different! 
 this completely fucks up many applications (like rebol).


windows has a hard time "fixing" things... they always just patch 
it... its worse since they have a hard time starting with any good 
implementation of anything to begin with.
Group: Core ... Discuss core issues [web-public]
[unknown: 5]:
25-Feb-2008
Anyone know what the discussions are regarding extending the alias 
function in REBOL3?  I have a bit ugly function that does something 
like that now.  What I'm talking about is the ability to alias for 
example find/only or find/case or instead of just find so that no 
refinement has to be supplied.  I submitted a wish for this some 
time ago and hoped it would make it in REBOL3 but don't know what 
is intended regarding that.
Steeve:
23-Mar-2010
Great work, would be a nice alias to add in Rebol.

>> whereof: [get in disarm try [+] 'where]

>> g: f: does [print ["my name is" do whereof]]
>> g
my name is g
>> f
my name is f
Steeve:
19-Apr-2010
Anyway, you can create your own alias.
In R3 >
|: :or
&: :and

In R2 >
alias 'and "&"
alias 'or "|"
Group: View ... discuss view related issues [web-public]
Anton:
29-Aug-2005
view layout [i: image black effect [draw [anti-alias off  circle 
10x10 0.0001]] image (i/size * 5) (to-image i)]
Anton:
29-Aug-2005
view layout [i: image black effect [draw [anti-alias off scale 0.1 
1 line 100x10 101x10 scale 1 1]] image (i/size * 5) (to-image i)]
Anton:
29-Aug-2005
view layout [i: image black effect [draw [anti-alias off shape [move 
10x10 hline 10.1]]] image (i/size * 5) (to-image i)]
Geomol:
30-Aug-2005
AGG used in the draw dialect is very good at anti-aliasing. But then 
some (maybe) unexpected results occur, when anti-alias is turned 
off:
Geomol:
30-Aug-2005
view layout [i: image black effect [draw [anti-alias off circle 50x50 
20 line 20x20 80x20 20x80 20x20]] image (i/size * 5) (to-image i)]
Geomol:
30-Aug-2005
view layout [i: image black effect [draw [translate 0.5 0.5 anti-alias 
off circle 50x50 20 line 20x20 80x20 20x80 20x20]] image (i/size 
* 5) (to-image i)]
Geomol:
31-Aug-2005
Yes, that could be a solution.
Is it also slow, if you turn anti-alias off? Hit 'a'!
Geomol:
23-Sep-2005
view layout [box white effect [draw [translate 0.5 0.5 anti-alias 
off pen none fill-pen black circle 50x50 0.5]]]
Oldes:
28-Sep-2006
I've found it, it's anti-alias off not antialias :-) http://www.rebol.com/docs/draw-ref.html
Pekr:
6-Oct-2006
hmm, but maybe mine is not example of binding anyway, it just simply 
created alias, no?
Jerry:
20-Dec-2006
According to the DRAW Document, the shape is closed automatically, 
i.e. as a polygon, unless you specify a move command at the end of 
the shape block. However, the following example is different. why?


view layout [ box 300x300 black effect [draw [anti-alias on pen red 
fill-pen none shape [move 35x12 curve 35x12 line 53x96 curve 53x96 
54x101 57x104 61x104 line 61x108 line 37x108 line 37x104 curve 37x104 
42x104 44x103 44x101 curve 44x101 44x100 44x98 44x97 line 38x72 line 
19x72 line 14x98 line 14x100 curve 14x100 14x102 16x104 20x104 line 
20x108 line 3x108 line 3x104 curve 3x104 7x104 9x102 10x99 line 29x14 
move 20x68 curve 20x68 line 37x68 line 29x29]]]]
Jerry:
20-Dec-2006
REBOL[] view layout [ box 128x128 black effect [draw [anti-alias 
on pen white fill-pen white shape [move 32x19 curve 32x19 33x19 34x19 
35x20 curve 35x20 38x22 40x24 40x25 curve 40x25 40x26 39x27 39x28 
curve 39x28 38x29 38x31 37x33 curve 37x33 35x38 32x43 28x50 curve 
28x50 24x58 19x65 14x70 curve 14x70 9x75 6x77 4x77 curve 4x77 3x77 
3x77 3x76 curve 3x76 3x76 3x76 4x75 curve 4x75 8x71 13x64 19x55 curve 
19x55 23x48 26x40 29x33 curve 29x33 30x30 31x26 31x22 curve 31x22 
31x20 31x19 32x19 move 36x27 curve 36x27 36x27 37x27 38x27 curve 
38x27 40x28 43x29 45x30 curve 45x30 48x32 50x33 51x34 curve 51x34 
51x36 52x37 52x38 curve 52x38 52x39 52x40 51x41 curve 51x41 51x42 
50x43 49x43 curve 49x43 49x43 48x42 47x42 curve 47x42 46x41 44x39 
42x36 curve 42x36 40x33 38x31 37x30 curve 37x30 36x29 35x28 35x28 
curve 35x28 35x27 35x27 36x27 move 42x51 curve 42x51 43x51 44x52 
46x52 curve 46x52 48x53 50x54 50x54 curve 50x54 50x55 48x56 46x56 
curve 46x56 44x56 43x57 41x57 curve 41x57 40x57 38x58 33x59 curve 
33x59 31x59 29x59 28x59 curve 28x59 27x59 25x59 24x59 curve 24x59 
23x58 22x58 22x57 curve 22x57 22x56 23x56 26x56 curve 26x56 31x55 
35x53 40x52 curve 40x52 41x52 42x51 42x51 move 44x66 curve 44x66 
45x66 46x66 49x67 curve 49x67 51x67 52x68 52x69 curve 52x69 52x70 
51x70 48x71 curve 48x71 46x71 43x72 42x72 curve 42x72 40x72 36x73 
30x74 curve 30x74 27x75 24x75 23x75 curve 23x75 21x75 20x75 19x75 
curve 19x75 17x74 16x74 16x73 curve 16x73 16x72 17x71 20x71 curve 
20x71 27x70 34x69 41x67 curve 41x67 42x66 44x66 44x66 move 31x57 
curve 31x57 33x57 34x57 37x58 curve 37x58 38x59 39x60 39x61 curve 
39x61 39x61 39x62 39x63 curve 39x63 38x64 38x65 38x66 line 37x96 
line 32x96 line 31x64 curve 31x64 31x63 31x62 30x60 curve 30x60 29x60 
29x59 29x59 curve 29x59 29x58 30x57 31x57 move 18x82 curve 18x82 
18x82 19x82 20x82 curve 20x82 23x83 25x84 26x85 curve 26x85 27x86 
28x87 28x89 curve 28x89 28x92 27x93 25x93 curve 25x93 24x93 23x93 
23x92 curve 23x92 21x91 19x88 17x83 curve 17x83 17x83 16x83 16x82 
curve 16x82 17x82 17x82 18x82 move 46x76 curve 46x76 46x76 48x76 
49x77 curve 49x77 51x79 52x80 52x80 curve 52x80 52x81 52x81 51x81 
curve 51x81 49x83 46x86 42x89 curve 42x89 41x89 41x89 41x89 curve 
41x89 40x89 40x89 40x89 curve 40x89 40x88 40x88 40x88 curve 40x88 
42x86 43x84 43x82 curve 43x82 44x80 45x78 45x76 curve 45x76 46x76 
46x76 46x76 move 10x97 curve 10x97 11x97 12x98 13x98 curve 13x98 
15x98 16x98 16x98 curve 16x98 17x98 19x98 21x97 curve 21x97 33x94 
41x92 45x90 curve 45x90 46x90 47x89 48x89 curve 48x89 50x89 51x90 
51x91 curve 51x91 51x92 50x93 48x94 curve 48x94 35x99 28x101 28x102 
curve 28x102 26x103 23x104 21x105 curve 21x105 20x106 19x107 18x107 
curve 18x107 17x107 15x106 12x104 curve 12x104 10x101 9x100 9x99 
curve 9x99 9x98 9x97 10x97 move 75x12 curve 75x12 75x12 76x12 77x12 
curve 77x12 79x12 81x13 83x14 curve 83x14 86x15 87x16 88x17 curve 
88x17 89x18 89x19 89x20 curve 89x20 89x21 89x23 88x25 curve 88x25 
87x26 86x27 85x27 curve 85x27 84x27 84x27 83x26 curve 83x26 82x25 
81x24 80x21 curve 80x21 78x18 76x16 75x14 curve 75x14 75x14 74x13 
74x13 curve 74x13 74x12 74x12 75x12 move 104x22 curve 104x22 104x22 
106x23 108x23 curve 108x23 110x25 112x26 112x27 curve 112x27 111x28 
110x28 108x29 curve 108x29 101x29 93x29 85x31 curve 85x31 80x31 73x33 
65x35 curve 65x35 63x35 63x35 62x35 curve 62x35 61x35 59x35 57x34 
curve 57x34 55x33 55x32 55x32 curve 55x32 55x31 55x31 57x31 curve 
57x31 73x28 86x26 97x24 curve 97x24 101x23 103x22 104x22 move 59x32 
curve 59x32 59x32 61x32 64x32 curve 64x32 66x33 67x34 67x35 curve 
67x35 66x37 66x38 66x38 curve 66x38 65x54 63x67 61x77 curve 61x77 
59x86 57x93 54x100 curve 54x100 51x106 47x111 44x114 curve 44x114 
43x115 43x115 42x115 curve 42x115 42x115 42x115 42x115 curve 42x115 
45x110 47x104 49x99 curve 49x99 53x89 55x79 57x69 curve 57x69 58x60 
59x50 59x40 curve 59x40 59x39 59x37 58x36 curve 58x36 57x35 57x34 
57x33 curve 57x33 57x33 58x32 59x32 move 102x35 curve 102x35 104x35 
106x36 109x38 curve 109x38 110x39 111x40 111x40 curve 111x40 111x41 
111x42 110x43 curve 110x43 109x44 109x46 108x47 curve 108x47 106x55 
105x59 105x60 curve 105x60 104x63 102x64 101x64 curve 101x64 100x64 
99x63 99x62 curve 99x62 98x61 98x60 98x59 curve 98x59 98x59 98x58 
98x57 curve 98x57 99x56 100x53 100x49 curve 100x49 101x47 101x45 
101x43 curve 101x43 101x42 100x41 99x41 curve 99x41 97x41 95x41 91x42 
curve 91x42 82x44 77x45 75x45 curve 75x45 73x45 72x45 71x44 curve 
71x44 70x44 70x43 70x43 curve 70x43 70x42 71x41 73x41 curve 73x41 
78x41 86x39 97x36 curve 97x36 100x35 102x35 102x35 move 113x46 curve 
113x46 113x46 115x46 117x47 curve 117x47 119x49 121x50 121x51 curve 
121x51 120x52 119x52 117x52 curve 117x52 110x52 103x53 94x54 curve 
94x54 89x54 83x56 75x57 curve 75x57 73x58 72x58 72x58 curve 72x58 
70x58 68x57 67x56 curve 67x56 65x56 64x55 64x54 curve 64x54 64x54 
65x54 66x53 curve 66x53 82x51 96x49 106x47 curve 106x47 110x46 112x46 
113x46 move 99x60 curve 99x60 100x60 101x60 102x61 curve 102x61 104x62 
106x63 106x64 curve 106x64 105x64 104x65 103x65 curve 103x65 98x65 
94x65 88x66 curve 88x66 85x66 81x67 76x68 curve 76x68 75x68 74x68 
74x68 curve 74x68 73x68 72x68 70x67 curve 70x67 69x67 68x66 68x66 
curve 68x66 68x65 69x65 70x65 curve 70x65 80x63 88x62 95x61 curve 
95x61 97x60 99x60 99x60 move 65x75 curve 65x75 66x75 68x75 70x76 
curve 70x76 72x77 73x77 73x78 curve 73x78 73x79 73x79 73x80 curve 
73x80 72x80 72x82 72x84 curve 72x84 72x89 72x94 71x98 curve 71x98 
70x102 69x106 68x109 curve 68x109 66x112 65x114 63x116 curve 63x116 
61x118 60x119 60x119 curve 60x119 60x119 59x118 59x118 curve 59x118 
59x118 59x118 60x117 curve 60x117 61x114 62x111 63x108 curve 63x108 
64x104 65x100 65x96 curve 65x96 66x92 66x88 66x84 curve 66x84 66x81 
66x79 65x78 curve 65x78 64x77 64x77 64x76 curve 64x76 64x75 64x75 
65x75 move 105x70 curve 105x70 105x70 107x71 110x72 curve 110x72 
113x74 114x75 114x76 curve 114x76 114x77 113x77 113x78 curve 113x78 
112x81 111x85 111x92 curve 111x92 111x96 111x99 111x101 curve 111x101 
112x102 112x104 112x106 curve 112x106 112x111 111x115 109x118 curve 
109x118 107x121 105x123 103x123 line 100x111 curve 100x111 101x111 
102x110 103x110 curve 103x110 104x108 105x103 105x96 curve 105x96 
105x91 104x86 104x79 curve 104x79 104x77 104x77 103x76 curve 103x76 
103x76 102x76 101x76 curve 101x76 100x76 97x76 92x77 curve 92x77 
84x78 79x79 75x79 curve 75x79 74x80 73x80 72x80 curve 72x80 71x80 
70x80 69x79 curve 69x79 68x78 68x77 68x77 curve 68x77 68x77 69x76 
70x76 curve 70x76 75x76 82x75 89x74 curve 89x74 94x72 99x71 101x70 
curve 101x70 103x70 105x70 105x70 move 93x109 curve 93x109 93x109 
93x109 94x109 curve 94x109 97x110 99x111 100x111 line 103x123 curve 
103x123 102x123 102x122 101x121 curve 101x121 98x117 96x114 93x111 
curve 93x111 92x110 92x110 92x110 curve 92x110 92x109 92x109 93x109 
move 98x83 curve 98x83 98x83 100x83 102x83 curve 102x83 104x84 105x84 
105x85 curve 105x85 105x86 103x86 101x87 curve 101x87 99x87 97x87 
95x88 curve 95x88 94x88 90x89 84x90 curve 84x90 80x90 78x91 77x91 
curve 77x91 75x91 74x91 73x90 curve 73x90 72x90 71x89 71x89 curve 
71x89 71x88 72x87 74x87 curve 74x87 81x86 88x85 95x83 curve 95x83 
97x83 98x83 98x83 move 97x94 curve 97x94 98x94 99x94 101x94 curve 
101x94 103x95 104x95 104x96 curve 104x96 104x97 103x97 101x98 curve 
101x98 98x98 96x98 94x99 curve 94x99 93x99 89x99 83x100 curve 83x100 
79x101 77x101 75x101 curve 75x101 74x101 73x101 72x101 curve 72x101 
70x100 70x100 70x99 curve 70x99 70x98 71x98 73x98 curve 73x98 80x97 
87x96 94x94 curve 94x94 96x94 97x94 97x94 move 83x32 curve 83x32 
84x32 85x32 88x33 curve 88x33 90x34 91x35 91x36 curve 91x36 91x37 
91x37 90x39 curve 90x39 90x42 89x45 89x49 line 89x90 curve 89x90 
89x98 88x105 87x111 curve 87x111 86x115 86x117 85x117 curve 85x117 
84x117 83x116 83x113 curve 83x113 83x108 83x102 83x94 line 83x43 
curve 83x43 83x40 82x37 82x35 curve 82x35 81x34 81x33 81x33 curve 
81x33 81x32 82x32 83x32]]]]
Geomol:
21-Dec-2006
Chinese! :-) Cool! To better see the character, you can make it larger 
with this:

view layout [
	box 4 * 128x128 black effect [draw [
	scale 4.0 4.0
	anti-alias on
... followed by the rest of Jerry's program.
Gregg:
27-Dec-2010
If you expect to support large, dense, spreadsheets, you may want 
to minimize storage by having a name mapping interface. If the target 
is small/medium/sparse sheets, having the name explicit for each 
cell may be practical. In any case, having a alias system would be 
nice, for named cells and ranges.
Group: I'm new ... Ask any question, and a helpful person will try to answer. [web-public]
sqlab:
15-May-2009
You can acces the your free items of the last group with names
you can use e.g
  alias 'first "portn"
  alias 'second "disabled"
  alias 'third "vlan"
Gregg:
22-Dec-2009
Yeah, R2 isn't great for creating "slick" interfaces without the 
use of graphics. Use can draw text with anti-alias, but most scripts 
just do things the easy way.


The pencil icon is handy as well, so you can use ctrl+s to send. 
I imagine you've already done that, but for others listening in...
Fork:
23-Dec-2009
Hello again all,  I'm BrianD (but be glad that's not my alias or 
it would make the Wiki back-and-forth with BrianH even harder to 
read).
Kaj:
10-Oct-2011
Todun, contexts and objects are the same in REBOL. The object word 
is just used as an alias name because other languages call them that
Group: Dialects ... Questions about how to create dialects [web-public]
Fork:
27-Jun-2010
If Alias permits one to set up word equivalencies, then it's solving 
a problem I have with Rebmu.
Group: DevCon2005 ... DevCon 2005 [web-public]
JaimeVargas:
18-Oct-2005
Will is his alias name, not his real life name.
Group: !REBOL3-OLD1 ... [web-public]
[unknown: 5]:
8-Jan-2008
hey while your working on REBOL3 add something that can do this  
 alias object/item "myfunc"
BrianH:
8-Jan-2008
Paul, I'm not sure which of the arguments is supposed to be the alias 
and what is supposed to be aliased. Try
    myfunc: does [object/item]
or
    object/item: does [myfunc]
depending on which direction you meant.
BrianH:
8-Jan-2008
ALIAS is really only meant for internationalization. Assignment is 
for value aliasing, and functions are values.
[unknown: 5]:
25-Feb-2008
anyone know if alias will be updated in REBOL3 to support paths? 
 I would like to do something such as:

alias 'find/any "myfind" 

Currently, the alpha that I have gives an error that says:

** Script error: alias does not allow path! for its word argument
BrianH:
27-Feb-2008
No, nor should it. ALIAS is just for aliasing words to other words, 
primarily for internationalization. What you want is function wrappers, 
made easier with the APPLY native function in REBOL 3.
Henrik:
17-Oct-2008
fontize [

	base: [
		font: [
			color: black
			size: 12
			name: "Arial"
		]
		anti-alias: off
	]

	centered: base [
		para: [
			margin: 0x0
			origin: 0x0
			align: 'center
			valign: 'middle
		]
	]

	button: centered [
		font: [
			color: black
			style: 'bold
			size: 14

   shadow: [0x1 255.255.255.100] ; black shadow here. should be transparent 
   and bright.
		]
		para: [
			wrap?: false
		]
		anti-alias: on
	]

]
BrianH:
9-Feb-2009
The real advantage of list! wasn't the speed though, it was the alias 
persistancy. That was the source of the bugs in list! too.
Steeve:
27-Mar-2009
this what in text-draw.r (VID3 sources)
font-char-size?: funct [fstyle] [
	gob: make gob! [offset: 0x0 size: 300x100]
	gob/text: reduce [
		'font fstyle/font

  'para make fstyle/para [wrap?: off] ; avoid infinite loop font bug
		'anti-alias fstyle/anti-alias
		"M"
	]
	size-text gob
]
Anton:
3-Apr-2009
[ This whole post is mainly in the R2 mindset, but is somewhat relevant 
also to R3. ]


The technique of setting words directly into the global context like 
this:

	context [
		set 'o ...
	]


I do not like, because this code is modifying its environment - it 
has side-effects - thus, it is non-modular, and does not scale.

Being non-modular means large software systems can't be built up 
reliably, because the cumulative effect of all those side-effects 
will eventually cause name-clashes in the global context, so that 
some word exported from one context will be overwritten by the same 
word exported from another context.

For example, suppose I've seen two graphics demos by two different 
authors. They each have an awesome graphics processing routine and 
I decide that I would like to combine both routines into a single 
program. They each wrapped their code up in a context and exported 
a word 'process-image, like so:

	; From author #1
	context [
		set 'process-image does ...
	]

	; From author #2
	context [
		set 'process-image func ...
	]


You can imagine that each of these "modules" also has a large amount 
of supporting code, local variables and functions, and each is in 
a large file on the respective author's website. Somewhere in the 
middle of each of these files, in the CONTEXT body code, are the 
SET lines which export the words into the global context.

When I write my program to combine both of these "modules", I will 
probably write code like:

	; Acquire all dependencies
	do %image-processor.r  ; By author #1
	do %super-gfx.r  ; By author #2

	; Create an image and manipulate it.
	my-image: make image! 400x400
	process-image my-image ...


and here I realise that there is a name-clash with the 'process-image 
word, which is set only to the value exported by the second author.
So what do I do?

Here are some theoretical approaches, which have their own problems.

1) I could reload each file just before use:

	do %image-processor.r  ; By author #1
	process-image my-image ...
	do %super-gfx.r
	process-image my-image ...


  Each "module" is not expecting to be used this way, so this has problems 
  like:

  - "Static" locals which are intended to remain in memory will be 
  lost each time the file is reloaded.

  - Performance could suffer; each file could be large, and many calls 
  to 'process-image might be done.


2) I could set the first imported word to my own chosen word before 
importing the second "module". eg

	do %image-processor.r  ; By author #1

 process-image2: :process-image  ; Create an alias, as 'process-image 
 will be overwritten next line.
	do %super-gfx.r  ; By author #2

	; Now use
	process-image2 my-image ...
	process-image my-image ...


  But this means that a line of code has been created in the dependency 
  acquisition stage which has a complex interdependence between the 
  two "modules". They are not independent, and so individual dependency 
  acquisition lines can't be easily copied from this code and pasted 
  into a new script and expected to work right away. If copy/pasted, 
  the code will have to be examined, probably in great detail, to discover 
  what's going on and how to make it work. This will lead right back 
  into each source file, where the SET lines which export words to 
  the global context must be found. What great fun that will be in 
  a large software system built using many modules.


Another approach could be to try to bind each module code to a new 
context which contains the exported words, so they are isolated from 
each other... but this is complex.


All the above approaches are attempting to work around a single problem: 
that each "module" is exporting words where and when it likes, without 
consideration for the environment (other "modules", other global 
words etc.) This is "global namespace pollution" and the approaches 
above just introduce more problems in trying to work around it.


The solution to all this, is, in my view, for modules to declare, 
in the script header, the words that are intended to be exported, 
but for the module code not to actually perform the exports. This 
should be done by the user code, at its option. If a large module 
provides an API of 10 functions, then those function words should 
not be forced into the global context. The user script should be 
able to choose which, if any, of those words to import, and into 
which context it would like to import them. Additionally, the exported 
word value should be importable to a differently-named word, which 
can solve the name-clash problem we have above.

If modules do not use SET, but instead declare their "export" words 
in the script header, then digging through code to find side-effects 
should no longer be necessary. In R2, this requires that all module 
authors adhere to this type of module system, and declare their "export" 
words in a standard fashion.


In R3, I'm hoping the module system will develop into one which can 
enforce the modularity of modules, so that a user script can be sure 
that there were no side-effects introduced by loading any module.
Reichart:
10-Apr-2009
I so miss the Amiga's alias command...
Pekr:
10-Apr-2009
Hmm, there is maybe even something like Alias in Windows, no? At 
least in DOS there was some command .... but - never mind, I went 
off-topic here ...
Louis:
7-May-2009
If I gave Firefox the alias of "browse"  would that solve this problem?
BrianH:
12-Jun-2009
Well, some of the module capabilities aren't done yet (as I mentioned 
above), mostly because most of the system hasn't been converted to 
modules yet. One of the current gotchas is that system/contexts/current, 
system/contexts/system, system/contexts/exports, and system/words 
are all the same object. In the final module system, the first three 
should be separate contexts and system/words should be gone (it is 
now an alias for system/contexts/current).
BrianH:
22-Jun-2009
In R2, where as-binary is an alias:
>> a: "aa" same? a as-binary a
== false

Differing word types should behave the same, even when bound to the 
same context.
Ladislav:
4-Jul-2009
Equivalent?: ignores datatype differences, alias distinctions, character 
case differences
Steeve:
21-Aug-2009
i never use ALIAS
Sunanda:
21-Aug-2009
Re ALIAS -- it has several security and other issues.

Enabling it via SECURE is a good way of limiting the inadvertent 
damage it can do....And of drawing attention to its dangers for any 
casual dabbler.
Pekr:
4-Sep-2009
Robert - do you need such lazy evaluation? I mean - even 'alias seems 
being removed from R3. Don't we have enough of reflectivity? Anyway 
- anyone who imo wants to propose something, should definitely do 
so in terms of CureCode or R3 Chat, or Carl WILL NOT know about the 
request at all, and your only chance here will be BrianH :-)
Gerard:
8-Sep-2009
Just read a R3 blog post about the future of the alias cmd in R3. 
Someone commented that we should see the state of the art : http://www.extjs.com/products/gxt/
 not too foolish but can we do something similar with R2 or R3 ? 
That's where I would like  to go with R2 and R3 ...
Pekr:
16-Sep-2009
dunno ... Carl is less active for more than 2 weeks. Maybe even more 
- Axing alias was typical trick of Carl, to post some less important 
blog and keep us busy :-)
Tomc:
5-Nov-2009
origanally there was just mod  I may have assumed the rest were alias'
Steeve:
21-Dec-2009
some proposals for a short  alias of  QUOTE.
ice
lay
sit
Steeve:
21-Dec-2009
i just think about an alias to shorten our code, the standardd word 
QUOTE would stay.
Group: !Cheyenne ... Discussions about the Cheyenne Web Server [web-public]
Graham:
7-Mar-2009
What if I use different names for the database, and then alias them 
in the webapp init ?  Then could i just run the one Cheyenne?
BrianH:
3-Apr-2009
Same error after upgrading Chromium, here's the verbose 5 log of 
the request:


3/4-01:38:00.891-[HTTPd] ================== NEW REQUEST ==================

3/4-01:38:01.531-[HTTPd] Request Line=>POST /ecg/blah.rsp HTTP/1.1

3/4-01:38:02.109-[HTTPd] Trying phase method-support ( mod-static 
)

3/4-01:38:02.828-[HTTPd] Trying phase url-translate ( mod-static 
)
3/4-01:38:03.062-[uniserve] Calling >on-received< with {^M
Host: localhost:8080^M
Connection: keep-alive^M
Us}
3/4-01:38:03.547-[HTTPd] Request Headers=>
Host: localhost:8080
Connection: keep-alive

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 
(KHTML, like Gecko) Chrome/2.0.173.0 Safari/530.5
Referer: http://localhost:8080/ecg/blah.html
Content-Length: 153149
Cache-Control: max-age=0
Origin: http://localhost:8080

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryEv3SZArZWdjyznJZ

Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,bzip2,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3



3/4-01:38:03.797-[HTTPd] Trying phase url-to-filename ( mod-alias 
)
3/4-01:38:04.031-[HTTPd] => request processed
3/4-01:38:04.766-[HTTPd] Trying phase url-to-filename ( mod-rsp )
3/4-01:38:05-[HTTPd] => request processed

3/4-01:38:05.469-[HTTPd] Trying phase url-to-filename ( mod-internal 
)

3/4-01:38:05.719-[HTTPd] Trying phase url-to-filename ( mod-static 
)
3/4-01:38:05.969-[HTTPd] => request processed

3/4-01:38:06.453-[uniserve] >> Port: 3789, low-level reading: 17520

3/4-01:38:06.703-[uniserve] >> Port: 3789, low-level reading: 17520

3/4-01:38:06.953-[uniserve] >> Port: 3789, low-level reading: 17520

3/4-01:38:07.437-[uniserve] >> Port: 3789, low-level reading: 17520

3/4-01:38:07.906-[uniserve] >> Port: 3789, low-level reading: 19980

3/4-01:38:08.391-[uniserve] Calling >on-received< with "------WebKitFormBoundaryEv3SZArZWdjyznJZ^M^/Content-"

3/4-01:38:08.875-[uniserve] >> Port: 3789, low-level reading: 16680

3/4-01:38:09.344-[uniserve] >> Port: 3789, low-level reading: 17520

3/4-01:38:09.844-[uniserve] >> Port: 3789, low-level reading: 17520

3/4-01:38:10.312-[uniserve] >> Port: 3789, low-level reading: 1149

3/4-01:38:10.797-[uniserve] Calling >on-received< with {037.17923" 
"4429 SUNNYSLOPE RD SW" "Port Orchard" }

3/4-01:38:11.266-## Error in [uniserve] : On-received call failed 
with error: make object! [
    code: 303
    type: 'script
    id: 'expect-arg
    arg1: 'insert
    arg2: 'series
    arg3: [series! port! bitset!]
    near: [insert/part tmp/port s skip e]
    where: 'process-bounded-content
] !
3/4-01:38:11.734-[uniserve] Port closed : 127.0.0.1
Dockimbel:
1-Sep-2009
Currently there's only URL=>script aliasing available, but looking 
at the ALIAS code, I think that : 
	alias ".html" /cgi-bin/rebol-cgi-dispatch.cgi

might work (need to be tested). Do you really think that there's 
much users waiting for that feature?
Will:
19-Sep-2009
Maybe alias can do as well, look in heepd.cfg, there are examples 
for both
Henrik:
19-Sep-2009
also alias is not working for me.
Dockimbel:
20-Sep-2009
Henrik, trying to answer your questions/issues :


to serve multiple document roots on the same site without having 
separate domain names

 => Use sub-domains for such isolation. Everything that's under one 
 domain can be accessed with /.. parent syntax. I think that you can 
 hack it around with ALIAS, custom webapps on-page-start event  handler, 
 but there aren't clean solutions. Use sub-domains for such isolation.

I think webapps require a bit more than static pages?

 => Just to make it clear, webapps are REBOL applications interfaced 
 with external world using RSP scripts. Webapp are not meant to be 
 container for *only* static pages (HTML/CSS/JS/images).


attempt [load join request/config/root-dir %/app-init.r] ; TBD: report 
errors !!! [...] 
RSP: error in events from %app-init.r now logged. 
That's from the change log. That's not correct.

 => Yes it is. What's being logged so far is the errors caught at 
 runtime in event functions declared in app-init. What need to be 
 logged is the LOAD %app-init.r process (syntax errors at boot time).


after a lot of experimentation, the latest encapped version was the 
only one that worked properly.

 Both encap and sources versions works well on Win/Mac/Unix. The issues 
 you have are related to running a rebol app as daemon in console 
 mode on a remote Unix server (without a UI desktop). Cheyenne can 
 work in source mode on such server, but it's much easier and pratical 
 to use it in binary form in such case (typical remote linux server 
 case).
Dockimbel:
15-Oct-2009
looking into mod-alias to see what's going on.
Dockimbel:
22-Oct-2009
Try with ALIAS keyword. See ChangeLog file for more info (search 
for ALIAS).
Janko:
22-Oct-2009
alias "/path/to/target" %script  -- I found this  .. can I use regex 
or something else to do 

AliasMatch ^/some-(.*) /script.rsp?a=$1
Dockimbel:
22-Oct-2009
Btw, alias "/path" %script, should work for whole /path/*.
Janko:
22-Oct-2009
could I do something like alias all except some pattern: for example 
all except /static/
Janko:
22-Oct-2009
alias "/show/" %www/mobispots.net/show.rsp -- gives me normal 404 
of cheyenne  (or any nonexistent file) 
<html><body><h1>404 Page not found</h1></body></html>

alias "/show/" %show.rsp -- gives me 
#[object! [
    code: 502
    type: access
    id: cannot-open

    arg1: %/D/devel/cheyenne0919/www/mobispots.net/www/mobispots.net/
    arg2: #[none]
    arg3: #[none]
    near: [change-dir first splitted: split-path file]
    where: #[none]
]]
Dockimbel:
22-Oct-2009
There no exceptions support in Alias. The rewrited url should be 
available in request/headers/location.
Janko:
22-Oct-2009
this is my config that makes error when I go on localhost/show/
default [	
	root-dir %www/mobispots.net/	
	default [%index.html %index.rsp %index.php]	
	on-status-code [ 404 "/custom404.html" ]	
	alias "/show/" %show.rsp
]
Dockimbel:
22-Oct-2009
It's not related to ALIAS but to another config option (REDIRECT).
Will:
4-Jan-2010
anyone here had problem using mod-alias? I'm not using it but have 
an old patch and would appreciate some user cases where current version 
fail before subitting to Dock, thx
MikeL:
22-Feb-2010
On WinXP, I can not get Alias to work... e.g.  alias "/docs" %md.rsp 
    Is there any debugging mode to see what Alias thinks I am asking 
it to do?  From my testing, the .rsp script is not being invoked. 
 Can there be  an Alias in each sites definition in the config file?
Dockimbel:
23-Feb-2010
MikeL, I've added the alias issue to the new CC instance for Cheyenne. 
I let you add a ticket for the path issue with worker-libs.
Dockimbel:
23-Feb-2010
Is there any debugging mode to see what Alias thinks I am asking 
it to do?
 


Yes, with at least verbose level 2 (-vv), you get the "Translated 
file:" log line showing you the target file once config file rules 
have been applied.
Maxim:
17-Apr-2011
Doc yeah... I'm starting to be pretty knowledged on the phases (though 
some things still elude me a bit).


I'm just saying that some mods... like extapp, expire, action, alias, 
internal, etc...  probably have non-negligible effects in the chain 
that some other modules might react to or not (depending).  and its 
currently quite tricky to understand what effects the mods actually 
have on requests and response.


anyhow, as usual, Its not critique its just observation from someone 
"outside the box"   :-)
Dockimbel:
18-Apr-2011
i have a couple of ideas how to hack this, but what would be the 
correct" way?"


You could try using the ALIAS config option. Add this to the httpd.cfg 
file in a domain section (not sure if it would work in a webapp context):

    alias "/rest" %rest.rsp

and call your REST resources with:
    /rest/asd 
    /rest/qwe


In %rest.rsp, you can put your URL parsing code to produce a "REST 
routing" and return the JSON object. It might also work with "/" 
(untested).
onetom:
18-Apr-2011
Dockimbel: the alias "/" %x.r works too. beautiful.
onetom:
20-Apr-2011
onetom ~/rebol/delete $ cat httpd.cfg 
modules [ internal extapp static rsp alias ]
globals [ listen [8888]    bind RSP to [ .r ] ]
default [ debug root-dir %./ alias "/test" %test.r ]

onetom ~/rebol/delete $ cat test.r 
<% print request %>


onetom ~/rebol/delete $ rm chey-*.log; rebol -qws ~/rebol/cheyenne-server-read-only/Cheyenne/cheyenne.r 
-w 0 -vvv


onetom ~/rebol/delete $ curl -X DELETE -D- http://localhost:8888/test
HTTP/1.1 404 Not Found
Server: Cheyenne/0.9.20
Date: Wed, 20 Apr 2011 11:14:04 GMT
Content-Length: 53
Content-Type: text/html
Connection: close

<html><body><h1>404 Page not found</h1></body></html>


>> p: open/no-wait/direct tcp://localhost:8888
>>  insert p "DELETE /show.rsp HTTP/1.0^/^/"
>> probe copy p
{HTTP/1.1 404 Not Found
Server: Cheyenne/0.9.20
Date: Wed, 20 Apr 2011 11:17:34 GMT
Content-Length: 53
Content-Type: text/html
Connection: close

<html><body><h1>404 Page not found</h1></body></html>}



u were doing 1.0 DELETE request though, but it didn't make any difference.

onetom ~/rebol/cheyenne-server-read-only/Cheyenne $ svn up
U    mods/mod-action.r
Updated to revision 131.
Dockimbel:
20-Apr-2011
- modules [ internal extapp static rsp alias ] : it is missing 'action 
module which is required for external handlers (RSP and CGI)
onetom:
2-May-2011
im trying to put an alias into a webapp. is it possible?
Dockimbel:
2-May-2011
In theory, it should be possible, but never tested. I'm having a 
quick look at 'alias code atm...
Dockimbel:
2-May-2011
I don't see anything in the 'alias implementation preventing it to 
work from within a webapp.
Dockimbel:
2-May-2011
Works here. Here is my webapp config:
	webapp [
		virtual-root "/testapp"
		root-dir %www/testapp/
		auth "/testapp/login.rsp" 
	
		alias "/testapp/hello" %testapp/login.rsp
	]
onetom:
2-May-2011
btw, that error at ! is logged even if my cfg file is only
$ cat httpd.cfg
modules [ internal extapp static action rsp alias ]
globals [ listen [8080]    bind-extern RSP to [ .r ] ]
onetom:
2-May-2011
hmm... cheyenne binary and the source works differently w the same 
configfile.
$ cheyenne --version
0.9.20.129
WORKS
latest source doesn't work with the following config:

modules [ internal extapp static action rsp alias ]
globals [ listen [8080]    bind RSP to [ .r ] ]
guan-huat [ debug root-dir %./ alias "/docs" %jsondb/to-json.r ]

im testing w $ curl http://guan-huat:8080/docs/test/1
onetom:
4-May-2011
hmm... how can i map a directory under a certain path in vhost? im 
trying this:
yp [  root-dir %~/p/ob/yp  alias "/public" %../public/ ]

then for curl http://yp:8080/public/angular-0.9.15.min.js  i get

HTTP/1.1 301 Moved Permanently
Location: /public/angular-0.9.15.min.js/

wtf?

i remember seeing something like "/some/path" [ options ] in a vhost 
config block, but i can't find anything about it now
onetom:
6-May-2011
im loading libraries from on-application-start, then i was hoping 
to load some static data too, but the words i assign there can't 
be found in my script later.

the script is called via an alias though which was specified within 
a webapp section.

on-application-start: does [
do %some/lib.r
db: %db/dir/some/where/
]

httpd.cfg:
vhost [
  webapp [
    alias "/xxx" "db.r"
  ]
]


db.r can't access the db variable, although it can use the words 
defined in the library loaded by 'do
Kaj:
6-May-2011
By the way, I still want to get rid of the loading of the REBOL CGI 
script on each request, even though I've minimised its size. It's 
a fallback script that now executes in the not-found handler. If 
I would change it from a fast-rebol-cgi script to an .r script, and 
put it in an ALIAS handler, would that preempt the loading of the 
script one each request? I'm not using the RSP interface, so the 
loading of that would be extra overhead. Would it still be faster 
than loading the small fast-rebol-cgi script?
Group: !REBOL3 Extensions ... REBOL 3 Extensions discussions [web-public]
Geomol:
26-Aug-2009
When using a Mac, you look at an OpenGL output. If you use the zoom 
function, there is a key combination to put anti-alias on/off. If 
it's off, you see the correct pixels, as there is in the drawing 
(bitmap). But you're right, if you put in anti-aliasing and other 
effects, it can look different on different hardware.
Group: !REBOL3 GUI ... [web-public]
Ashley:
28-Jan-2010
Reposting from R3 chat (which seems a bit quiet lately).


I've been looking at the rich text gob! functionality and it seems 
the following dialect commands are supported:

	anti-alias logic!
	bold [off]
	italic [off]
	underline [off]
	size integer!
	left|center|right
	drop integer!
	font object!
	para object!
	caret object!
	scroll pair!
	string!


Are there any I've missed? Any doco on this yet? I havn't figured 
out how to use drop or caret yet. Anyone have any working examples 
for these?


A design question: is there any reason for retaining font and para 
support given that we could move the few remaining unsupported words 
out of those objects and into the dialect itself? (e.g. have the 
dialect directly support font names and valign words).


Also, it would be nice if we had control over the default font name, 
size and alignments [at the very least]. Perhaps a system/view/text 
object?
Ashley:
29-Jan-2010
Any way of using anti-alias with caret? Seems:

	[text: [anti-alias on s caret c]]


kills the caret and font/para objects don't have an anti-alias word.
ssolie:
20-Nov-2010
Just tried to run the style-browser.r3 on Amiga and hit the following 
problem
>> do %r3-gui.r3

Script: "Untitled" Version: none Date: none

>> do %style-browser.r3

 Script: "R3 GUI Style Browser" Version: $Id: style-browser.r3 1179 
 2010-11-19 18:11:46Z Rebolek $ Date: none
** Script error: cannot 
 MAKE/TO image! from: make gob! [offset: 0x0 size: 400x300 alpha: 
 0 draw: [clip 0x0 400x300 anti-alias false pen false fill-pen 192.192.192 
 box 1x1 399x299 0 fill-pen false pen 64.64.64 line-cap square line-width 
 1.0 variable line [0x0.5 399x0.5] line-cap square line-width 1.0 
 variable line [0.5x0 0.5x299] line-cap square line-width 1.0 variable 
 line [0x299.5 399x299.5] line-cap square line-width 1.0 variable 
 line [399.5x0 399.5x299] clip 6x6 394x294 translate 6x6 line-width 
 1.0 variable pen 255.255.255 fill-pen false anti-alias true clip 
 0x0 0x0 pen false line-width 0.0 variable grad-pen linear normal 
 1x1 0x2...

Any ideas?
Group: !REBOL3 ... [web-public]
BrianH:
22-Jul-2010
Suggest both alternatives: Renaming it, or making an alias.
Maxim:
17-Sep-2010
yes.... wtf? as a small undocumented easter egg could be a nice little 
rebol detail   :-D   

basically it could be an alias for why?
Gregg:
17-Jul-2011
The original was written before MAP-EACH and the new COLLECT. Here 
is the source I have, updated to use those as the current version 
does, but with the last rule reverted to the original.

Related cc reports: 
    http://issue.cc/r3/1096
    http://issue.cc/r3/690

split: func [

    "Split a series into pieces; fixed or variable size, fixed number, 
    or at delimiters"
    series	[series!] "The series to split"

    dlm		[block! integer! char! bitset! any-string!] "Split size, delimiter(s), 
    or rule(s)." 

    /into	"If dlm is an integer, split into n pieces, rather than pieces 
    of length n."
    /local size count mk1 mk2
][
    either all [block? dlm  parse dlm [some integer!]] [
            map-each len dlm [
                either positive? len [
                    copy/part series series: skip series len
                ] [
                    series: skip series negate len

                    ; return unset so that nothing is added to output
                    ()
                ]
            ]
    ][
        size: dlm   ; alias for readability
        collect [
            parse/all series case [
                all [integer? size into] [

                    if size < 1 [cause-error 'Script 'invalid-arg size]
                    count: size - 1
                    size: round/down divide length? series size
                    [

                        count [copy series size skip (keep/only series)]
                        copy series to end (keep/only series)
                    ]
                ]
                integer? dlm [

                    if size < 1 [cause-error 'Script 'invalid-arg size]

                    [any [copy series 1 size skip (keep/only series)]]
                ]

                'else [ ; = any [bitset? dlm  any-string? dlm  char? dlm]

                    [any [mk1: some [mk2: dlm break | skip] (keep copy/part mk1 mk2)]]
                ]
            ]
        ] 
    ]
]
Gregg:
17-Jul-2011
split: func [

    "Split a series into pieces; fixed or variable size, fixed number, 
    or at delimiters"
    series	[series!] "The series to split"

    dlm		[block! integer! char! bitset! any-string!] "Split size, delimiter(s), 
    or rule(s)." 

    /into	"If dlm is an integer, split into n pieces, rather than pieces 
    of length n."

    /local size piece-size count mk1 mk2 res fill-val add-fill-val
][
    either all [block? dlm  parse dlm [some integer!]] [
        map-each len dlm [
            either positive? len [
                copy/part series series: skip series len
            ] [
                series: skip series len
                ; return unset so that nothing is added to output
                ()
            ]
        ]
    ][
        size: dlm   ; alias for readability
        res: collect [
            parse/all series case [
                all [integer? size  into] [

                    if size < 1 [cause-error 'Script 'invalid-arg size]
                    count: size - 1

                    piece-size: to integer! round/down divide length? series size
                    if zero? piece-size [piece-size: 1]
                    [

                        count [copy series piece-size skip (keep/only series)]
                        copy series to end (keep/only series)
                    ]
                ]
                integer? dlm [

                    if size < 1 [cause-error 'Script 'invalid-arg size]

                    [any [copy series 1 size skip (keep/only series)]]
                ]

                'else [ ; = any [bitset? dlm  any-string? dlm  char? dlm]

                    [any [mk1: some [mk2: dlm break | skip] (keep/only copy/part mk1 
                    mk2)]]
                ]
            ]
        ]

        ;-- Special processing, to handle cases where the spec'd more items 
        in

        ;   /into than the series contains (so we want to append empty items),

        ;   or where the dlm was a char/string/charset and it was the last 
        char

        ;   (so we want to append an empty field that the above rule misses).
        fill-val: does [copy either any-block? series [[]] [""]]
        add-fill-val: does [append/only res fill-val]
        case [
            all [integer? size  into] [

                ; If the result is too short, i.e., less items than 'size, add
                ; empty items to fill it to 'size.

                ; We loop here, because insert/dup doesn't copy the value inserted.
                if size > length? res [
                    loop (size - length? res) [add-fill-val]
                ]
            ]
            ; integer? dlm [
            ; ]

            'else [ ; = any [bitset? dlm  any-string? dlm  char? dlm]

                ; If the last thing in the series is a delimiter, there is an

                ; implied empty field after it, which we add here.
                case [
                    bitset? dlm [

                        ; ATTEMPT is here because LAST will return NONE for an 

                        ; empty series, and finding none in a bitest is not allowed.

                        if attempt [find dlm last series] [add-fill-val]
                    ]
                    char? dlm [
                        if dlm = last series [add-fill-val]
                    ]
                    string? dlm [
                        if all [
                            find series dlm
                            empty? find/last/tail series dlm
                        ] [add-fill-val]
                    ]
                ]
            ]
        ]
                
        res
    ]
]
Gregg:
17-Jul-2011
split: func [

    "Split a series into pieces; fixed or variable size, fixed number, 
    or at delimiters"
    series	[series!] "The series to split"

    dlm		[block! integer! char! bitset! any-string!] "Split size, delimiter(s), 
    or rule(s)." 

    /into	"If dlm is an integer, split into n pieces, rather than pieces 
    of length n."

    /local size piece-size count mk1 mk2 res fill-val add-fill-val
][
    either all [block? dlm  parse dlm [some integer!]] [
        map-each len dlm [
            either positive? len [
                copy/part series series: skip series len
            ] [
                series: skip series negate len
                ; return unset so that nothing is added to output
                ()
            ]
        ]
    ][
        size: dlm   ; alias for readability
        res: collect [
            parse/all series case [
                all [integer? size  into] [

                    if size < 1 [cause-error 'Script 'invalid-arg size]
                    count: size - 1

                    piece-size: to integer! round/down divide length? series size
                    if zero? piece-size [piece-size: 1]
                    [

                        count [copy series piece-size skip (keep/only series)]
                        copy series to end (keep/only series)
                    ]
                ]
                integer? dlm [

                    if size < 1 [cause-error 'Script 'invalid-arg size]

                    [any [copy series 1 size skip (keep/only series)]]
                ]

                'else [ ; = any [bitset? dlm  any-string? dlm  char? dlm]

                    [any [mk1: some [mk2: dlm break | skip] (keep/only copy/part mk1 
                    mk2)]]
                ]
            ]
        ]

        ;-- Special processing, to handle cases where the spec'd more items 
        in

        ;   /into than the series contains (so we want to append empty items),

        ;   or where the dlm was a char/string/charset and it was the last 
        char

        ;   (so we want to append an empty field that the above rule misses).
        fill-val: does [copy either any-block? series [[]] [""]]
        add-fill-val: does [append/only res fill-val]
        case [
            all [integer? size  into] [

                ; If the result is too short, i.e., less items than 'size, add
                ; empty items to fill it to 'size.

                ; We loop here, because insert/dup doesn't copy the value inserted.
                if size > length? res [
                    loop (size - length? res) [add-fill-val]
                ]
            ]
            ; integer? dlm [
            ; ]

            'else [ ; = any [bitset? dlm  any-string? dlm  char? dlm]

                ; If the last thing in the series is a delimiter, there is an

                ; implied empty field after it, which we add here.
                case [
                    bitset? dlm [

                        ; ATTEMPT is here because LAST will return NONE for an 

                        ; empty series, and finding none in a bitest is not allowed.

                        if attempt [find dlm last series] [add-fill-val]
                    ]
                    char? dlm [
                        if dlm = last series [add-fill-val]
                    ]
                    string? dlm [
                        if all [
                            find series dlm
                            empty? find/last/tail series dlm
                        ] [add-fill-val]
                    ]
                ]
            ]
        ]
                
        res
    ]
]
Group: !REBOL3 Modules ... Get help with R3's module system [web-public]
BrianH:
22-Oct-2010
For the sake of completeness, here are the highlights of the alpha 
108 changes:

- Script headers can have an options block, a simple block of flag 
words. User extensible.

- The standard script header now has a lot fewer words in it. More 
stuff is optional or in the options block.

- Script compression, either binary and base 64 binary! encoded. 
Automatic, transparent.

- Script checksums, both to verify the script and for IMPORT to compare 
with. Applies to decompressed source.

- An optional script length header field (like http's Content-Length). 
This allows binary script embedding.

- Internal support for getting the end of an embedded script, so 
a multi-loader is possible.

- The 'content and 'isolate header fields are changed to option words. 
The content is still saved to a 'content header field.

- The 'content field, if set, is set to the start position of the 
script proper, even if there is stuff before it.

- The whole system/contexts/system concept is gone, as part of the 
system restructuring. Now we have SYS.

- The system/contexts/exports concept is gone too, replaced by a 
not-module-specific runtime library called LIB.

- The old type: 'extension is now the 'extension header option word. 
The only module type is 'module. And it's optional for most code.

- Mixins are now called "private modules", and are flagged by the 
'private option word. And they can have names.

- Private modules can be added to the system modules list (because 
of the names). This lets them be reused without being reloaded.

- Unnamed modules are now prohibited (until alpha 109, where they 
become private modules that reload every time).

- Delayed modules, which can be partially loaded and then not fully 
made until they are imported. Use the 'delay option word.

- A HIDDEN module source keyword, which applies PROTECT/hide to a 
word or words. Acts like the EXPORT keyword.

- Better errors are triggered when the bad things happen. Including 
new error codes.

- DO and MAKE--MODULE intrinsics are now in sys, as DO* and MAKE-MODULE*. 
No more system/intrinsics.

- DO-NEEDS is no longer exported (it's in sys). IMPORT block is a 
public alias for DO-NEEDS anyways.

- MODULE now makes modules that act more like those in script files. 
And has /mixin support too.

- A whole bunch of changes and fixes to native functions to support 
the above stuff.
Group: !REBOL3 Proposals ... For discussion of feature proposals [web-public]
Andreas:
20-Jan-2011
How about a minor addition to/restructuring of the comparison functions:
- equal?
- equiv?: equal + binding

- strict-equal?: equal + type + case + alias + decimal  (but _no_ 
binding)
- srict-equiv?: strict-equal + binding
- same?: as currently


(See http://www.rebol.net/wiki/Comparisons#EQUAL.3Ffor the status 
quo.)
Andreas:
20-Jan-2011
strict-* makes alias distinctions.
BrianH:
20-Jan-2011
Oh, right. All words are aliased. That's how case insensitivity is 
implemented in R3. So case = alias for words.
Andreas:
20-Jan-2011
maybe alias implies case, but case does not imply alias.
Andreas:
20-Jan-2011
What we seem to be missing at the moment is a comparison function 
with ignores binding but is otherwise "strict" in the sense of type/case/alias/decimal 
precision.
Andreas:
20-Jan-2011
So let's update this with the decimal precision moved:

- equal?
- strict-equal?: equal + type + case + alias

- equiv?: equal + binding + decimal 
- strict-equiv?: equiv + type + case + alias

- same?: as currently
Andreas:
20-Jan-2011
Edit "no aliasing" to "alias distinctions". Thanks.
Andreas:
20-Jan-2011
Equal plus alias distinction
 was clearer to me.
BrianH:
20-Jan-2011
Actually, that feature might go away. The ALIAS function has been 
a big hassle in R3 because of the lack of a central system/words 
repository. We are likely to keep the aliasing facility for internal 
use to implement case insensitivity, but the ALIAS function to do 
other kinds of aliasing may go away.
Andreas:
20-Jan-2011
But as of A110, we still have it  :) So to formulate the wish on 
that basis, we need to take it into account, or someone else will 
hassle us about having left out alias.
101 / 2441[2] 3