Merge pull request #1136 from aidistan/master
Implement a basic beautifer for Vue Components
This commit is contained in:
commit
6a99b0a1bd
|
@ -101,6 +101,7 @@ See [all supported options in the documentation at `docs/options.md`](https://g
|
||||||
| TypeScript | `TypeScript` |`.ts` | [`TypeScript Formatter`](https://github.com/vvakame/typescript-formatter) (Default) |
|
| TypeScript | `TypeScript` |`.ts` | [`TypeScript Formatter`](https://github.com/vvakame/typescript-formatter) (Default) |
|
||||||
| Vala | `Vala` |`.vala`, `.vapi` | [`Uncrustify`](https://github.com/uncrustify/uncrustify) (Default) |
|
| Vala | `Vala` |`.vala`, `.vapi` | [`Uncrustify`](https://github.com/uncrustify/uncrustify) (Default) |
|
||||||
| Visualforce | `Visualforce` |`.page` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
|
| Visualforce | `Visualforce` |`.page` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
|
||||||
|
| Vue | `Vue Component` |`.vue` | `Vue Beautifier` (Default) |
|
||||||
| XML | `SLD`, `XML`, `XHTML`, `XSD`, `XSL`, `JSP` |`.sld`, `.xml`, `.xhtml`, `.xsd`, `.xsl`, `.jsp` | [`JS Beautify`](https://github.com/beautify-web/js-beautify), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
|
| XML | `SLD`, `XML`, `XHTML`, `XSD`, `XSL`, `JSP` |`.sld`, `.xml`, `.xhtml`, `.xsd`, `.xsl`, `.jsp` | [`JS Beautify`](https://github.com/beautify-web/js-beautify), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
|
||||||
| XTemplate | `XTemplate` |`.xtemplate` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
|
| XTemplate | `XTemplate` |`.xtemplate` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ install:
|
||||||
|
|
||||||
# Ruby & Gem
|
# Ruby & Gem
|
||||||
- cinst ruby -y
|
- cinst ruby -y
|
||||||
- "SET PATH=C:\\Ruby193\\bin;%PATH%"
|
- "SET PATH=C:\\tools\\ruby23\\bin;%PATH%"
|
||||||
# Rubocop
|
# Rubocop
|
||||||
- gem install rubocop
|
- gem install rubocop
|
||||||
- where rubocop
|
- where rubocop
|
||||||
|
@ -98,6 +98,8 @@ install:
|
||||||
- cinst emacs -y
|
- cinst emacs -y
|
||||||
- where emacs
|
- where emacs
|
||||||
|
|
||||||
|
# FIXME: Enable allowEmptyChecksums, until someone fixes the checksum issue of php
|
||||||
|
- choco feature enable -n allowEmptyChecksums
|
||||||
# PHP
|
# PHP
|
||||||
- cinst php -y
|
- cinst php -y
|
||||||
- ps: "ls \"C:\\tools\\php\""
|
- ps: "ls \"C:\\tools\\php\""
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
<template>
|
||||||
|
<base-view>
|
||||||
|
<div slot="page-body" class="row">
|
||||||
|
Your content here!
|
||||||
|
</div>
|
||||||
|
</base-view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data: function() {
|
||||||
|
return {
|
||||||
|
text: 'Hello, world!'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="sass">
|
||||||
|
nav {
|
||||||
|
ul {
|
||||||
|
margin:0 padding: 0;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
nav {
|
||||||
|
ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,45 @@
|
||||||
|
<template>
|
||||||
|
<base-view>
|
||||||
|
<div slot="page-body" class="row">
|
||||||
|
Your content here!
|
||||||
|
</div>
|
||||||
|
</base-view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data: function() {
|
||||||
|
return {
|
||||||
|
text: 'Hello, world!'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="sass">
|
||||||
|
nav {
|
||||||
|
ul {
|
||||||
|
margin: 0
|
||||||
|
padding: 0
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
display: inline-block
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
display: block
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
nav {
|
||||||
|
ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
li { display: inline-block; }
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -94,6 +94,11 @@ describe "BeautifyLanguages", ->
|
||||||
# All Languages for configuration
|
# All Languages for configuration
|
||||||
langNames = fs.readdirSync(langsDir)
|
langNames = fs.readdirSync(langsDir)
|
||||||
for lang in langNames
|
for lang in langNames
|
||||||
|
|
||||||
|
# FIXME: Skip testing ocaml in Windows
|
||||||
|
if isWindows && lang == 'ocaml'
|
||||||
|
continue
|
||||||
|
|
||||||
do (lang) ->
|
do (lang) ->
|
||||||
# Generate the path to where al of the tests are
|
# Generate the path to where al of the tests are
|
||||||
testsDir = path.resolve(langsDir, lang)
|
testsDir = path.resolve(langsDir, lang)
|
||||||
|
|
|
@ -66,6 +66,7 @@ module.exports = class Beautifiers extends EventEmitter
|
||||||
'stylish-haskell'
|
'stylish-haskell'
|
||||||
'tidy-markdown'
|
'tidy-markdown'
|
||||||
'typescript-formatter'
|
'typescript-formatter'
|
||||||
|
'vue-beautifier'
|
||||||
'yapf'
|
'yapf'
|
||||||
'erl_tidy'
|
'erl_tidy'
|
||||||
'marko-beautifier'
|
'marko-beautifier'
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
"use strict"
|
||||||
|
Beautifier = require('./beautifier')
|
||||||
|
prettydiff = require("prettydiff")
|
||||||
|
_ = require('lodash')
|
||||||
|
|
||||||
|
module.exports = class VueBeautifier extends Beautifier
|
||||||
|
name: "Vue Beautifier"
|
||||||
|
|
||||||
|
options:
|
||||||
|
Vue: true
|
||||||
|
|
||||||
|
beautify: (text, language, options) ->
|
||||||
|
return new @Promise((resolve, reject) ->
|
||||||
|
regexp = /(<(template|script|style)[^>]*>)((\s|\S)*?)<\/\2>/gi
|
||||||
|
|
||||||
|
resolve(text.replace(regexp, (match, begin, type, text) ->
|
||||||
|
lang = /lang\s*=\s*['"](\w+)["']/.exec(begin)?[1]
|
||||||
|
|
||||||
|
switch type
|
||||||
|
when "template"
|
||||||
|
switch lang
|
||||||
|
when "pug", "jade"
|
||||||
|
match.replace(text, "\n" + require("pug-beautify")(text, options) + "\n")
|
||||||
|
when undefined
|
||||||
|
match.replace(text, "\n" + require("js-beautify").html(text, options) + "\n")
|
||||||
|
else
|
||||||
|
match
|
||||||
|
when "script"
|
||||||
|
match.replace(text, "\n" + require("js-beautify")(text, options) + "\n")
|
||||||
|
when "style"
|
||||||
|
switch lang
|
||||||
|
when "sass", "scss"
|
||||||
|
options = _.merge options,
|
||||||
|
source: text
|
||||||
|
lang: "scss"
|
||||||
|
mode: "beautify"
|
||||||
|
match.replace(text, prettydiff.api(options)[0])
|
||||||
|
when "less"
|
||||||
|
options = _.merge options,
|
||||||
|
source: text
|
||||||
|
lang: "less"
|
||||||
|
mode: "beautify"
|
||||||
|
match.replace(text, prettydiff.api(options)[0])
|
||||||
|
when undefined
|
||||||
|
match.replace(text, "\n" + require("js-beautify").css(text, options) + "\n")
|
||||||
|
else
|
||||||
|
match
|
||||||
|
))
|
||||||
|
)
|
|
@ -64,6 +64,7 @@ module.exports = class Languages
|
||||||
"twig"
|
"twig"
|
||||||
"typescript"
|
"typescript"
|
||||||
"vala"
|
"vala"
|
||||||
|
"vue"
|
||||||
"visualforce"
|
"visualforce"
|
||||||
"xml"
|
"xml"
|
||||||
"xtemplate"
|
"xtemplate"
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
name: "Vue"
|
||||||
|
namespace: "vue"
|
||||||
|
fallback: ['html']
|
||||||
|
|
||||||
|
###
|
||||||
|
Supported Grammars
|
||||||
|
###
|
||||||
|
grammars: [
|
||||||
|
"Vue Component"
|
||||||
|
]
|
||||||
|
|
||||||
|
###
|
||||||
|
Supported extensions
|
||||||
|
###
|
||||||
|
extensions: [
|
||||||
|
"vue"
|
||||||
|
]
|
||||||
|
|
||||||
|
defaultBeautifier: "Vue Beautifier"
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue