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: