wikipedia-anagrams v0.0.1
Wikipedia Anagrams
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 astring 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](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 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
Copyright
Copyright © 2015. Athan Reines.