|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
This file:
http://angg.twu.net/blogme4/README.html
(find-blogme4 "README")
Author: Eduardo Ochs <eduardoochs@gmail.com>
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: