Git Product home page Git Product logo

text2datauri's Introduction

text2datauri

repo version Latest version on npmjs.com Downloads from npmjs.com CodeQL NodeJS with Grunt Codacy Code Quality Rating

A grunt plugin to convert a text file to a file with a data URI in base64 or simple URI encoding. Suitable to convert an HTML file to a data:text/html;charset=utf-8;base64,... bookmark URI encoded in base64. Or use it to convert a CSV file to a data:text/csv;charset=utf-8,... URI using basic encodeURIComponent() encoding. It may also be useful for creating URLs to communicate between web apps and iOS apps using URI protocol schemes. For converting a .js file to a javascript: URI, please see the js2uri grunt plugin.

Examples

An HTML file containing:

<!DOCTYPE HTML>
<html lang=en><head><title>sample</title><body>content</body><html>

might become

data:text/html;charset=utf-8;base64,PCFET0NUWVBFIEhUTUw+CjxodG1sIGxhbmc9ZW4+PGhlYWQ+PHRpdGxlPnNhbXBsZTwvdGl0bGU+PGJvZHk+Y29udGVudDwvYm9keT48aHRtbD4=

A CSV file containing:

"Crosby, Stills, Nash & Young", "Déjà Vu"

might become

data:text/csv;charset=utf-8,%22Crosby%2C%20Stills%2C%20Nash%20%26%20Young%22%2C%20%22D%C3%A9j%C3%A0%20Vu%22

Getting Started

Install

Install this grunt plugin into a project with: npm install text2datauri --save-dev. The --save-dev option adds text2datauri to the devDependencies section of the project package.json file.

Edit Gruntfile.js

Add the following to the grunt.initConfig section of the project Gruntfile.js file:

"text2datauri": {
  "dist/outputFilename.uri": "dist/lintedAndMinifiedFile.js"
}

Edit the values for the dist/output... (destination file) and the dist/lintedAndMinifiedFile.js source) as appropriate. See Documenation below for details on additional text2datauri options.

Below the grunt.initConfig section, load text2datauri as an external task before using it.

// load external task
grunt.loadNpmTasks("text2datauri");

// default task
grunt.registerTask("default", ["text2datauri"]);

Documentation

The elaborated Gruntfile.js below shows options and defaults relating to text2datauri.

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    // eslint - Critical eslint rules to disable: no-void, no-script-url
    // Example .eslintrc.yml config file--
    // env:
    //   browser: true
    //   es6: true
    //   node: true
    // extends: eslint:recommended
    // rules:
    //   no-void: 0
    //   no-script-url: 0
    //
    // jshint - Critical jshint option: browser & scripturl (allow)
    // "jshint": {
    //   "options": {
    //     "browser": true,
    //     "scripturl": true
    //   }
    // },
    //
    // uglify-js - Note: you may need to 'tune' options for your source
    // "uglify": {
    //   "options": {
    //     "codegen": {"quote_keys": false}
    //     "mangle": {"toplevel": true},
    //     "squeeze": {"conditionals": false, "hoist_vars": true, "sequences": false},
    //   }
    // },
    //
    // ** text2datauri defaults are shown. Note the file spec uses compact form
    "text2datauri": {
      "options": {
        "encoding": "base64", // "base64" or "uri"; use "uri" for encodeURIComponent()
        "mimeType": "text/html", // any string;  this is not validated by text2datauri
        "protocol": "data:", // any string; this is not validated by text2datauri
        "sourceCharset": "utf-8", // "utf-8" or "ascii"; actual format not validated
        "targetCharset": "utf-8", // "utf-8" or ""; metadata output is always utf-8
      }
    }
  });

  // load external task ("text2datauri" plugin)
  grunt.loadNpmTasks("text2datauri");

  // default task
  grunt.registerTask("default", ["text2datauri"]);
};

Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test the code using eslint (preferred) or jshint.

Release History

1.9.9: require node >= 18.20.0 (node 18 in maintenance mode), bump version, update lockfile

1.9.8: require node >= 18.19.0, use default grunt-contrib-nodeunit

1.9.6: require node > 18.18.1 (node 18 now in maintenance mode)

1.9.5: require node > 18.15.0

1.9.3: update semver dependencies syntax; add npm-shrinkwrap.json

1.9.0: drop support for node < 18.13

1.8.1: drop support for node < 16.19

1.8.0: drop support for node < 16.14

1.7.2: drop support for node < 16.13

1.7.0: drop support for node < 16.8; update grunt & README

1.6.5: bump version requirements for grunt peerDependency & node; copyright update

1.6.2: update CI & docs, republish w/new npm credentials

1.6.1: drop Travis-CI and renovate

1.6.0: drop support for node 12, as 14 becomes node LTS

1.4.3: update to grunt-contrib-nodeunit 3.0.0, update lockfile

1.4.1: update grunt dependencies

1.4.0: drop snyk as it doubled dependencies & increased build time; rely on renovatebot

1.3.0: require node 10+

1.2.4: pin dependencies; integrate renovatebot ; bump version

1.2.3: add .npmignore to repo to improve npm publish ; bump version

1.2.2: at long last properly make grunt a peerDependency ; bump version

1.2.0: drop node 6 support; bump version

1.1.0: drop node 5; enhance eslint rule checks; bump version

1.0.5: bump version to republish with improvements for node 8 + npm 5

1.0.4: switch to eslint and apply best practices feedback from it

1.0.3: updates based on lint and for Code Climate testing/feedback

1.0.2: updated package.json and .travis.tml to use node ">5.0.0" and grunt ">1.0.0"

1.0.1: update internals to use es6 let/const; update Travis CI .travis.yml to improve build checks/process

1.0.0: update to current LTS versions of node (4.x, 5.x); update to use grunt-contrib-... ">=1.0.0"

0.0.27: update package.json to work with grunt-contrib-jshint ">=0.11.0" to allow use of 1.00 and beyond

License

Copyright (c) 2012-2024 Tom King. Licensed under the MIT license.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.