Git Product home page Git Product logo

php-indenting-for-vim's People

Contributors

2072 avatar dkearns avatar dsawardekar avatar duncannz avatar edwardbetts avatar hallabro avatar hlfh avatar imicky avatar noahfrederick avatar tobiassjosten avatar tysonandre 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  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

php-indenting-for-vim's Issues

multiline string, multiline function

got this:

public function qry($src)
{
    $recs = $this->db->select(
        'select a.name, a.foo,b.bar from users a join companies b 
        on a.company=b.id and b.src=:src', 
array('src' => $src)
    );
return $recs;

}//end qry()

Expected behavior:

public function qry($src)
{
    $recs = $this->db->select(
        'select a.name, a.foo,b.bar from users a join companies b 
        on a.company=b.id and b.src=:src', 
        array('src' => $src)
    );
    return $recs;

}//end qry()

Note that if I write query string on a single line it works fine (overlength).
Or, if I write the array() straight after the comma it's also fine (2 args on 1 line).
May be #22 related?

Multiline class properties break indentation

So, today I found out that a multiline class property breaks the indentation for the file. I will try and describe it by giving example's:

I start of with the below, where //[] equals my current cursor position with insert-mode:

<?php

class testing
{
    protected $testing = 'This is a multiline
        property value
        that continues over multiple
        lines';//[]
}

When I hit return the cursor goes to the next line, but the indent is wrong:

<?php

class testing
{
    protected $testing = 'This is a multiline
        property value
        that continues over multiple
        lines';
//[]
}

Note the cursor position. So if I start inserting the next property without hitting tab again I get this:

<?php

class testing
{
    protected $testing = 'This is a multiline
        property value
        that continues over multiple
        lines';

protected $foobar;

}

Even when I manually override the spacing and insert the tabs after the fact like this:

<?php

class testing
{
    protected $testing = 'This is a multiline
        property value
        that continues over multiple
        lines';

    protected $foobar;

    public function __construct() {
        echo 'hello world';
    }
}

Once I hit gg=G to reformat the current file's spacing. It changes it to:

<?php

class testing
{
    protected $testing = 'This is a multiline
        property value
        that continues over multiple
        lines';

protected $foobar;

public function __construct() {
    echo 'hello world';
}
}

I am not really sure if it's my configuration or the plugin it self. My dotfiles can be found in my repository on github right here. More specifically my .vimrc can be found here and my plugin file here.

I can also tell you that vim does recognize the file as php (:set filetype? returns filetype=php). If you need some more info just ask. I can usually answer very quickly (if I can).

Wrong array indention with '()' in line and ',' at end

This gets wrong for some time now (I think it was OK some weeks ago):

<?php
$var = [
    'a' => b(),
        'c' => 'd'
    ];

Should be:

<?php
$var = [
    'a' => b(),
    'c' => 'd'
];

When the [] are exchanged with array() or the () are removed from b(), it is indented correctly:

<?php
$var = array(
    'a' => b(),
    'c' => 'd'
);

$var = [
    'a' => b,
    'c' => 'd'
];

Unwanted warnings

I when I add lines to code in other words 's I will all of sudden get these warnings

'Large indenting detected, speed optimizations engaged.'

'Large indenting deactivated.'

Are these neccessary they do nothing, I checked the code and break up my work flow.

thanks

--jerry

E117: Unknown function : ResetPhpOptions

I have this error that pops when I open a php file.

Error detected : ~/.vim/bundle/PHP-Indenting-for-VIm/indent/php.vim
line 493 :
E117: Unknown function : ResetPhpOptions

The plugin is working well, I installed it using Pathogen. And I checked the file, the function is here, around line 800.

array index issue with function call

we now get

<?php
return [
    'a' => foo()
    ->bar()
    ->baz(),
        'b' => foo()
        ->bar(),
        ];

but we want

<?php
return [
    'a' => foo()
        ->bar()
        ->baz(),
    'b' => foo()
        ->bar()
        ->baz(),
];

Problems with Indenting PHP when not inside <?php -- ?>

Indents inside php files is not acting as the way described in the readme file.

screen shot 2013-09-12 at 12 31 39 pm

However, I know the plugin is working because writing code inside of functions works perfectly. Even writing switch statements. I can also read the help text provided from within vim.

screen shot 2013-09-12 at 12 36 40 pm

I downloaded 7.4.22 MacVim and Vim from homebrew on my Mac.

Notable settings in my .vimrc include:
filetype plugin indent on
set nocompatible
set noexpandtab
set shiftwidth=4
set tabstop=4
set softtabstop=4
set lbr
set tw=500
set showbreak=----->
set nosmartindent
set autoindent
set nocindent
set wrap "Wrap lines
let g:PHP_vintage_case_default_indent = 1
let g:PHP_removeCRwhenUnix = 1

Here is a snapshot of plugins I'm using along with pathogen.

screen shot 2013-09-12 at 12 41 36 pm

Is there any settings that I need set or disabled? Or are there any plugins that can conflict with php-indent? Thanks!

indent issue for anonymous class

we now get

<?php
function foo()
{
    return new class extends StdClass
{
    public function hi()
    {
    }
}
}

but we want

<?php
function foo()
{
    return new class extends StdClass
    {
	public function hi()
	{
	}
    }
}

indent for chained

<?php

// if code with chained function call, and the code in
// the begining of the file, the code will be indent like this.
$user->hello()
->world();

// but below code will indent like this
function hello() {
    $user->hello()
        ->world();
}

// and same code will be indent not like code at the begining.
$user->hello()
    ->world();

// also, if code like this
$user->where([
    'xxx' => 'yyy',
])
->will()
->not()
->indent_here();
// no indent here ...

nested switch statements gets indentation wrong

This one gets the indentation confused:

<?
switch($one) {
case 'a':
    switch($two) {
    case 'b':
    }
    case 'c': # <-- should be one level higher
}

This should be:

<?
switch($one) {
case 'a':
    switch($two) {
    case 'b':
    }
case 'c':
}

Parenthesis and brackets not indent correctly when delimitMate plugin installed

This issue is when Raimondi/delimitMate is installed and the delimitMate_expand_cr option is enabled.

If you type [<cr> or (<cr>, the expected behavior is:

$arr = array(
    |
)

where | is the cursor position. Instead, what happens is:

$arr = array(
    |
    )

Notice the closing ) is indented one level farther than it should be. The same behavior happens with [ ].

I'm not sure if this is an issue with the indenting script, or DelimitMate. I guessed the indenting since { } pairs work fine, but if I was wrong I can open issue there instead.

:let g:PHP_outdentphpescape = 0 doesn't indent multi line PHP block

<p>Recent articles:</p>
<div>
    <div>
<?php
$cat = get_the_category();
$args = 'cat=';
foreach ($cat as $c) {

when indented using :let g:PHP_outdentphpescape = 0 becomes

<p>Recent articles:</p>
<div>
    <div>
    <?php
$cat = get_the_category();
$args = 'cat=';
foreach ($cat as $c) {

the <?php tag is moving, but the block does not follow the tag.

using vim 7.4 and the latest version of the plugin

Wrong indentation after a function and around inline comments

Something that has been bugging me for a while and I haven't been able to figure out if it's part of the indent script or something else. Take this code:

<?php

function helloFactory()
{
    $factory = array(
        function () {
            return sprintf(
                'Hello %s, %s?',
                /* $name = */ 'Stan',
                /* $question = */ 'How are you'
            );
        },
        'just a value'
    );

    return $factory[0];
}

$hello = helloFactory();

print $hello();

When I re-indent the entire file gg=G with tabstop=4 shiftwidth=4 expandtab, the lines just a value and the one after are indented incorrectly:

<?php [..]
        function () {
            return sprintf(
                'Hello %s, %s?',
                /* $name = */ 'Stan',
                /* $question = */ 'How are you'
            );
        },
            'just a value' # <--- line expected to be one level out
        );                 # <--- line expected to be one level out
[..]

Furthermore, if the return sprintf( block is de-dented like so:

<?php [...]
        function () { # v--- lines below intentionally de-dented one level out
        return sprintf(
            'Hello %s, %s?',
            /* $name = */ 'Stan',
            /* $question = */ 'How are you'
        );
        },
[...]

and then the entire file re-indented as above, the lines starting with a comment /* end up one level out:

<?php [..]
        function () {
            return sprintf(
                'Hello %s, %s?',
            /* $name = */ 'Stan',           # <--- line expected to be one level in
            /* $question = */ 'How are you' # <--- line expected to be one level in
        );
[..]

Are those two cases something the indent file should be able to handle?

CANT OPEN INDEX.PHP

define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);

if (file_exists(dirname(FILE) . '/defines.php')) {
include_once dirname(FILE) . '/defines.php';
}

if (!defined('_JDEFINES')) {
define('JPATH_BASE', dirname(FILE));
require_once JPATH_BASE.'/includes/defines.php';
}

require_once JPATH_BASE.'/includes/framework.php';

where thats error?

switch indent

We got

switch ($expr) {
case 0:
    echo 'First case, with a break';
    break;
case 1:
    echo 'Second case, which falls through';
    // no break
case 2:
case 3:
case 4:
    echo 'Third case, return instead of break';
    return;
default:
    echo 'Default case';
    break;
}

But we want

<?php
switch ($expr) {
    case 0:
        echo 'First case, with a break';
        break;
    case 1:
        echo 'Second case, which falls through';
        // no break
    case 2:
    case 3:
    case 4:
        echo 'Third case, return instead of break';
        return;
    default:
        echo 'Default case';
        break;
}

Issue

When doing this:

    public function __construct(TodoRepositoryInterface $repo,
        TaskCollectionInterface $collection)
{

}

instead of

    public function __construct(TodoRepositoryInterface $repo,
        TaskCollectionInterface $collection)
    {

    }

?

Array indentation gets broken

I encountered a buggy behavior in array indentation that can be reproducible in following steps:

  1. Run Vim without .vimrc: vim -u NORC
  2. let g:PHP_vintage_case_default_indent = 1
  3. set ft=php
  4. Input some code which contains array(s):
<?php
$x = [
];
$y = array(
);

after hitting return, the indentation becomes like this:

<?php
$x = [
    ];
$y = array(
    );

This does not happen when g:PHP_vintage_case_default_indent is disabled (default).

Environment: Vim version 8.0.946

Thank you.

Multi-line

Can you tell me why this is occuring:

<?php

Route::resource('sessions', 'SessionController');

Route::get('/', function()
    {

    });

INSTEAD OF

<?php

Route::resource('sessions', 'SessionController');

Route::get('/', function()
{

});

Annoying messages

When editing php file, the vim usually show the message "Large indenting detected, speed optimizations engaged (v1.33)" and "Large indenting deactivated" again and again, every time I have to press twice Enter to skip these message. It's annoying.
I checked the code, and find there are two "echom"s there showing these messages. And I cannot understand why they are necessary. I found that just commenting them out seems okay.
So I suggest to remove these two messages, they are really annoying.

indent/php.vim contributing to slow start-up time

I have been profiling the Vim start-up time of PHP files on my computer, and observed indent/php.vim to be a significant contributor.

I am loading a 4600-line file, and it takes about 2 seconds to execute the routines. The loaded file is from the Drupal 7.22 release: drupal/includes/form.inc.

To access the file:

  1. Download at https://drupal.org/download
  2. Unpack tgz
  3. Access drupal/includes/form.inc

Here are the relevant computer specs:

OS: Ubuntu 12.04
Hardware: Core i7, 8GB RAM
PHP indent: /usr/share/vim/vim73/indent/php.vim
Loaded file:

I ran the following command to generate the profile:

vim --startuptime vim_startup.log form.inc

Here is the profile output:

times in msec
clock self+sourced self: sourced script
clock elapsed: other lines

000.004 000.004: --- VIM STARTING ---

...

1198.451 933.461 933.461: sourcing /usr/share/vim/vim73/indent/php.vim

...

2163.653 932.103 932.103: sourcing /usr/share/vim/vim73/indent/php.vim

Thanks

Wrong indent on nested switch

Hello,
the indention works great with this extension.
But there is some mistake, which is obstructive.
This is an example of the mistake:

<?php
$test = 'url';
$test2 = 'url2';
switch ($test) {
    case 'a':
        echo "a";
        break;
    case 'b':
        switch ($test2) {
        case 'd':
            echo ";-)";
            break;
        default:
            echo 'test';
            break;
        }   
        break;
        case 'c':
            echo 'wrong indent !?';
            break;
}
?>

You see, that the 'case 'c'' is too indented. I think this is because of the switch which is in "case 'b'".
Can you fix it?

Thank you + best regards,
monofox

Indenting after an if - inside a function.

I've just installed your script to try and fix a recent problem with the default vim script installed on Fedora 22. It did not fix it - however I'm not sure if it is a problem in both or that your script does not override the wrong behaviour. I've confirmed your script is being loaded using 'vim -D'.

The problem does not appear at file scope level. Inside a function it does.

function test() {
    if( expr ) {
        dosomething();
    }
        // Indent after the closing brace is one too many.
}

I'm thinking it is probably a problem with the version in Fedora 22, and your script doesn't fix it. Otherwise surely someone else would have mentioned it here! Just a stab in the dark though.

Thanks! :-)

Indent empty lines

Hi,

How to manage empty lines?

if(true) {
    $var = "foo";
// empty line
    $foo = "var";
}

I would like Vim to keep indentation on empty lines.
Can you help?

Thank you for your work.

Read settings dynamically or later in an autocmd

If g:PHP_outdentphpescape is defined as zero AFTER the indent plugin is loaded, it is too late and the plugin will have already set the buffer local b:PHP_outdentphpescape to the default value (1)

occurs when loaded using a plugin manager (e.g. vim-plug)

Unknown function error on startup

When I load a PHP file in vim, I get this error:

Error detected while processing /Applications/MacVim.app/Contents/Resources/vim/runtime/indent/php.vim:
line 118:
E117: Unknown function: ResetPhpOptions

Screenshot:
screen shot 2013-09-02 at 1 00 11 pm

Do you have any suggestions for how I could go about fixing this? FWIW, here's the area around line 118 of php.vim:

if exists("*GetPhpIndent")
call ResetPhpOptions()
finish
endif

And here's the ResetPhpOptions function definition:

function! ResetPhpOptions()
if ! b:optionsset && &filetype == "php"
if b:PHP_autoformatcomment

 setlocal comments=s1:/*,mb:*,ex:*/,://,:#

 setlocal formatoptions-=t
 setlocal formatoptions+=q
 setlocal formatoptions+=r
 setlocal formatoptions+=o
 setlocal formatoptions+=w
 setlocal formatoptions+=c
 setlocal formatoptions+=b

endif
let b:optionsset = 1
endif
endfunc

wrong indent on conditionals

I'm using vim 7.3.496 and php indent 1.35. The following code is wrong indented:

foreach ($x as $value) {
   if (!($i % 2)) print '<tr>';
      print '<td>'.$value.'</td>';
      if ($i % 2) print "</tr>\n";
   $i++;
}

Moreover, I see that shiftwidth is always set to 3. How can I set it to 2?

Many thanks in advance,

Cesar

mulit-line code within parentheses followed by curly brace indent issue

I just downloaded your vim php indent script, it was handy
buy I found following php code couldn't be well indented:

<?php
if(func_that_has_long_name_a() or                    
    func_that_has_long_name_b()){   
        $suffix = date('Y-m-d') . '.dump.gz';
    } else{
        $suffix = date('w') . '.dump.gz';
    } 

I'm using vim 7.2.

multiple nested closures

seeing a strange bug... any ideas?

<?php

Route::get('test', function()
{
  echo 'correct indentation';
});

Route::get('test', function()
  {
    echo 'incorrect indentation';
  });

myfunc(function()
  {
    echo 'incorrect indentation';
  });

myfunc(function()
  {
    echo 'incorrect indentation';
  });

myfunc(function()
  {
    echo 'incorrect indentation';
  });

function()
{
  echo 'ok here';
};

function()
{
  echo 'ok here';
}

myfunc(function()
{
  echo 'and here';
});

if ($test = 1) {
  echo 'also ok here';
}

if ($test3 == $test4)
{
  echo 'only a problem with the second nested structures... appearing after an initial set of nested structures?';
}

Head scratching

Hi,

I just installed the plugin and read the doc.
How do ask it to re-indent (fix indent) to a file with mixed indent?

Tank you :)

incorrect indent for function arguments in separated line

// it should be like this
$user
    ->some_func(
        $arg1, $arg2   
    );

// but actually 
$user
    ->some_func(
    $arg1, $arg2
);

it caused by code at line 1617-1619 of php.vim, it not check the condition like this and subtract a s:sw() width of indentation.

Broken in some nested sentence

Like below sentence.

<?php

if (count([
  1,  // needs more one level
  2,
  3,
  4,
])) {
expr;   // not indented
}

Expected:

<?php

if (count([
    1,
    2,
    3,
    4,
])) {
  expr;
}

Multiple line strings are indented incorrectly

Where a file contains multiple line strings the contents of the strings are currently indented.

What should happen (I think) is to treat them the same way as heredoc. e.g. this example preserves the indenting when the quotes are replaced with heredoc.

<?php

<?php

$string = "
        a multiple
    line string
with
    different
indents
";

becomes:

$string = "
a multiple
line string
with
different
indents
";

Indenting problem

A "{" added after "foreach ..." in the following file will not get indented correctly (no variables regarding to PHP indenting were modified):


<?php
   foreach ($defaults as $d_key => $d_val)
      {  << brace should be left-aligned with the beginning of "foreach"

   foreach ...
      {
xxx  << the next line feed takes me to here...

I'm using version 1.62 of indent\php.vim with latest gvim.

Function-returning-reference body indenting

Given the following file:

<?php
class Foo {
    public function &bar() {
        $foo = 0;
    }
}

Indenting the class (gg=G) causes the function body and end-of-function brace to be indented one sw to the left of where it should be:

<?php
class Foo {
    public function &bar() {
    $foo = 0;
}
}

Wrong indent on nested switch with if

Refs #6:

When an if-statement follows the nested switch, indention get's wrong like this:

<?
switch($a) {
case 'a':
    switch($aa) {
    case 'aa':
        break;
    }

    if( $c ) { 
    }
    break;
    case 'b': # <-- indention wrong
        break;
}

Without the if( $c ) { } it gets it right, or when the closing bracket of the if is on the same line.

Multiple case statements indents weird

One problem I seem to have with this syntaxing is the following usecase

switch ($somevar) {
    case 'first':
        case 'second':
            $some = 'thing';
            break;
            case 'third':
                case 'fourth':
                    $other = 'thing';
                    break;
                    default:
                        $last = 'thing';
}

This uses the let PHP_vintage_case_default_indent=1, so we get the indentation on case 'first'. But I'd rather that cases, on separate lines didn't further indent. Id expect the above block of code to be formatted as such:

switch ($somevar) {
    case 'first':
    case 'second':
        $some = 'thing';
        break;
    case 'third':
    case 'fourth':
        $other = 'thing';
        break;
    default:
        $last = 'thing';
}

Wrong indent level for multiple PHP blocks (starting at different levels)

Given the following code GetPhpIndent returns "0" for the echo 'bar'; line:

<?php
echo 'foo';
?>

    <?php
    echo 'bar';
    ?>

Is this expected, or a configuration issue?

gg=G results in this:

<?php
echo 'foo';
?>

  <?php
echo 'bar';
?>

My expected result would be to keep it like before gg=G.

(settings: ts=2, sw=2, et)

I have noticed that GetPhpIndent might be correct sometimes, but after == on the line, it indents it on level "0" and then will also return "0" afterwards (when called with echo).

I can imagine that it gets the outer indenting level wrong from the code block above.

I am using the following:

let php_sql_query = 1
let php_htmlInStrings = 1
let PHP_outdentphpescape = 0

I am using the Git master version.

Note that I am usually using EclimPhpGetIndent (via https://github.com/ervandew/eclim/blob/master/org.eclim.pdt/vim/eclim/indent/php.vim#L41), but have tried it with and without.

Extraneous indentation between two blocks causes hang

While editing some PHP source, I discovered a condition that causes vim to hang with this indentation script. I've minimized it down to this weird, but apparently valid, PHP:

<?php
{
}
 ;
{}

(note the space before the semicolon)

The hang occurs if I use o or O to insert a new line between the semicolon and the bottom braces. If I look at vim's CPU usage in top it's around 100%. I haven't waited to see if it would clear itself. If I hit Ctrl-C it breaks out and I can edit. I'm assuming the hanging isn't really your code, but vim's regexp code or something like that. But I'm hoping you can find the regexp that causes this, to either workaround the issue or report to the Vim maintainers.

The top braces have to be multi-line, but the bottom ones can be either way. It hangs with normal code, like adding if for the blocks and a simple echo for the statement. The hang will not occur with either brace pair gone.

I used this vimrc:

syntax enable
source ~/tmp/php.vim

~/tmp/php.vim is the indent/php.vim file from commit 4328c3839fbaa0591f95ed34908641299617d595 (current master/HEAD). I'm using VIM 7.4 "huge" on Linux (Debian-based distro.) It looks like at some point the PHP syntax file from the runtime gets sourced. I haven't made any changes to the standard runtime, but the Debian package maintainers may have.

Obviously this is a pretty obscure issue, and may not be worth fixing if it risks breaking more important things. Anyway, let me know if you have questions or things for me to try. Thanks.

Wrong indent on nested arrays

Currently has:

public function indent()
{
    return array(
        array('allow',  // allow all users to perform actions
        'actions'=>array('welcome','display'),
        'users'=>array('*'),
    ),
)
}

But should be:

public function indent()
{
    return array(
        array('allow',  // allow all users to perform actions
            'actions'=>array('welcome','display'),
            'users'=>array('*'),
        ),
    )
}

Thanks for the indentation file! It's been quite useful otherwise.

Add support for new array literal

Hi,
I was hoping you could add support for the new array literal syntax in php 5.4

Perhaps something like this:

$a = [
\t"b"=>[
\t\t"c"=>1,
\t\t"d"=>2,
\t],
\t"e"=>3,
\t"f"=>[
\t\t1,
\t\t2,
\t\t3,
\t],
]

Thanks

PHP with HTML

The indentation doesn't work properly when using raw html in a php file, such as a view file.

Example: create a php file and type this:

<div>
    <p>

Then if you click enter you will be directed to the beginning of the line.

Are you aware of this?

Indentation after a single line with properly closed braces

From a previous email, before the author acknowledged it as a bug:

---- previous description ----

Hi!

I noticed a strange occurrence when I was doing some PHP coding. When I hit the "o" key to open a new line on a single, properly-closed line of code, it indented it as if it was expecting some code for a block statement on the next line.

Someone else in #vim @ Freenode confirmed it once I gave them instructions.

It is easily demonstrable, just simply follow the small instructions in the gist below, provided you have "indenting" enabled, of course :)

https://gist.github.com/4687919

Any thoughts? Thank you.

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.