This file: http://angg.twu.net/blogme4/README.html (find-blogme4 "README") Author: Eduardo Ochs Varsion: 2013feb10 License: GPL3 What is BlogMe ============== BlogMe is an extensible language with a simple quoting rule. A "block" is a sequence of characters delimited by (balanced) "[]"s; the default way of executing a block is to parse its first "word" and then call the word's "code" (as in Lisp) with the result of running the word's "argument parsing function". For example, [* [+ 1 2] [+ 3 4]] calls _B["*"](3, 7), which evaluates to 21, while [Q [+ 1 2] [+ 3 4]] runs _B["'"]("[+ 1 2] [+ 3 4]"), which yields "[+ 1 2] [+ 3 4]". The argument parsing functions receive the address where the "arguments" start and end, and when the BlogMe base system starts up there are two predefined families of argument parsers: the "quoters", like what is used in the "Q" example above, and the "evaluators", like what is used in the "+". What documentation exists ========================= This, for the old version: http://angg.twu.net/blogme3.html (find-TH "blogme3) What is planned =============== I need to port my 250+ .blogme files from blogme3 to blogme4 (obviously). Blogme3 also htmlizes lots of ascii files, and produces a few makefiles. The support for sexp hyperlinks has just been rewritten - see: (find-angg "LUA/lua50init.lua" "Sexp") Also: (find-TH "index" "eev") (find-angg "LUA/lua50init.lua" "Repl") ---- all the rest is garbage (?) ---- Defining words ============== words "Q", "*" and "+" can be defined: See: (find-dn5 "README") Hi Marc! 8-) Please try this: unpack blogme4.tgz, then make clean; make The output should be something like: rm -fv blogme4-all.lua demo.html blogme4.tgz removed `blogme4-all.lua' removed `demo.html' removed `blogme4.tgz' lua5.1 blogme4-gen.lua Created: blogme4-all.lua From: common.lua eoo.lua def.lua eval.lua brackets.lua anggdefs.lua lua5.1 demo.lua blogme_eval(...) (Stuff outside "[htmlize ...]" is executed but not rendered). writefile("demo.html", html_output) Now browse: file:///home/edrx/blogme4/demo.html And then look at demo.html and demo.lua, of course. Here's an eepitch-y demo, that shows how easy it should be now to load blogme4 (it doesn't have any "require"s)... As you can see, the top-level words are just "def" and "blogme_eval".  (eepitch-lua51)  (eepitch-kill)  (eepitch-lua51) dofile "blogme4-all.lua" def [[ + 2 a,b a+b ]] def [[ * 2 a,b a*b ]] = blogme_eval "a[* [+ 1 2] [+ 3 4]]b [* 10 20]" --> a21b 200 (This is for me.)  (eepitch-shell)  (eepitch-kill)  (eepitch-shell) export LUA_INIT="" # (find-blogme4 "Makefile") # make clean; make # make clean; make S=$S LUA51=$(which lua5.1) all tgz make clean; make all tgz # (find-blogme4file "blogme4.tgz") # (find-blogme4 "blogme4.lua")  (eepitch-shell)  (eepitch-kill)  (eepitch-shell) cd ~/blogme4/ && make clean && make tgz rm -Rv /tmp/bme4/ mkdir /tmp/bme4/ cd /tmp/bme4/ tar -xvzf ~/blogme4/blogme4.tgz export LUA_INIT="" make clean; make tgz demos # ./blogme4.lua -e 'print(defs_as_lua())' ./blogme4.lua -o demo_i.html -i demo_i.blogme # (find-blogme4 "options.lua" "dooption_i")  (eepitch-lua51)  (eepitch-kill)  (eepitch-lua51) require "common" dofile "blogme4.lua" for _,bw in ipairs(sorted(keys(_B))) do PP(bw, _B[bw].body) end print(HREF) PP(HREF) PP("HREF", _G["HREF"]) PP(sorted(keys(_G))) PP(_G.HREF) PP(_G.print) PP(_G["print"]) PP(_B.HREF) PP(_B["HREF"]) PP(20, 30) p = pack(20, 30) PP(p) pack = function (...) return {..., n=select("#", ...)} end pack = function (...) return {n=select("#", ...), ...} end unpack = function (T) return table.unpack(T, 1, T.n) end PP(pack(20, 30)) # ./blogme4.lua -o options.lua.html -a2html options.lua # ./blogme4.lua -e 'dofile "demo.lua"' # lua51 demo.lua ls -l README* ls -l demo.* # (ee-cp "~/blogme4/blogme4.tgz" (ee-twupfile "blogme4/blogme4.tgz") 'over) # (ee-cp "~/blogme4/blogme4.tgz" (ee-twusfile "blogme4/blogme4.tgz") 'over) http://angg.twu.net/blogme4/ http://angg.twu.net/blogme4/README.html http://angg.twu.net/blogme4/blogme4.tgz  (eepitch-shell)  (eepitch-kill)  (eepitch-shell) cd /tmp/ rm -v blogme4.tgz wget http://angg.twu.net/blogme4/blogme4.tgz # (find-fline "/tmp/blogme4.tgz") -- Local Variables: -- coding: raw-text-unix -- ee-anchor-format: "«%s»" -- End: