Skip to content

dawaltconley/legislative-parser

Repository files navigation

Legislative parser

A simple parser for identifying bills and other legislative items of the US Congress.

Usage

var leg = require('legislative-parser');

Legislation

Pass in the name of a bill or resolution to get an object describing it.

leg.parse('H.Con.Res.142-115');

// {
//     id: 'hconres142',
//     chamber: 'House',
//     type: 'Concurrent Resolution',
//     binding: false,
//     number: 142,
//     congress: 115
// }

Legislation names take the form TYPE.NUMBER, optionally specifying a congress following a dash -. The correct abbreviations for different types of legislation are listed here. They are case-insensitive and all separators (periods or spaces) are optional.

Amendments

The parser also accepts amendments.

leg.parse('H.Amdt.242-114');

// {
//    id: 'hamdt242',
//    chamber: 'House',
//    type: 'Amendment',
//    number: 242,
//    congress: 114
// }

Amendment names take the form of CHAMBER.Amdt.NUMBER, optionally specifying a congress following a dash -. They are case-insensitive and all separators (periods or spaces) are optional.

Vote records

You can also parse the references to roll call votes. (These don't have official identifiers besides their number, so I had to get a little creative.)

leg.parse('S.2.266-116');

// {
//     id: '266',
//     chamber: 'Senate',
//     type: 'Vote',
//     number: 266,
//     session: 2,
//     congress: 116
// }

Vote names take the form of CHAMBER.SESSION.NUMBER, optionally specifying a congress following a dash -. Like legislation, they are case-insensitive and separators are optional; however, Senate votes require a separator between the session number and vote number to distinguish them from Senate bills.

Typescript

This project includes type declarations. You can import the types used via:

import { Legislation, Resolution, Bill, Amendment, Vote } from 'legislative-parser/types';

You can also use the Id namespace to skip type checking the parser's results when you know how a given string will be parsed.

import { Id } from 'legislative-parser/types';
import { parse } from 'legislative-parser';

const knownAmendment = 'hamdt242' as Id.Amendment;
parse(knownAmendment); // returns an Amendment type

About

A simple parser for identifying bills and other congressional items.

Resources

Stars

Watchers

Forks

Packages

No packages published