From 464659b772f85865ef08611c51724cb9fecbf1c0 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Wed, 26 Feb 2020 16:46:05 -0800 Subject: [PATCH] websites.factorcode: first pass cleanup of website. --- extra/webapps/mason/grids/grids.factor | 6 +- extra/websites/factorcode/examples.txt | 7 +- extra/websites/factorcode/favicon-16x16.png | Bin 0 -> 1438 bytes extra/websites/factorcode/favicon-32x32.png | Bin 0 -> 2981 bytes extra/websites/factorcode/favicon.ico | Bin 0 -> 15086 bytes extra/websites/factorcode/index.fhtml | 58 +++--- extra/websites/factorcode/master.css | 187 +++++++------------- 7 files changed, 103 insertions(+), 155 deletions(-) create mode 100644 extra/websites/factorcode/favicon-16x16.png create mode 100644 extra/websites/factorcode/favicon-32x32.png create mode 100644 extra/websites/factorcode/favicon.ico diff --git a/extra/webapps/mason/grids/grids.factor b/extra/webapps/mason/grids/grids.factor index 26d7a0a94a..d975292a86 100644 --- a/extra/webapps/mason/grids/grids.factor +++ b/extra/webapps/mason/grids/grids.factor @@ -9,7 +9,7 @@ IN: webapps.mason.grids : render-grid-cell ( cpu os quot -- xml ) call( cpu os -- url label ) 2dup and - [ link [XML
<->
XML] ] + [ link [XML <-> XML] ] [ 2drop [XML XML] ] if ; @@ -27,11 +27,11 @@ CONSTANT: cpus } : render-grid-header ( -- xml ) - oses values [ [XML <-> XML] ] map ; + oses values [ [XML <-> XML] ] map ; :: render-grid-row ( cpu quot -- xml ) cpu second oses keys [| os | cpu os quot render-grid-cell ] map - [XML <-><-> XML] ; + [XML <-><-> XML] ; :: render-grid ( quot -- xml ) render-grid-header diff --git a/extra/websites/factorcode/examples.txt b/extra/websites/factorcode/examples.txt index 85f5bcb196..0772e3ce00 100644 --- a/extra/websites/factorcode/examples.txt +++ b/extra/websites/factorcode/examples.txt @@ -14,7 +14,6 @@ http.client xml xml.data xml.traversal ; ---- USING: accessors kernel math math.constants math.functions prettyprint ; -IN: shapes TUPLE: circle radius ; TUPLE: rectangle width height ; @@ -50,7 +49,8 @@ USING: sequences xml.syntax xml.writer ; [XML XML] pprint-xml ---- -USING: inspector io.files.info io.pathnames system tools.files ; +USING: inspector io.files.info +io.pathnames system tools.files ; home directory. home file-system-info free-space>> . @@ -59,5 +59,6 @@ image-path file-info describe USING: io kernel sequences ; 4 [ - "Happy Birthday " write 2 = "dear NAME" "to You" ? print + "Happy Birthday " write + 2 = "dear NAME" "to You" ? print ] each diff --git a/extra/websites/factorcode/favicon-16x16.png b/extra/websites/factorcode/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..816bdef22a3b5cd6976c0164108f61a2e0b151dc GIT binary patch literal 1438 zcmZ`&X;9Ng6yJafibN<>6s-oS3RNKa=h6T|5QK;zLR1tXKoS%=!Vx5if)Nn8Ot{1( zfH!i5Q7C^ z-X8#p1OOvWHluwX02+5a4$z$-hrwX@`ud5*nU_Uk!P#?sfq+OP5(oqw2|*A%nMA@N z2n255DXy??tBv5v3x$<(NUq1kzqbQ-u?_9GMQ{+ zYYQvE;z&@!YwNuZwiIg$79qoE1U$B{C2hDP= z7cGn>ziEpfY~eLO$}TUJRFqvUDV990&Fz07`epReALB`roiW{Y;qvm-3~|ntyex?% zQzpx-tx7E`PQQ6wR8yYTUYFEd9a(xU>Qw_LH7zA6IaMS|E|4YUOB1gbUdYP2n4WPd zCp)>ih*y*!-FVOcK?x`Byf9NF$jjkpiUl?0oOeUMGXuT@9n9g*z>%(ip*B{1S%Cbe zk1#%*7kesKM9)lj4+-`nbbn(y5vo`jqY zG)F3ZT|Y_>^_yxbhAw)Ip1!``H)sP5=mJf{Z`T?fIqH3E-Fo8<%K%uu@w-jOeNOoL zG5iBIV@y_nEvDZGGFj}Plc$1Dhiu)p1#CA94GZT)L`Fq(W6s2y{{VLI_;51g;?D~& zoJ&Yd+6gQ!CSOWPO-s*!Gn<)}Z3(P$a+KIZ!Rl<%cd}+*iZoki(oCVhy_BTBX|me zPzbmkSR4h5W$&is{)Z68VFd^A|DRyUN-%?jqXN1&*E1j%6A{G;3JzssxcmqeHT1fpP0_Zo fO{+`ja$~R?1!}>yom`CS|3=U6Dv- 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 literal 0 HcmV?d00001 diff --git a/extra/websites/factorcode/index.fhtml b/extra/websites/factorcode/index.fhtml index 4d065f2be6..baec686d33 100644 --- a/extra/websites/factorcode/index.fhtml +++ b/extra/websites/factorcode/index.fhtml @@ -1,52 +1,54 @@ -<% USING: namespaces http.client kernel io.files splitting random io io.encodings.utf8 sequences -webapps.mason.version.data webapps.mason.backend webapps.mason.grids webapps.mason.downloads -webapps.mason.utils html.elements html.streams accessors -xml.writer xmode.highlight ; %> +<% + +USING: accessors html.elements html.streams http.client io io.encodings.utf8 +io.files kernel multiline namespaces random sequences splitting +webapps.mason.backend webapps.mason.downloads webapps.mason.grids +webapps.mason.utils webapps.mason.version.data xml.writer xmode.highlight ; + +%> + + + Factor programming language - -
+
Factor programming language -
- +
+ +

Why Factor

+ +

The Factor programming language is a concatenative, stack-based programming language with high-level features including dynamic types, extensible syntax, macros, and garbage collection. On a practical side, Factor has a full-featured library, supports many different platforms, and has been extensively documented.

+

The implementation is fully compiled for performance, while still supporting interactive development. Factor applications are portable between all common platforms. Factor can deploy stand-alone applications on all platforms. Full source code for the Factor project is available under a BSD license.

+ +
- -
-

Why Factor?

- -

The Factor programming language combines powerful language features with a full-featured library. The implementation is fully compiled for performance, while still supporting interactive development. Factor applications are portable between all common platforms. Factor can deploy stand-alone applications on all platforms. Full source code for the Factor project is available under a BSD license.

- -

Most of the above links point to pages on the concatenative.org wiki.

- -

Show me some code!

- -

Factor belongs to the family of concatenative languages: this means that, at the lowest level, a Factor program is a series of words (functions) that manipulate a stack of references to dynamically-typed values. This gives the language a powerful foundation which allows many abstractions and paradigms to be built on top. Reload this page to see a random code example below.

-
<%
 "resource:extra/websites/factorcode/examples.txt" utf8 file-lines
 { "----" } split random
@@ -54,23 +56,19 @@ xml.writer xmode.highlight ; %>
 xml>string write-html
 %>
-

See the example programs page on the wiki for more.

-

Downloads

<% [ %> -

To download a binary, follow the link corresponding to your computer's CPU/OS configuration. Binary packages are the recommended route for new users who wish to try Factor.

+

To download a binary, follow the link for the desired OS / CPU configuration. Binary packages are the recommended route for new users who wish to try Factor.

Stable release: <% latest-version > =href a> ] [ version>> write ] bi %>

- <% release-grid write-xml %>

Source code: @@ -78,16 +76,15 @@ xml>string write-html

Development release

- <% package-grid write-xml %> <% ] with-mason-db %> -

Stable and development releases are built and uploaded by the build farm. Follow @FactorBuilds on Twitter to receive notifications. If you're curious, take a look at the build farm dashboard.

+

Source code: available via github or gitweb.

-

Source code is stored in our GIT repository. Source can can be browsed online via github or gitweb.

+

Stable and development releases are built and uploaded by the build farm. Follow @FactorBuilds on Twitter to receive notifications. If you're curious, take a look at the build farm dashboard. You can also build Factor on your own platform from source.

-

More

+

Community

