Socket
Socket
Sign inDemoInstall

@sensebox/sketch-templater

Package Overview
Dependencies
Maintainers
2
Versions
54
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sensebox/sketch-templater

nodejs library to create senseBox Arduino Sketches


Version published
Weekly downloads
18
decreased by-78.57%
Maintainers
2
Weekly downloads
 
Created
Source

senseBox sketch-templater

Arduino sketch templates used by the openSenseMap-api

Build Status NPM Version

Changelog

See CHANGELOG.md

Releasing a new version

On each commit, Travis CI builds and tests the package with this .travis.yml. If the commit has a Git tag, a new version of the package will be published to npm through travis.

To create a new version, use npm version.

  1. Document your changes in CHANGELOG.md. Make sure there are no uncommited changes in the worktree.
  2. Run npm version [ major | minor | patch ] -m "[v%s] Your commit message"
  3. git push origin master

Usage

Install via npm install --save @sensebox/sketch-templater or yarn add @sensebox/sketch-templater


const Sketcher = require('@sensebox/sketch-templater');

const mySketcher = new Sketcher('<your api post domain>');

// generate Sketch
const mySketch = mySketcher.generateSketch(box);
const mySketchBase64 = mySketcher.generateSketch(box, { encoding: 'base64' });

Configuration

In order to fill in the correct ingress domain, you have to specify a valid hostname. Do not specify a protocol (http or https)!

You can do this either in code when calling the new Sketcher('your domain here') or through external configuration.

If your project is using lorenwest/node-config, you can specify the ingress domain in your config file of your project like this:

  {
    ... your other config

    "sketch-templater": {
      "ingress_domain": "ingress.example.com"
    }
  }

Adding new Templates

To add new templates, just create a new .tpl file in the templates directory. A template consists of two parts. The first line contains a JSON object for configuration. The second line until the end is used as the template text.

Example configuration in first line

Specify a single model:

{ "model": "homeEthernet" }

Specify multiple models:

{ "models": ["homeWifi", "homeWifiFeinstaub"] }

Templating values

The templater uses special transformers to process the templates. The transformers are applied through searching for @@SUB_TEMPLATE_KEY@@ occurrences in the template files. Each replacement starts and ends with a double @. To specify a transformer, append a pipe (|) and the transformer name. When no transformer is specified, it just returns the input variable. For adding new template transformers, see Adding Transformers.

As of writing this, the following replacements can be made:

Template textReplacement
@@SENSEBOX_ID@@the senseBox ID
@@SENSOR_IDS@@sensor IDs
@@NUM_SENSORS@@the number of sensors
@@INGRESS_DOMAIN@@the domain of your ingress server

Additionally, the following transformers are implemented:

Transformer nameDescription
as-isDo nothing.
toDefineTransform an array of sensors to multiple #define statements.
toProgmemTransform an array of sensors to multiple const char xxSENSOR_ID[] PROGMEM = "<id>"; statements.

Adding Transformers

In order to add a new transformer, just add a function in src/transformers.js to the module.exports. The function should return a string.

Adding Replacements

Add your additional replacements in src/index.js in the method _cloneBox to the second parameter of the Object.assign call.

License

MIT 2017 Matthias Pfeil, Jan Wirwahn, Gerald Pape

FAQs

Package last updated on 08 Oct 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc