aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ide/README1
-rw-r--r--contrib/ide/codeStyle.xml44
-rw-r--r--contrib/style.txt49
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.