From 7867c8c8287c4430d6fd5c8aed2e581ca4a9186d Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Wed, 31 Oct 2018 15:47:12 +0100 Subject: pre and post HTML templates for all txt2tags conversions Remaining: cleaning of t2t files (remove unnecessary options) --- bin/update_html | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'bin/update_html') diff --git a/bin/update_html b/bin/update_html index 75f54b13e..7777c7895 100755 --- a/bin/update_html +++ b/bin/update_html @@ -3,9 +3,38 @@ ### This script finds all .t2t (txt2tags) files and updates the corresponding ### .html file, if it is out-of-date. +config=".txt2tagsrc" +pre="_pre.html" +post="_post.html" +tmp="tmp.html" + find . -name '*.t2t' | while read t2t ; do html="${t2t%.t2t}.html" if [ "$t2t" -nt "$html" ] ; then - txt2tags -thtml "$t2t" + txt2tags --config-file="$config" --target=html "$t2t" + cat $pre $html $post > $tmp + mv $tmp $html + head1=$(head -n 1 "$t2t") + head2=$(tail -n+2 "$t2t" | head -n 1) + head3=$(tail -n+3 "$t2t" | head -n 1) + + # Replace "headers" from t2t in final HTML + # Documentation here: https://txt2tags.org/userguide/headerarea + if [ -n "$head1" ] ; then + sed -i.bak "s/{{HEAD1}}/$head1/" "$html" && rm "$html.bak" + else + sed -i.bak -E "s/<.+{{HEAD1}}.+>//" "$html" && rm "$html.bak" + continue # empty headers + fi + if [ -n "$head2" ] ; then + sed -i.bak "s/{{HEAD2}}/$head2/" "$html" && rm "$html.bak" + else + sed -i.bak -E "s/<.+{{HEAD2}}.+>//" "$html" && rm "$html.bak" + fi + if [ -n "$head3" ] ; then + sed -i.bak "s/{{HEAD3}}/$head3/" "$html" && rm "$html.bak" + else + sed -i.bak -E "s/<.+{{HEAD3}}.+>//" "$html" && rm "$html.bak" + fi fi -done \ No newline at end of file +done -- cgit v1.2.3 From 99dad489619ffb44301205975a8b2acac39939e9 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Sun, 4 Nov 2018 15:11:35 +0100 Subject: Use Pandoc instead of txt2tags binary, much more configurable --- .txt2tagsrc | 4 --- _post.html | 24 -------------- _pre.html | 16 ---------- bin/_template.html | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++ bin/update_html | 45 +++++++++++--------------- doc/gf-reference.t2t | 81 +++++++++++++++++++++++----------------------- download/index.t2t | 1 + 7 files changed, 149 insertions(+), 112 deletions(-) delete mode 100644 .txt2tagsrc delete mode 100644 _post.html delete mode 100644 _pre.html create mode 100644 bin/_template.html (limited to 'bin/update_html') diff --git a/.txt2tagsrc b/.txt2tagsrc deleted file mode 100644 index dd4b9503f..000000000 --- a/.txt2tagsrc +++ /dev/null @@ -1,4 +0,0 @@ -%!target: html -%!options: --no-headers -%!encoding: UTF-8 -%!postproc(html): '' '
' diff --git a/_post.html b/_post.html deleted file mode 100644 index 4973d2578..000000000 --- a/_post.html +++ /dev/null @@ -1,24 +0,0 @@ - - -
-
-
-
- Home -
-
-
-
- - - - - - diff --git a/_pre.html b/_pre.html deleted file mode 100644 index f9336e6f8..000000000 --- a/_pre.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - {{HEAD1}} - - - - -
-
- GF Logo -

{{HEAD1}}

-

{{HEAD2}}

-

{{HEAD3}}

-
diff --git a/bin/_template.html b/bin/_template.html new file mode 100644 index 000000000..fc100e1c4 --- /dev/null +++ b/bin/_template.html @@ -0,0 +1,90 @@ + + + + + + +$for(author-meta)$ + +$endfor$ +$if(date-meta)$ + +$endif$ +$if(keywords)$ + +$endif$ + $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ + +$if(highlighting-css)$ + +$endif$ +$for(css)$ + +$endfor$ +$if(math)$ + $math$ +$endif$ + +$for(header-includes)$ + $header-includes$ +$endfor$ + + +
+ +$if(title)$ +
+ GF Logo +

$title$

+$if(subtitle)$ +

$subtitle$

+$endif$ +$for(author)$ +

$author$

+$endfor$ +$if(date)$ +

$date$

