<commit_before>Browserino has been completely rewritten! While some components remain backwards compatible, the inner workings of Browserino have completely changed.
It has taken on a DSL-like form to allow for easy addition of features and more detection in general. This allowed me to clean up lots of constants and other messy constructions I've built to add things such as aliasses for instance. The test suite had also become a quite cumbersome task to maintain, it was hard to read and all the test data was structured using Ruby, again using structures more complex than they could and should be.

In the new version, test data is written in YAML format and then parsed to usable test data in the respective spec. Each spec generates their own tests based on what is present in the YAML, this helped test a lot of the methods added using `define_singleton_method` upon instantiation of a `Browserino::Client` object. Don't let this scare you into submitting your own tests tho, as all you'll have to do is write the YAML and the tests will simply be generated for you :)

The below sections will explain how the new Browserino works, enjoy!

## Status

![Licence](https://img.shields.io/badge/license-MIT-E9573F.svg)
[![Gem Version](https://img.shields.io/gem/v/browserino.svg?colorB=E9573F&style=square)](rubygems.org/gems/browserino)
[![Issues](https://img.shields.io/github/issues/SidOfc/browserino.svg)](https://github.com/SidOfc/browserino/issues)
[![Build Status](https://img.shields.io/travis/SidOfc/browserino.svg)](https://travis-ci.org/SidOfc/browserino)
[![Coverage Status](https://img.shields.io/coveralls/SidOfc/browserino.svg)](https://coveralls.io/github/SidOfc/browserino?branch=master)
[![Code Climate](https://img.shields.io/codeclimate/github/SidOfc/browserino.svg)](https://img.shields.io/codeclimate/github/SidOfc/browserino)

---

## Sources

Many thanks to the creators and maintainers of the following sources of user agents and timelines:

- [udger.com](https://udger.com/)
- [ua.theafh.net](http://ua.theafh.net/)
- [user-agents.org](http://www.user-agents.org/)
- [zytrax.com](http://www.zytrax.com/tech/web/browser_ids.htm)
- [useragentstring.com](http://www.useragentstring.com/)
- [whatismybrowser.com](https://www.whatismybrowser.com/developers/tools/user-agent-parser/browse)
- [mobile247.eu](http://www.mobile247.eu/online-tools/user-agent-strings)
- [commons.wikimedia.org browser timeline](https://commons.wikimedia.org/wiki/File:Timeline_of_web_browsers.svg)

---

## Changelog
<commit_msg>Update README with TOC<commit_after>Browserino
---

Browserino has been completely rewritten! While some components remain backwards compatible, the inner workings of Browserino have completely changed.
It has taken on a DSL-like form to allow for easy addition of features and more detection in general. This allowed me to clean up lots of constants and other messy constructions I've built to add things such as aliasses for instance. The test suite had also become a quite cumbersome task to maintain, it was hard to read and all the test data was structured using Ruby, again using structures more complex than they could and should be.

In the new version, test data is written in YAML format and then parsed to usable test data in the respective spec. Each spec generates their own tests based on what is present in the YAML, this helped test a lot of the methods added using `define_singleton_method` upon instantiation of a `Browserino::Client` object. Don't let this scare you into submitting your own tests tho, as all you'll have to do is write the YAML and the tests will simply be generated for you :)

The below sections will explain how the new Browserino works, enjoy!

## Status

![Licence](https://img.shields.io/badge/license-MIT-E9573F.svg)
[![Gem Version](https://img.shields.io/gem/v/browserino.svg?colorB=E9573F&style=square)](rubygems.org/gems/browserino)
[![Issues](https://img.shields.io/github/issues/SidOfc/browserino.svg)](https://github.com/SidOfc/browserino/issues)
[![Build Status](https://img.shields.io/travis/SidOfc/browserino.svg)](https://travis-ci.org/SidOfc/browserino)
[![Coverage Status](https://img.shields.io/coveralls/SidOfc/browserino.svg)](https://coveralls.io/github/SidOfc/browserino?branch=master)
[![Code Climate](https://img.shields.io/codeclimate/github/SidOfc/browserino.svg)](https://img.shields.io/codeclimate/github/SidOfc/browserino)

## TOC

  - [Status](#status)
  - [TOC](#toc)
  - [Sources](#sources)
  - [Changelog](#changelog)
    - [12-10-2017 VERSION 4.2.2](#12-10-2017-version-422)
    - [11-06-2017 VERSION 4.2.1](#11-06-2017-version-421)
    - [30-04-2017 VERSION 4.1.0](#30-04-2017-version-410)
  - [Installation](#installation)
  - [Usage](#usage)
    - [Rails (>= 3.2.0)](#rails--320)
      - [Initializer](#initializer)
    - [General](#general)
      - [Client](#client)
      - [Formatting](#formatting)
        - [Non version-like properties](#non-version-like-properties)
        - [Version-like properties](#version-like-properties)
      - [Config](#config)
        - [Matchers](#matchers)
        - [Aliasses](#aliasses)
        - [Labels](#labels)
      - [Methods](#methods)
        - [\#name](#name)
        - [\#name?(sym, opts = {})](#namesym-opts--)
        - [\#version](#version)
        - [\#version?(version)](#versionversion)
        - [\#engine](#engine)
        - [\#engine?(sym, opts = {})](#enginesym-opts--)
        - [\#engine_version](#engine_version)
        - [\#engine_version?(version)](#engine_versionversion)
        - [\#platform](#platform)
        - [\#platform?(sym, opts = {})](#platformsym-opts--)
        - [\#platform_label](#platform_label)
        - [\#platform_version](#platform_version)
        - [\#platform_version?(version)](#platform_versionversion)
        - [\#device](#device)
        - [\#device?(sym)](#devicesym)
        - [\#architecture](#architecture)
        - [\#architecture?(sym)](#architecturesym)
        - [\#x64?](#x64)
        - [\#x32?](#x32)
        - [\#mobile and #mobile?](#mobile-and-mobile)
        - [\#type](#type)
        - [\#type?(sym)](#typesym)
        - [\#like](#like)
        - [\#like?(sym, opts = {})](#likesym-opts--)
        - [\#is?(sym, opts = {})](#issym-opts--)
        - [\#not](#not)
        - [\#not?(sym, opts = {})](#notsym-opts--)
      - [Magic methods](#magic-methods)
        - [Names](#names)
        - [Aliasses](#aliasses-1)
  - [Supported](#supported)
    - [Browsers](#browsers)
    - [Bots](#bots)
    - [Validators](#validators)
    - [Libraries](#libraries)
    - [Email Clients](#email-clients)
    - [RSS](#rss)
    - [Platforms](#platforms)
      - [Android](#android)
      - [Windows](#windows)
      - [Macintosh](#macintosh)
    - [Devices](#devices)

## Sources

Many thanks to the creators and maintainers of the following sources of user agents and timelines:

- [udger.com](https://udger.com/)
- [ua.theafh.net](http://ua.theafh.net/)
- [user-agents.org](http://www.user-agents.org/)
- [zytrax.com](http://www.zytrax.com/tech/web/browser_ids.htm)
- [useragentstring.com](http://www.useragentstring.com/)
- [whatismybrowser.com](https://www.whatismybrowser.com/developers/tools/user-agent-parser/browse)
- [mobile247.eu](http://www.mobile247.eu/online-tools/user-agent-strings)
- [commons.wikimedia.org browser timeline](https://commons.wikimedia.org/wiki/File:Timeline_of_web_browsers.svg)

---

## Changelog

{'fraction_non_alphanumeric': 0.15686802098748823, 'fraction_numerical': 0.014664334723530204, 'mean_word_length': 3.7961290322580643, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 4, 'https://': 26, 'lorem ipsum': 0, 'www.': 10, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2692026', 'n_tokens_mistral': 2543, 'n_tokens_neox': 2345, 'n_words': 556}