wikipedia-anagrams v0.0.1
Wikipedia Anagrams
Installation
$ npm install wikipedia-anagramsFor 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
stringspecifying a page title/URL or astring arrayspecifying 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](https://github.com/compute-io/anagram-hash).
// 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 balletNote: 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' resourceExamples
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.jsCLI
Installation
To use the module as a general utility, install the module globally
$ npm install -g wikipedia-anagramsUsage
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 mathematicsOr, if you have cloned this repository and run npm install, modify the command to point to the executable; e.g.,
$ node ./bin/cli mathematicsTests
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 testAll 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-covIstanbul creates a ./reports/coverage directory. To access an HTML version of the report,
$ make view-covLicense
Copyright
Copyright © 2015. Athan Reines.