Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Precompile Sakefile #5

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

leonidborisenko
Copy link

Precompiling is useful for writing Sakefile in various compile-to-JS languages.

Precompiling is performed by JavaScript function from region embedded in Sakefile and bounded by required marker lines. Marker line format is inspilred by Vim modeline (but it's different).

Function region (along with marker lines) is suited to be located in comments of host language:

  • marker lines are independent of its prefixes,
  • prefix of start marker line is stripped from every following function source line.

Function must take one argument (string with Sakefile source) and return string with compiled source.

PR contains further restrictions to general idea:

  • only files without extension are searched for function region,
  • start marker must be located in first 5 lines of Sakefile,
  • function length is limited to 100 lines.
  • format of marker lines:
    • start marker line: <prefix><white>sakefile:<white*>{
    • end marker line: <prefix><white>sakefile:<white*>}
    • where <prefix> -- any characters,
      <white> -- one space or tab character,
      <white*> -- zero or more spaces or tab characters

Precompiling is useful for writing Sakefile in various compile-to-JS
languages.

Precompiling is performed by JavaScript function from region embedded
in Sakefile and bounded by required marker lines. Marker line format
is inspilred by Vim modeline (but it's different).

Function region (along with marker lines) is suited to be located in
comments of host language:
* marker lines are independent of its prefixes,
* prefix of start marker line is stripped from every following
  function source line.

Function must take one argument (string with Sakefile source) and
return string with compiled source.

This commit contains further restrictions to general idea:
* only files without extension are searched for function region,
* start marker must be located in first 5 lines of Sakefile,
* function length is limited to 100 lines.
* format of marker lines:
  - start marker line: <prefix><white>sakefile:<white*>{
  - end marker line:   <prefix><white>sakefile:<white*>}
  where <prefix> -- any characters
        <white>  -- one space or tab character
        <white*> -- zero or more spaces or tab characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant