Merge pull request #744 from ra100/master

PHPCBF (PHP_CodeSniffer) + Remark for Markdown support
This commit is contained in:
Glavin Wiechert 2016-02-20 15:27:52 -04:00
commit e43952c7d3
9 changed files with 462 additions and 3 deletions

View File

@ -1571,6 +1571,82 @@ If a terminating comma should be inserted into arrays, object literals, and dest
} }
``` ```
#### [Markdown - Gfm](#markdown---gfm)
**Namespace**: `markdown`
**Key**: `gfm`
**Default**: `true`
**Type**: `boolean`
**Supported Beautifiers**: [`Remark`](#remark)
**Description**:
GitHub Flavoured Markdown (Supported by Remark)
**Example `.jsbeautifyrc` Configuration**
```json
{
"markdown": {
"gfm": true
}
}
```
#### [Markdown - Yaml](#markdown---yaml)
**Namespace**: `markdown`
**Key**: `yaml`
**Default**: `true`
**Type**: `boolean`
**Supported Beautifiers**: [`Remark`](#remark)
**Description**:
Enables raw YAML front matter to be detected (thus ignoring markdown-like syntax). (Supported by Remark)
**Example `.jsbeautifyrc` Configuration**
```json
{
"markdown": {
"yaml": true
}
}
```
#### [Markdown - Commonmark](#markdown---commonmark)
**Namespace**: `markdown`
**Key**: `commonmark`
**Type**: `boolean`
**Supported Beautifiers**: [`Remark`](#remark)
**Description**:
Allows and disallows several constructs. (Supported by Remark)
**Example `.jsbeautifyrc` Configuration**
```json
{
"markdown": {
"commonmark": false
}
}
```
#### [Objective-C - Config Path](#objective-c---config-path) #### [Objective-C - Config Path](#objective-c---config-path)
**Namespace**: `objectivec` **Namespace**: `objectivec`
@ -1715,6 +1791,54 @@ By default, all PSR-2 fixers and some additional ones are run. (Supported by PHP
} }
``` ```
#### [PHP - PHPCBF Path](#php---phpcbf-path)
**Namespace**: `php`
**Key**: `phpcbf_path`
**Type**: `string`
**Supported Beautifiers**: [`PHP-CS-Fixer`](#php-cs-fixer) [`PHPCBF`](#phpcbf)
**Description**:
Path to the `phpcbf` CLI executable (Supported by PHP-CS-Fixer, PHPCBF)
**Example `.jsbeautifyrc` Configuration**
```json
{
"php": {
"phpcbf_path": ""
}
}
```
#### [PHP - PHPCBF Standard](#php---phpcbf-standard)
**Namespace**: `php`
**Key**: `standard`
**Type**: `string`
**Supported Beautifiers**: [`PHP-CS-Fixer`](#php-cs-fixer) [`PHPCBF`](#phpcbf)
**Description**:
Standard name Squiz, PSR2, PSR1, PHPCS, PEAR, Zend, MySource... or path to CS rules (Supported by PHP-CS-Fixer, PHPCBF)
**Example `.jsbeautifyrc` Configuration**
```json
{
"php": {
"standard": ""
}
}
```
#### [Python - Max line length](#python---max-line-length) #### [Python - Max line length](#python---max-line-length)
**Namespace**: `python` **Namespace**: `python`
@ -3317,7 +3441,7 @@ Disable Markdown Beautification
**Type**: `string` **Type**: `string`
**Enum**: `Tidy Markdown` **Enum**: `Remark` `Tidy Markdown`
**Description**: **Description**:
@ -3647,7 +3771,7 @@ Disable PHP Beautification
**Type**: `string` **Type**: `string`
**Enum**: `PHP-CS-Fixer` **Enum**: `PHP-CS-Fixer` `PHPCBF`
**Description**: **Description**:
@ -6478,6 +6602,85 @@ Path to the emacs script (Supported by Fortran Beautifier)
``` ```
### Remark
#### [Markdown - Gfm](#markdown---gfm)
**Namespace**: `markdown`
**Key**: `gfm`
**Default**: `true`
**Type**: `boolean`
**Supported Beautifiers**: [`Remark`](#remark)
**Description**:
GitHub Flavoured Markdown (Supported by Remark)
**Example `.jsbeautifyrc` Configuration**
```json
{
"markdown": {
"gfm": true
}
}
```
#### [Markdown - Yaml](#markdown---yaml)
**Namespace**: `markdown`
**Key**: `yaml`
**Default**: `true`
**Type**: `boolean`
**Supported Beautifiers**: [`Remark`](#remark)
**Description**:
Enables raw YAML front matter to be detected (thus ignoring markdown-like syntax). (Supported by Remark)
**Example `.jsbeautifyrc` Configuration**
```json
{
"markdown": {
"yaml": true
}
}
```
#### [Markdown - Commonmark](#markdown---commonmark)
**Namespace**: `markdown`
**Key**: `commonmark`
**Type**: `boolean`
**Supported Beautifiers**: [`Remark`](#remark)
**Description**:
Allows and disallows several constructs. (Supported by Remark)
**Example `.jsbeautifyrc` Configuration**
```json
{
"markdown": {
"commonmark": false
}
}
```
### Perltidy ### Perltidy
#### [Perl - Perltidy profile](#perl---perltidy-profile) #### [Perl - Perltidy profile](#perl---perltidy-profile)
@ -6579,6 +6782,105 @@ By default, all PSR-2 fixers and some additional ones are run. (Supported by PHP
} }
``` ```
#### [PHP - PHPCBF Path](#php---phpcbf-path)
**Namespace**: `php`
**Key**: `phpcbf_path`
**Type**: `string`
**Supported Beautifiers**: [`PHP-CS-Fixer`](#php-cs-fixer) [`PHPCBF`](#phpcbf)
**Description**:
Path to the `phpcbf` CLI executable (Supported by PHP-CS-Fixer, PHPCBF)
**Example `.jsbeautifyrc` Configuration**
```json
{
"php": {
"phpcbf_path": ""
}
}
```
#### [PHP - PHPCBF Standard](#php---phpcbf-standard)
**Namespace**: `php`
**Key**: `standard`
**Type**: `string`
**Supported Beautifiers**: [`PHP-CS-Fixer`](#php-cs-fixer) [`PHPCBF`](#phpcbf)
**Description**:
Standard name Squiz, PSR2, PSR1, PHPCS, PEAR, Zend, MySource... or path to CS rules (Supported by PHP-CS-Fixer, PHPCBF)
**Example `.jsbeautifyrc` Configuration**
```json
{
"php": {
"standard": ""
}
}
```
### PHPCBF
#### [PHP - PHPCBF Path](#php---phpcbf-path)
**Namespace**: `php`
**Key**: `phpcbf_path`
**Type**: `string`
**Supported Beautifiers**: [`PHP-CS-Fixer`](#php-cs-fixer) [`PHPCBF`](#phpcbf)
**Description**:
Path to the `phpcbf` CLI executable (Supported by PHP-CS-Fixer, PHPCBF)
**Example `.jsbeautifyrc` Configuration**
```json
{
"php": {
"phpcbf_path": ""
}
}
```
#### [PHP - PHPCBF Standard](#php---phpcbf-standard)
**Namespace**: `php`
**Key**: `standard`
**Type**: `string`
**Supported Beautifiers**: [`PHP-CS-Fixer`](#php-cs-fixer) [`PHPCBF`](#phpcbf)
**Description**:
Standard name Squiz, PSR2, PSR1, PHPCS, PEAR, Zend, MySource... or path to CS rules (Supported by PHP-CS-Fixer, PHPCBF)
**Example `.jsbeautifyrc` Configuration**
```json
{
"php": {
"standard": ""
}
}
```
### autopep8 ### autopep8

View File

@ -53,3 +53,5 @@
indent_size: 4 indent_size: 4
erb: erb:
indent_size: 4 indent_size: 4
markdown:
listItemIndent: 1

View File

@ -26,5 +26,8 @@
"indent_char": " ", "indent_char": " ",
"indent_level": 0, "indent_level": 0,
"indent_with_tabs": false "indent_with_tabs": false
},
"markdown": {
"listItemIndent": "1"
} }
} }

View File

@ -91,6 +91,7 @@
"node-dir": "^0.1.8", "node-dir": "^0.1.8",
"node-uuid": "^1.4.3", "node-uuid": "^1.4.3",
"prettydiff": "^1.16.8", "prettydiff": "^1.16.8",
"remark": "^3.2.2",
"season": "^5.3.0", "season": "^5.3.0",
"space-pen": "^5.1.1", "space-pen": "^5.1.1",
"strip-json-comments": "^1.0.2", "strip-json-comments": "^1.0.2",

View File

@ -49,8 +49,10 @@ module.exports = class Beautifiers extends EventEmitter
'jscs' 'jscs'
'perltidy' 'perltidy'
'php-cs-fixer' 'php-cs-fixer'
'phpcbf'
'prettydiff' 'prettydiff'
'puppet-fix' 'puppet-fix'
'remark'
'rubocop' 'rubocop'
'ruby-beautify' 'ruby-beautify'
'rustfmt' 'rustfmt'

View File

@ -0,0 +1,81 @@
###
Requires https://github.com/FriendsOfPHP/phpcbf
###
"use strict"
Beautifier = require('./beautifier')
module.exports = class PHPCBF extends Beautifier
name: "PHPCBF"
options: {
_:
standard: ["standard", (standard) ->
if (standard) then \
standard else "PEAR"
]
phpcbf_path: (phpcbf_path) -> phpcbf_path or @which('phpcbf')
PHP: true
}
beautify: (text, language, options) ->
@debug('phpcbf', options)
isWin = @isWindows
if isWin
# Find phpcbf.phar script
@Promise.all([
@which(options.phpcbf_path) if options.phpcbf_path
@which('phpcbf')
]).then((paths) =>
@debug('phpcbf paths', paths)
_ = require 'lodash'
path = require 'path'
# Get first valid, absolute path
phpcbfPath = _.find(paths, (p) -> p and path.isAbsolute(p) )
@verbose('phpcbfPath', phpcbfPath)
@debug('phpcbfPath', phpcbfPath, paths)
# Check if phpcbf path was found
if phpcbfPath?
# Found phpcbf path
@run("php", [
phpcbfPath
"--no-patch"
"--standard=#{options.standard}" if options.standard
tempFile = @tempFile("temp", text)
], {
ignoreReturnCode: true
help: {
link: "http://php.net/manual/en/install.php"
}
})
.then(=>
@readFile(tempFile)
)
else
@verbose('phpcbf not found!')
# Could not find phpcbf path
@Promise.reject(@commandNotFoundError(
'phpcbf'
{
link: "https://github.com/squizlabs/PHP_CodeSniffer"
program: "phpcbf.phar"
pathOption: "PHPCBF Path"
})
)
)
else
@run("phpcbf", [
"--no-patch"
"--standard=#{options.standard}" if options.standard
tempFile = @tempFile("temp", text)
], {
ignoreReturnCode: true
help: {
link: "https://github.com/squizlabs/PHP_CodeSniffer"
}
})
.then(=>
@readFile(tempFile)
)

View File

@ -0,0 +1,43 @@
"use strict"
Beautifier = require('./beautifier')
module.exports = class Remark extends Beautifier
name: "Remark"
options: {
_: {
gfm: true
yaml: true
commonmark: true
footnotes: true
pedantic: true
breaks: true
entities: true
setext: true
closeAtx: true
looseTable: true
spacedTable: true
fence: true
fences: true
bullet: true
listItemIndent: true
incrementListMarker: true
rule: true
ruleRepetition: true
ruleSpaces: true
strong: true
emphasis: true
position: true
}
Markdown: true
}
beautify: (text, language, options) ->
return new @Promise((resolve, reject) ->
try
remark = require 'remark'
cleanMarkdown = remark.process(text, options)
resolve cleanMarkdown
catch err
@error("Remark error: #{err}")
reject(err)
)

View File

@ -18,6 +18,19 @@ module.exports = {
"md" "md"
] ]
options: [] defaultBeautifier: "Tidy Markdown"
options:
gfm:
type: 'boolean'
default: true
description: 'GitHub Flavoured Markdown'
yaml:
type: 'boolean'
default: true
description: 'Enables raw YAML front matter to be detected (thus ignoring markdown-like syntax).'
commonmark:
type: 'boolean'
default: false
description: 'Allows and disallows several constructs.'
} }

View File

@ -15,6 +15,8 @@ module.exports = {
### ###
extensions: [ extensions: [
"php" "php"
"module"
"inc"
] ]
options: options:
@ -31,5 +33,15 @@ module.exports = {
type: 'string' type: 'string'
default: "" default: ""
description: "By default, all PSR-2 fixers and some additional ones are run." description: "By default, all PSR-2 fixers and some additional ones are run."
phpcbf_path:
title: "PHPCBF Path"
type: 'string'
default: ""
description: "Path to the `phpcbf` CLI executable",
standard:
title: "PHPCBF Standard"
type: 'string'
default: "",
description: "Standard name Squiz, PSR2, PSR1, PHPCS, PEAR, Zend, MySource... or path to CS rules"
} }