robotframework-apex 0.0.0__tar.gz → 0.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/PKG-INFO +3 -2
  2. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/pyproject.toml +16 -3
  3. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/pyproject.toml.orig +15 -3
  4. robotframework_apex-0.0.2/src/BrowserApex/__init__.py +3 -0
  5. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/commands/generate.py +1 -1
  6. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/commands/parse.py +1 -1
  7. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/commands/show.py +1 -1
  8. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/main.py +3 -3
  9. robotframework_apex-0.0.2/src/BrowserApex/version.py +1 -0
  10. robotframework_apex-0.0.0/src/BrowserApex/__init__.py +0 -3
  11. robotframework_apex-0.0.0/src/BrowserApex/cli/apex/__init__.py +0 -4
  12. robotframework_apex-0.0.0/src/BrowserApex/cli/apex/apexlang-26.1.peg +0 -381
  13. robotframework_apex-0.0.0/src/BrowserApex/cli/apex/ebnf/apexlang-26.1.ebnf +0 -11743
  14. robotframework_apex-0.0.0/src/BrowserApex/cli/apex/grammar.py +0 -928
  15. robotframework_apex-0.0.0/src/BrowserApex/cli/apex/objects.py +0 -291
  16. robotframework_apex-0.0.0/src/BrowserApex/cli/apex/reader.py +0 -189
  17. robotframework_apex-0.0.0/src/BrowserApex/version.py +0 -1
  18. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/LICENSE +0 -0
  19. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/README.md +0 -0
  20. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/browser.py +0 -0
  21. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/__init__.py +0 -0
  22. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/commands/__init__.py +0 -0
  23. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/commands/config.py +0 -0
  24. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/commands/dump.py +0 -0
  25. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/templates/custom-settings.template +0 -0
  26. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/templates/keywords.template +0 -0
  27. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/templates/pageobject.template +0 -0
  28. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/templates/pageobjects-resource.template +0 -0
  29. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/templates/rfapex.toml.template +0 -0
  30. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/templates/settings.template +0 -0
  31. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/templates/variables.template +0 -0
  32. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/cli/utils.py +0 -0
  33. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/keywords/__init__.py +0 -0
  34. {robotframework_apex-0.0.0 → robotframework_apex-0.0.2}/src/BrowserApex/keywords/commands.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotframework-apex
3
- Version: 0.0.0
3
+ Version: 0.0.2
4
4
  Summary: Robot Framework Browser extension library supporting Oracle APEX application using Page Object Model.
5
5
  Author: Maurice Koster
6
6
  Author-email: Maurice Koster <maurice@mauricekoster.com>
@@ -20,7 +20,8 @@ Requires-Dist: typer>=0.26.8
20
20
  Requires-Dist: jinja2>=3.1.6
21
21
  Requires-Dist: python-dotenv
22
22
  Requires-Dist: parsimonious>=0.11.0
23
- Requires-Python: >=3.10
23
+ Requires-Dist: python-oracle-apex>=0.0.0
24
+ Requires-Python: >=3.13
24
25
  Description-Content-Type: text/markdown
25
26
 
26
27
  # robotframework-apex
@@ -5,9 +5,15 @@ build-backend = "uv_build"
5
5
  [tool.uv.build-backend]
6
6
  module-name = "BrowserApex"
7
7
 
8
+ [[tool.uv.index]]
9
+ name = "testpypi"
10
+ url = "https://test.pypi.org/simple/"
11
+ publish-url = "https://test.pypi.org/legacy/"
12
+ explicit = true
13
+
8
14
  [project]
9
15
  name = "robotframework-apex"
10
- version = "0.0.0"
16
+ version = "0.0.2"
11
17
  dependencies = [
12
18
  "robotframework >= 7.1.1, < 9.0.0",
13
19
  "robotframework-browser >= 20.0.0, < 21.0.0",
@@ -17,8 +23,9 @@ dependencies = [
17
23
  "Jinja2 >= 3.1.6",
18
24
  "python-dotenv",
19
25
  "parsimonious>=0.11.0",
26
+ "python-oracle-apex>=0.0.0",
20
27
  ]
21
- requires-python = ">= 3.10"
28
+ requires-python = ">= 3.13"
22
29
  description = "Robot Framework Browser extension library supporting Oracle APEX application using Page Object Model."
23
30
  readme = "README.md"
24
31
  license = "MIT"
@@ -37,4 +44,10 @@ name = "Maurice Koster"
37
44
  email = "maurice@mauricekoster.com"
38
45
 
39
46
  [project.scripts]
40
- apexcli = "BrowserApex.cli.main:main"
47
+ rfapex = "BrowserApex.cli.main:main"
48
+
49
+ [dependency-groups]
50
+ dev = [
51
+ "pytest",
52
+ "coverage",
53
+ ]
@@ -8,7 +8,7 @@ module-name = "BrowserApex"
8
8
  [project]
9
9
  name = "robotframework-apex"
10
10
 
11
- version = "0.0.0"
11
+ version = "0.0.2"
12
12
  dependencies = [
13
13
  "robotframework >= 7.1.1, < 9.0.0",
14
14
  "robotframework-browser >= 20.0.0, < 21.0.0",
@@ -18,8 +18,12 @@ dependencies = [
18
18
  "Jinja2 >= 3.1.6",
19
19
  "python-dotenv",
20
20
  "parsimonious>=0.11.0",
21
+ "python-oracle-apex>=0.0.0",
21
22
  ]
22
- requires-python = ">= 3.10"
23
+
24
+
25
+
26
+ requires-python = ">= 3.13"
23
27
  authors = [
24
28
  { name = "Maurice Koster", email = "maurice@mauricekoster.com" },
25
29
  ]
@@ -38,6 +42,14 @@ classifiers = [
38
42
  "Framework :: Robot Framework :: Library",
39
43
  ]
40
44
 
45
+ [dependency-groups]
46
+ dev = ["pytest", "coverage"]
47
+
41
48
  [project.scripts]
42
- apexcli = "BrowserApex.cli.main:main"
49
+ rfapex = "BrowserApex.cli.main:main"
43
50
 
51
+ [[tool.uv.index]]
52
+ name = "testpypi"
53
+ url = "https://test.pypi.org/simple/"
54
+ publish-url = "https://test.pypi.org/legacy/"
55
+ explicit = true
@@ -0,0 +1,3 @@
1
+ from .version import __version__
2
+
3
+ from .browser import BrowserApex
@@ -9,7 +9,7 @@ from operator import itemgetter
9
9
 
10
10
  from BrowserApex.cli.main import app
11
11
  from BrowserApex.cli.utils import get_config_path, get_config, get_template
12
- from BrowserApex.cli.apex import *
12
+ from python_oracle_apex import *
13
13
 
14
14
  current_page = None
15
15
 
@@ -6,7 +6,7 @@ from pathlib import Path
6
6
 
7
7
  #from BrowserApex.cli.utils import get_template
8
8
  from BrowserApex.cli.main import app
9
- from BrowserApex.cli.apex.grammar import parse_apex_file
9
+ from python_oracle_apex import parse_apex_file
10
10
 
11
11
  @app.command(name='parse')
12
12
  def project_parse(
@@ -5,7 +5,7 @@ from rich.table import Table
5
5
  from pathlib import Path
6
6
 
7
7
  from BrowserApex.cli.main import app
8
- from BrowserApex.cli.apex import parse_yaml_file, parse_apex_file
8
+ from python_oracle_apex import parse_yaml_file, parse_apex_file
9
9
 
10
10
  @app.command(name='show')
11
11
  def project_show(
@@ -1,15 +1,15 @@
1
1
  import typer
2
2
  from dotenv import load_dotenv
3
- from BrowserApex import __VERSION__
3
+ from BrowserApex import __version__
4
4
 
5
5
  load_dotenv()
6
6
 
7
7
  app = typer.Typer(
8
8
  help=f"""CLI for supporting development of Page Object Models.
9
9
 
10
- Page exported as readable format (yaml) is used as source for generating POM resources for RobotFramework.
10
+ Page exported as readable format (yaml or apx) is used as source for generating POM resources for RobotFramework.
11
11
 
12
- Version: {__VERSION__}
12
+ Version: {__version__}
13
13
  """,
14
14
  add_completion=True)
15
15
 
@@ -0,0 +1 @@
1
+ __version__ = '0.0.2'
@@ -1,3 +0,0 @@
1
- from .version import __VERSION__
2
-
3
- from .browser import BrowserApex
@@ -1,4 +0,0 @@
1
- from .objects import *
2
-
3
- from .grammar import parse_apex_file
4
- from .reader import parse_yaml_file
@@ -1,381 +0,0 @@
1
- page_object = "page" (required_ws component_id)? ws "(" page_body_line* indent ")" line_end
2
- page_body_line = page_direct_property_line
3
- / page_group_block
4
- / page_child_component
5
- / blank_lines
6
-
7
- page_direct_property_line = indent page_direct_property line_end
8
- page_direct_property = "page" ":" ws number
9
- / "name" ":" ws string_like_value
10
- / "alias" ":" ws string_like_value
11
- / "title" ":" ws string_like_value
12
-
13
- page_group_block = page_appearance
14
- / page_navigation
15
- / page_css
16
- / page_security
17
- / page_advanced
18
-
19
- page_appearance = indent "appearance" ws "{" line_end page_appearance_property_line* indent "}" line_end
20
- page_appearance_property_line = indent page_appearance_property line_end
21
- page_appearance_property = "pageMode" ":" ws ( "normal" / "modalDialog" / "nonModalDialog" )
22
- / "pageTemplate" ":" ws reference
23
- / "dialogTemplate" ":" ws reference
24
- / "templateOptions" ":" ws ( array_of_string_like_value / string_like_value )
25
- / "cssClasses" ":" ws array_of_string_like_value
26
- / "mediaType" ":" ws string_like_value
27
-
28
- page_navigation = indent "navigation" ws "{" line_end page_navigation_property_line* indent "}" line_end
29
- page_navigation_property_line = indent page_navigation_property line_end
30
- page_navigation_property = "cursorFocus" ":" ws ( "firstItemOnPage" / "doNotFocusCursor" )
31
- / "warnOnUnsavedChanges" ":" ws boolean
32
-
33
- page_css = indent "css" ws "{" line_end page_css_property_line* indent "}" line_end
34
- page_css_property_line = indent page_css_property line_end
35
- page_css_property = "fileUrls" ":" ws array_of_string_like_value
36
- / "inline" ":" ws multiline_string
37
- / "inline" ":" nl indent multiline_string
38
-
39
- page_security = indent "security" ws "{" line_end page_security_property_line* indent "}" line_end
40
- page_security_property_line = indent page_security_property line_end
41
- page_security_property = "authorizationScheme" ":" ws reference
42
- / "authentication" ":" ws ( "required" / "public" )
43
- / "deepLinking" ":" ws boolean
44
- / "pageAccessProtection" ":" ws ( "unrestricted" / "argumentsMustHaveChecksum" / "noArgumentsSupported" / "noUrlAccess" )
45
- / "formAutoComplete" ":" ws boolean
46
- / "browserCache" ":" ws boolean
47
-
48
- page_advanced = indent "advanced" ws "{" line_end page_advanced_property_line* indent "}" line_end
49
- page_advanced_property_line = indent page_advanced_property line_end
50
- page_advanced_property = "enableMetaTags" ":" ws boolean
51
- / "enableDuplicatePageSubmissions" ":" ws boolean
52
- / "reloadOnSubmit" ":" ws ( "always" / "onlyForSuccess" )
53
- / "duplicateSubmissionUrl" ":" ws string_like_value
54
-
55
-
56
- page_child_component = region
57
- / page_item
58
- / button
59
- / dynamic_action
60
- / process
61
-
62
- region = indent "region" (required_ws component_id)? ws "(" line_end region_body_line* indent ")" line_end
63
- region_body_line = region_direct_property_line
64
- / region_group_block
65
-
66
- region_direct_property_line = indent region_direct_property line_end
67
- region_direct_property = "name" ":" ws string_like_value
68
- / "title" ":" ws string_like_value
69
- / "type" ":" ws string_like_value
70
-
71
- region_group_block = region_layout
72
- / region_appearance
73
- / region_image
74
- / region_advanced
75
-
76
- region_layout = indent "layout" ws "{" line_end region_layout_property_line* indent "}" line_end
77
- region_layout_property_line = indent region_layout_property line_end
78
- region_layout_property = "sequence" ":" ws number
79
- / "parentRegion" ":" ws reference
80
- / "slot" ":" ws string_like_value
81
- / "startNewLayout" ":" ws boolean
82
- / "startNewRow" ":" ws boolean
83
- / "rowCssClasses" ":" ws array_of_string_like_value
84
- / "column" ":" ws string_like_value
85
- / "newColumn" ":" ws boolean
86
- / "columnSpan" ":" ws string_like_value
87
- / "columnCssClasses" ":" ws array_of_string_like_value
88
- / "columnAttributes" ":" ws array_of_string_like_value
89
-
90
- region_appearance = indent "appearance" ws "{" line_end region_appearance_property_line* indent "}" line_end
91
- region_appearance_property_line = indent region_appearance_property line_end
92
- region_appearance_property = "template" ":" ws reference
93
- / "templateOptions" ":" ws (array_of_string_like_value / string_like_value)
94
- / "cssClasses" ":" ws array_of_string_like_value
95
- / "icon" ":" ws string_like_value
96
- / "renderComponents" ":" ws ( "aboveContent" / "belowContent" )
97
-
98
- region_image = indent "image" ws "{" line_end region_image_property_line* indent "}" line_end
99
- region_image_property_line = indent region_image_property line_end
100
- region_image_property = "fileUrl" ":" ws string_like_value
101
- / "accessibleDescription" ":" ws string_like_value
102
- / "customAttributes" ":" ws string_like_value
103
-
104
- region_advanced = indent "advanced" ws "{" line_end region_advanced_property_line* indent "}" line_end
105
- region_advanced_property_line = indent region_advanced_property line_end
106
- region_advanced_property = "savedReportMappingIdentifier" ":" ws string_like_value
107
- / "htmlDomId" ":" ws string_like_value
108
- / "customAttributes" ":" ws string_like_value
109
- / "regionImage" ":" ws string_like_value
110
- / "imageTagAttributes" ":" ws string_like_value
111
- / "staticId" ":" ws string_like_value
112
- / "regionDisplaySelector" ":" ws boolean
113
- / "excludeTitleFromTranslation" ":" ws boolean
114
- / "schemaOverrideItem" ":" ws string_like_value
115
-
116
-
117
- page_item = indent "pageItem" (required_ws component_id)? ws "(" line_end page_item_body_line* indent ")" line_end
118
- page_item_body_line = page_item_direct_property_line
119
- / page_item_group_block
120
-
121
- page_item_direct_property_line = indent page_item_direct_property line_end
122
- page_item_direct_property = "name" ":" ws string_like_value
123
- / "type" ":" ws string_like_value
124
-
125
- page_item_group_block = page_item_label
126
- / page_item_settings
127
- / page_item_layout
128
- / page_item_appearance
129
- / page_item_validation
130
- / page_item_advanced
131
- / page_item_security
132
- / page_item_session_state
133
-
134
- page_item_label = indent "label" ws "{" line_end page_item_label_property_line* indent "}" line_end
135
- page_item_label_property_line = indent page_item_label_property line_end
136
- page_item_label_property = "label" ":" ws string_like_value
137
- / "alignment" ":" ws ( "above" / "below" / "center" / "centerBottom" / "centerCenter" / "centerTop" / "left" / "leftBottom" / "leftCenter" / "leftTop" / "right" / "rightBottom" / "rightCenter" / "rightTop" )
138
- / "tableCellAttributes" ":" ws array_of_string_like_value
139
-
140
- page_item_settings = indent "settings" ws "{" line_end page_item_settings_property_line* indent "}" line_end
141
- page_item_settings_property_line = indent page_item_settings_property line_end
142
- page_item_settings_property = "trimSpaces" ":" ws ( "none" / "something-else" )
143
- / "dummy" ":" ws string_like_value
144
-
145
-
146
- page_item_layout = indent "layout" ws "{" line_end page_item_layout_property_line* indent "}" line_end
147
- page_item_layout_property_line = indent page_item_layout_property line_end
148
- page_item_layout_property = "sequence" ":" ws number
149
- / "region" ":" ws reference
150
- / "slot" ":" ws string_like_value
151
- / "alignment" ":" ws ( "center" / "centerBottom" / "centerCenter" / "centerTop" / "left" / "leftBottom" / "leftCenter" / "leftTop" / "right" / "rightBottom" / "rightCenter" / "rightTop" )
152
- / "startNewLayout" ":" ws boolean
153
- / "startNewRow" ":" ws boolean
154
- / "rowCssClasses" ":" ws array_of_string_like_value
155
- / "column" ":" ws string_like_value
156
- / "newColumn" ":" ws boolean
157
- / "columnSpan" ":" ws string_like_value
158
- / "rowSpan" ":" ws number
159
- / "labelColumnSpan" ":" ws string_like_value
160
- / "columnCssClasses" ":" ws array_of_string_like_value
161
- / "columnAttributes" ":" ws array_of_string_like_value
162
-
163
- page_item_appearance = indent "appearance" ws "{" line_end page_item_appearance_property_line* indent "}" line_end
164
- page_item_appearance_property_line = indent page_item_appearance_property line_end
165
- page_item_appearance_property = "template" ":" ws reference
166
- / "templateOptions" ":" ws ( array_of_string_like_value / string_like_value )
167
- / "cssClasses" ":" ws ( array_of_string_like_value / string_like_value )
168
- / "icon" ":" ws string_like_value
169
- / "formatMask" ":" ws string_like_value
170
- / "valuePlaceholder" ":" ws string_like_value
171
- / "width" ":" ws number
172
- / "height" ":" ws number
173
-
174
- page_item_validation = indent "validation" ws "{" line_end page_item_validation_property_line* indent "}" line_end
175
- page_item_validation_property_line = indent page_item_validation_property line_end
176
- page_item_validation_property = "valueRequired" ":" ws boolean
177
- / "maxLength" ":" ws number
178
-
179
- page_item_advanced = indent "advanced" ws "{" line_end page_item_advanced_property_line* indent "}" line_end
180
- page_item_advanced_property_line = indent page_item_advanced_property line_end
181
- page_item_advanced_property = "cssClasses" ":" ws array_of_string_like_value
182
- / "customAttributes" ":" ws string_like_value
183
- / "optionHtmlAttributes" ":" ws array_of_string_like_value
184
- / "preText" ":" ws ( string_like_value / multiline_string )
185
- / "postText" ":" ws ( string_like_value / multiline_string )
186
- / "warnOnUnsavedChanges" ":" ws ( "ignore" )
187
- / "initJavaScriptFunction" ":" ws (string_like_value / multiline_string )
188
-
189
- page_item_session_state = indent "sessionState" ws "{" line_end page_item_session_state_property_line* indent "}" line_end
190
- page_item_session_state_property_line = indent page_item_session_state_property line_end
191
- page_item_session_state_property = "dataType" ":" ws ( "varchar2" / "clob" / "boolean" / "number" )
192
- / "storage" ":" ws ( "request" / "session" / "user" )
193
-
194
- page_item_security = indent "security" ws "{" line_end page_item_security_property_line* indent "}" line_end
195
- page_item_security_property_line = indent page_item_security_property line_end
196
- page_item_security_property = "authorizationScheme" ":" ws reference
197
- / "sessionStateProtection" ":" ws ( "unrestricted" / "checksumRequiredAppLevel" / "checksumRequiredUserLevel" / "checksumRequiredSessionLevel" / "restricted" )
198
- / "encryptSessionState" ":" ws boolean
199
- / "escapeSpecialChars" ":" ws boolean
200
- / "restrictedChars" ":" ws ( "alphanumWithSpace" / "webSafe" / "noSpecialChar" / "noSpecialCharNoNewline" / "workspaceSchema" / "workspaceUserSchema" / "workspaceUserSchemaId" )
201
-
202
-
203
-
204
- button = indent "button" (required_ws component_id)? ws "(" line_end button_body_line* indent ")" line_end
205
- button_body_line = button_direct_property_line
206
- / button_group_block
207
-
208
- button_direct_property_line = indent button_direct_property line_end
209
- button_direct_property = "buttonName" ":" ws string_like_value
210
- / "label" ":" ws string_like_value
211
-
212
- button_group_block = button_layout
213
- / button_appearance
214
- / button_behavior
215
-
216
- button_layout = indent "layout" ws "{" line_end button_layout_property_line* indent "}" line_end
217
- button_layout_property_line = indent page_item_layout_property line_end
218
- button_layout_property = "sequence" ":" ws number
219
- / "region" ":" ws reference
220
- / "slot" ":" ws string_like_value
221
- / "startNewLayout" ":" ws boolean
222
- / "startNewRow" ":" ws boolean
223
- / "rowCssClasses" ":" ws array_of_string_like_value
224
- / "column" ":" ws string_like_value
225
- / "newColumn" ":" ws boolean
226
- / "columnSpan" ":" ws string_like_value
227
- / "rowSpan" ":" ws number
228
- / "columnCssClasses" ":" ws array_of_string_like_value
229
- / "columnAttributes" ":" ws array_of_string_like_value
230
- / "horizontalAlignment" ":" ws ( "left" / "right" )
231
- / "alignment" ":" ws ( "center" / "centerBottom" / "centerCenter" / "centerTop" / "left" / "leftBottom" / "leftCenter" / "leftTop" / "right" / "rightBottom" / "rightCenter" / "rightTop" )
232
-
233
- button_appearance = indent "appearance" ws "{" line_end button_appearance_property_line* indent "}" line_end
234
- button_appearance_property_line = indent button_appearance_property line_end
235
- button_appearance_property = "buttonTemplate" ":" ws reference
236
- / "hot" ":" ws boolean
237
- / "showAsDisabled" ":" ws boolean
238
- / "templateOptions" ":" ws ( array_of_string_like_value / string_like_value )
239
- / "cssClasses" ":" ws ( array_of_string_like_value / string_like_value )
240
- / "icon" ":" ws string_like_value
241
-
242
- button_behavior = indent "behavior" ws "{" line_end button_behavior_property_line* indent "}" line_end
243
- button_behavior_property_line = indent button_behavior_property line_end
244
- button_behavior_property = "type" ":" ws string_like_value
245
- / "action" ":" ws ( "submitPage" / "triggerAction" / "redirectThisApp" / "redirectOtherApp" / "redirectUrl" / "definedByDynamicAction" / "resetPage" / "nextPage" / "previousPage" )
246
- / "target" ":" ws value
247
- / "targetUrl" ":" ws string_like_value
248
- / "executeValidations" ":" ws boolean
249
- / "showProcessing" ":" ws boolean
250
- / "warnOnUnsavedChanges" ":" ws ( "doNotCheck" )
251
- / "databaseAction" ":" ws ( "insert" / "update" / "delete" )
252
- / "requiresConfirmation" ":" ws boolean
253
-
254
- process = indent "process" (required_ws component_id)? ws "(" line_end process_body_line* indent ")" line_end
255
- process_body_line = process_direct_property_line
256
- / process_group_block
257
-
258
- process_direct_property_line = indent process_direct_property line_end
259
- process_direct_property = "name" ":" ws string_like_value
260
- / "type" ":" ws string_like_value
261
- / "executionChain" ":" ws string_like_value
262
- / "formRegion" ":" ws reference
263
- / "editableRegion" ":" ws reference
264
-
265
- process_group_block = process_execution
266
- / process_source
267
- / process_advanced
268
-
269
- process_source = "ERROR"
270
- process_execution = "ERROR"
271
- process_advanced = "ERROR"
272
-
273
-
274
- dynamic_action = indent "dynamicAction" (required_ws component_id)? ws "(" line_end dynamic_action_body_line* indent ")" line_end
275
- dynamic_action_body_line = dynamic_action_direct_property_line
276
- / dynamic_action_group_block
277
- / dynamic_action_child_component
278
-
279
- dynamic_action_direct_property_line = indent dynamic_action_direct_property line_end
280
- dynamic_action_direct_property = "name" ":" ws string_like_value
281
- / "???" ":" ws string_like_value
282
-
283
- dynamic_action_group_block = dynamic_action_execution
284
- / dynamic_action_when
285
- / dynamic_action_client_side_condition
286
-
287
- dynamic_action_execution = indent "execution" ws "{" line_end dynamic_action_execution_property_line* indent "}" line_end
288
- dynamic_action_execution_property_line = indent dynamic_action_execution_property line_end
289
- dynamic_action_execution_property = "sequence" ":" ws number
290
- / "eventScope" ":" ws ( "static" / "dynamic" / "once" )
291
- / "staticContainer" ":" ws string_like_value
292
- / "type" ":" ws ( "immediate" / "debounce" / "throttle" )
293
- / "time" ":" ws number
294
- / "immediate" ":" ws boolean
295
-
296
- dynamic_action_when = indent "when" ws "{" line_end dynamic_action_when_property_line* indent "}" line_end
297
- dynamic_action_when_property_line = indent dynamic_action_when_property line_end
298
- dynamic_action_when_property = "event" ":" ws string_like_value
299
- / "customEvent" ":" ws string_like_value
300
- / "selectionType" ":" ws ( "items" / "button" / "region" / "columns" / "domObject" / "jQuerySelector" / "jsExpression" )
301
- / "region" ":" ws reference
302
- / "interactiveGrid" ":" ws reference
303
- / "columns" ":" ws array_of_string_like_value
304
- / "button" ":" ws reference
305
- / "items" ":" ws array_of_string_like_value
306
- / "domObject" ":" ws string_like_value
307
- / "jquerySelector" ":" ws string_like_value
308
- / "javaScriptExpression" ":" ws multiline_string
309
-
310
- dynamic_action_client_side_condition = indent "clientSideCondition" ws "{" line_end dynamic_action_client_side_condition_property_line* indent "}" line_end
311
- dynamic_action_client_side_condition_property_line = indent dynamic_action_client_side_condition_property line_end
312
- dynamic_action_client_side_condition_property = "type" ":" ws ( "item=value" / "item!=value" / "item>value" / "item>=value" / "item<value" / "item<=value" / "itemIsNull" / "itemIsNotNull" / "itemIsInList" / "itemIsNotInList" / "jsExpression" )
313
- / "item" ":" ws string_like_value
314
- / "value" ":" ws string_like_value
315
- / "list" ":" ws array_of_string_like_value
316
- / "javaScriptExpression" ":" ws code_block
317
- / "type" ":" ws ( "itemColumn=value" / "itemColumn!=value" / "itemColumn>value" / "itemColumn>=value" / "itemColumn<value" / "itemColumn<=value" / "itemColumnIsNull" / "itemColumnIsNotNull" / "itemColumnIsInList" / "itemColumnIsNotInList" / "jsExpression" )
318
- / "componentType" ":" ws ( "item" / "column" )
319
- / "column" ":" ws string_like_value
320
-
321
- dynamic_action_child_component = action_c
322
-
323
-
324
- action_c = indent "action" (required_ws component_id)? ws "(" line_end action_c_body_line* indent ")" line_end
325
- action_c_body_line = action_c_direct_property_line
326
- / action_c_group_block
327
-
328
- action_c_direct_property_line = indent action_c_direct_property line_end
329
- action_c_direct_property = "name" ":" ws string_like_value
330
- / "action" ":" ws string_like_value
331
-
332
- action_c_group_block = action_c_affected_elements
333
- / action_c_execution
334
-
335
- action_c_affected_elements = <indent> "affectedElements" ws "{" line_end action_c_affected_elements_property_line* indent "}" line_end
336
- action_c_affected_elements_property_line = indent action_c_affected_elements_property line_end
337
- action_c_affected_elements_property = "selectionType" ":" ws string_like_value
338
- / "region" ":" ws reference
339
- / "columns" ":" ws array_of_string_like_value
340
- / "button" ":" ws reference
341
- / "items" ":" ws array_of_string_like_value
342
- / "domObject" ":" ws string_like_value
343
- / "jquerySelector" ":" ws string_like_value
344
- / "javaScriptExpression" ":" ws code_block
345
-
346
- action_c_execution = indent "execution" ws "{" line_end action_c_execution_property_line* indent "}" line_end
347
- action_c_execution_property_line = indent action_c_execution_property line_end
348
- action_c_execution_property = "sequence" ":" ws number
349
- / "event" ":" ws reference
350
- / "fireWhenEventResultIs" ":" ws string_like_value
351
- / "fireOnInit" ":" ws boolean
352
- / "stopExecutionOnError" ":" ws boolean
353
- / "waitForResult" ":" ws boolean
354
-
355
-
356
- reference = "@" reference_character*
357
- component_id = string / identifier / number
358
- code_block = multiline_string
359
- / string_like_value
360
- multiline_string = "```" ( any_character / nl )* "```"
361
- blank_lines = (ws nl)*
362
- ws = ~r"[ \t]*"
363
- required_ws = ~r"[ \t]+"
364
- line_end = nl
365
- nl = "\n" / "\r\n"
366
- indent = ~r"[ \t]*"
367
- value = string / identifier / boolean / number / reference / multiline_string / array
368
- array = array_of_value
369
- array_separator = required_ws / line_end indent
370
- array_of_value = "[" ( ws value ( array_separator value )* ws / line_end ( indent value line_end )? indent )? "]"
371
- array_of_string_like_value = "[" (line_end indent string_like_value)+ line_end indent "]"
372
- string_like_value = ~r"[^\[\]\n\r]+"
373
- reference_character = ~r"[A-Za-z0-9_/#-]*"
374
- string = ~r"\"[^\"]+\""
375
- any_character = ~r"[^`\n\r]"
376
- number = "-"? digit+ ( "." digit+ )?
377
- digit = ~r"[0-9]"
378
- identifier = identifier_start identifier_rest*
379
- identifier_start = ~r"[A-Za-z0-9_]"
380
- identifier_rest = identifier_start / "." / "-"
381
- boolean = "true" / "false"