Skip to content
/ fawkss Public

Fawkss is a CSS preprocessor for people who dislike CSS preprocessors

License

Notifications You must be signed in to change notification settings

deuill/fawkss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fawkss — The [ig]noble CSS preprocessor MIT License

Fawkss [fɔːks] is a simple CSS preprocessor built as a single AWK (nawk/gawk/mawk) script. Syntactically, it borrows as much as possible from the SASS language, for convenience and familiarity.

This is more of a fun project than a production-ready piece of software, though it may find some use for people needing simple additions to CSS without pulling in the massive ecosystem that comes with Less.js/SASS etc.

Status

Currently, the following SASS features are implemented, in varying degrees:

C99/C++-style comments

Lines that contain comments using the // syntax are removed from the final output, and are useful for including commentary that should otherwise not be available to end-users.

Comments using the /* */ syntax are not handled, and remain intact in the final output.

Variables

Variables can be defined and used with the following syntax:

$variable-name: 10px;
width: $variable-name;

All variables are defined in the global scope, and cannot be used before definition. Using an undefined variable is a fatal error, and halts execution. Variable names can contain alphanumeric characters, as well as underscore and hyphen characters, and are always prefixed with a dollar sign.

Variables must be appear on their own line, and cannot be mixed with other declarations. Redefining a variable overrides its previous value, with no warning message emitted.

Imports

CSS import declarations are extended for concatenating SCSS files together transparently. For a file common/_colors.scss, the following declarations are equivalent:

@import "common/colors";
@import "common/colors.scss";
@import "common/_colors";
@import "common_colors.scss";

Unlike SASS, files with leading underscores are not handled especially as partials.

Mixins

Mixin support is currently minimal, with parameters (including default values) and nested mixins handled.

Features such as variadic parameters and mixins with parent selectors are forthcoming.

Roadmap

It is intended that the script never balloons to more than ~1000 lines of code. I'm trying to tackle the most important features yet and see how well they fit within the AWK mindset.

That being said, I do not plan to implement any context-sensitive functionality (such as nesting etc.), which may be nigh-impossible in AWK anyways. Consider it a feature.

Testing & Documentation

A Makefile is provided for running tests and producing documentation for Fawkss. Run make help in the project root for more information.

A full test-suite is provided (depending only on make and awk), which should serve as a good example of the existing feature-set.

License

All code in this repository is covered by the terms of the MIT License, the full text of which can be found in the LICENSE file.

About

Fawkss is a CSS preprocessor for people who dislike CSS preprocessors

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published