Coder Social home page Coder Social logo

leapfrogtechnology / just-handlebars-helpers Goto Github PK

View Code? Open in Web Editor NEW
68.0 16.0 21.0 3.03 MB

A package with common Handlebars helpers.

Home Page: https://yarn.pm/just-handlebars-helpers

License: MIT License

JavaScript 97.90% Shell 2.10%
handlebars-helpers handlebars just-handlebars-helpers templating javascript template hacktoberfest

just-handlebars-helpers's Introduction

Just Handlebars Helpers

NPM Version NPM Downloads Travis Codecov

A package with common Handlebars helpers.

Installation

npm install just-handlebars-helpers --save
yarn add just-handlebars-helpers

Usage

Browser

General Usage

<!-- Load handlebars -->
<script src="/path/to/handlebars/dist/handlebars.min.js"></script>
<!-- Load just-handlebars-helpers -->
<script src="/path/to/just-handlebars-helpers/dist/h.min.js"></script>

<script type="text/javascript">
  // Register just-handlebars-helpers with handlebars
  H.registerHelpers(Handlebars);
</script>

Recommended Usage (CDN)

<!-- Load handlebars -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.1.2/handlebars.min.js"></script>
<!-- Load just-handlebar-helpers -->
<script src="https://unpkg.com/[email protected]/dist/h.min.js"></script>

<script type="text/javascript">
  // Register just-handlebars-helpers with handlebars
  H.registerHelpers(Handlebars);
</script>

Node

// Require handlebars and just-handlebars-helpers
const Handlebars = require("handlebars");
const H = require("just-handlebars-helpers");

// Register just-handlebars-helpers with handlebars
H.registerHelpers(Handlebars);

Helpers

Helper Description
eq Strict equality ===
eqw Equality ==
neq Strict inequality !==
neqw Inequality !=
lt Less than <
lte Less than or equal <=
gt Greater than >
gte Greater than or equal >=
not Not !
ifx Imitates conditional operator ?:
empty Check if an array is empty
count Length of an array
and Logical AND operation
or Logical OR operation
coalesce Returns first non-falsy value from list of parameters
includes Check for a value inside an array
excerpt Extract a sub-string from a string
sanitize Sanitize a string to url friendly dash/kebab case
newLineToBr Replace new line with line breaks <br> of a string
capitalizeEach Capitalize the first letter of each word in a string
capitalizeFirst Capitalize the first letter of a string
sprintf String produced according to the formatting format
lowercase String to lowercase
uppercase String to uppercase
first First element of an array
last Last element of an array
concat Concatenate two or more strings
join Join elements of an array using a delimeter
sum Sum of two numbers
difference Difference of two numbers
multiplication Multiplication of two numbers
division Division of two numbers
remainder Remainder of two numbers
ceil Round a number upward to its nearest integer
floor Round a number downward to its nearest integer
abs Find the absolute value of a number
formatDate Format date to specified format
showIf Show HTML element if expression is true
hideIf Hide HTML element if expression is true
selectedIf Select <option> if expression is true
checkedIf Check the <input> checkbox if expression is true
options Generate <option> list for <select>
formatCurrency Format currency value according to country

⚠️

Helpers formatDate, formatCurrency and sprintf depend on an external dependency and it is up to the user to install these dependencies. Check the helper documentation for what dependencies to install.

Conditional

eq

Determine whether or not two values are equal (===).

Parameters:

value1 [any] First value to be compared with second. (Required)
value2 [any] Second value to be compared with first. (Required)

Returns boolean

Usage:

{{eq '3' 3}}    => false

{{#if (eq foo 'bar')}}
	Hello
{{/if}}

eqw

Determine whether or not two values are equal (==) i.e. weak checking.

Parameters:

value1 [any] First value to be compared with second. (Required)
value2 [any] Second value to be compared with first. (Required)

Returns boolean

Usage:

{{eqw '3' 3}}   => true

{{#if (eqw foo 'bar')}}
	Hello
{{/if}}

neq

Determine whether or not two values are not equal (!==).

Parameters:

value1 [any] First value to be compared with second. (Required)
value2 [any] Second value to be compared with first. (Required)

Returns boolean

Usage:

{{neq 4 3}}    => true

{{#if (neq foo 'bar')}}
	Hello
{{/if}}

neqw

Determine whether or not two values are not equal (!=) weak checking.

Parameters:

value1 [any] First value to be compared with second. (Required)
value2 [any] Second value to be compared with first. (Required)

Returns boolean

Usage:

{{neqw '3' 3}}    => false

{{#if (neqw foo 'bar')}}
	Hello
{{/if}}

lt

Check for less than condition (a < b).

Parameters:

value1 [any] First value to be compared with second. (Required)
value2 [any] Second value to be compared with first. (Required)

Returns boolean

Usage:

{{lt 2 3}}   => true

{{#if (lt 2 5)}}
	Hello
{{/if}}

lte

Check for less than or equals condition (a <= b).

Parameters:

value1 [any] First value to be compared with second. (Required)
value2 [any] Second value to be compared with first. (Required)

Returns boolean

Usage:

{{lte 2 3}}   => true

{{#if (lte 5 6)}}
	Hello
{{/if}}

gt

Check for greater than condition (a > b).

Parameters:

value1 [any] First value to be compared with second. (Required)
value2 [any] Second value to be compared with first. (Required)

Returns boolean

Usage:

{{gt 2 3}}   => false

{{#if (gt 10 7)}}
	Hello
{{/if}}

gte

Check for greater than or equals condition (a >= b).

Parameters:

value1 [any] First value to be compared with second. (Required)
value2 [any] Second value to be compared with first. (Required)

Returns boolean

Usage:

{{gte 3 3}}   => true

{{#if (gte 10 2)}}
	Hello
{{/if}}

not

Logical NOT of any expression. Equivalent to ! operator.

Parameters:

expression [any] Any expression.

Returns boolean

Usage:

{{not true}}    => false
{{not false}}   => true

{{#if (not (eq foo 'bar'))}}
	Hello
{{/if}}

ifx

Helper to imitate the ternary conditional operator ?:. E.g. 5 > 7 ? 'foo' : 'bar'.

Parameters:

condition [boolean] Satisfying condition for getting first value. Either true of false. (Required)
value1 [any] First value to be displayed as result. (Required)
value2 [any] Second value to be displayed as result. Defaults to an empty string (Optional)

Returns any

Usage:

{{ifx true 'Foo' 'Bar'}}        => Foo  // return (true) ? 'Foo' : 'Bar'
{{ifx false 'Foo' 'Bar'}}       => Foo  // return (false) ? 'Foo' : 'Bar'
{{ifx (eq value 1) 5 6}}        => 6    // return (value === 1) ? 5 : 6
{{ifx (not (eq value 1)) 5 6}}  => 6    // return (value !== 1) ? 5 : 6

<!-- The third parameter is optional, and by default it will be blank string ('') -->
{{ifx true 'active'}}  => 'active'
{{ifx false 'active'}}  => ''

empty

Check if an array is empty.

Parameters:

array [array] Array/object to be checked. (Required)

Returns boolean

Usage:

var array = [5, 6];     // An array.
{{empty array}} => false

{{#if (empty array)}}
	Hello
{{/if}}

count

Determine the length of an array. Equivalent to array.length operator in JavaScript.

Parameters:

array [array] Array whose elements to be counted. (Required)

Returns number|false

Usage:

var array = [5, 6];    // An array.
{{count array}} =>  2;

and

Returns the logical AND of two or more parameters passed i.e it is true iff all the parameters are true.

Parameters:

params [any] Any number of boolean parameters. (Required)

Returns boolean

Usage:

var value1 = value2 = true;
{{and value1 value2}}    => true

var value1 = false, value2 = true;
{{and value1 value2}}    => false

{{#if (and value1 value2)}}
    // do something
{{else}}
    // do something else
{{/if}}

or

Returns the logical OR of two or more parameters passed i.e it is true if any of the parameters is true.

Parameters:

params [any] Any number of boolean parameters. (Required)

Returns boolean

Usage:

var value1 = true, value2 = false;
{{or value1 value2}}    => true

var value = value2 = false;
{{or value1 value2}}    => false

{{#if (or value1 value2)}}
    // do something
{{else}}
    // do something else
{{/if}}

coalesce

Returns the first non-falsy value from the parameter list. Works quite similar to the SQL's COALESCE() function, but unlike this checks for the first non-false parameter.

Parameters:

params [any] Any number of parameters. (Required)

Returns any

Usage:

var fullName = 'Foo Bar', nickName = 'foob';
{{coalesce fullName nickName 'Unknown'}}    => 'Foo Bar'

var fullName = '', nickName = 'foob';
{{coalesce fullName nickName 'Unknown'}}    => 'foob'

includes

Returns true if an array includes a value. It checks for the existence of the value in array strictly(value + data type) by default. Can check non-strictly(value only) by sending third argument as false.

Parameters:

params [array] The array. (Required)
params [any] The value to be checked for existence in the array. (Required)
params [boolean] FALSE for non-strict checking. TRUE by default. (Optional)

Returns boolean

Usage:

var array = [1, 2, 3];
var value = 2;

{{includes array value}}        => true

var value = '2'
{{includes array value}}        => false
{{includes array value true}}   => false
{{includes array value false}}  => true

{{#if (includes array value)}}
   <!-- Do something -->
{{/if}}

{{ifx (includes array value) 'Yes' 'No'}}

Strings

excerpt

Extract a sub-string from a string.

Parameters:

string [string] The string from which characters are to be extracted. (Required)
length [int] Number of characters to be extracted from string. Default value is 50. (Optional)

Returns string

Usage:

{{excerpt 'Just Wow' 4}} => 'Just...'

sanitize

Converts a string to URL friendly dash-case string removing special characters.

Parameters

string [string] The string to be converted to URL. (Required)

Returns string

Usage:

{{sanitize 'JuSt #Wow'}} => 'just-wow'

newLineToBr

Replace \n with <br> tags.

Parameters:

string [string] The string that needs replacement of \n by <br> tags. (Required)

Returns string

Usage:

{{{newLineToBr 'newLineToBr helper \n is very \n useful.'}}}    => newLineToBr helper <br> is very <br> useful.

capitalizeEach

Capitalize the first letter of each word in a string.

Parameters

string [string] The sentence/string to be capitalized. (Required)

Returns string

Usage:

{{capitalizeEach 'just wow'}} => 'Just Wow'

capitalizeFirst

Capitalize the first letter of a string.

Parameters:

string [string] The sentence/string to be capitalized. (Required)

Returns string

Usage:

{{capitalizeFirst 'just wow'}} => 'Just wow'

sprintf

sprintf helper sends formatted data as string output.

Note: To use sprintf helper install sprintf-js.

npm install sprintf-js --save

Parameters:

format [string] The message/string that uses different formats of variables. (Required)
args [arbitrary arguments] Any number of parameters/values. (Required)

Returns string

Usage:

{{sprintf '%s %s!' 'Hello' 'Kabir' }}
{{sprintf '%s %s %d %s %d' 'Foo' 'Bar' 55 'Baz' '20'}}
{{sprintf '%(greeting)s %(name)s! How are you?' obj }}
{{sprintf '%(greeting)s %(name)s! ' greeting='Hello' name='Kabir'}}

lowercase

Changes the string to lowercase.

Parameters:

param [string] The string to be converted to lower case. (Required)

Returns string

Usage:

{{lowercase 'JUST WOW!!!'}} => 'just wow!!!'

uppercase

Changes the string to uppercase.

Parameters:

param [string] The string to be converted to upper case. (Required)

Returns string

Usage:

{{uppercase 'just wow!!!'}} => 'JUST WOW!!!'

first

Get the first element of a collection/array.

Parameters:

collection [array] The collection/array of objects(strings, integers). (Required)

Returns string

Usage:

someArray = ['David', 'Miller', 'Jones'];
{{first someArray}} => 'David'

last

Get the last element of a collection/array.

Parameters:

collection [array] The collection/array of objects(strings, integers). (Required)

Returns string

Usage:

someArray = ['David', 'Miller', 'Jones'];
{{last someArray}} => 'Jones'

concat

Concat two or more strings.

Parameters:

params [arguments] Any number of arguments. (Required)

Returns string

Usage:

{{concat 'Hello' ' world' '!!!'}} => 'Hello world!!!'

join

Join the elements of an array using a delimeter.

Parameters:

array [array] An array of elements to be joined. (Required)
delimeter [string] The delimeter using which the elements of array are to be joined. (Required)

Returns string

Usage:

someArray = ['Hands', 'legs', 'feet'];
{{join someArray ' & '}}   => 'Hands & legs & feet'

Math

sum

A sum helper calculating the sum of two numbers.

Parameters:

value1 [number] First number. (Required)
value2 [number] Second number. (Required)

Returns number

Usage:

{{sum 1 2}}     => 3
{{sum 5.6 6.7}} => 12.3

difference

A difference helper calculating the difference of two numbers.

Parameters:

value1 [number] First number. (Required)
value2 [number] Second number. (Required)

Returns number

Usage:

{{difference 5 2}}      => 3
{{difference 7.2 3.4}}  => 3.8

multiplication

A multiplication helper calculating the multiplication of two numbers.

Parameters:

value1 [number] First number. (Required)
value2 [number] Second number. (Required)

Returns number

Usage:

{{multiplication 5 2}}      => 10
{{multiplication 5.2 6.4}}  => 33.28

division

A division helper calculating the division of two numbers.

Parameters:

value1 [number] First number. (Required)
value2 [number] Second number. (Required)

Returns number

Usage:

{{division 4 2}}      => 2
{{division 5.2 1.6}}  => 3.25

remainder

A remainder helper calculating the remainder of two numbers.

Parameters:

value1 [number] First number. (Required)
value2 [number] Second number. (Required)

Returns number

Usage:

{{remainder 5 3}}      => 2
{{remainder 5.2 2.5}}  => 0.20000000000000018

ceil

A ceil helper to find the ceil value of the number. Equivalent to Math.ceil() in JavaScript.

Parameters:

value1 [number] Number to be rounded to nearest greater integer. (Required)

Returns integer

Usage:

{{ceil 5.6}}    => 6

floor

A floor helper to find the floor value of the number. Equivalent to Math.floor() in JavaScript.

Parameters:

value [number] Number to be rounded to nearest lower integer. (Required)

Returns integer

Usage:

{{floor 5.6}}   => 5

abs

An abs helper to find the absolute value of the number. Equivalent to Math.abs() in JavaScript.

Parameters:

value [number] Number to perform absolute value operation on. (Required)

Returns number

Usage:

{{abs -5.6}}   => 5.6

DateTime

Note: To use DateTime helpers install moment.

npm install moment --save

formatDate

A formatDate helper to format date using moment.js

Parameters:

formatString [string] Format string based on moment.js (Required)
date [date] The date/date-time that needs to be formatted. (set to current Date() if not provided)
localeString [string] ISO 3166-1 locale code represented in https://github.com/moment/moment/tree/develop/locale
or an array of possible locale codes, of which moment will use the first one it has a localization for.

Returns string

Usage:

var date = new Date();      // Date | Date-time
{{formatDate 'MM/DD/YYYY' date}}

var date = new Date('01/22/2016');
var possibleI8nCodes = ['xy', 'aa', 'de'];
{{formatDate 'YYYY-MM-DD' date}}    => 2016-01-22
{{formatDate 'LLLL', date, 'es'}}    => 'viernes, 22 de enero de 2016 0:00'
{{formatDate 'LLLL', date, possibleI8nCodes}}    => 'Freitag, 22. Januar 2016 00:00'

HTML

showIf

A showIf helper for showing any HTML element.

Parameters:

expression [boolean] Condition to be checked. (Required)

Returns string

Usage:

{{showIf true}}     => ''
{{showIf false}}    => 'hidden'

hideIf

A hideIf helper for hiding any HTML element.

Parameters:

expression [boolean] Condition to be checked. (Required)

Returns string

Usage:

{{hideIf true}}     => 'hidden'
{{hideIf false}}    => ''

selectedIf

A selectedIf helper for dropdown and radio boxes.

Parameters:

expression [boolean] Condition to be checked. (Required)

Returns string

Usage:

{{selectedIf true}}     => 'selected'

checkedIf

A checkedIf helper for checkboxes.

Parameters:

expression [boolean] Condition to be checked. (Required)

Returns string

Usage:

{{checkedIf true}}      => 'checked'

options

An options helper for generating <option> list for <select> dropdowns.

Parameters:

data [array] List of data (Required)
id [string] Name of identifier key from the data list, defaults to id (Optional)
text [string] Name of description key from the data list, defaults to description (Optional)
selected [string] Id to be set as selected (Optional)

Usage:

{{{options data}}}
{{{options data selected="value"}}}
{{{options data id="id" text="description"}}}

A simple example:

const data = [
    {
        id: 1,
        description: 'Foo'
    },
    {
        id: 2,
        description: 'Bar'
    },
    {
        id: 3,
        description: 'Foo Bar'
    }
];
{{{options data selected="2"}}}

will generate HTML:

<option value="1">Foo</option>
<option value="2" selected>Bar</option>
<option value="3">Foo Bar</option>

You can also override the default key names for id & description using the id & text options in the helper.

const data = [
    {
        value: 1,
        text: 'New York'
    },
    {
        value: 2,
        text: 'London'
    }
];
{{{options data selected="1" id="value" text="text"}}}

will generate HTML:

<option value="1" selected>New York</option>
<option value="2">London</option>

Formatters

formatCurrency

Format the currency value according to country code and locale.

Note: To use the formatCurrency helper install currencyformatter.js.

npm install currencyformatter.js --save

Parameters:

value [number] The numerical value of currency. (Required)
args [arbitrary arguments] The currency formatting parameters. (Optional)

Returns: string

Usage:

{{formatCurrency 1234567.89 code='USD'}}  => $1,234,567.89
{{formatCurrency 1234567.89 code='EUR'}}  => 1.234.567,89 €
{{formatCurrency 1234567.89 code='EUR' locale="en"}}  => €1,234,567.89

Note: The currency formatting parameters are used from https://github.com/osrec/currencyFormatter.js.

Contributing

Project participants should adhere to the Code of Conduct. If you are unsure about how to contribute please file an issue.

Start here: src/H.js

# Install dependencies
$ yarn

# Lint source code
$ yarn lint

# Compile everything
$ gulp

# Run all the tests
$ yarn test

Inspired by

Change Log

Check the CHANGELOG for change log and release history.

License

Licensed under The MIT License.

just-handlebars-helpers's People

Contributors

bipenc avatar dependabot[bot] avatar kabirbaidhya avatar lftrajug avatar mesaugat avatar rhanton avatar ryrob89 avatar sanjeevkpandit avatar thebinitghimire avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

just-handlebars-helpers's Issues

Have List of helpers like a table of contents

  • Have a list of helpers in the README above the Helpers section to give the short overview of what helpers do we have and what they do.
  • The format would be like this:
    | [Helper Name] | [One line description] |

Add `and` and `or` helpers

  • Add and and or helper.
  • For and: this will accept two or more parameters and return true if all of them are true.
  • For or: this will accept two or more parameters and return true if any of them is true.
  • This will allow us to do:
{{#if (and value1 value2) }}
    // do Something
{{else}}
    // do something else
{{/if}}

{{#if (or value1 value2) }}
    // do Something
{{else}}
    // do something else
{{/if}}

Implement the `include` helper

  • The include helper just like what we have in cummings {{{include 'sometemplate abc='xyz'}}}`
  • Improve it's functionality to allow retrieval of the current context information from included templates without having to explicitly provide the data like {{{lead=lead ...}}}

Logical operator consistency

Currently logical operators (like and, or) in the helpers are based on Javascript if operator.
Please consider implementing logical operators bases of the way of Handlebars if operator functions.
So that
{{#if (and a b)}} smth {{/if}} would act 100% as {{#if a}}{{#if b}} smth {{/if}}{{/if}}
Currently there are cases (for example empty array) where these two constructions differ and it may result unexpected behaviour in constructions like:

{{# if (or a b)}}
  Found:
  {{#if a}}Element a{{/if}}
  {{#if b}}Element b{{/if}}
{{/if}}

Thank you.

The 'or' operation doesn't seem to work

I have this in my page:

{{log "The or operator: " (or false false)}}

And I get back:

The or operator: true

which is obviously wrong.

If I register a new 'or' helper, where I check the hasOwnProperty then everything works fine:

        Handlebars.registerHelper('or', function () {
            var params =  Array.prototype.slice.call(arguments);
            if ((typeof params[params.length - 1] === 'object')) {
                params.pop();
            }

            for (var index in params) {
                if (params.hasOwnProperty(index) && params[index]) {
                    return true;
                }
            }

            return false;
        });

The or operator: false

Improvements on ifx helper

The ifx helper just provides a way of using the ternary operator ?: in handlebars.

Currently, we can do this with it:

<li class="{{ifx isEven 'even' 'odd'}}">

But a lot of times we we simply want to return nothing for the else case.
For instance:

<li class="{{ifx isActive 'active' ''}}">
<li class="{{ifx isUnavailable 'unavailable' ''}}">
<li class="{{ifx isUnavailable 'unavailable' ''}}">

So, I think we need to make the third parameter for {{ifx}} optional with a default value empty string ("").
So, we can just omit the else case like this:

<li class="{{ifx isActive 'active'}}">
<li class="{{ifx isUnavailable 'unavailable'}}">
<li class="{{ifx isUnavailable 'unavailable'}}">

Need an array helper contains or includes

This helper should check whether or not the array contains an element and return boolean.

Something like this:

var array = [1, 2, 3];
var value = 2;

{{includes array value}}

Since it returns a boolean, we can use it in any conditional helpers like:

{{#if (includes array value)}}
   <!-- Do something -->
{{/if}}

Includes = {{ifx (includes array value) 'Yes' 'No'}}

Proper formatting of JSDoc

Change the current set of JSDoc to use a proper standard.

Right now we have this:

/**
 * Determine whether or not two values are equal (==) i.e weak checking.
 * @example
 *      {{eqw '3' 3}}   => true
 *
 * @param value1
 * @param value2
 * @returns boolean
 */
export function eqw(value1, value2) {
  return (value1 == value2);
}

We are missing the type of parameter in all places. Need to update all the JSDoc blocks throughout the repository.

Example:

/**
 * Determine whether or not two values are equal (==) i.e weak checking.
 * @example
 *      {{eqw '3' 3}}   => true
 *
 * @param {any} value1
 * @param {any} value2
 * @returns {boolean}
 */
export function eqw(value1, value2) {
  return (value1 == value2);
}

Our docs does include the parameter type. We need to do the same in our code.

how to avoid conflicts with naming when we use variables inside with block helper?

Hi.
From backend I received this data

{
count: '...'',
hasResult: true,
query: '123', // input value
}

and my template is something like this

{{#with this}}
	{{#if hasResult}}
		For your query <strong>"{{query}}"</strong> found <strong>{{count}} peoples</strong>
	{{else}}
		Peoples not found
	{{/if}}
{{/with}}

I spent a lot of time trying to understand why instead of the value, a lie is returned to me before I realized that I connected your package with helper that have same name as "count".

How to avoid this with continue to use with (I like to use direct variables comp. to this.someValue)
Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.