summaryrefslogtreecommitdiff
path: root/qface/filters.py
diff options
context:
space:
mode:
authorJuergen Bocklage-Ryannel <juergen@ryannel.org>2018-12-24 13:28:16 +0100
committerJuergen Bocklage-Ryannel <juergen@ryannel.org>2018-12-24 13:28:16 +0100
commitf354532d7cc9e3663b005f5413baf03833c60398 (patch)
treee2bcb28bb3d8f3d3efc86bb1c064380cd5579e60 /qface/filters.py
parent22840dd0a67644afd20c1b9c4dfffa2c23cb4c6d (diff)
downloadqtivi-qface-f354532d7cc9e3663b005f5413baf03833c60398.tar.gz
- introduce qface script mode
- add ability to load dynamic filters for qface script mode - extract generic filters - fixed some issues with cpp macros
Diffstat (limited to 'qface/filters.py')
-rw-r--r--qface/filters.py68
1 files changed, 19 insertions, 49 deletions
diff --git a/qface/filters.py b/qface/filters.py
index 5969a64..236c7b3 100644
--- a/qface/filters.py
+++ b/qface/filters.py
@@ -1,58 +1,28 @@
-import json
-import hashlib
+from .helper import generic
from .helper import qtqml
from .helper import qtcpp
from .helper import doc
+import importlib.util
-def jsonify(symbol):
- """ returns json format for symbol """
- try:
- # all symbols have a toJson method, try it
- return json.dumps(symbol.toJson(), indent=' ')
- except AttributeError:
- pass
- return json.dumps(symbol, indent=' ')
+def get_filters():
+ filters = {}
+ filters.update(generic.get_filters())
+ filters.update(qtqml.Filters.get_filters())
+ filters.update(qtcpp.Filters.get_filters())
+ filters.update(doc.get_filters())
+ return filters
-def upper_first(s):
- """ uppercase first letter """
- s = str(s)
- return s[0].upper() + s[1:]
+def load_filters(path):
+ if not path.exists():
+ print('filter module does not exist')
+ return {}
+ extra_filters = {}
+ spec = importlib.util.spec_from_file_location('filters', path.abspath())
+ filters_module = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(filters_module)
+ filters_module.get_filters(extra_filters)
+ return extra_filters
-def lower_first(s):
- s = str(s)
- return s[0].lower() + s[1:]
-
-
-def hash(symbol, hash_type='sha1'):
- """ create a hash code from symbol """
- code = hashlib.new(hash_type)
- code.update(str(symbol).encode('utf-8'))
- return code.hexdigest()
-
-
-def path(symbol):
- """ replaces '.' with '/' """
- return str(symbol).replace('.', '/')
-
-
-def identifier(s):
- return str(s).lower().replace('.', '_')
-
-
-filters = {
- 'jsonify': jsonify,
- 'upper_first': upper_first,
- 'lower_first': lower_first,
- 'upperfirst': upper_first,
- 'lowerfirst': lower_first,
- 'hash': hash,
- 'path': path,
- 'identifier': identifier,
-}
-
-filters.update(qtqml.Filters.get_filters())
-filters.update(qtcpp.Filters.get_filters())
-filters.update(doc.get_filters())