npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mediawiki-title

v0.7.5

Published

Title normalization library for mediawiki

Downloads

6,855

Readme

mediawiki-title npm version Build Status Coverage Status Dependencies

Mediawiki title normalization, that conforms to the normalization rules used in MediaWiki Core. In general, the page title is converted to the mediawiki DB key format by trimming spaces, replacing whitespace symbols to underscores and applying wiki-specific capitalization rules. The namespace name is converted to a localized canonical name.

Classes

Typedefs

Namespace

Kind: global class

new Namespace(id, siteInfo)

Represents a wiki namespace

| Param | Type | Description | | --- | --- | --- | | id | number | The namespace identifier | | siteInfo | SiteInfo | The site metadata information. |

namespace.getId() ⇒ number

Returns the numeric namespace identifier

Kind: instance method of Namespace

namespace.isMedia() ⇒ boolean

Checks whether namespace is Media

Kind: instance method of Namespace

namespace.isSpecial() ⇒ boolean

Checks whether namespace is Special

Kind: instance method of Namespace

namespace.isMain() ⇒ boolean

Checks whether namespace is Main

Kind: instance method of Namespace

namespace.isTalk() ⇒ boolean

Checks whether namespace is Talk

Kind: instance method of Namespace

namespace.isUserTalk() ⇒ boolean

Checks whether namespace is UserTalk

Kind: instance method of Namespace

namespace.getNormalizedText() ⇒ string

Get the canonical name string for this namespace.

Kind: instance method of Namespace

namespace.equals(ns) ⇒ boolean

Determines whether this namespace is equal to the given ns, based on the numeric namespace identifier.

Kind: instance method of Namespace

Namespace.fromText(text, siteInfo) ⇒ Namespace | undefined

Creates a namespace instance from namespace text or a namespace alias

Kind: static method of Namespace
Returns: Namespace | undefined - a namespace or undefined if it wasn't found.

| Param | Type | Description | | --- | --- | --- | | text | string | Namespace name text. | | siteInfo | SiteInfo | the site information. |

Namespace.main(siteInfo) ⇒ Namespace

Creates a namespace object for a Main namespace.

Kind: static method of Namespace

| Param | Type | Description | | --- | --- | --- | | siteInfo | SiteInfo | the site information. |

Title

Kind: global class

new Title(key, namespace, siteInfo, [fragment])

Creates a new title object with article the dbKey and namespace

| Param | Type | Description | | --- | --- | --- | | key | string | The article title in a form of the dbKey. | | namespace | Namespace | number | The article namespace. | | siteInfo | SiteInfo | The site metadata. | | [fragment] | string | The fragment of the title. |

title.getPrefixedDBKey() ⇒ string

Returns the normalized article title and namespace.

Kind: instance method of Title

title.getFragment() ⇒ string | undefined

Returns the normalized fragment part of the original title

Kind: instance method of Title

title.getNamespace() ⇒ Namespace

Returns the namespace of an article.

Kind: instance method of Title

title.equals(title2) ⇒ boolean

Determines whether this title is equals to the given title2, based on comparing namespace and key.

Kind: instance method of Title

Title.newFromText(title, siteInfo, defaultNs) ⇒ Title

Normalize a title according to the rules of siteInfo

Kind: static method of Title
Returns: Title - The resulting title object.

| Param | Type | Description | | --- | --- | --- | | title | string | The page title to normalize. | | siteInfo | SiteInfo | The site information. |

TitleError

Kind: global exception class

TitleError should be considered an opaque exception class, which is thrown by the various methods in this library. It is exported so that it can be identified if caught by the caller.

SiteInfo : Object

Information about a wikimedia site required to make correct normalization. This information matches the format used by the PHP API response, however not all of the fields are required for library operation.

The list of required properties is documented here, others can be removed.

Kind: global typedef
Properties

| Name | Type | Description | | --- | --- | --- | | general | Object | General information about the site | | general.lang | string | Site language code. | | general.legaltitlechars | string | A perl-like regex for characters allowed in the page title. | | general.case | string | Whether to capitalize the first letter of the title. Could be obtained from the general section of the siteInfo php API response. | | namespaces | Object | Site namespaces info in the same format as returned by PHP api. | | namespacealiases | Object | Site namespace aliases in the same format as returned by PHP api. | | specialpagealiases | Object | Site special page aliases in the same format as returned by PHP api. |

Usage

The library synchronously returns a normalized title. Wiki-specific rules should be fetched from the MediaWiki API, and cached outside of the library. The description of the required properties is available in the SiteInfo object docs.

var result = Title.newFromText('some_title', {
    		general: {
        	lang: 'en',
        	legaltitlechars: " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF+",
        	case: 'first-letter'
    	},
	namespaces: {
		"0": {
			id: 0,
			case: "first-letter",
			content: "",
			"*": ""
			},
		}
});
console.log(result.getPrefixedDBKey());

Bug reporting

For bug reporting please use Phabricator and mark the bugs with Services label or contact directly in IRC in the #wikimedia-services channel.