wikipedia-anagrams

0.0.1 • Public • Published

Wikipedia Anagrams

NPM version Build Status Coverage Status Dependencies

Finds anagrams in Wikipedia pages.

Installation

$ npm install wikipedia-anagrams

For use in the browser, use browserify.

Usage

var getAnagrams = require( 'wikipedia-anagrams' );

getAnagrams( resources, [opts,] clbk )

Finds anagrams in Wikipedia pages. The function requires two arguments:

  • resources: may be either a string specifying a page title/URL or a string array specifying multiple page title/URLs.
  • clbk: callback function to invoke after analyzing Wikipedia pages. The function should accept two arguments:
    • error: error object. If no errors occur during analysis, this value is null.
    • hashes: array of anagram hashes.
// Single resource:
getAnagrams( 'President of the United States', onAnagrams );
 
// Multiple resources:
getAnagrams( [
    'http://en.wikipedia.org/wiki/ballet',
    'http://es.wikipedia.org/wiki/ballet'
], onAnagrams );
 
function onAnagrams( error, hashes ) {
    if ( error ) {
        console.error( error );
        return;
    }
    console.log( hashes );
}

The function accepts the following options:

  • lang: the default page language. Default: 'en'.

To specify an alternative default language, set the lang option.

getAnagrams( 'ballet', {'lang':'es'}, onAnagrams );
// => fetches the Spanish Wikipedia resource for ballet

Note: if provided a URL, the language indicated by the URL supersedes the default lang option.

getAnagrams( 'http://en.wikipedia.org/wiki/ballet', {'lang':'es'}, onAnagrams );
// => fetches the 'en' ballet resource, not the 'es' resource

Examples

var getAnagrams = require( 'wikipedia-anagrams' );
 
// Specify Wikipedia resources either by page title or by URL...
var resources = [
    'Linear regression',
    'http://en.wikipedia.org/wiki/ballet',
    'http://es.wikipedia.org/wiki/ballet',
    'Spain',
    'President of the United States',
    'Mathematics'
];
 
// Run the analysis...
getAnagrams( resources, onAnagrams );
 
// Callback invoked after running the anagram analysis...
function onAnagrams( error, hashes ) {
    var hash,
        len,
        i;
    if ( error ) {
        throw new Error( error );
    }
    // Print the individual results...
    len = hashes.length;
    for ( i = 0; i < len; i++ ) {
        console.log( resources[ i ] + '...' );
        console.log( hashes[ i ].get() );
        console.log( '\n' );
    }
    // Merge the hashes...
    hash = hashes[ 0 ].copy();
    hash.merge.apply( hash, hashes.slice( 1 ) );
 
    // Print the merged hash...
    console.log( 'Merged...' );
    console.log( hash.get() );
}

To run the example code from the top-level application directory,

$ node ./examples/index.js

CLI

Installation

To use the module as a general utility, install the module globally

$ npm install -g wikipedia-anagrams

Usage

Usage: wikipedia-anagrams [options] [url 1] [url 2] [url 3] ...
 
Options:
 
  -h,    --help                Print this message.
  -V,    --version             Print the package version.
  -enc,  --encoding <encoding> Set the string encoding of chunks. Default: null.
  -hwm,  --highwatermark       Specify how much data can be buffered into memory
                               before applying back pressure. Default: 16kb.
  -nho,  --no-halfopen         Close the stream when the writable stream ends.
                               Default: false.
  -nds,  --no-decodestrings    Prevent strings from being converted into buffers
                               before streaming to destination. Default: false.
  -om,   --objectmode          Stream individual objects rather than buffers.
                               Default: false.
  -lang, --language <lang>     Set the default query language. Default: 'en'.

The wikipedia-anagrams command is available as a standard stream.

$ <stdout> | wikipedia-anagrams | <stdin>

Examples

# Specify a single page title:
$ wikipedia-anagrams mathematics
 
# Specify the default language:
$ wikipedia-anagrams --lang=es ballet
 
# Specify multiple page titles:
$ wikipedia-anagrams mathematics ballet
 
# Specify a single page URL:
$ wikipedia-anagrams 'http://en.wikipedia.org/wiki/mathematics'
 
# Specify multiple page URLs:
$ wikipedia-anagrams 'http://en.wikipedia.org/wiki/mathematics' 'http://en.wikipedia/org/wiki/ballet'
 
# Specify both page titles and page URLs:
$ wikipedia-anagrams 'http://en.wikipedia.org/wiki/mathematics' ballet
 
# Pipe Wikipedia page markup:
$ curl -s 'http://en.wikipedia.org/w/index.php?action=raw&title=mathematics' | wikipedia-anagrams | awk '{print "\nAnagrams:\n\n"$1}'
 
# Pipe multiple Wikipedia pages:
$ curl -s 'http://en.wikipedia.org/w/index.php?action=raw&title=mathematics' 'http://en.wikipedia.org/w/index.php?action=raw&title=ballet' | wikipedia-anagrams | awk '{print "\nAnagrams:\n\n"$1}'

For local installations, modify the command to point to the local installation directory; e.g.,

$ ./node_modules/.bin/wikipedia-anagrams  mathematics

Or, if you have cloned this repository and run npm install, modify the command to point to the executable; e.g.,

$ node ./bin/cli mathematics

Tests

Unit

Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ make view-cov

License

MIT license.

Copyright

Copyright © 2015. Athan Reines.

Package Sidebar

Install

npm i wikipedia-anagrams

Weekly Downloads

1

Version

0.0.1

License

none

Last publish

Collaborators

  • kgryte