- + + diff --git a/extra/websites/factorcode/master.css b/extra/websites/factorcode/master.css index 72088b72ab..5de5fa1737 100644 --- a/extra/websites/factorcode/master.css +++ b/extra/websites/factorcode/master.css @@ -1,144 +1,93 @@ +html { + box-sizing: border-box; +} + +*, *:before, *:after { + box-sizing: inherit; +} + +a:link { text-decoration: none; color: #104e8b; } +a:visited { text-decoration: none; color: #104e8b; } +a:active { text-decoration: none; color: #104e8b; } +a:hover { text-decoration: underline; color: #104e8b; } + body { - font:75%/1.6em "Lucida Grande", "Lucida Sans Unicode", verdana, geneva, sans-serif; + font-size: 12pt; + font-family: sans-serif; + text-align: center; } -ul { - margin:10px 10px 10px 0; - padding:0 0 0 15px; -} - -li { - margin:0 0 0 10px; - padding:5px; -} - -a { - color:#222; - border-bottom:1px solid #aaa; - text-decoration:none; -} - -a:hover { - border-bottom:1px solid #ccc; -} - -ol.subnav { - margin:-10px -10px 0 -5px; - padding:0; -} - -ol.subnav li { - font:85%/0.9em "Lucida Grande", "Lucida Sans Unicode", verdana, geneva, sans-serif; - float:left; - list-style:none; - margin:0; - padding:0; -} - -ol.subnav a { - font-weight:bold; - color:#555; - border-top:2px solid #fff; - display:block; - padding:5px; - text-decoration:none; - margin:0 5px 0 0; - border-bottom:none; -} - -ol.subnav a:hover { - border-top:2px solid #943329; - color:#121212; - border-bottom:none; -} - -#downloads { - width: 520px; - padding: 0; - margin: 0; -} - -caption { - padding: 0 0 5px 0; - width: 520px; - font: italic 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - text-align: right; -} - -th { - font: bold 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - color: #4f6b72; - border-right: 1px solid #C1DAD7; - border-bottom: 1px solid #C1DAD7; - border-top: 1px solid #C1DAD7; - letter-spacing: 2px; - text-transform: uppercase; - padding: 6px 6px 6px 6px; - background: #CAE8EA url(bg_header.jpg) no-repeat; -} - -th.nobg { - border-top: 0; - border-left: 0; - border-right: 1px solid #C1DAD7; - background: none; +.page { + max-width: 800px; + text-align: left; + line-height: 150%; } pre { - border: 1px dashed #ccc; - background-color: #f5f5f5; - font-size: 120%; + background-color: #f5f5f5; + border: 1px dashed #ccc; + margin-top: 10px; + padding: 10px; + font-size: smaller; + width: 400px; } -td.alt { - background: #F5FAFA; - color: #797268; +ul { + margin: 10px 10px 10px 0; + padding-left: 10px; } -td.doesnotexist { - background: #E5EAEA; +li { + margin-left: 10px; + padding: 5px; } - -td.unsupported { - background: #ffaaaa; +#downloads { + width: 520px; + padding: 0; + margin: 0; } - -td.supported { - background: #aaffaa; +#downloads th { + color: #4f6b72; + border: 1px solid #C1DAD7; + border-left: none; + letter-spacing: 2px; + text-transform: uppercase; + padding: 6px; + background: #CAE8EA url(bg_header.jpg) no-repeat; + text-align: center; + vertical-align: center; } -td.supported :hover { background-color: #88ff88; } - -td.nobinary { - background: #eeee88; +#downloads th.nobg { + border: 0; + border-right: 1px solid #C1DAD7; + background: none; } -div.bigdiv { - width: 100px; - text-align: center; - color: #050; +#downloads td { + text-align: center; + vertical-align: center; } -th.spec { - border-left: 1px solid #C1DAD7; - border-top: 0; - background: #fff; - font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; +#downloads td.alt { + background: #F5FAFA; + color: #797268; } -th.specalt { - border-left: 1px solid #C1DAD7; - border-top: 0; - background: #f5fafa; - font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - color: #797268; +#downloads td.doesnotexist { + background: #E5EAEA; } -th.allbg { - border-top: 0; - border-left: 0; - border-right: 0; - background: none; +#downloads td.unsupported { + background: #ffaaaa; +} + +#downloads td.supported { + background: #aaffaa; +} + +#downloads td.nobinary { + background: #eeee88; }