+$endif$ +
+$endif$ +$if(toc)$ + +$endif$ +$body$ +
+ +
+
+
+
+ Home +
+
+
+
+ + + + + diff --git a/bin/update_html b/bin/update_html index 7777c7895..f7c0ad727 100755 --- a/bin/update_html +++ b/bin/update_html @@ -3,38 +3,29 @@ ### This script finds all .t2t (txt2tags) files and updates the corresponding ### .html file, if it is out-of-date. -config=".txt2tagsrc" -pre="_pre.html" -post="_post.html" -tmp="tmp.html" +# Path to this directory (not CWD) +# https://stackoverflow.com/a/246128/98600 +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" find . -name '*.t2t' | while read t2t ; do html="${t2t%.t2t}.html" if [ "$t2t" -nt "$html" ] ; then - txt2tags --config-file="$config" --target=html "$t2t" - cat $pre $html $post > $tmp - mv $tmp $html - head1=$(head -n 1 "$t2t") - head2=$(tail -n+2 "$t2t" | head -n 1) - head3=$(tail -n+3 "$t2t" | head -n 1) - - # Replace "headers" from t2t in final HTML - # Documentation here: https://txt2tags.org/userguide/headerarea - if [ -n "$head1" ] ; then - sed -i.bak "s/{{HEAD1}}/$head1/" "$html" && rm "$html.bak" - else - sed -i.bak -E "s/<.+{{HEAD1}}.+>//" "$html" && rm "$html.bak" - continue # empty headers - fi - if [ -n "$head2" ] ; then - sed -i.bak "s/{{HEAD2}}/$head2/" "$html" && rm "$html.bak" - else - sed -i.bak -E "s/<.+{{HEAD2}}.+>//" "$html" && rm "$html.bak" - fi - if [ -n "$head3" ] ; then - sed -i.bak "s/{{HEAD3}}/$head3/" "$html" && rm "$html.bak" + echo "$t2t" + relroot="$( dirname $t2t | sed -E 's/^.\///' | sed -E 's/[^/]+/../g' )" + pandoc \ + --from=t2t \ + --to=html5 \ + --standalone \ + --template="$DIR/_template.html" \ + --css="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" \ + --variable="rel-root:$relroot" \ + "$t2t" \ + --output="$html" + if [ -f "$html" ]; then + sed -i.bak "s/
/
/" "$html" && rm "$html.bak" + sed -i.bak -E "s/\`\`(.+)\`\`/\1<\/code>/g" "$html" && rm "$html.bak" else - sed -i.bak -E "s/<.+{{HEAD3}}.+>//" "$html" && rm "$html.bak" + echo "Error creating $html" fi fi done diff --git a/doc/gf-reference.t2t b/doc/gf-reference.t2t index aab828f0a..676a2088d 100644 --- a/doc/gf-reference.t2t +++ b/doc/gf-reference.t2t @@ -15,11 +15,11 @@ April 4, 2006 This is a quick reference on GF grammars. It aims to cover all forms of expression available when writing grammars. It assumes basic knowledge of GF, which -can be acquired from the +can be acquired from the [GF Tutorial http://www.grammaticalframework.org/doc/tutorial/gf-tutorial.html]. Help on GF commands is obtained on line by the -help command (``help``), and help on invoking -GF with (``gf -help``). +help command with ``help``, and help on invoking +GF with ``gf -help``. ===A complete example=== @@ -31,10 +31,10 @@ phrases //one pizza// and //two pizzas//. File ``Order.gf``: ``` abstract Order = { -cat - Order ; +cat + Order ; Item ; -fun +fun One, Two : Item -> Order ; Pizza : Item ; } @@ -42,13 +42,13 @@ fun File ``OrderEng.gf`` (the top file): ``` --# -path=.:prelude -concrete OrderEng of Order = +concrete OrderEng of Order = open Res, Prelude in { flags startcat=Order ; -lincat - Order = SS ; +lincat + Order = SS ; Item = {s : Num => Str} ; -lin +lin One it = ss ("one" ++ it.s ! Sg) ; Two it = ss ("two" ++ it.s ! Pl) ; Pizza = regNoun "pizza" ; @@ -84,10 +84,10 @@ File named ``Foo.gf`` contains module named Each module has the structure ``` -moduletypename = +moduletypename = Inherits ** -- optional open Opens in -- optional - { Judgements } + { Judgements } ``` Inherits are names of modules of the same type. Inheritance can be restricted: @@ -112,15 +112,15 @@ interface I -- like resource, but can have oper f : T without definition instance J of I -- like resource, defines opers that I leaves undefined -incomplete -- functor: concrete that opens +incomplete -- functor: concrete that opens concrete CI of A = one or more interfaces open I in ... concrete CJ of A = -- completion: concrete that CI with instantiates a functor by (I = J) instances of open interfaces -``` -The forms -``param``, ``oper`` +``` +The forms +``param``, ``oper`` may appear in ``concrete`` as well, but are then not inherited to extensions. @@ -134,11 +134,11 @@ Comments have the forms A ``concrete`` can be opened like a ``resource``. It is translated as follows: ``` -cat C ---> oper C : Type = +cat C ---> oper C : Type = lincat C = T T ** {lock_C : {}} -fun f : G -> C ---> oper f : A* -> C* = \g -> -lin f = t t g ** {lock_C = <>} +fun f : G -> C ---> oper f : A* -> C* = \g -> +lin f = t t g ** {lock_C = <>} ``` An ``abstract`` can be opened like an ``interface``. Any ``concrete`` of it then works as an ``instance``. @@ -155,7 +155,7 @@ fun f : T -- declare function f of type T def f = t -- define f as t def f p q = t -- define f by pattern matching data C = f | g -- set f,g as constructors of C -data f : A -> C -- same as +data f : A -> C -- same as fun f : A -> C; data C=f lincat C = T -- define lin.type of cat C @@ -166,7 +166,7 @@ printname fun f = s -- printname shown in menus printname cat C = s -- printname shown in menus printname f = s -- same as printname fun f = s -param P = C | D Q R -- define parameter type P +param P = C | D Q R -- define parameter type P with constructors C : P, D : Q -> R -> P oper h : T = t -- define oper h of type T @@ -207,14 +207,14 @@ P -- parameter type, if param P P => B -- table type, if P param. type {s : Str ; p : P}-- record type {s,t : Str} -- same as {s : Str ; t : Str} -{a : A} **{b : B}-- record type extension, same as +{a : A} **{b : B}-- record type extension, same as {a : A ; b : B} A * B * C -- tuple type, same as {p1 : A ; p2 : B ; p3 : C} Ints n -- type of n first integers ``` Resource (in ``oper``): all those of concrete, plus -``` +``` Tok -- tokens (subtype of Str) A -> B -- functions from A to B Int -- integers @@ -239,7 +239,7 @@ f a b -- : C if fun f : A -> B -> C ``` Higher-Order Abstract syntax (HOAS): functions as arguments: ``` -F a (\x -> c) -- : C if a : A, c : C (x : B), +F a (\x -> c) -- : C if a : A, c : C (x : B), fun F : A -> (B -> C) -> C ``` Tokens and token lists @@ -266,16 +266,16 @@ table { -- by pattern matching Pl => "mice" ; _ => "mouse" -- wildcard pattern } -table { - n => regn n "cat" -- variable pattern +table { + n => regn n "cat" -- variable pattern } table Num {...} -- table given with arg. type table ["ox"; "oxen"] -- table as course of values -\\_ => "fish" -- same as table {_ => "fish"} +\\_ => "fish" -- same as table {_ => "fish"} \\p,q => t -- same as \\p => \\q => t t ! p -- select p from table t -case e of {...} -- same as table {...} ! e +case e of {...} -- same as table {...} ! e ``` Records ``` @@ -296,7 +296,7 @@ Local definitions ``` let x : A = d in t -- let definition let x = d in t -- let defin, type inferred -let x=d ; y=e in t -- same as +let x=d ; y=e in t -- same as let x=d in let y=e in t let {...} in t -- same as let ... in t @@ -316,10 +316,10 @@ Typed expression ``` -- same as t, to help type inference ``` -Accessing bound variables in ``lin``: use fields ``$1, $2, $3,...``. +Accessing bound variables in ``lin``: use fields ``$1, $2, $3,...``. Example: ``` -fun F : (A : Set) -> (El A -> Prop) -> Prop ; +fun F : (A : Set) -> (El A -> Prop) -> Prop ; lin F A B = {s = ["for all"] ++ A.s ++ B.$1 ++ B.s} ``` @@ -367,7 +367,7 @@ oper cc2 : (_,_ : SS) -> SS -- concat SS's optStr : Str -> Str -- string or empty strOpt : Str -> Str -- empty or string - bothWays : Str -> Str -> Str -- X++Y or Y++X + bothWays : Str -> Str -> Str -- X++Y or Y++X init : Tok -> Tok -- all but last char last : Tok -> Tok -- last char prefixSS : Str -> SS -> SS @@ -388,7 +388,7 @@ Flags can appear, with growing priority, Some common flags used in grammars: ``` -startcat=cat use this category as default +startcat=cat use this category as default lexer=literals int and string literals recognized lexer=code like program code @@ -407,7 +407,7 @@ optimize=values good for lexicon concrete optimize=all usually good for resource optimize=noexpand for resource, if =all too big ``` -For the full set of values for ``FLAG``, +For the full set of values for ``FLAG``, use on-line ``h -FLAG``. @@ -415,7 +415,7 @@ use on-line ``h -FLAG``. ===File import search paths=== Colon-separated list of directories searched in the -given order: +given order: ``` --# -path=.:../abstract:../common:prelude ``` @@ -443,17 +443,17 @@ directories, colon-separated, in ``GF_LIB_PATH``. ===Alternative grammar formats=== -**Old GF** (before GF 2.0): +**Old GF** (before GF 2.0): all judgements in any kinds of modules, division into files uses ``include``s. A file ``Foo.gf`` is recognized as the old format -if it lacks a module header. +if it lacks a module header. **Context-free** (file ``foo.cf``). The form of rules is e.g. ``` Fun. S ::= NP "is" AP ; ``` -If ``Fun`` is omitted, it is generated automatically. +If ``Fun`` is omitted, it is generated automatically. Rules must be one per line. The RHS can be empty. **Extended BNF** (file ``foo.ebnf``). The form of rules is e.g. @@ -477,7 +477,7 @@ on command line. This file can be the grammar file itself. ``` in Cat "example string" ``` -are preprocessed by using a parser given by the flag +are preprocessed by using a parser given by the flag ``` --# -resource=File ``` @@ -489,5 +489,4 @@ and the result is written to ``foo.gf``. [GF Homepage http://www.grammaticalframework.org/] A. Ranta, Grammatical Framework: A Type-Theoretical Grammar Formalism. -//The Journal of Functional Programming//, vol. 14:2. 2004, pp. 145-189. - +//The Journal of Functional Programming//, vol. 14:2. 2004, pp. 145-189. diff --git a/download/index.t2t b/download/index.t2t index 1f89d9f78..da96f238c 100644 --- a/download/index.t2t +++ b/download/index.t2t @@ -16,6 +16,7 @@ What's new? See the [Release notes release-3.9.html]. | Ubuntu (32-bit) | [gf_3.9-1_i386.deb gf_3.9-1_i386.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_i386.deb`` | Ubuntu (64-bit) | [gf_3.9-1_amd64.deb gf_3.9-1_amd64.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_amd64.deb`` | Windows | [gf-3.9-bin-windows.zip gf-3.9-bin-windows.zip] | //GF+S// | ``unzip gf-3.9-bin-windows.zip`` + %| MINGW | [gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz] | //GF+S+C// | ``tar -C / gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz`` %| ... | ... | ... | ... -- cgit v1.2.3 From aea8548930fd58d5302aa6381376adbb8a2be2d4 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Sun, 4 Nov 2018 19:27:14 +0100 Subject: update_html also takes individual arguments --- bin/update_html | 57 ++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 21 deletions(-) (limited to 'bin/update_html') diff --git a/bin/update_html b/bin/update_html index f7c0ad727..126072e44 100755 --- a/bin/update_html +++ b/bin/update_html @@ -7,25 +7,40 @@ # https://stackoverflow.com/a/246128/98600 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -find . -name '*.t2t' | while read t2t ; do - html="${t2t%.t2t}.html" - if [ "$t2t" -nt "$html" ] ; then - echo "$t2t" - relroot="$( dirname $t2t | sed -E 's/^.\///' | sed -E 's/[^/]+/../g' )" - pandoc \ - --from=t2t \ - --to=html5 \ - --standalone \ - --template="$DIR/_template.html" \ - --css="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" \ - --variable="rel-root:$relroot" \ - "$t2t" \ - --output="$html" - if [ -f "$html" ]; then - sed -i.bak "s/
/
/" "$html" && rm "$html.bak" - sed -i.bak -E "s/\`\`(.+)\`\`/\1<\/code>/g" "$html" && rm "$html.bak" - else - echo "Error creating $html" - fi +function render_html { + t2t=$1 + html=$2 + relroot="$( dirname $t2t | sed -E 's/^.\///' | sed -E 's/[^/]+/../g' )" + pandoc \ + --from=t2t \ + --to=html5 \ + --standalone \ + --template="$DIR/_template.html" \ + --css="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" \ + --variable="rel-root:$relroot" \ + "$t2t" \ + --output="$html" + if [ -f "$html" ] ; then + sed -i.bak "s/
/
/" "$html" && rm "$html.bak" + sed -i.bak -E "s/\`\`(.+)\`\`/\1<\/code>/g" "$html" && rm "$html.bak" + echo "$html" + else + echo "Error creating $html" fi -done +} + +if [ $# -gt 0 ] ; then + # Render spcific file(s) from args, ignoring dates + for t2t in "$@" ; do + html="${t2t%.t2t}.html" + render_html "$t2t" "$html" + done +else + # Render all files found from cwd, if source is newer + find . -name '*.t2t' | while read t2t ; do + html="${t2t%.t2t}.html" + if [ "$t2t" -nt "$html" ] ; then + render_html "$t2t" "$html" + fi + done +fi -- cgit v1.2.3 From 914d54255fe81301773adfab1a2d8c0319afcd9a Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Sun, 4 Nov 2018 19:29:56 +0100 Subject: Comments in update_html script --- bin/update_html | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'bin/update_html') diff --git a/bin/update_html b/bin/update_html index 126072e44..a5194bbdd 100755 --- a/bin/update_html +++ b/bin/update_html @@ -1,12 +1,13 @@ #!/bin/bash -### This script finds all .t2t (txt2tags) files and updates the corresponding -### .html file, if it is out-of-date. - -# Path to this directory (not CWD) +# Path to directory where this script is # https://stackoverflow.com/a/246128/98600 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +# Render txt2tags into html file +# Arguments: +# 1. txt2tags source file, e.g. download/index.t2t +# 2. html target filen, e.g. download/index.html function render_html { t2t=$1 html=$2 @@ -30,13 +31,13 @@ function render_html { } if [ $# -gt 0 ] ; then - # Render spcific file(s) from args, ignoring dates + # Render specific file(s) from args, ignoring dates for t2t in "$@" ; do html="${t2t%.t2t}.html" render_html "$t2t" "$html" done else - # Render all files found from cwd, if source is newer + # Render all files found in cwd, and below, if source is newer find . -name '*.t2t' | while read t2t ; do html="${t2t%.t2t}.html" if [ "$t2t" -nt "$html" ] ; then -- cgit v1.2.3 From 9a7862ea9eaab6b17c1547a411421ee10e831c18 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Sun, 4 Nov 2018 19:58:18 +0100 Subject: Links in footer --- bin/_template.html | 46 ++++++++++++++++++++++++++++++++++++++++++---- bin/update_html | 1 - index.html | 17 +++++++++-------- 3 files changed, 51 insertions(+), 13 deletions(-) (limited to 'bin/update_html') diff --git a/bin/_template.html b/bin/_template.html index fc100e1c4..a51f92378 100644 --- a/bin/_template.html +++ b/bin/_template.html @@ -31,6 +31,8 @@ $endif$ $for(css)$ $endfor$ + + $if(math)$ $math$ $endif$ @@ -46,7 +48,7 @@ $endfor$ $if(title)$
- GF Logo + GF Logo

$title$

$if(subtitle)$

$subtitle$

@@ -68,10 +70,46 @@ $body$
-
+
-
- Home +
+ + + Home + +
Use
+ +
+ + +
+
+ Repositories + +
+
diff --git a/bin/update_html b/bin/update_html index a5194bbdd..7b214314f 100755 --- a/bin/update_html +++ b/bin/update_html @@ -17,7 +17,6 @@ function render_html { --to=html5 \ --standalone \ --template="$DIR/_template.html" \ - --css="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" \ --variable="rel-root:$relroot" \ "$t2t" \ --output="$html" diff --git a/index.html b/index.html index fe0e47e74..45ab1debe 100644 --- a/index.html +++ b/index.html @@ -48,12 +48,12 @@

Other resources

@@ -72,13 +72,14 @@ GF on GitHub -
  • Browse Source Code +
  • Authors

    Applications

      -
    • PGF library API (Haskell runtime) +
    • PGF library API (Haskell runtime)
    • PGF library API (C runtime) +
    • GF compiler API
    • GF Editor Modes -- cgit v1.2.3 From 390a6a04a13c0bc143193b017f1892579e737a88 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Sun, 4 Nov 2018 21:17:20 +0100 Subject: New update_html runx txt2tags followed by pandoc TODO: handle txt2tags macros in date, e.g. `%%mtime(%F)` in download/encoding-change.t2t --- bin/update_html | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) (limited to 'bin/update_html') diff --git a/bin/update_html b/bin/update_html index 7b214314f..07632317a 100755 --- a/bin/update_html +++ b/bin/update_html @@ -9,23 +9,51 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # 1. txt2tags source file, e.g. download/index.t2t # 2. html target filen, e.g. download/index.html function render_html { - t2t=$1 - html=$2 + t2t="$1" + html="$2" + tmp="$2.tmp" relroot="$( dirname $t2t | sed -E 's/^.\///' | sed -E 's/[^/]+/../g' )" + + # First render with txt2tags to handle pre/post processing + txt2tags \ + --target=html \ + --no-headers \ + --quiet \ + --outfile="$tmp" \ + --infile="$t2t" + + # Capture first 3 lines of t2t file: title, author, date + # Documentation here: https://txt2tags.org/userguide/headerarea + l1=$(head -n 1 "$t2t") + l2=$(tail -n+2 "$t2t" | head -n 1) + l3=$(tail -n+3 "$t2t" | head -n 1) + title= + author= + date= + if [ -n "$l1" ] ; then + title="$l1" + if [ -n "$l2" ] ; then author="$l2" ; fi + if [ -n "$l3" ] ; then date="$l3" ; fi + fi + + # Run txt2tag's HTML through Pandoc for cleanup pandoc \ - --from=t2t \ + --from=html \ --to=html5 \ --standalone \ --template="$DIR/_template.html" \ --variable="rel-root:$relroot" \ - "$t2t" \ + --metadata="title:$title" \ + --metadata="author:$author" \ + --metadata="date:$date" \ + "$tmp" \ --output="$html" + rm -f "$tmp" + + # Final post-processing if [ -f "$html" ] ; then sed -i.bak "s/
  • /
    /" "$html" && rm "$html.bak" - sed -i.bak -E "s/\`\`(.+)\`\`/\1<\/code>/g" "$html" && rm "$html.bak" echo "$html" - else - echo "Error creating $html" fi } -- cgit v1.2.3 From 2f1ee094d23b661b8147b395e5fd7d5c058a46d2 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Thu, 8 Nov 2018 22:46:30 +0100 Subject: Add download/index.md as demo of working Markdown rendering to HTML Archive 3.9 pages and mark current ones for 18-12 --- .gitignore | 16 ++++ bin/update_html | 60 ++++++++++++--- download/index-3.9.t2t | 187 ++++++++++++++++++++++++++++++++++++++++++++++ download/index.md | 165 ++++++++++++++++++++++++++++++++++++++++ download/index.t2t | 187 ---------------------------------------------- download/release-18-12.md | 16 ++++ 6 files changed, 434 insertions(+), 197 deletions(-) create mode 100644 download/index-3.9.t2t create mode 100644 download/index.md delete mode 100644 download/index.t2t create mode 100644 download/release-18-12.md (limited to 'bin/update_html') diff --git a/.gitignore b/.gitignore index da8b52bf1..886ddc957 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,19 @@ src/ui/android/obj/ .cabal-sandbox cabal.sandbox.config DATA_DIR + +# Generated documentation (not exhaustive) +demos/index-numbers.html +demos/resourcegrammars.html +demos/translation.html +doc/tutorial/gf-tutorial.html +doc/gf-bibliography.html +doc/gf-developers.html +doc/gf-editor-modes.html +doc/gf-faq.html +doc/gf-reference.html +doc/gf-shell-reference.html +doc/icfp-2012.html +download/*.html +gf-book/index.html +src/www/gf-web-api.html diff --git a/bin/update_html b/bin/update_html index 07632317a..26dfc80fe 100755 --- a/bin/update_html +++ b/bin/update_html @@ -7,8 +7,8 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" # Render txt2tags into html file # Arguments: # 1. txt2tags source file, e.g. download/index.t2t -# 2. html target filen, e.g. download/index.html -function render_html { +# 2. html target file, e.g. download/index.html +function render_t2t_html { t2t="$1" html="$2" tmp="$2.tmp" @@ -57,18 +57,58 @@ function render_html { fi } +# Render markdown into html file +# Arguments: +# 1. markdown source file, e.g. download/index.md +# 2. html target filen, e.g. download/index.html +function render_md_html { + md="$1" + html="$2" + relroot="$( dirname $md | sed -E 's/^.\///' | sed -E 's/[^/]+/../g' )" + + pandoc \ + --from=markdown \ + --to=html5 \ + --standalone \ + --template="$DIR/_template.html" \ + --variable="rel-root:$relroot" \ + "$md" \ + --output="$html" + + # Final post-processing + if [ -f "$html" ] ; then + sed -i.bak "s/
    /
    /" "$html" && rm "$html.bak" + echo "$html" + fi +} + if [ $# -gt 0 ] ; then # Render specific file(s) from args, ignoring dates - for t2t in "$@" ; do - html="${t2t%.t2t}.html" - render_html "$t2t" "$html" + for file in "$@" ; do + ext="${file##*.}" + html="${file%.$ext}.html" + case $ext in + "md") + render_md_html "$file" "$html" + ;; + "t2t") + render_t2t_html "$file" "$html" + ;; + esac done else - # Render all files found in cwd, and below, if source is newer - find . -name '*.t2t' | while read t2t ; do - html="${t2t%.t2t}.html" - if [ "$t2t" -nt "$html" ] ; then - render_html "$t2t" "$html" + # Render all files found in cwd and deeper if source is newer + find . -name '*.t2t' | while read file ; do + html="${file%.t2t}.html" + if [ "$file" -nt "$html" ] ; then + render_t2t_html "$file" "$html" + fi + done + find . -name '*.md' | while read file ; do + if [[ "$file" == *"README.md" ]] ; then continue ; fi + html="${file%.md}.html" + if [ "$file" -nt "$html" ] ; then + render_md_html "$file" "$html" fi done fi diff --git a/download/index-3.9.t2t b/download/index-3.9.t2t new file mode 100644 index 000000000..da96f238c --- /dev/null +++ b/download/index-3.9.t2t @@ -0,0 +1,187 @@ +Grammatical Framework Download and Installation + + +**GF 3.9** was released on 11 August 2017. + +What's new? See the [Release notes release-3.9.html]. + + +== Binary packages == + +|| Platform | Download | Features | How to install +| macOS | [gf-3.9.pkg gf-3.9.pkg] | //GF+S+C+J+P// | Double-click on the package icon +| macOS | [gf-3.9-bin-intel-mac.tar.gz gf-3.9-bin-intel-mac.tar.gz] | //GF+S+C+J+P// | ``sudo tar -C /usr/local -zxf gf-3.9-bin-intel-mac.tar.gz`` +%| Fedora (32-bit) | [Fedora RPMs /~hallgren/tmp/Fedora/] | //GF+S+C+J+P// | ``sudo rpm -i ...`` +| Raspian 9.1 | [gf_3.9-1_armhf.deb gf_3.9-1_armhf.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_armhf.deb`` +| Ubuntu (32-bit) | [gf_3.9-1_i386.deb gf_3.9-1_i386.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_i386.deb`` +| Ubuntu (64-bit) | [gf_3.9-1_amd64.deb gf_3.9-1_amd64.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_amd64.deb`` +| Windows | [gf-3.9-bin-windows.zip gf-3.9-bin-windows.zip] | //GF+S// | ``unzip gf-3.9-bin-windows.zip`` + +%| MINGW | [gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz] | //GF+S+C// | ``tar -C / gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz`` +%| ... | ... | ... | ... + +Features: GF = GF shell and grammar compiler and the Resource Grammar Library, +S = ``gf -server`` mode, +C = C run-time system, +J/P = Java/Python binding to the C run-time system + +%More binary packages might be added later. + +===Notes=== + +The Windows package is installed by just unpacking it anywhere. +%It finds the libraries relative to the ``.exe`` file. +You will probably need to set the ``PATH`` and ``GF_LIB_PATH`` environment +variables, see Inari's notes on +[Installing GF on Windows http://www.grammaticalframework.org/~inari/gf-windows.html#toc3]. + +%The new experimental MINGW package is for use in the +%[MINGW http://www.mingw.org] environment in Windows. Unpack it in the MSYS shell +%(which is started with ``C:\MinGW\msys\1.0\msys.bat``). +%It should work out of the box without any additional settings. + +The Ubuntu ``.deb`` packages should work on Ubuntu 16.04 and 17.04 and similar +Linux distributions. + +The Raspian ``.deb`` package was created on a Raspberry Pi 3 and will probably +work on other ARM-based systems running Debian 9 (stretch) or similar +Linux distributions. + +The packages for macOS (Mac OS X) should work on at +least 10.11 and 10.12 (El Capitan and Sierra). + +%(*) **Note** that for compatibility with OS X 10.11 and newer, +%``gf-3.9.pkg`` will install the ``gf`` executable in ``/usr/local/bin`` +%instead of ``/usr/bin``, so make sure ``/usr/local/bin`` is in your ``$PATH``. +%Also, if you still have an older version of GF installed in ``/usr/bin``, +%remove it and/or make sure ``/usr/local/bin`` comes before ``/usr/bin`` +%in your ``$PATH`` so you don't accidentally run the old version. + +The Mac OS and Linux ``.tar.gz`` packages are designed to be installed in +``/usr/local``. +You can install them in other locations, but then you need to set the +``GF_LIB_PATH`` environment variable: + +``` + export GF_LIB_PATH=/usr/local/share/gf-3.9/lib +``` + +where ``/usr/local`` should be replaced with the path to the location where you +unpacked the package. + + +==Installing the latest release from source== + +[GF is on Hackage http://hackage.haskell.org/package/gf], so under normal +circumstances the prodedure is fairly simple: + ++ Install a recent version of the + [Haskell Platform http://hackage.haskell.org/platform], + e.g. version 7.10.3 (see note 2 below) ++ ``cabal update`` ++ On Linux: install some C libraries from your Linux distribution + (see note 1 below) ++ ``cabal install gf`` + + +You can also download the full source package from here: +[``gf-3.9.tar.gz`` gf-3.9.tar.gz]. + +=== Notes === + +The above steps installs GF for a single user. +% and does not require root privileges. +The executables are put in ``$HOME/.cabal/bin`` +(or, with recent versions of the Haskell platform on Mac OS X, +in ``$HOME/Library/Haskell/bin``), so it is a good +idea to put a line in your ``.bash_profile`` or ``.profile`` +to add that directory to you path: + +``` + PATH=$HOME/.cabal/bin:$PATH +``` +or +``` + PATH=$HOME/Library/Haskell/bin:$PATH +``` + +**Note 1**. +GF uses [``haskeline`` http://hackage.haskell.org/package/haskeline], which +on Linux depends on some non-Haskell libraries that +won't be installed automatically by cabal, and therefore need to be installed +manually. Here is one way to do this: + +- On Ubuntu: ``sudo apt-get install libghc-haskeline-dev`` +- On Fedora: ``sudo yum install ghc-haskeline-devel`` + + +**Note 2**. +The GF source code has been updated to compile with GHC 8.2.1. Using older +versions of GHC (e.g. 8.0.x and 7.10.3) should still work too. + +%=== Known problems === +% +%There seems to be a bug in some versions of Cabal that can cause +% +%``` +% Distribution/Simple/PackageIndex.hs:124:8-13: Assertion failed +%``` +% +%if the same version of GF is +%already installed. If you encounter this, you can use ``ghc-pkg unregister gf`` +%to remove the installed version of GF and ``ghc-pkg list gf`` to verify that +%it is gone. + +==Installing from the latest developer source code== + +The first time: +%, assuming you already have the Haskell Platform and darcs + +``` + git clone https://github.com/GrammaticalFramework/gf-core.git + cd gf-core + cabal install +``` + +and + +``` + git clone https://github.com/GrammaticalFramework/gf-rgl.git + cd gf-rgl + make +``` + +Subsequently: + +``` + cd gf-core + git pull + cabal install +``` + +and + +``` + cd gf-rgl + git pull + make +``` + +The above notes for installing from source apply also in these cases. +For more info on working with the GF source code, see the +[GF Developers Guide ../doc/gf-developers.html]. + +==Older releases== + +- [GF 3.8 index-3.8.html] (June 2016) +- [GF 3.7.1 index-3.7.1.html] (October 2015) +- [GF 3.7 index-3.7.html] (June 2015) +- [GF 3.6 index-3.6.html] (June 2014) +- [GF 3.5 index-3.5.html] (August 2013) +- [GF 3.4 index-3.4.html] (January 2013). +- [GF 3.3.3 index-3.3.3.html] (March 2012). +- [GF 3.3 index-3.3.html] (October 2011). +- [GF 3.2.9 index-3.2.9.html] source-only snapshot (September 2011). +- [GF 3.2 index-3.2.html] (December 2010). +- [GF 3.1.6 index-3.1.6.html] (April 2010). +- [GF 3.1 old-index.html] (December 2009). diff --git a/download/index.md b/download/index.md new file mode 100644 index 000000000..a26096cc9 --- /dev/null +++ b/download/index.md @@ -0,0 +1,165 @@ +--- +title: Grammatical Framework Download and Installation +... + +**GF Bundle 18-12** was released on 28 November 2018. +It contains **GF v3.10** and **RGL snapshot 18-11-28**. + +What's new? See the [release notes](release-18-12.html). + +## Binary packages ("bundles") + +| Platform | Download | Features | How to install | +|:----------------|:---------------------------------------------------------------|:-----------|:------------------------------------------------------------| +| macOS | [gf-18-12.pkg](gf-18-12.pkg) | GF,S,C,J,P | Double-click on the package icon | +| macOS | [gf-18-12-bin-intel-mac.tar.gz](gf-18-12-bin-intel-mac.tar.gz) | GF,S,C,J,P | `sudo tar -C /usr/local -zxf gf-18-12-bin-intel-mac.tar.gz` | +| Raspian 9.1 | [gf\_18-12-1\_armhf.deb](gf_18-12-1_armhf.deb) | GF,S,C,J,P | `sudo dpkg -i gf_18-12-1_armhf.deb` | +| Ubuntu (32-bit) | [gf\_18-12-1\_i386.deb](gf_18-12-1_i386.deb) | GF,S,C,J,P | `sudo dpkg -i gf_18-12-1_i386.deb` | +| Ubuntu (64-bit) | [gf\_18-12-1\_amd64.deb](gf_18-12-1_amd64.deb) | GF,S,C,J,P | `sudo dpkg -i gf_18-12-1_amd64.deb` | +| Windows | [gf-18-12-bin-windows.zip](gf-18-12-bin-windows.zip) | GF,S | `unzip gf-18-12-bin-windows.zip` | + +**Features** + +- GF = GF shell and grammar compiler +- RGL = Resource Grammar Library +- S = `gf -server` mode +- C = C run-time system +- J/P = Java/Python binding to the C run-time system + +### Notes + +The Windows package is installed by just unpacking it anywhere. You will +probably need to set the `PATH` and `GF_LIB_PATH` environment variables, +see Inari's notes on [Installing GF on Windows](http://www.grammaticalframework.org/~inari/gf-windows.html#toc3). + +The Ubuntu `.deb` packages should work on Ubuntu 16.04 and 17.04 and +similar Linux distributions. + +The Raspian `.deb` package was created on a Raspberry Pi 3 and will +probably work on other ARM-based systems running Debian 9 (stretch) or +similar Linux distributions. + +The packages for macOS (Mac OS X) should work on at least 10.11 and +10.12 (El Capitan and Sierra). + +The Mac OS and Linux `.tar.gz` packages are designed to be installed in +`/usr/local`. You can install them in other locations, but then you need +to set the `GF_LIB_PATH` environment variable: + +``` +export GF_LIB_PATH=/usr/local/share/gf-3.9/lib +``` + +where `/usr/local` should be replaced with the path to the location +where you unpacked the package. + +## Installing the latest release from source + +[GF is on Hackage](http://hackage.haskell.org/package/gf), so under +normal circumstances the prodedure is fairly simple: + +1. Install a recent version of the [Haskell + Platform](http://hackage.haskell.org/platform), e.g. version 7.10.3 + (see note 2 below) +2. `cabal update` +3. On Linux: install some C libraries from your Linux distribution (see + note 1 below) +4. `cabal install gf` + +You can also download full source packages from GitHub: + +- [GF releases](https://github.com/GrammaticalFramework/gf-core/releases) +- [RGL releases](https://github.com/GrammaticalFramework/gf-rgl/releases) + +### Notes + +**Installation location** + +The above steps installs GF for a single user. The executables are put +in `$HOME/.cabal/bin` (or, with recent versions of the Haskell platform +on Mac OS X, in `$HOME/Library/Haskell/bin`), so it is a good idea to +put a line in your `.bash_profile` or `.profile` to add that directory +to you path: + +``` +PATH=$HOME/.cabal/bin:$PATH +``` + +or + +``` +PATH=$HOME/Library/Haskell/bin:$PATH +``` + +**Build tools** + +*TODO* Alex, Happy + +**Haskeline** + +GF uses [`haskeline`](http://hackage.haskell.org/package/haskeline), which +on Linux depends on some non-Haskell libraries that won't be installed +automatically by cabal, and therefore need to be installed manually. +Here is one way to do this: + +- On Ubuntu: `sudo apt-get install libghc-haskeline-dev` +- On Fedora: `sudo yum install ghc-haskeline-devel` + +**GHC version** + +The GF source code has been updated to compile with GHC +8.2.1. Using older versions of GHC (e.g. 8.0.x and 7.10.3) should still +work too. + +## Installing from the latest developer source code + +The first time: + +``` +git clone https://github.com/GrammaticalFramework/gf-core.git +cd gf-core +cabal install +``` + +and + +``` +git clone https://github.com/GrammaticalFramework/gf-rgl.git +cd gf-rgl +make +``` + +Subsequently: + +``` +cd gf-core +git pull +cabal install +``` + +and + +``` +cd gf-rgl +git pull +make +``` + +The above notes for installing from source apply also in these cases. +For more info on working with the GF source code, see the [GF Developers +Guide](../doc/gf-developers.html). + +## Older releases + +- [GF 3.9](index-3.9.html) (August 2017) +- [GF 3.8](index-3.8.html) (June 2016) +- [GF 3.7.1](index-3.7.1.html) (October 2015) +- [GF 3.7](index-3.7.html) (June 2015) +- [GF 3.6](index-3.6.html) (June 2014) +- [GF 3.5](index-3.5.html) (August 2013) +- [GF 3.4](index-3.4.html) (January 2013) +- [GF 3.3.3](index-3.3.3.html) (March 2012) +- [GF 3.3](index-3.3.html) (October 2011) +- [GF 3.2.9](index-3.2.9.html) source-only snapshot (September 2011) +- [GF 3.2](index-3.2.html) (December 2010) +- [GF 3.1.6](index-3.1.6.html) (April 2010) diff --git a/download/index.t2t b/download/index.t2t deleted file mode 100644 index da96f238c..000000000 --- a/download/index.t2t +++ /dev/null @@ -1,187 +0,0 @@ -Grammatical Framework Download and Installation - - -**GF 3.9** was released on 11 August 2017. - -What's new? See the [Release notes release-3.9.html]. - - -== Binary packages == - -|| Platform | Download | Features | How to install -| macOS | [gf-3.9.pkg gf-3.9.pkg] | //GF+S+C+J+P// | Double-click on the package icon -| macOS | [gf-3.9-bin-intel-mac.tar.gz gf-3.9-bin-intel-mac.tar.gz] | //GF+S+C+J+P// | ``sudo tar -C /usr/local -zxf gf-3.9-bin-intel-mac.tar.gz`` -%| Fedora (32-bit) | [Fedora RPMs /~hallgren/tmp/Fedora/] | //GF+S+C+J+P// | ``sudo rpm -i ...`` -| Raspian 9.1 | [gf_3.9-1_armhf.deb gf_3.9-1_armhf.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_armhf.deb`` -| Ubuntu (32-bit) | [gf_3.9-1_i386.deb gf_3.9-1_i386.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_i386.deb`` -| Ubuntu (64-bit) | [gf_3.9-1_amd64.deb gf_3.9-1_amd64.deb] | //GF+S+C+J+P// | ``sudo dpkg -i gf_3.9-1_amd64.deb`` -| Windows | [gf-3.9-bin-windows.zip gf-3.9-bin-windows.zip] | //GF+S// | ``unzip gf-3.9-bin-windows.zip`` - -%| MINGW | [gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz] | //GF+S+C// | ``tar -C / gf-3.9-bin-i686-MINGW32_NT-6.1.tar.gz`` -%| ... | ... | ... | ... - -Features: GF = GF shell and grammar compiler and the Resource Grammar Library, -S = ``gf -server`` mode, -C = C run-time system, -J/P = Java/Python binding to the C run-time system - -%More binary packages might be added later. - -===Notes=== - -The Windows package is installed by just unpacking it anywhere. -%It finds the libraries relative to the ``.exe`` file. -You will probably need to set the ``PATH`` and ``GF_LIB_PATH`` environment -variables, see Inari's notes on -[Installing GF on Windows http://www.grammaticalframework.org/~inari/gf-windows.html#toc3]. - -%The new experimental MINGW package is for use in the -%[MINGW http://www.mingw.org] environment in Windows. Unpack it in the MSYS shell -%(which is started with ``C:\MinGW\msys\1.0\msys.bat``). -%It should work out of the box without any additional settings. - -The Ubuntu ``.deb`` packages should work on Ubuntu 16.04 and 17.04 and similar -Linux distributions. - -The Raspian ``.deb`` package was created on a Raspberry Pi 3 and will probably -work on other ARM-based systems running Debian 9 (stretch) or similar -Linux distributions. - -The packages for macOS (Mac OS X) should work on at -least 10.11 and 10.12 (El Capitan and Sierra). - -%(*) **Note** that for compatibility with OS X 10.11 and newer, -%``gf-3.9.pkg`` will install the ``gf`` executable in ``/usr/local/bin`` -%instead of ``/usr/bin``, so make sure ``/usr/local/bin`` is in your ``$PATH``. -%Also, if you still have an older version of GF installed in ``/usr/bin``, -%remove it and/or make sure ``/usr/local/bin`` comes before ``/usr/bin`` -%in your ``$PATH`` so you don't accidentally run the old version. - -The Mac OS and Linux ``.tar.gz`` packages are designed to be installed in -``/usr/local``. -You can install them in other locations, but then you need to set the -``GF_LIB_PATH`` environment variable: - -``` - export GF_LIB_PATH=/usr/local/share/gf-3.9/lib -``` - -where ``/usr/local`` should be replaced with the path to the location where you -unpacked the package. - - -==Installing the latest release from source== - -[GF is on Hackage http://hackage.haskell.org/package/gf], so under normal -circumstances the prodedure is fairly simple: - -+ Install a recent version of the - [Haskell Platform http://hackage.haskell.org/platform], - e.g. version 7.10.3 (see note 2 below) -+ ``cabal update`` -+ On Linux: install some C libraries from your Linux distribution - (see note 1 below) -+ ``cabal install gf`` - - -You can also download the full source package from here: -[``gf-3.9.tar.gz`` gf-3.9.tar.gz]. - -=== Notes === - -The above steps installs GF for a single user. -% and does not require root privileges. -The executables are put in ``$HOME/.cabal/bin`` -(or, with recent versions of the Haskell platform on Mac OS X, -in ``$HOME/Library/Haskell/bin``), so it is a good -idea to put a line in your ``.bash_profile`` or ``.profile`` -to add that directory to you path: - -``` - PATH=$HOME/.cabal/bin:$PATH -``` -or -``` - PATH=$HOME/Library/Haskell/bin:$PATH -``` - -**Note 1**. -GF uses [``haskeline`` http://hackage.haskell.org/package/haskeline], which -on Linux depends on some non-Haskell libraries that -won't be installed automatically by cabal, and therefore need to be installed -manually. Here is one way to do this: - -- On Ubuntu: ``sudo apt-get install libghc-haskeline-dev`` -- On Fedora: ``sudo yum install ghc-haskeline-devel`` - - -**Note 2**. -The GF source code has been updated to compile with GHC 8.2.1. Using older -versions of GHC (e.g. 8.0.x and 7.10.3) should still work too. - -%=== Known problems === -% -%There seems to be a bug in some versions of Cabal that can cause -% -%``` -% Distribution/Simple/PackageIndex.hs:124:8-13: Assertion failed -%``` -% -%if the same version of GF is -%already installed. If you encounter this, you can use ``ghc-pkg unregister gf`` -%to remove the installed version of GF and ``ghc-pkg list gf`` to verify that -%it is gone. - -==Installing from the latest developer source code== - -The first time: -%, assuming you already have the Haskell Platform and darcs - -``` - git clone https://github.com/GrammaticalFramework/gf-core.git - cd gf-core - cabal install -``` - -and - -``` - git clone https://github.com/GrammaticalFramework/gf-rgl.git - cd gf-rgl - make -``` - -Subsequently: - -``` - cd gf-core - git pull - cabal install -``` - -and - -``` - cd gf-rgl - git pull - make -``` - -The above notes for installing from source apply also in these cases. -For more info on working with the GF source code, see the -[GF Developers Guide ../doc/gf-developers.html]. - -==Older releases== - -- [GF 3.8 index-3.8.html] (June 2016) -- [GF 3.7.1 index-3.7.1.html] (October 2015) -- [GF 3.7 index-3.7.html] (June 2015) -- [GF 3.6 index-3.6.html] (June 2014) -- [GF 3.5 index-3.5.html] (August 2013) -- [GF 3.4 index-3.4.html] (January 2013). -- [GF 3.3.3 index-3.3.3.html] (March 2012). -- [GF 3.3 index-3.3.html] (October 2011). -- [GF 3.2.9 index-3.2.9.html] source-only snapshot (September 2011). -- [GF 3.2 index-3.2.html] (December 2010). -- [GF 3.1.6 index-3.1.6.html] (April 2010). -- [GF 3.1 old-index.html] (December 2009). diff --git a/download/release-18-12.md b/download/release-18-12.md new file mode 100644 index 000000000..81dab5c7d --- /dev/null +++ b/download/release-18-12.md @@ -0,0 +1,16 @@ +--- +title: GF Bundle 18-12 Release Notes +date: 28 November 2018 +... + +## Installation + +See the [download page](index.html). + +## What's new + +- RGL split + +### GF v3.10 + +### RGL 18-12-28 -- cgit v1.2.3 From 9bf5c98509d5550dfba52eb04606441bd86461b7 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Tue, 27 Nov 2018 22:36:57 +0100 Subject: Work on new download page. Change 18-12 to 4.0.0 --- bin/update_html | 4 +-- download/index.md | 75 ++++++++++++++++++++++++++++++----------------- download/release-18-12.md | 16 ---------- download/release-4.0.0.md | 16 ++++++++++ index.html | 3 +- 5 files changed, 68 insertions(+), 46 deletions(-) delete mode 100644 download/release-18-12.md create mode 100644 download/release-4.0.0.md (limited to 'bin/update_html') diff --git a/bin/update_html b/bin/update_html index 26dfc80fe..ec82ec491 100755 --- a/bin/update_html +++ b/bin/update_html @@ -52,7 +52,7 @@ function render_t2t_html { # Final post-processing if [ -f "$html" ] ; then - sed -i.bak "s/
    /
    /" "$html" && rm "$html.bak" + sed -i.bak "s/
    /
    /" "$html" && rm "$html.bak" + sed -i.bak "s/
    2018-11-28
    - GF 18.12 released. + GF 4.0.0 released. + Release notes
    2018-07-25
    -- cgit v1.2.3