World: r3wp
[Core] Discuss core issues
older newer | first last |
Geomol 5-Sep-2005 [1836] | If I exclude mycontext from prg1.r binding the words to the global context, then it works. But that's not a nice solution. |
Ladislav 5-Sep-2005 [1837x3] | this may work: prg1.r: REBOL [] mycontext: context [ #include %prg2.r o: context [ f: does [print "Hello World!"] ] f2 ] |
include %prg1.r | |
you just have to use my INCLUDE function | |
Geomol 5-Sep-2005 [1840] | Okay, taking a look... |
Ladislav 5-Sep-2005 [1841] | http://www.fm.vslib.cz/~ladislav/rebol/include.r |
Geomol 5-Sep-2005 [1842] | Hmm, still doesn't work. |
Ladislav 5-Sep-2005 [1843] | checking |
Geomol 5-Sep-2005 [1844x2] | REBOL [] do %include.r mycontext: context [ include %prg2.r o: context [ f: does [print "Hej!"] ] f2 ] ; context |
That was prg1.r | |
Ladislav 5-Sep-2005 [1846x2] | wrong |
do %include.r can be only in your user.r | |
Geomol 5-Sep-2005 [1848] | okay |
Ladislav 5-Sep-2005 [1849] | and, moreover, copy the example I posted, don't forget #include ! |
Geomol 5-Sep-2005 [1850x4] | So I do #include %prg2.r inside mycontext in prg1.r? And then write include %prg1.r to run it? |
>> include %prg1.r ** Script Error: o has no value ** Where: f2 ** Near: o/f | |
oops sorry, forgot something. I got it working now. | |
Thanks! | |
Ladislav 5-Sep-2005 [1854] | you are welcome, what did you forget, btw? (asking to be able to warn other users) |
Geomol 5-Sep-2005 [1855] | Mixed include with #include |
Ladislav 5-Sep-2005 [1856x3] | yes, that is a gotcha |
I should probably write some instructions | |
do you find INCLUDE useful? | |
Geomol 5-Sep-2005 [1859] | I wish, something like your include would be part of core. I'm about to use such a functionality with my Canvas project, but it's not optimal, as it is now. |
Ladislav 5-Sep-2005 [1860] | INCLUDE is available for you, it would be even better if you wrote a few usage notes |
Geomol 5-Sep-2005 [1861] | The functionality is very usefull. (Maybe your include can do a bit too much. I like it simple.) Maybe I could just do %include.r at the start of canvas.r, so people doesn't have to do it in their user.r files. Or I should go another way and make it one big file for now!? Hmmm well, I would like to do modules later on, so only the parts needed is included. |
Ladislav 5-Sep-2005 [1862x2] | generally #include %something means "put here the contents of %something", while include %something means "find %something, process it and do the result" |
regarding your questions: you can use INCLUDE to make a one big file if you like | |
Geomol 5-Sep-2005 [1864] | But as I understand it, rebol doesn't allow contexts to be mix-matched, like I would like to do with a simple: do %something.r |
Ladislav 5-Sep-2005 [1865x3] | There is a way how to do %include in your files, if required, of course |
DO doesn't work as that, it simply does the file without including its contents | |
in this case holds, that DO isn't the instrument that can be used for this kind of work | |
Geomol 5-Sep-2005 [1868] | How do I use INCLUDE to make one big file from scripts? |
Ladislav 5-Sep-2005 [1869x3] | include/link %input-file %output-file will create a big %output-file |
(which contains everything necessary to DO it) | |
you can try it on your example to see the difference | |
Geomol 5-Sep-2005 [1872x3] | Like: include/link %prg1.r %output.r include/line %prg2.r %output.r ? |
line = link | |
It just makes %output.r the same as %prg2.r | |
Ladislav 5-Sep-2005 [1875x2] | include/link %prg1.r %complete-prg.r is enough |
the %complete-prg.r will contain %prg2.r | |
Geomol 5-Sep-2005 [1877] | ah! :-) |
Gabriele 5-Sep-2005 [1878x3] | one possible "simple" way: |
do bind load %prg2.r self | |
but if you have nexting contexts, you're going to need multiple binds. also, while DO changes dir to the script's location, LOAD doesn't. so there is a difference. but, you can get into this kind of problems with #include too. | |
Ladislav 6-Sep-2005 [1881x2] | yes, that is another variant, although I prefer #include in this case (it changes dir, btw.) |
(but only when doing preprocessing, i.e. some care needed anyway) | |
Geomol 6-Sep-2005 [1883x2] | Gabriele, thanks! That "do bind load <something> self" is, what I'm after. :-) |
That should be in the "Idiom Dictionary", Carl was talking about: http://www.rebol.net/article/0113.html (When REBOL/Services or LNS is out.) | |
Graham 12-Sep-2005 [1885] | anyone got a definition for ++ ? I thought I had seen one before but google failed me :( |
older newer | first last |