Skip to content
This repository has been archived by the owner on Sep 15, 2021. It is now read-only.
/ fmarkup Public archive

FMarkup is an HTML/CSS generation library and DSL for F#.

Notifications You must be signed in to change notification settings

danfinch/fmarkup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ba37158 · Aug 1, 2013

History

8 Commits
Mar 10, 2013
Jul 30, 2013
Mar 17, 2012
Sep 7, 2012
Mar 10, 2013

Repository files navigation

FMarkup is a tool for creating HTML/CSS documents in pure F#.

Simple Example

open FMarkup
open FMarkup.Css

let accountsPage accounts =
  %%[
    Doctype.html5
    html [
      body [
        ul [
          rule "li" [               // Inline rules are scoped to the parent element
            font.weight.bold
          ]
          [ for a in accounts ->
            li [
              img [
                src a.photo
                width 100           // Inline styles work, too
                height 100
              ]
              a.name
            ]
          ]
        ]
      ]
    ]
  ]

let accountsStyle =
  style [
    rule "body" [
      color "silver"
      background.color "black"
    ]
    rule "a" [
      text.decoration.none
      rule ":hover" [               // Rules may be nested
        text.decoration.underline
      ]
    ]
  ]

Because your views are simple functions, composing templates/layouts/master pages is as simple as creating functions with arguments where markup holes are filled. To render the markup, create an instance of the HtmlPrinter record. It has two fields: Format, which specifies whether you want to render HTML or XHTML, and CssUnit, which specifies what CSS unit value (such as px) you would like int and float values to be rendered with.

Notes

Because FMarkup works with obj list to avoid noise, sometimes it may be necessary to upcast symbols, so the operators % and %% are provided to cast to obj and obj list, respectively.

Virtually all HTML5 and CSS3 symbols are supported. Bindings for some more obscure CSS properties which support multiple values may need to be improved, let me know if you run into any issues.

Compact Style

A module called FMarkup.Compact is provided with succinct shortcuts to many common artifacts. It contains some experimental operators which may be included later into the main module.

License

Public Domain.

Dependencies

Maintainer

About

FMarkup is an HTML/CSS generation library and DSL for F#.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages