diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/ide/README | 1 | ||||
-rw-r--r-- | contrib/ide/codeStyle.xml | 44 | ||||
-rw-r--r-- | contrib/style.txt | 49 |
3 files changed, 94 insertions, 0 deletions
diff --git a/contrib/ide/README b/contrib/ide/README new file mode 100644 index 000000000..da819ea1e --- /dev/null +++ b/contrib/ide/README @@ -0,0 +1 @@ +Settings and project files for IDEs and other tools should be stored here. diff --git a/contrib/ide/codeStyle.xml b/contrib/ide/codeStyle.xml new file mode 100644 index 000000000..efb57f4e2 --- /dev/null +++ b/contrib/ide/codeStyle.xml @@ -0,0 +1,44 @@ +<code_scheme name="GNU Taler"> + <option name="RIGHT_MARGIN" value="80" /> + <option name="WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN" value="true" /> + <TypeScriptCodeStyleSettings> + <option name="SPACE_AFTER_TYPE_COLON" value="true" /> + <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" /> + </TypeScriptCodeStyleSettings> + <XML> + <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" /> + </XML> + <codeStyleSettings language="HTML"> + <indentOptions> + <option name="INDENT_SIZE" value="2" /> + <option name="CONTINUATION_INDENT_SIZE" value="4" /> + <option name="TAB_SIZE" value="2" /> + </indentOptions> + </codeStyleSettings> + <codeStyleSettings language="JavaScript"> + <indentOptions> + <option name="INDENT_SIZE" value="2" /> + <option name="CONTINUATION_INDENT_SIZE" value="2" /> + <option name="TAB_SIZE" value="2" /> + </indentOptions> + </codeStyleSettings> + <codeStyleSettings language="TypeScript"> + <option name="ALIGN_MULTILINE_CHAINED_METHODS" value="true" /> + <option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" /> + <option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION" value="true" /> + <option name="CALL_PARAMETERS_WRAP" value="5" /> + <option name="PREFER_PARAMETERS_WRAP" value="true" /> + <option name="METHOD_PARAMETERS_WRAP" value="5" /> + <option name="METHOD_CALL_CHAIN_WRAP" value="5" /> + <option name="FOR_STATEMENT_WRAP" value="5" /> + <option name="ARRAY_INITIALIZER_WRAP" value="5" /> + <option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" /> + <option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" /> + <option name="IF_BRACE_FORCE" value="3" /> + <indentOptions> + <option name="INDENT_SIZE" value="2" /> + <option name="CONTINUATION_INDENT_SIZE" value="2" /> + <option name="TAB_SIZE" value="2" /> + </indentOptions> + </codeStyleSettings> +</code_scheme> diff --git a/contrib/style.txt b/contrib/style.txt new file mode 100644 index 000000000..d6d96cb7d --- /dev/null +++ b/contrib/style.txt @@ -0,0 +1,49 @@ +TypeScript style +================ + +Basics: +- Indent with 2 spaces. +- Keep a maximum line length of 120 characters. +- Prefer "double quotes" for strings. +- Never omit optional semicolons. +- Do not put opening braces or brackets on a new line. +- Call functions without spaces: foo(bar) +- Use 'let' instead of 'var' whenever possible. +- Declare "use strict;". +- Use rocket (=>) syntax for anonymous functions. If an anonymous function is + too long, make it a named function. +- Use the strict equality operator (===). +- Document functions with JSDoc comments (http://usejsdoc.org). + + +JavaScript version: +Stick to ES6 features. Do not rely on any vendor-specific extensions (such as +Firefox often offers). ES6 features not yet supported by major browsers are +okay as long as there is a well-supported and reasonable polyfill (such as +babel) available. + + +Names: +- Use PascalCase for classes/types, camelCase for variables, functions and + properties, UPPER_SNAKE_CASE for constants, kebab-case for event names. +- Only capitalize the first letter of an acronym in identifiers (e.g. HttpResponseCode). + + +APIs: +- Prefer 'Promise' to one-shot continuations whenever possible. +- Prefer handlebars templates to poking around in the DOM. + + +Dependency Injection (DI): +DI is a useful pattern when components need to be replaced by mocks or have +multiple co-existing implementations. But DI also makes code overly generic, +bureaucratic and less readble. Only use DI if there is a definite need for it, +do not use it by default. Inject individual dependencies via class +constructors and avoid service locators. + + +Misc: +- Do not use ES6 template strings for constructing HTML, + use TSX/JSX literals instead. +- For everything not covered here, stick to this style guide: + https://github.com/airbnb/javascript. |