Some templating improvements
This commit is contained in:
parent
6d0f9c95c4
commit
441b6df7f3
7 changed files with 207 additions and 65 deletions
|
@ -25,6 +25,13 @@ def _parse_composer_manifest(path):
|
||||||
manifest = json.load(composer_file)
|
manifest = json.load(composer_file)
|
||||||
return manifest
|
return manifest
|
||||||
|
|
||||||
|
def _get_package_name(manifest):
|
||||||
|
'''Return the name field from composer.json.'''
|
||||||
|
try:
|
||||||
|
return manifest['name']
|
||||||
|
except KeyError:
|
||||||
|
return 'foo/bar'
|
||||||
|
|
||||||
def _get_all_autoloaders(manifest):
|
def _get_all_autoloaders(manifest):
|
||||||
'''Combine all PSR-0 and PSR-4 autoloaders'''
|
'''Combine all PSR-0 and PSR-4 autoloaders'''
|
||||||
autoloaders = dict()
|
autoloaders = dict()
|
||||||
|
@ -61,7 +68,10 @@ def convert_path(dirname):
|
||||||
|
|
||||||
def get_namespace(dirname):
|
def get_namespace(dirname):
|
||||||
'''Convert dirname into namespace intelligently.'''
|
'''Convert dirname into namespace intelligently.'''
|
||||||
composer_json = find_in_parent('composer.json', dirname)
|
try:
|
||||||
|
composer_json = find_in_parent('composer.json', dirname)
|
||||||
|
except IOError:
|
||||||
|
return None
|
||||||
composer_manifest = _parse_composer_manifest(composer_json)
|
composer_manifest = _parse_composer_manifest(composer_json)
|
||||||
repo_root = path.dirname(composer_json)
|
repo_root = path.dirname(composer_json)
|
||||||
relative_path = path.relpath(dirname, repo_root)
|
relative_path = path.relpath(dirname, repo_root)
|
||||||
|
@ -72,9 +82,59 @@ def get_namespace(dirname):
|
||||||
|
|
||||||
return namespace + convert_path(remainder)
|
return namespace + convert_path(remainder)
|
||||||
|
|
||||||
|
def get_package_name(dirname):
|
||||||
|
'''Find package name from current location.'''
|
||||||
|
try:
|
||||||
|
composer_json = find_in_parent('composer.json', dirname)
|
||||||
|
except IOError:
|
||||||
|
return 'foo/bar'
|
||||||
|
composer_manifest = _parse_composer_manifest(composer_json)
|
||||||
|
name = _get_package_name(composer_manifest)
|
||||||
|
return name
|
||||||
|
|
||||||
def prepare_arguments(param_tags):
|
def prepare_arguments(param_tags):
|
||||||
arguments = generate_arguments(param_tags)
|
arguments = generate_arguments(param_tags)
|
||||||
|
|
||||||
|
def add_argument(snip):
|
||||||
|
'''Search for the next argument list, and insert one.
|
||||||
|
|
||||||
|
These arguments will be of the form
|
||||||
|
|
||||||
|
TypeName $variableName
|
||||||
|
|
||||||
|
and will come from the body the @param snippet:
|
||||||
|
|
||||||
|
* @param Typename $variableName Description
|
||||||
|
'''
|
||||||
|
buffer = snip.buffer
|
||||||
|
param_line_number = snip.snippet_start[0]
|
||||||
|
param_line = buffer[param_line_number]
|
||||||
|
try:
|
||||||
|
argument_line_number = find_argument_line_number(param_line_number, buffer)
|
||||||
|
except IndexError:
|
||||||
|
return
|
||||||
|
argument_line = buffer[argument_line_number]
|
||||||
|
argument = get_argument_line(param_line)
|
||||||
|
new_argument_line = insert_argument(argument, argument_line)
|
||||||
|
buffer[argument_line_number] = new_argument_line
|
||||||
|
|
||||||
|
def insert_argument(arg, line):
|
||||||
|
insert_point = line.find(')')
|
||||||
|
|
||||||
|
# No arguments yet, so no comma
|
||||||
|
if line[insert_point - 1] is '(':
|
||||||
|
return line[:insert_point] + arg + line[insert_point:]
|
||||||
|
else:
|
||||||
|
return line[:insert_point] + ', ' + arg + line[insert_point:]
|
||||||
|
|
||||||
|
def find_argument_line_number(start, buffer):
|
||||||
|
for line_number, line in enumerate(buffer[start:]):
|
||||||
|
if line.endswith('*/'):
|
||||||
|
return line_number + 1 + start
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
raise IndexError('Could not find end of comment and start of method')
|
||||||
|
|
||||||
def format_method(snip):
|
def format_method(snip):
|
||||||
'''Convert expanded snippet into method name and args.'''
|
'''Convert expanded snippet into method name and args.'''
|
||||||
params = get_params_map(snip)
|
params = get_params_map(snip)
|
||||||
|
@ -167,7 +227,7 @@ def is_array_type(type):
|
||||||
|
|
||||||
def format_argument_line(type, name):
|
def format_argument_line(type, name):
|
||||||
if (type is None):
|
if (type is None):
|
||||||
return ' {},'.format(name)
|
return name
|
||||||
else:
|
else:
|
||||||
return ' {} {},'.format(type, name)
|
return '{} {}'.format(type, name)
|
||||||
|
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
global !p
|
|
||||||
from mbutils import get_namespace, format_method, map_type, prepare_arguments
|
|
||||||
import os
|
|
||||||
|
|
||||||
def full_path(filename):
|
|
||||||
cwd = os.getcwd()
|
|
||||||
filepath = os.path.join(cwd, filename)
|
|
||||||
|
|
||||||
return os.path.dirname(filepath)
|
|
||||||
endglobal
|
|
||||||
|
|
||||||
snippet class
|
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* @copyright Copyright 2017 ${1:Redbox Digital}
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace ${2:`!p snip.rv = get_namespace(full_path(path))`};
|
|
||||||
|
|
||||||
${3:// Use...}
|
|
||||||
|
|
||||||
class ${4:`!p snip.rv = snip.basename`}${5: extends ${6:ParentClass}}${7: implements ${8:SomeInterface, OtherInterface}}
|
|
||||||
\{
|
|
||||||
${0:// Implementation...}
|
|
||||||
\}
|
|
||||||
endsnippet
|
|
||||||
|
|
||||||
snippet interface
|
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* @copyright Copyright 2017 ${1:Redbox Digital}
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace ${2:`!p snip.rv = get_namespace(full_path(path))`};
|
|
||||||
|
|
||||||
${3:// Use...}
|
|
||||||
|
|
||||||
interface ${4:`!p snip.rv = snip.basename`}${5: extends ${6:ParentInterface}}
|
|
||||||
\{
|
|
||||||
${0:// Interface...}
|
|
||||||
\}
|
|
||||||
endsnippet
|
|
65
vim/vim.symlink/UltiSnips/php_class.snippets
Normal file
65
vim/vim.symlink/UltiSnips/php_class.snippets
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
# Python
|
||||||
|
#
|
||||||
|
# `mbutils` is a collection of tooling I've built to do some intelligent
|
||||||
|
# stuff around PHP tooling.
|
||||||
|
# Found in lib/python/mbutils.py
|
||||||
|
global !p
|
||||||
|
import mbutils
|
||||||
|
import os
|
||||||
|
|
||||||
|
def full_path(filename):
|
||||||
|
cwd = os.getcwd()
|
||||||
|
filepath = os.path.join(cwd, filename)
|
||||||
|
|
||||||
|
return os.path.dirname(filepath)
|
||||||
|
endglobal
|
||||||
|
|
||||||
|
snippet class
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is part of the ${1:`!p snip.rv = mbutils.get_package_name(full_path(path))`} package.
|
||||||
|
*
|
||||||
|
* @copyright Copyright `date +%Y` ${2:Redbox Digital}. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace ${12:`!p snip.rv = mbutils.get_namespace(full_path(path))`};${13:
|
||||||
|
|
||||||
|
use ${14:ImportedTypes;}}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ${3:${4:Short description...}
|
||||||
|
*
|
||||||
|
* ${5:A slightly longer description of what you want to do.}
|
||||||
|
*
|
||||||
|
* ${6:@tags...}}
|
||||||
|
*/
|
||||||
|
class ${7:`!p snip.rv = snip.basename`}${8: extends ${9:ParentClass}}${10: implements ${11:$7Interface}}
|
||||||
|
\{
|
||||||
|
${0:// Implementation...}
|
||||||
|
\}
|
||||||
|
endsnippet
|
||||||
|
|
||||||
|
snippet interface
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is part of the ${1:`!p snip.rv = mbutils.get_package_name(full_path(path))`} package.
|
||||||
|
*
|
||||||
|
* @copyright Copyright `date +%Y` ${2:Redbox Digital}. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace ${12:`!p snip.rv = mbutils.get_namespace(full_path(path))`};${13:
|
||||||
|
|
||||||
|
use ${14:ImportedTypes;}}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ${3:${4:Short description...}
|
||||||
|
*
|
||||||
|
* ${5:A slightly longer description of what you want to do.}
|
||||||
|
*
|
||||||
|
* ${6:@tags...}}
|
||||||
|
*/
|
||||||
|
interface ${7:`!p snip.rv = snip.basename`}${8: extends ${9:ParentInterface}}
|
||||||
|
\{
|
||||||
|
${0:// Methods...}
|
||||||
|
\}
|
||||||
|
endsnippet
|
22
vim/vim.symlink/UltiSnips/php_field.snippets
Normal file
22
vim/vim.symlink/UltiSnips/php_field.snippets
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Python
|
||||||
|
#
|
||||||
|
# `mbutils` is a collection of tooling I've built to do some intelligent
|
||||||
|
# stuff around PHP tooling.
|
||||||
|
# Found in lib/python/mbutils.py
|
||||||
|
global !p
|
||||||
|
import mbutils
|
||||||
|
import os
|
||||||
|
|
||||||
|
def full_path(filename):
|
||||||
|
cwd = os.getcwd()
|
||||||
|
filepath = os.path.join(cwd, filename)
|
||||||
|
|
||||||
|
return os.path.dirname(filepath)
|
||||||
|
endglobal
|
||||||
|
|
||||||
|
snippet field
|
||||||
|
/**
|
||||||
|
* @var ${1:Type}
|
||||||
|
*/
|
||||||
|
private ${2:\$fieldName};
|
||||||
|
endsnippet
|
|
@ -4,7 +4,7 @@
|
||||||
# stuff around PHP tooling.
|
# stuff around PHP tooling.
|
||||||
# Found in lib/python/mbutils.py
|
# Found in lib/python/mbutils.py
|
||||||
global !p
|
global !p
|
||||||
from mbutils import get_namespace, format_method, map_type, prepare_arguments
|
import mbutils
|
||||||
import os
|
import os
|
||||||
|
|
||||||
def full_path(filename):
|
def full_path(filename):
|
||||||
|
@ -17,6 +17,7 @@ endglobal
|
||||||
# @param
|
# @param
|
||||||
#
|
#
|
||||||
# To make param generation a little easier.
|
# To make param generation a little easier.
|
||||||
|
post_jump "if (snip.tabstop is 4): mbutils.add_argument(snip)"
|
||||||
snippet @param
|
snippet @param
|
||||||
@param ${1:Type}${2:|null} ${3:name} ${4:Description}
|
@param ${1:Type}${2:|null} ${3:name} ${4:Description}
|
||||||
endsnippet
|
endsnippet
|
||||||
|
@ -24,21 +25,18 @@ endsnippet
|
||||||
# Public method.
|
# Public method.
|
||||||
#
|
#
|
||||||
# Forces me to write a really good docblock.
|
# Forces me to write a really good docblock.
|
||||||
post_jump "if (snip.tabstop == 0): format_method(snip)"
|
|
||||||
snippet pubf
|
snippet pubf
|
||||||
/**
|
/**
|
||||||
* ${2:Short description...}
|
* ${2:Short description...}
|
||||||
*
|
*
|
||||||
* ${3:A slightly longer description of what you want to do. This will automatically be wrapped}
|
* ${3:A slightly longer description of what you want to do.}
|
||||||
*
|
*
|
||||||
* ${4:@api}
|
* ${4:@api}
|
||||||
* ${5:@params}
|
* ${5:@params...}
|
||||||
* @return ${6:ReturnType}
|
* @return ${6:ReturnType}
|
||||||
* ${7:@throws ${8:ExceptionType}}
|
* ${7:@throws ${8:ExceptionType}}
|
||||||
*/
|
*/
|
||||||
public function ${1:methodName}(
|
public function ${1:methodName}(): `!p snip.rv = mbutils.map_type(t[6])` \{
|
||||||
...\$args
|
|
||||||
): `!p snip.rv = map_type(t[6])` \{
|
|
||||||
$0
|
$0
|
||||||
\}
|
\}
|
||||||
endsnippet
|
endsnippet
|
||||||
|
@ -49,10 +47,10 @@ snippet prif
|
||||||
/**
|
/**
|
||||||
* ${2:Short description...}
|
* ${2:Short description...}
|
||||||
*
|
*
|
||||||
* ${3:A slightly longer description of what you want to do. This will automatically be wrapped}
|
* ${3:A slightly longer description of what you want to do.}
|
||||||
*
|
*
|
||||||
* ${4:@api}
|
* ${4:@api}
|
||||||
* ${5:@params}
|
* ${5:@params...}
|
||||||
* @return ${6:ReturnType}
|
* @return ${6:ReturnType}
|
||||||
* ${7:@throws ${8:ExceptionType}}
|
* ${7:@throws ${8:ExceptionType}}
|
||||||
*/
|
*/
|
||||||
|
@ -64,21 +62,37 @@ private function ${1:methodName}(
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
# Protected method. As public.
|
# Protected method. As public.
|
||||||
post_jump "if (snip.tabstop == 0): format_method(snip)"
|
|
||||||
snippet prof
|
snippet prof
|
||||||
/**
|
/**
|
||||||
* ${2:Short description...}
|
* ${2:Short description...}
|
||||||
*
|
*
|
||||||
* ${3:A slightly longer description of what you want to do. This will automatically be wrapped}
|
* ${3:A slightly longer description of what you want to do.}
|
||||||
*
|
*
|
||||||
* ${4:@api}
|
* ${4:@api}
|
||||||
* ${5:@params}
|
* ${5:@params...}
|
||||||
* @return ${6:ReturnType}
|
* @return ${6:ReturnType}
|
||||||
* ${7:@throws ${8:ExceptionType}}
|
* ${7:@throws ${8:ExceptionType}}
|
||||||
*/
|
*/
|
||||||
protected function ${1:methodName}(
|
protected function ${1:methodName}(): `!p snip.rv = map_type(t[6])` \{
|
||||||
...\$args
|
$0
|
||||||
): `!p snip.rv = map_type(t[6])` \{
|
\}
|
||||||
|
endsnippet
|
||||||
|
|
||||||
|
snippet construct
|
||||||
|
/**
|
||||||
|
* ${1:@params}
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
...\$args
|
||||||
|
) \{
|
||||||
|
/*
|
||||||
|
* Mark the ballot if you want the relevant code to be generated.
|
||||||
|
*
|
||||||
|
* [${2: }] - Make fields?
|
||||||
|
* [${3: }] - Make getters?
|
||||||
|
* [${4: }] - Make setters?
|
||||||
|
*/
|
||||||
|
|
||||||
$0
|
$0
|
||||||
\}
|
\}
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
snippet mmodxml
|
snippet mmodxml
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<config
|
||||||
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"
|
||||||
|
>
|
||||||
<module name="$1" setup_version="0.1.0">
|
<module name="$1" setup_version="0.1.0">
|
||||||
$0
|
$0
|
||||||
</module>
|
</module>
|
||||||
|
@ -10,15 +12,20 @@ endsnippet
|
||||||
|
|
||||||
snippet mdixml
|
snippet mdixml
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
|
<config
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"
|
||||||
|
>
|
||||||
$0
|
$0
|
||||||
</config>
|
</config>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet mwidgets
|
snippet mwidgets
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<widgets
|
||||||
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Widget:etc/widget.xsd">
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Widget:etc/widget.xsd"
|
||||||
|
>
|
||||||
$0
|
$0
|
||||||
</widgets>
|
</widgets>
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
|
@ -62,6 +62,10 @@ hi markdownH3 cterm=NONE ctermbg=NONE ctermfg=7
|
||||||
hi markdownH4 cterm=NONE ctermbg=NONE ctermfg=7
|
hi markdownH4 cterm=NONE ctermbg=NONE ctermfg=7
|
||||||
hi markdownH5 cterm=NONE ctermbg=NONE ctermfg=7
|
hi markdownH5 cterm=NONE ctermbg=NONE ctermfg=7
|
||||||
hi markdownH6 cterm=NONE ctermbg=NONE ctermfg=7
|
hi markdownH6 cterm=NONE ctermbg=NONE ctermfg=7
|
||||||
|
hi markdownBlockQuote cterm=NONE ctermbg=NONE ctermfg=7
|
||||||
|
|
||||||
|
" Residual HTML
|
||||||
|
hi htmlTitle cterm=NONE ctermbg=NONE ctermfg=7
|
||||||
|
|
||||||
" Miscellaneous leftovers
|
" Miscellaneous leftovers
|
||||||
hi helpNote cterm=NONE ctermfg=7 ctermbg=NONE
|
hi helpNote cterm=NONE ctermfg=7 ctermbg=NONE
|
||||||
|
@ -71,10 +75,16 @@ hi MatchParen cterm=NONE ctermfg=7 ctermbg=5
|
||||||
hi String cterm=NONE ctermfg=6 ctermbg=NONE
|
hi String cterm=NONE ctermfg=6 ctermbg=NONE
|
||||||
hi Number cterm=NONE ctermfg=6 ctermbg=NONE
|
hi Number cterm=NONE ctermfg=6 ctermbg=NONE
|
||||||
hi Boolean cterm=NONE ctermfg=6 ctermbg=NONE
|
hi Boolean cterm=NONE ctermfg=6 ctermbg=NONE
|
||||||
|
hi phpHereDoc cterm=NONE ctermfg=6 ctermbg=NONE
|
||||||
|
hi phpNowDoc cterm=NONE ctermfg=6 ctermbg=NONE
|
||||||
|
hi phpBackslashSequences cterm=NONE ctermfg=6 ctermbg=NONE
|
||||||
|
|
||||||
" Comments are green
|
" Comments are green
|
||||||
hi Comment cterm=NONE ctermfg=2 ctermbg=NONE
|
hi Comment cterm=NONE ctermfg=2 ctermbg=NONE
|
||||||
|
|
||||||
|
" Todos are almost green
|
||||||
|
hi Todo cterm=NONE ctermfg=0 ctermbg=2
|
||||||
|
|
||||||
" Preprocessor statements aren't comments.
|
" Preprocessor statements aren't comments.
|
||||||
hi PreProc cterm=NONE ctermfg=7 ctermbg=NONE
|
hi PreProc cterm=NONE ctermfg=7 ctermbg=NONE
|
||||||
|
|
||||||
|
@ -144,3 +154,9 @@ hi ALEErrorSign cterm=NONE ctermbg=1 ctermfg=1
|
||||||
hi snipLeadingSpaces cterm=NONE ctermbg=0 ctermfg=NONE
|
hi snipLeadingSpaces cterm=NONE ctermbg=0 ctermfg=NONE
|
||||||
hi snipTabStop cterm=NONE ctermbg=NONE ctermfg=6
|
hi snipTabStop cterm=NONE ctermbg=NONE ctermfg=6
|
||||||
hi snipTabStopDefault cterm=NONE ctermbg=NONE ctermfg=6
|
hi snipTabStopDefault cterm=NONE ctermbg=NONE ctermfg=6
|
||||||
|
|
||||||
|
""""""""""""
|
||||||
|
" Long lines
|
||||||
|
""""""""""""
|
||||||
|
|
||||||
|
hi ColorColumn cterm=NONE ctermbg=1 ctermfg=NONE
|
||||||
|
|
Loading…
Add table
Reference in a new issue