• This repository has been archived on 13/Mar/2023
  • Stars
    star
    1,867
  • Rank 24,820 (Top 0.5 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 11 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Test tech job posts for issues with sexism, culture, expectations, and recruiter fails.

Warning

Hiya πŸ‘‹ Joblint is very much not under active development and shouldn't really be used. It was build in 2013 as a tool to help me analyse a job ads while I was job hunting and it's very naΓ―ve in both the way it's implemented and the kinds of issues it highlights.

I don't recommend using Joblint for anything serious, but I'll be leaving it here as a bit of a historic artefact.

Joblint

Test tech job posts for issues with sexism, culture, expectations, and recruiter fails.

Writing a job post? Use Joblint to make your job attractive to a much broader range of candidates and ensure you're not being discriminatory.
Getting swamped in job posts? Use Joblint to filter out the bad ones.

NPM version Node.js version support Build status Dependencies MIT licensed

joblint path/to/job-post.txt

Joblint output

Table Of Contents

Command-Line Interface

Install Joblint globally with npm:

npm install -g joblint

This installs the joblint command-line tool:

  Usage: joblint [options] <path>

  Options:

    -h, --help                 output usage information
    -V, --version              output the version number
    -r, --reporter <reporter>  the reporter to use: cli (default), json
    -l, --level <level>        the level of message to fail on (exit with code 1): error, warning, notice
    -p, --pretty               output pretty JSON when using the json reporter

Run Joblint against a text file:

joblint path/to/job-post.txt

Run Joblint against a text file and output JSON results to another file:

joblint --reporter json path/to/job-post.txt > report.json

Run Joblint against piped-in input:

echo "This is a job post" | joblint

Run Joblint against the clipboard contents:

# OS X
pbpaste | joblint

# Linux (with xclip installed)
xclip -o | joblint

Exit Codes

The command-line tool uses the following exit codes:

  • 0: joblint ran successfully, and there are no errors
  • 1: there are errors in the job post

By default, only issues with a type of error will exit with a code of 1. This is configurable with the --level flag which can be set to one of the following:

  • error: exit with a code of 1 on errors only, exit with a code of 0 on warnings and notices
  • warning: exit with a code of 1 on errors and warnings, exit with a code of 0 on notices
  • notice: exit with a code of 1 on errors, warnings, and notices
  • none: always exit with a code of 0

Reporters

The command-line tool can report results in a few different ways using the --reporter flag. The built-in reporters are:

  • cli: output results in a human-readable format
  • json: output results as a JSON object

You can also write and publish your own reporters. Joblint looks for reporters in the core library, your node_modules folder, and the current working directory. The first reporter found will be loaded. So with this command:

joblint --reporter foo path/to/job-post.txt

The following locations will be checked:

<joblint-core>/reporter/foo
<cwd>/node_modules/foo
<cwd>/foo

A joblint reporter should export a single function which accepts two arguments:

  • The test results as an object
  • The Commander program with all its options

JavaScript Interface

Joblint can run in either a web browser or Node.js. The supported versions are:

  • Node.js 0.10.x, 0.12.x, 4.x, 5.x
  • Android Browser 2.2+
  • Edge 0.11+
  • Firefox 26+
  • Google Chrome 14+
  • Internet Explorer 9+
  • Safari 5+
  • Safari iOS 4+

Node.js

Install Joblint with npm or add to your package.json:

npm install joblint

Require Joblint:

var joblint = require('joblint');

Browser

Include the built version of Joblint in your page (found in built/joblint.js):

<script src="joblint.js"></script>

Browser (Bower)

Install Joblint with Bower or add to your bower.json:

bower install joblint

Running

Run Joblint on a string:

var results = joblint('This is a job post');

The results object that gets returned looks like this:

{

    // A count of different issue types
    counts: {
        foo: Number
    },

    // A list of issues with the job post
    issues: [

        {
            name: String, // Short name for the rule that was triggered
            reason: String, // A longer description of why this rule was triggered
            solution: String, // A short description of how to solve this issue
            level: String, // error, warning, or notice
            increment: {
                foo: Number // The amount that each count has been incremented
            },
            occurance: String, // The exact occurance of the trigger
            position: Number, // The position of the trigger in the input text
            context: String // The text directly around the trigger with the trigger replaced by "{{occurance}}"
        }

    ]
}

You can also configure Joblint on each run. See Configuration for more information:

var results = joblint('This is a job post', {
    // options object
});

Configuration

rules (array)

An array of rules which will override the default set. See Writing Rules for more information.

joblint('This is a job post', {
    rules: [
        // ...
    ]
});

Writing Rules

Writing rules (for your own use, or contributing back to the core library) is fairly easy. You just need to write rule objects with all the required properties:

{
    name: String, // Short name for the rule
    reason: String, // A longer description of why this rule might be triggered
    solution: String, // A short description of how to solve the issue
    level: String, // error, warning, or notice
    increment: {
        foo: Number // Increment a counter by an amount. The default set is: culture, realism, recruiter, sexism, tech
    },
    triggers: [
        String // An array of trigger words as strings. These words are converted to regular expressions
    ]
}

Look in lib/rules.js for existing rules.

Examples

There are some example job posts that you can test with in the example directory:

joblint example/passing.txt
joblint example/realistic.txt
joblint example/oh-dear.txt

Contributing

To contribute to Joblint, clone this repo locally and commit your code on a separate branch.

If you're making core library changes please write unit tests for your code, and check that everything works by running the following before opening a pull-request:

make ci

Thanks

The following excellent people helped massively with defining the original lint rules: Ben Darlow, Perry Harlock, Glynn Phillips, Laura Porter, Jude Robinson, Luke Stavenhagen, Andrew Walker.

Also, there are plenty of great contributors to the library.

License

Joblint is licensed under the MIT license.
Copyright Β© 2015, Rowan Manning

More Repositories

1

pigeon

[UNMAINTAINED] Pigeon is an OOCSS framework for rapid prototyping and building smart, scalable websites.
CSS
139
star
2

learning-express-cluster

Companion code to the post "Node Cluster and Express"
JavaScript
115
star
3

pacer

[UNMAINTAINED] A flexible, fault-tolerant, Redis-based rate-limiter for Node.js
JavaScript
79
star
4

proclaim

A simple assertion library for server and client side JavaScript.
JavaScript
65
star
5

cssdb

[UNMAINTAINED] CSSDB: A curated collection of great CSS, Sass, LESS and Stylus libraries.
HTML
54
star
6

frag

[UNMAINTAINED] Frag is a fluid, responsive, simple grid system for CSS written in Sass.
CSS
26
star
7

chic

[UNMAINTAINED] Chic is an extremely simple class-like interface to JavaScript prototypal inheritance.
JavaScript
24
star
8

asynchronize

[UNMAINTAINED] Make synchronous functions look asynchronous.
JavaScript
11
star
9

tweet-baker

[UNMAINTAINED] Bake Twitter entities into your tweets; turning text plus entities into beautiful, customisable HTML.
JavaScript
10
star
10

cuff

[UNMAINTAINED] A small utility for binding UI controls to DOM elements.
JavaScript
9
star
11

audrey

A simple single-user and self-hosted feed reader
JavaScript
8
star
12

topsy-php

[UNMAINTAINED] A simple PHP wrapper for Topsy's Otter API.
PHP
7
star
13

crossword

Fetch and archive the New York Times crossword leaderboard
JavaScript
6
star
14

hubot-dogeme

[UNMAINTAINED] Wow. Such Doge. So Hubot.
CoffeeScript
5
star
15

yeehaw

Race horses in Slack
JavaScript
5
star
16

atom-burn

[UNMAINTAINED] Atom syntax theme. Like Zenburn, but with less Zen.
CSS
5
star
17

express-coffee-template

[UNMAINTAINED] An Express + CoffeeScript + Mustache application template for Node
CoffeeScript
5
star
18

thingme

[UNMAINTAINED] Build web-services for finding and randomizing things
JavaScript
4
star
19

conifer

[UNMAINTAINED] A multi-format, file-based configuration library for Node.js
CoffeeScript
3
star
20

jserve

Serve up JSON files
JavaScript
3
star
21

each-module

[UNMAINTAINED] Execute a function on each module in a directory
JavaScript
3
star
22

jekyll-lift-off

[UNMAINTAINED] Jekyll Lift-Off is a simple boilerplate to get you started with a Jekyll-based site.
HTML
3
star
23

frame

[UNMAINTAINED] Frame is a light-weight HTML scaffold for you to test your stylesheets against. That's all, just a HTML document with lots of elements. It's useful!
HTML
3
star
24

allow-methods

Express/connect middleware to handle 405 errors.
JavaScript
3
star
25

conspire

[UNMAINTAINED] Generate frightening and very believable conspiracy theories.
JavaScript
3
star
26

rpc

Handle RPC endpoints, standalone or for Express and Koa
JavaScript
3
star
27

feed-parser

A well-tested and resilient Node.js parser for RSS and Atom feeds.
JavaScript
3
star
28

twimo

[UNMAINTAINED] Quickly and easily import your Twitter archive into MongoDB.
JavaScript
3
star
29

dream-date

Create calendar systems for your role playing games
JavaScript
2
star
30

pa11y-reporter-rainbows

[UNMAINTAINED] Rainbow reporter for pa11y.
JavaScript
2
star
31

commandeer

Proxy requests through connect and capture JSON responses before they are output
JavaScript
2
star
32

rem

[UNMAINTAINED] Rem is a simple mixin for Sass which converts pixel values to rem values with a pixel fallback.
CSS
2
star
33

make

Reusable Makefiles for my open source projects
Makefile
2
star
34

mocha-srv

[UNMAINTAINED] Bundle node tests and serve them up for running in-browser
JavaScript
2
star
35

coffeebot

[UNMAINTAINED] Tell people when coffee is ready
JavaScript
2
star
36

app

Build Express applications with all of my preferences baked in
JavaScript
2
star
37

bennyhill.me

[UNMAINTAINED] Play Benny Hill music (Yakety Sax) alongside your favourite GIFs
HTML
2
star
38

varname

Convert strings between different variable naming formats.
JavaScript
1
star
39

chic-event

[UNMAINTAINED] Chic Event is simple object-oriented event system for JavaScript.
JavaScript
1
star
40

jemima

[UNMAINTAINED] A naΓ―ve little (puddle) duck typing library for Node.js
CoffeeScript
1
star
41

monorepo-testing

Just trying out some things for running a monorepo
JavaScript
1
star
42

express-ctrl

[UNMAINTAINED] A light wrapper, providing a controller-like interface to Express routing
JavaScript
1
star
43

catchup

[UNMAINTAINED] Catchup is a small set of CSS3 and CSS 2.1 compatibility mixins for LESS.
CSS
1
star
44

terraform-github

Used to manage Rowan Manning's GitHub account via Terraform.
HCL
1
star
45

renderer

Render htm views with Hyperons
JavaScript
1
star
46

pledge

[UNMAINTAINED] Pledge is a pretty little argument validation library for your browser and server.
CoffeeScript
1
star
47

diary

My daily doodle diary
HTML
1
star
48

rowanmanning.com

The source code for rowanmanning.com
JavaScript
1
star
49

makefiles

[UNMAINTAINED] Makefiles for use in various open source projects
1
star
50

sample-feeds

A website containing sample Atom, RDF, and RSS feeds
SCSS
1
star
51

fetch-feed

Fetch and parse RSS and Atom feeds.
JavaScript
1
star