ThirdParty/Jasy/jasy/script/api/Comment.py

Sat, 12 Jan 2019 12:11:42 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 12 Jan 2019 12:11:42 +0100
changeset 6650
1dd52aa8897c
parent 3145
ThirdParty/Jasy/jasy/js/api/Comment.py@a9de05d4a22f
permissions
-rw-r--r--

jasy: updated jasy to 1.5-beta6 (latest release available).

2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 #
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # Jasy - Web Tooling Framework
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright 2010-2012 Zynga Inc.
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
4 # Copyright 2013-2014 Sebastian Werner
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5 #
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6
3145
a9de05d4a22f # __IGNORE_WARNING__ added/ removed.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2847
diff changeset
7 from __future__ import unicode_literals
2847
1843ef6e2656 Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 2779
diff changeset
8
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 import re
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
11 import jasy.core.Text as Text
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import jasy.core.Console as Console
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
14 from jasy import UserError
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
15 from jasy.script.util import *
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 # Used to measure the doc indent size (with leading stars in front of content)
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 docIndentReg = re.compile(r"^(\s*\*\s*)(\S*)")
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
21 # Used to split type lists as supported by throw, return and params
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
22 listSplit = re.compile("\s*\|\s*")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
23
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
24 # Used to remove markup sequences after doc processing of comment text
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
25 stripMarkup = re.compile(r"<.*?>")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
26
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
27
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
28
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
29 # Matches return blocks in comments
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
30 returnMatcher = re.compile(r"^\s*\{([a-zA-Z0-9_ \.\|\[\]]+)\}")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
31
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
32 # Matches type definitions in comments
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
33 typeMatcher = re.compile(r"^\s*\{=([a-zA-Z0-9_ \.]+)\}")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
34
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
35 # Matches tags
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
36 tagMatcher = re.compile(r"#([a-zA-Z][a-zA-Z0-9]+)(\((\S+)\))?(\s|$)")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
37
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
38 # Matches param declarations in own dialect
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
39 paramMatcher = re.compile(r"@([a-zA-Z0-9_][a-zA-Z0-9_\.]*[a-zA-Z0-9_]|[a-zA-Z0-9_]+)(\s*\{([a-zA-Z0-9_ \.\|\[\]]+?)(\s*\.{3}\s*)?((\s*\?\s*(\S+))|(\s*\?\s*))?\})?")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
40
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
41 # Matches links in own dialect
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
42 linkMatcher = re.compile(r"(\{((static|member|property|event)\:)?([a-zA-Z0-9_\.]+)?(\#([a-zA-Z0-9_]+))?\})")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
43
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
44 # matches backticks and has a built-in failsafe for backticks which do not terminate on the same line
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
45 tickMatcher = re.compile(r"(`[^\n`]*?`)")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
46
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 class CommentException(Exception):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 Thrown when errors during comment processing are detected.
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
52
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 def __init__(self, message, lineNo=0):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 Exception.__init__(self, "Comment error: %s (line: %s)" % (message, lineNo+1))
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
57
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
58
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 class Comment():
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
61 Comment class is attached to parsed nodes and used to store all comment related information.
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
62
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
63 The class supports a new Markdown and TomDoc inspired dialect to make developers life easier and work less repeative.
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
65
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 # Relation to code
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 context = None
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
68
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
69 # Dictionary of tags
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
70 tags = None
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
71
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
72 # Dictionary of params
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
73 params = None
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
74
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
75 # List of return types
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
76 returns = None
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
77
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
78 # Static type
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
79 type = None
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
80
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
81 # Collected text of the comment (without the extracted doc relevant data)
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 text = None
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
83
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
84 # Text with extracted / parsed data
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
85 __processedText = None
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
86
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
87 # Text of the comment converted to HTML including highlighting (only for doc comment)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
88 __highlightedText = None
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
89
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
90 # Text / Code Blocks in the comment
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
91 __blocks = None
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
92
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
93
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 def __init__(self, text, context=None, lineNo=0, indent="", fileId=None):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 # Store context (relation to code)
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 self.context = context
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
98
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 # Store fileId
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.fileId = fileId
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
101
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 # Figure out the type of the comment based on the starting characters
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 # Inline comments
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 if text.startswith("//"):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 # "// hello" => " hello"
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 text = " " + text[2:]
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self.variant = "single"
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
109
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 # Doc comments
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 elif text.startswith("/**"):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 # "/** hello */" => " hello "
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 text = " " + text[3:-2]
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.variant = "doc"
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
116 # Protected comments which should not be removed (e.g these are used for license blocks)
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 elif text.startswith("/*!"):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 # "/*! hello */" => " hello "
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 text = " " + text[3:-2]
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 self.variant = "protected"
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
121
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 # A normal multiline comment
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 elif text.startswith("/*"):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 # "/* hello */" => " hello "
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 text = " " + text[2:-2]
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 self.variant = "multi"
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
127
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 else:
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 raise CommentException("Invalid comment text: %s" % text, lineNo)
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 # Multi line comments need to have their indentation removed
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 if "\n" in text:
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 text = self.__outdent(text, indent, lineNo)
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 # For single line comments strip the surrounding whitespace
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 else:
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 # " hello " => "hello"
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 text = text.strip()
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
140 # The text of the comment before any processing took place
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.text = text
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
142
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
143
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
144 # Perform annotation parsing, markdown conversion and code highlighting on doc blocks
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
145 if self.variant == "doc":
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
146
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
147 # Separate text and code blocks
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
148 self.__blocks = self.__splitBlocks(text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
149
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
150 # Re-combine everything and apply processing and formatting
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
151 plainText = '' # text without annotations but with markdown
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
152 for b in self.__blocks:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
153
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
154 if b["type"] == "comment":
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
155
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
156 processed = self.__processDoc(b["text"], lineNo)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
157 b["processed"] = processed
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
158
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
159 if "<" in processed:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
160 plainText += stripMarkup.sub("", processed)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
161
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
162 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
163 plainText += processed
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
164
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
165 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
166 plainText += "\n\n" + b["text"] + "\n\n"
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
167
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
168 # The without any annotations
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
169 self.text = plainText.strip()
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
170
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
171
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
172 def __splitBlocks(self, text):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
173 """
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
174 Splits up text and code blocks in comments.
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
175
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
176 This will try to use hoedown for Markdown parsing if available and will
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
177 fallback to a simpler implementation in order to allow processing of
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
178 doc parameters and links without hoedown being installed.
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
179 """
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
180
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
181 if not Text.supportsMarkdown:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
182 return self.__splitSimple(text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
183
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
184 marked = Text.markdownToHtml(text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
185
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
186 def unescape(html):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
187 html = html.replace('&lt;', '<')
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
188 html = html.replace('&gt;', '>')
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
189 html = html.replace('&amp;', '&')
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
190 html = html.replace('&quot;', '"')
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
191 return html.replace('&#39;', "'")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
192
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
193 parts = []
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
194
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
195 lineNo = 0
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
196 lines = text.split("\n")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
197 markedLines = marked.split("\n")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
198
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
199 i = 0
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
200 while i < len(markedLines):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
201
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
202 l = markedLines[i]
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
203
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
204 # the original text of the line
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
205 parsed = unescape(stripMarkup.sub("", l))
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
206
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
207 # start of a code block, grab all text before it and move it into a block
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
208 if l.startswith('<pre><code>'):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
209
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
210 # everything since the last code block and before this one must be text
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
211 comment = []
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
212 for s in range(lineNo, len(lines)):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
213
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
214 source = lines[s]
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
215 if source.strip() == parsed.strip():
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
216 lineNo = s
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
217 break
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
218
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
219 comment.append(source)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
220
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
221 parts.append({
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
222 "type": "comment",
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
223 "text": "\n".join(comment)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
224 })
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
225
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
226 # Find the end of the code block
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
227 e = i
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
228 while i < len(markedLines):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
229 l = markedLines[i]
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
230 i += 1
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
231
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
232 if l.startswith('</code></pre>'):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
233 break
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
234
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
235 lineCount = (i - e) - 1
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
236
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
237 # add the code block
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
238 parts.append({
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
239 "type": "code",
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
240 "text": "\n".join(lines[lineNo:lineNo + lineCount])
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
241 })
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
242
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
243 lineNo += lineCount
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
244
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
245 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
246 i += 1
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
247
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
248 # append the rest of the comment as text
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
249 parts.append({
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
250 "type": "comment",
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
251 "text": "\n".join(lines[lineNo:])
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
252 })
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
253
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
254 return parts
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
255
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
256
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
257 def __splitSimple(self, text):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
258 """Splits comment text and code blocks by manually parsing a subset of markdown"""
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
259
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
260 inCode = False
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
261 oldIndent = 0
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
262 parts = []
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
263 wasEmpty = False
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
264 wasList = False
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
265
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
266 lineNo = 0
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
267 lines = text.split("\n")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
268
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
269 for s, l in enumerate(lines):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
270
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
271 # ignore empty lines
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
272 if not l.strip() == "":
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
273
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
274 # get indentation value and change
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
275 indent = len(l) - len(l.lstrip())
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
276 change = indent - oldIndent
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
277
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
278 # detect code blocks
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
279 if change >= 4 and wasEmpty:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
280 if not wasList:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
281 oldIndent = indent
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
282 inCode = True
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
283
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
284 parts.append({
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
285 "type": "comment",
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
286 "text": "\n".join(lines[lineNo:s])
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
287 })
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
288
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
289 lineNo = s
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
290
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
291 # detect outdents
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
292 elif change < 0:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
293 inCode = False
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
294
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
295 parts.append({
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
296 "type": "code",
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
297 "text": "\n".join(lines[lineNo:s - 1])
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
298 })
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
299
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
300 lineNo = s
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
301
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
302 # only keep track of old previous indentation outside of comments
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
303 if not inCode:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
304 oldIndent = indent
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
305
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
306 # remember whether this marked a list or not
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
307 wasList = l.strip().startswith('-') or l.strip().startswith('*')
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
308 wasEmpty = False
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
309
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
310 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
311 wasEmpty = True
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
312
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
313 parts.append({
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
314 "type": "code" if inCode else "comment",
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
315 "text": "\n".join(lines[lineNo:])
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
316 })
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
317
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
318 return parts
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
319
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
320
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
321 def getHtml(self, highlight=True):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
322 """
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
323 Returns the comment text converted to HTML
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
324
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
325 :param highlight: Whether to highlight the code
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
326 :type highlight: bool
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
327 """
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
328
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
329 if not Text.supportsMarkdown:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
330 raise UserError("Markdown is not supported by the system. Documentation comments could converted to HTML.")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
331
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
332 if highlight:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
333
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
334 if self.__highlightedText is None:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
335
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
336 highlightedText = ""
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
337
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
338 for block in self.__blocks:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
339
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
340 if block["type"] == "comment":
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
341 highlightedText += Text.highlightCodeBlocks(Text.markdownToHtml(block["processed"]))
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
342 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
343 highlightedText += "\n%s" % Text.highlightCodeBlocks(Text.markdownToHtml(block["text"]))
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
344
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
345 self.__highlightedText = highlightedText
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
346
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
347 return self.__highlightedText
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
348
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
349 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
350
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
351 if self.__processedText is None:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
352
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
353 processedText = ""
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
354
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
355 for block in self.__blocks:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
356
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
357 if block["type"] == "comment":
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
358 processedText += Text.markdownToHtml(block["processed"])
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
359 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
360 processedText += "\n%s\n\n" % block["text"]
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
361
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
362 self.__processedText = processedText.strip()
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
363
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
364 return self.__processedText
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
365
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
366
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
367 def hasContent(self):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
368 return self.variant == "doc" and len(self.text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
369
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
370
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
371 def getTags(self):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
372 return self.tags
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
373
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
374
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
375 def hasTag(self, name):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
376 if not self.tags:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
377 return False
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
378
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
379 return name in self.tags
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
380
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
381
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 def __outdent(self, text, indent, startLineNo):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 """
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 Outdent multi line comment text and filtering empty lines
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 """
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
386
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 lines = []
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 # First, split up the comments lines and remove the leading indentation
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 for lineNo, line in enumerate((indent+text).split("\n")):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 if line.startswith(indent):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 lines.append(line[len(indent):].rstrip())
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 elif line.strip() == "":
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 lines.append("")
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 else:
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
399 # Only warn for doc comments, otherwise it might just be code commented out
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
400 # which is sometimes formatted pretty crazy when commented out
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 if self.variant == "doc":
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
402 Console.warn("Could not outdent doc comment at line %s in %s", startLineNo+lineNo, self.fileId)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
403
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 return text
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
406 # Find first line with real content, then grab the one after it to get the
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
407 # characters which need
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 outdentString = ""
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 for lineNo, line in enumerate(lines):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 if line != "" and line.strip() != "":
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 matchedDocIndent = docIndentReg.match(line)
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
413
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 if not matchedDocIndent:
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 # As soon as we find a non doc indent like line we stop
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416 break
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
417
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 elif matchedDocIndent.group(2) != "":
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
419 # otherwise we look for content behind the indent to get the
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 # correct real indent (with spaces)
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 outdentString = matchedDocIndent.group(1)
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 break
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
423
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 lineNo += 1
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
426 # Process outdenting to all lines (remove the outdentString from the start of the lines)
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 if outdentString != "":
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 lineNo = 0
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 outdentStringLen = len(outdentString)
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 for lineNo, line in enumerate(lines):
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 if len(line) <= outdentStringLen:
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 lines[lineNo] = ""
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 else:
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 if not line.startswith(outdentString):
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
438
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
439 # Only warn for doc comments, otherwise it might just be code commented out
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
440 # which is sometimes formatted pretty crazy when commented out
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 if self.variant == "doc":
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
442 Console.warn("Invalid indentation in doc comment at line %s in %s", startLineNo+lineNo, self.fileId)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
443
2779
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 else:
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 lines[lineNo] = line[outdentStringLen:]
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 # Merge final lines and remove leading and trailing new lines
4d433896b6d6 Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 return "\n".join(lines).strip("\n")
6650
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
449
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
450
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
451 def __processDoc(self, text, startLineNo):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
452
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
453 text = self.__extractStaticType(text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
454 text = self.__extractReturns(text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
455 text = self.__extractTags(text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
456
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
457 # Collapse new empty lines at start/end
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
458 text = text.strip("\n\t ")
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
459
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
460 parsed = ''
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
461
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
462 # Now parse only the text outside of backticks
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
463 last = 0
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
464 def split(match):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
465
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
466 # Grab the text before the back tick and process any parameters in it
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
467 nonlocal parsed
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
468 nonlocal last
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
469
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
470 start, end = match.span()
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
471 before = text[last:start]
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
472 parsed += self.__processParams(before) + match.group(1)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
473 last = end
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
474
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
475 tickMatcher.sub(split, text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
476
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
477 # add the rest of the text
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
478 parsed += self.__processParams(text[last:])
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
479
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
480 text = self.__processLinks(parsed)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
481
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
482 return text
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
483
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
484
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
485 def __splitTypeList(self, decl):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
486
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
487 if decl is None:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
488 return decl
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
489
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
490 splitted = listSplit.split(decl.strip())
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
491
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
492 result = []
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
493 for entry in splitted:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
494
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
495 # Figure out if it is marked as array
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
496 isArray = False
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
497 if entry.endswith("[]"):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
498 isArray = True
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
499 entry = entry[:-2]
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
500
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
501 store = {
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
502 "name" : entry
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
503 }
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
504
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
505 if isArray:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
506 store["array"] = True
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
507
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
508 if entry in builtinTypes:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
509 store["builtin"] = True
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
510
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
511 if entry in pseudoTypes:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
512 store["pseudo"] = True
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
513
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
514 result.append(store)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
515
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
516 return result
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
517
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
518
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
519
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
520 def __extractReturns(self, text):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
521 """
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
522 Extracts leading return defintion (when type is function)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
523 """
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
524
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
525 def collectReturn(match):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
526 self.returns = self.__splitTypeList(match.group(1))
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
527 return ""
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
528
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
529 return returnMatcher.sub(collectReturn, text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
530
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
531
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
532
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
533 def __extractStaticType(self, text):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
534 """
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
535 Extracts leading type defintion (when value is a static type)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
536 """
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
537
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
538 def collectType(match):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
539 self.type = match.group(1).strip()
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
540 return ""
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
541
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
542 return typeMatcher.sub(collectType, text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
543
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
544
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
545
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
546 def __extractTags(self, text):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
547 """
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
548 Extract all tags inside the give doc comment. These are replaced from
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
549 the text and collected inside the "tags" key as a dict.
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
550 """
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
551
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
552 def collectTags(match):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
553 if not self.tags:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
554 self.tags = {}
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
555
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
556 name = match.group(1)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
557 param = match.group(3)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
558
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
559 if name in self.tags:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
560 self.tags[name].add(param)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
561 elif param:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
562 self.tags[name] = set([param])
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
563 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
564 self.tags[name] = True
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
565
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
566 return ""
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
567
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
568 return tagMatcher.sub(collectTags, text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
569
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
570
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
571 def __processParams(self, text):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
572
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
573 def collectParams(match):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
574
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
575 paramName = match.group(1)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
576 paramTypes = match.group(3)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
577 paramDynamic = match.group(4) is not None
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
578 paramOptional = match.group(5) is not None
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
579 paramDefault = match.group(7)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
580
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
581 if paramTypes:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
582 paramTypes = self.__splitTypeList(paramTypes)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
583
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
584 if self.params is None:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
585 self.params = {}
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
586
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
587 params = self.params
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
588 fullName = match.group(1).strip()
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
589 names = fullName.split('.')
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
590
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
591 for i, mapName in enumerate(names):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
592
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
593 # Ensure we have the map object in the params
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
594 if not mapName in params:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
595 params[mapName] = {}
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
596
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
597 # Add new entries and overwrite if a type is defined in this entry
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
598 if not mapName in params or paramTypes is not None:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
599
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
600 # Make sure to not overwrite something like @options {Object} with the type of @options.x {Number}
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
601 if i == len(names) - 1:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
602
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
603 paramEntry = params[mapName] = {}
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
604
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
605 if paramTypes is not None:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
606 paramEntry["type"] = paramTypes
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
607
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
608 if paramDynamic:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
609 paramEntry["dynamic"] = paramDynamic
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
610
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
611 if paramOptional:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
612 paramEntry["optional"] = paramOptional
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
613
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
614 if paramDefault is not None:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
615 paramEntry["default"] = paramDefault
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
616
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
617 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
618 paramEntry = params[mapName]
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
619
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
620
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
621 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
622 paramEntry = params[mapName]
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
623
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
624 # create fields for new map level
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
625 if i + 1 < len(names):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
626 if not "fields" in paramEntry:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
627 paramEntry["fields"] = {}
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
628
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
629 params = paramEntry["fields"]
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
630
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
631 return '<code class="param">%s</code>' % fullName
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
632
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
633 return paramMatcher.sub(collectParams, text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
634
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
635
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
636 def __processLinks(self, text):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
637
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
638 def formatTypes(match):
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
639
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
640 parsedSection = match.group(3)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
641 parsedFile = match.group(4)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
642 parsedItem = match.group(6)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
643
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
644 # Do not match {}
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
645 if parsedSection is None and parsedFile is None and parsedItem is None:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
646 return match.group(1)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
647
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
648 # Minor corrections
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
649 if parsedSection and not parsedItem:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
650 parsedSection = ""
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
651
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
652 attr = ""
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
653 link = ""
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
654 label = ""
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
655
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
656 if parsedSection:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
657 link += '%s:' % parsedSection
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
658
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
659 if parsedFile:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
660 link += parsedFile
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
661 label += parsedFile
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
662
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
663 if parsedItem:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
664 link += "~%s" % parsedItem
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
665 if label == "":
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
666 label = parsedItem
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
667 else:
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
668 label += "#%s" % parsedItem
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
669
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
670 # add link to attributes list
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
671 attr += ' href="#%s"' % link
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
672
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
673 # build final HTML
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
674 return '<a%s><code>%s</code></a>' % (attr, label)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
675
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
676 return linkMatcher.sub(formatTypes, text)
1dd52aa8897c jasy: updated jasy to 1.5-beta6 (latest release available).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3145
diff changeset
677

eric ide

mercurial