GithubHelp home page GithubHelp logo

git-j / grunt-bookmarklet-wrapper Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mdvanes/grunt-bookmarklet-wrapper

0.0 2.0 0.0 22 KB

Grunt task to urlencode, concatenate and wrap JavaScript files to prepare for execution as a bookmarklet.

License: MIT License

JavaScript 100.00%

grunt-bookmarklet-wrapper's Introduction

Build Status npm version

grunt-bookmarklet-wrapper

Grunt task to urlencode, concatenate and wrap JavaScript files to prepare for execution as a bookmarklet.

There is also a grunt plugin grunt-bookmarklet-thingy, but it is has no documentation and I have no idea what it does exactly. Also I needed certain features so I wrote this new plugin.

Getting Started

This plugin requires Grunt ~0.4.5

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-bookmarklet-wrapper --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-bookmarklet-wrapper');

Although I recommend using load-grunt-tasks

The "bookmarklet_wrapper" task

Overview

In your project's Gruntfile, add a section named bookmarklet_wrapper to the data object passed into grunt.initConfig().

grunt.initConfig({
  bookmarklet_wrapper: {
    options: {
      // Task-specific options go here.
      banner: '\n/*! <%= pkg.name %> by <%= pkg.author.name %> */'
    },
    your_target: {
      // Target-specific file lists and/or options go here.
      files: {
        'foo-bookmarklet.js': ['foo1.js', 'foo2.js']
      }
    },
  },
});

Example output:

javascript:(function(){alert('foo%20bar');})();

Properties

files

A key/value pair is accepted. The key is the path to the output file as a String, the value an array of Strings, the paths of the input files that will be urlencoded and concatenated.

Options

options.banner

Type: String Default value: ''

A string value that is appended as banner. The banner is appended to the generated code, because it will conflict with the javascript: prefix if it is prepended.

options.banner_prefix

Type: String Default value: ''

A string value that is prepended as banner. The banner is prepended to the generated code, and should be a comment or otherwise work well with the generated, escaped bookmarklet

options.banner_prefix = '/** (c) company-name */'

Example output:

javascript:(function(){/** (c) company-name */alert('foo%20bar');})();

options.as_json

Type: Boolean Default value: false

Generate a JSON file that contains a object with the bookmarklet stored in the attribute href.

Example output:

{"href": "javascript:(function(){alert('foo%20bar');})();"}

Usage Examples

Default Options

In this example, the fixture files are urlencoded and concatenated. Then they are wrapped in an script-targed url IIFE. So if the testing file has the content Testing and the 123 file had the content 1 2 3, the generated result would be javascript:(function(){Testing1%202%203})();.

grunt.initConfig({
    bookmarklet_wrapper: {
        default_options: {
            files: {
                'tmp/default_options': ['test/fixtures/testing', 'test/fixtures/123']
            }
        }
    }
});

Custom Options

In this example, an option is added to append a banner to the processed code.

grunt.initConfig({
    bookmarklet_wrapper: {
        custom_options: {
            options: {
                banner: '\r\n/*! <%= pkg.name %> by <%= pkg.author.name %> */'
            },
            files: {
                'tmp/custom_options': ['test/fixtures/testing', 'test/fixtures/123']
            }
        }
    }
});

Contributing

Follow the jshintrc settings for the code style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

  • 2015-04-25 v1.0.0 Extended and successfully ran unit tests. It's not required to remove inline comments (//), code after line breaks is still executed. There doesn't seem to be a way to programmatically test script-targeted urls, but manual tests were successful.
  • 2015-04-25 v0.2.0 Minor fixes, documentation updates
  • 2015-04-25 v0.1.0 Initial release

grunt-bookmarklet-wrapper's People

Contributors

git-j avatar mdvanes avatar

Watchers

 avatar  avatar

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.