Skip to content

Commit

Permalink
v2.3.0 ES
Browse files Browse the repository at this point in the history
  • Loading branch information
ppl-lang committed Feb 11, 2022
1 parent 0376af6 commit 2eef03f
Show file tree
Hide file tree
Showing 37 changed files with 124 additions and 107 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.2.0
2.3.0
2 changes: 1 addition & 1 deletion work/config/compiler.cfg
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
modules_required = "dev.pp.text, dev.pp.parameters, dev.pp.texttable, dev.pdml.core, dev.pdml.ext, org.graalvm.sdk, org.graalvm.truffle, org.graalvm.js, com.oracle.truffle.regex"
modules_required = "dev.pp.basics, dev.pp.text, dev.pp.parameters, dev.pp.texttable, dev.pp.scripting, dev.pdml.core, dev.pdml.ext, org.graalvm.js"

# OPTION: You can uncomment one of the folloing lines to automatically open your editor (VSCode or IntelliJ Idea)
# in case of a compiler error
Expand Down
Binary file removed work/lib/dev.pdml.core-0.8.0.jar
Binary file not shown.
Binary file added work/lib/dev.pdml.core-0.9.0.jar
Binary file not shown.
Binary file removed work/lib/dev.pdml.ext-0.8.0.jar
Binary file not shown.
Binary file added work/lib/dev.pdml.ext-0.9.0.jar
Binary file not shown.
Binary file added work/lib/dev.pp.basics-0.9.0.jar
Binary file not shown.
Binary file removed work/lib/dev.pp.datatype-0.8.0.jar
Binary file not shown.
Binary file added work/lib/dev.pp.datatype-0.9.0.jar
Binary file not shown.
Binary file removed work/lib/dev.pp.parameters-0.8.0.jar
Binary file not shown.
Binary file added work/lib/dev.pp.parameters-0.9.0.jar
Binary file not shown.
Binary file added work/lib/dev.pp.scripting-0.9.0.jar
Binary file not shown.
Binary file removed work/lib/dev.pp.text-0.8.0.jar
Binary file not shown.
Binary file added work/lib/dev.pp.text-0.9.0.jar
Binary file not shown.
Binary file removed work/lib/dev.pp.texttable-0.8.0.jar
Binary file not shown.
Binary file added work/lib/dev.pp.texttable-0.9.0.jar
Binary file not shown.
Binary file modified work/lib/icu4j-69.1.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion work/resources/resources/css/pml-default.css
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
PML version: 2.2.0
PML version: 2.3.0
This is the default CSS style used for HTML files created with PML.
Expand Down
2 changes: 1 addition & 1 deletion work/resources/resources/css/pml-print-default.css
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
PML version: 2.2.0
PML version: 2.3.0
This is the default CSS style used when printing a PML document.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

package dev.pml.converter.data.user_defined_node;

import dev.pp.text.annotations.NotNull;
import dev.pp.text.annotations.Nullable;
import dev.pp.basics.annotations.NotNull;
import dev.pp.basics.annotations.Nullable;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

package dev.pml.converter.data.user_defined_node;

import dev.pp.text.annotations.NotNull;
import dev.pp.text.annotations.Nullable;
import dev.pp.basics.annotations.NotNull;
import dev.pp.basics.annotations.Nullable;

public record UserDefinedNodeAttribute(
@NotNull String name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
import dev.pdml.core.data.AST.children.Node_ASTNodeChild;
import dev.pdml.core.data.formalNode.FormalNode;
import dev.pdml.core.data.formalNode.FormalNodes;
import dev.pdml.core.data.formalNode.types.standard.TextBlockType;
import dev.pdml.ext.extensions.types.TextBlockType;
import dev.pdml.core.data.node.name.NodeName;
import dev.pdml.core.PDMLConstants;
import dev.pdml.ext.utilities.PDMLParserUtils;
import dev.pp.text.annotations.NotNull;
import dev.pp.text.annotations.Nullable;
import dev.pdml.ext.utilities.parser.PDMLParserUtils;
import dev.pp.basics.annotations.NotNull;
import dev.pp.basics.annotations.Nullable;
import dev.pp.basics.utilities.directory.DirectoryContentUtils;
import dev.pp.text.error.handler.TextErrorHandler;
import dev.pp.text.utilities.DirectoryUtilities;

import java.io.File;
import java.util.ArrayList;
Expand Down Expand Up @@ -50,7 +50,7 @@ public class UserDefinedNodeParser {
Map<String, UserDefinedNode> UDNs = new HashMap<>();
for ( File directory : directories ) {

DirectoryUtilities.consumeNonExcludedFilesWithExtensionInTree ( directory, PDMLConstants.PDML_FILE_EXTENSION, file -> {
DirectoryContentUtils.forEachNonExcludedFileWithExtensionInTree ( directory, PDMLConstants.PDML_FILE_EXTENSION, file -> {
try {
addUDNsInFile ( file, UDNs, errorHandler );
} catch ( Exception e ) {
Expand Down Expand Up @@ -91,7 +91,7 @@ private static void handleRootNode (

default -> errorHandler.handleError (
"INVALID_ROOT_NODE",
"Node '" + rootNode.getName().fullName() + "' is invalid. The root node must be be named '" +
"Node '" + rootNode.getName().qualifiedName() + "' is invalid. The root node must be be named '" +
NODE_NODE_NAME + "' or '" + NODES_NODE_NAME + "'.",
rootNode.getName().getToken() );
}
Expand All @@ -106,7 +106,7 @@ private static void handleNodesNode (
if ( children == null ) {
errorHandler.handleError (
"EMPTY_NODES",
"Node '" + nodesNode.getName().fullName() + "' must contain one or mode '" + NODE_NODE_NAME + "' nodes.",
"Node '" + nodesNode.getName().qualifiedName() + "' must contain one or mode '" + NODE_NODE_NAME + "' nodes.",
nodesNode.getName().getToken() );
return;
}
Expand All @@ -118,7 +118,7 @@ private static void handleNodesNode (
} else {
errorHandler.handleError (
"INVALID_NODE",
"Node '" + name + "' is invalid. Node '" + nodesNode.getName().fullName() +
"Node '" + name + "' is invalid. Node '" + nodesNode.getName().qualifiedName() +
"' can only contain nodes with name '" + NODE_NODE_NAME + "'.",
nodeNode.getName().getToken() );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

package dev.pml.converter.data.user_defined_node;

import dev.pp.text.annotations.NotNull;
import dev.pp.basics.annotations.NotNull;

public record UserDefinedNodeWriter(
@NotNull String targetCodeName,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,14 @@ The JSON file can be used by editor plugins and tools that depend on PML tags an
write_string_member ( writer, name = "id", value = formal_node.standard_tag, is_last = no )

variable type string
variable is_inline_type yes_no
case type of formal_node
when PML_formal_block_node<*>
type = "block"
is_inline_type = no
when PML_formal_inline_node<*>
type = "inline"
is_inline_type = yes
.
write_string_member ( writer, name = "type", value = type, is_last = no )

Expand All @@ -94,6 +97,9 @@ The JSON file can be used by editor plugins and tools that depend on PML tags an
write_yes_no_member ( writer, name = "HTML_attributes_allowed",
value = formal_node.HTML_attributes_allowed, is_last = no )

write_yes_no_member ( writer, name = "is_inline_type",
value = is_inline_type, is_last = no )

variable is_raw_text_block yes_no
variable closing_tag = PML_default_values.node_end_symbol.to_string
case type of formal_node
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ service PML_chapter_formal_node
PML_formal_block_node_with_child_nodes<PML_chapter_node>.create (
tags = [# "ch" ]
attributes = a_attributes
default_attribute_id = parameter_id.create ( se_PML_attribute_ids.title )
default_attribute_id = null
HTML_attributes_allowed = yes
child_nodes_are_inline_nodes = no
node_creator = fa_PML_chapter_node_creator.create
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ factory PML_formal_block_node_with_raw_text_content

java_header
import dev.pdml.core.data.formalNode.FormalNode;
import dev.pdml.core.data.formalNode.types.standard.TextBlockType;
import dev.pdml.ext.extensions.types.TextBlockType;
import dev.pml.converter.data.formal_node.helper.se_formal_node;
end java_header

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ service PML_table_data_formal_node
title = "Table Data"
description = '''Simple table data defined as plain text, and rendered as a table.
Each line of text represents a row.
Cell values in a row are separated by a comma or a TAB character.
Cell values in a row are separated by a vertical bar (|), a semicolon (;), a comma (,) or a TAB character.
The content of each cell can only be plain text. If formatted text or complex cell content (e.g. picture in a cell, or table in a table) is needed, then please use the 'table' tag.
A header and footer can optionally be defined.
The horizontal alignment (left, center, or right) can be specified for each column.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ An id can be used to:
- identify a node so that it can be styled individually with CSS
- create an HTML anchor so that it can be accessed with the # (hash) sign (e.g. writing id=foo will enable you to have an HTML link ending with #foo.

An identifier must start with a letter and can be followed by any number of letters, digits, and underscores. Note for programmers: The regex of an identifier is: [a-zA-Z][a-zA-Z0-9_]*. Identifiers are case-sensitive. The following identifiers are all different: name, Name, and NAME.'''
An identifier must start with a letter or an underscore, and can be followed by any number of letters, digits, underscores, dots, and hyphens. Note for programmers: The regex of an identifier is: [a-zA-Z_][a-zA-Z0-9_\.-]*. Identifiers are case-sensitive. The following identifiers are all different: name, Name, and NAME.'''

examples = "id = basic_concept" ) )

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ factory PML_formal_inline_node_with_raw_text_content

java_header
import dev.pdml.core.data.formalNode.FormalNode;
import dev.pdml.core.data.formalNode.types.standard.TextBlockType;
import dev.pdml.ext.extensions.types.TextBlockType;
import dev.pml.converter.data.formal_node.helper.se_formal_node;
end java_header

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,31 @@ service pXML_parser

import org.ppl.core.collections.java.se_Java_collection_utilities;

import dev.pp.text.annotations.NotNull;
import dev.pp.text.reader.exception.TextReaderException;
import dev.pp.basics.annotations.NotNull;

import dev.pp.text.reader.exception.InvalidTextException;
import dev.pp.text.token.TextToken;

import dev.pp.scripting.env.ScriptingEnvironmentImpl;;

import dev.pdml.core.data.AST.attribute.ASTNodeAttribute;
import dev.pdml.core.data.AST.attribute.ASTNodeAttributes;
import dev.pdml.core.data.formalNode.FormalNode;
import dev.pdml.core.data.formalNode.FormalNodes;
import dev.pdml.core.data.formalNode.types.PDMLType;
import dev.pdml.core.data.formalNode.types.standard.TextBlockType;
import dev.pdml.core.data.formalNode.PDMLType;
import dev.pdml.ext.extensions.types.TextBlockType;
import dev.pdml.core.data.node.name.NodeName;
import dev.pdml.core.reader.parser.eventHandler.NodeEndEvent;
import dev.pdml.core.reader.parser.eventHandler.NodeStartEvent;
import dev.pdml.core.reader.parser.eventHandler.ParserEventHandler;
import dev.pdml.core.reader.parser.EventStreamParserBuilder;
import dev.pdml.core.reader.reader.extensions.PXMLExtensionsHandler;

import dev.pdml.ext.extensions.DefaultPXMLExtensionsHandler;
import dev.pdml.ext.extensions.node.PXMLExtensionHandler;
import dev.pdml.ext.extensions.node.standard.ConstantDeclaration_ExtensionHandler;
import dev.pdml.ext.extensions.node.standard.InsertConstant_ExtensionHandler;
import dev.pdml.ext.extensions.node.standard.InsertFile_ExtensionHandler;
import dev.pdml.core.parser.eventHandler.NodeEndEvent;
import dev.pdml.core.parser.eventHandler.NodeStartEvent;
import dev.pdml.core.parser.eventHandler.PDMLParserEventHandler;
import dev.pdml.ext.utilities.parser.PDMLParserBuilder;
import dev.pdml.core.reader.extensions.PDMLExtensionsHandler;

import dev.pdml.ext.extensions.PDMLExtensionsHandlerImpl;
// import dev.pdml.ext.extensions.node.PDMLExtensionNodeHandler;
// import dev.pdml.ext.extensions.utilities.SetConstant_ExtensionHandler;
// import dev.pdml.ext.extensions.utilities.GetConstant_ExtensionHandler;
// import dev.pdml.ext.extensions.utilities.InsertFile_ExtensionHandler;

import dev.pml.converter.data.formal_node.block.with_raw_text_content.nodes.se_PML_HTML_code_formal_node;
import dev.pml.converter.data.formal_node.block.with_raw_text_content.nodes.se_PML_input_formal_node;
Expand All @@ -50,13 +53,13 @@ service pXML_parser
end java_header

java
static class CreateTree_ParserEventHandler implements ParserEventHandler<ty_mutable_PDML_AST_node, ty_mutable_PDML_AST_node> {
static class CreateTree_PDMLParserEventHandler implements PDMLParserEventHandler<ty_mutable_PDML_AST_node, ty_mutable_PDML_AST_node> {


private ty_mutable_PDML_AST_node rootNode;


public CreateTree_ParserEventHandler() {}
public CreateTree_PDMLParserEventHandler() {}


public void onStart() {}
Expand Down Expand Up @@ -125,11 +128,11 @@ service pXML_parser
return formalNodes;
}

private static PXMLExtensionsHandler createExtensionsHandler() {
private static PDMLExtensionsHandler createExtensionsHandler() {

/* disabled, because PML uses PDML's syntax

Map<String, PXMLExtensionHandler> customizedExtensionNodeHandlers =
Map<String, PDMLExtensionNodeHandler> customizedExtensionNodeHandlers =
new HashMap<>();

customizedExtensionNodeHandlers.put (
Expand All @@ -138,15 +141,15 @@ service pXML_parser

customizedExtensionNodeHandlers.put (
se_PML_declare_constant_formal_node.getNode().standard_tag().getJavaString(),
new ConstantDeclaration_ExtensionHandler() );
new SetConstant_ExtensionHandler() );
customizedExtensionNodeHandlers.put (
"ins-const",
new InsertConstant_ExtensionHandler() );
new GetConstant_ExtensionHandler() );

return new DefaultPXMLExtensionsHandler ( customizedExtensionNodeHandlers );
return new PDMLExtensionsHandlerImpl ( customizedExtensionNodeHandlers );
*/

return new DefaultPXMLExtensionsHandler();
return new PDMLExtensionsHandlerImpl();
}
end java

Expand All @@ -164,16 +167,17 @@ service pXML_parser
variable canceling_error text_error or null = null

java
ParserEventHandler<ty_mutable_PDML_AST_node, ty_mutable_PDML_AST_node> eventHandler =
new CreateTree_ParserEventHandler();
PDMLParserEventHandler<ty_mutable_PDML_AST_node, ty_mutable_PDML_AST_node> eventHandler =
new CreateTree_PDMLParserEventHandler();

try {
new EventStreamParserBuilder<> ( eventHandler )
new PDMLParserBuilder<> ( eventHandler )
.setErrorHandler ( i_error_handler.getJavaTextErrorHandler() )
.setExtensionsHandler ( createExtensionsHandler() )
.setScriptingEnvironment ( new ScriptingEnvironmentImpl(true) )
.setFormalNodes ( createFormalNodes() )
.parseFile ( i_file.getJavaFile() );
} catch ( TextReaderException e ) {
} catch ( InvalidTextException e ) {
v_canceling_error = fa_text_error.createFromJava ( e.toTextError() );
}
v_pXML_root_node = eventHandler.getResult();
Expand Down
17 changes: 11 additions & 6 deletions work/src/PPL/dev/pml/converter/se_CLI_start.ppl
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,7 @@ examples:
case type of result

when error e
case type of e
when text_error
// already handled by error_handler
otherwise
OS.err.write_line ( e.to_string )
.
report_error ( e )
se_OS_process.exit_with_error

otherwise
Expand Down Expand Up @@ -82,5 +77,15 @@ examples:
const a = allow_process_exit_after_execution )
return result = r, allow_process_exit = a
.

function report_error ( error )

case type of error
when text_error
write_form_to_OS_err__text_error_handler.create.handle_error ( error )
otherwise
OS.err.write_line ( error.to_string )
.
.
.
.
38 changes: 32 additions & 6 deletions work/src/PPL/dev/pml/converter/se_PML_to_HTML_Converter.ppl
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

service PML_to_HTML_Converter

att version string = "2.2.0"
att version_date local_date = local_date.parse_or_throw ( "2021-12-14" )
att version string = "2.3.0"
att version_date local_date = local_date.parse_or_throw ( "2022-02-11" )

function try_convert_PML_file_path_string -> file or anticipated_error
in absolute_or_relative_PML_file_path string
Expand All @@ -28,12 +28,17 @@ service PML_to_HTML_Converter

const error = try_create_HTML_file ( i_config )
if error is not null then
const first_error = i_config.error_handler.first_error
assert first_error is not null
se_editor.open_editor_for_error ( error = first_error, i_config )
show_error_in_editor ( error, config )
return error
.

///
java
// if (true) throw new Exception ( "EEE" );
if (true) throw new RuntimeException ( "RRR" );
end java
.///

try_copy_CSS_files ( output_directory ) on_error:return_error

try_copy_resources ( resources_directory, output_directory ) on_error:return_error
Expand Down Expand Up @@ -102,7 +107,10 @@ service PML_to_HTML_Converter
root_node = pXML_root_node
context = PML_tree_creator_context.create ( error_handler ) ) on_error:return_error
if error_handler.first_error as first_non_canceling_error is not null then
return first_non_canceling_error
// return first_non_canceling_error
return invalid_string_data_error.create (
info = "The process has been aborted because of errors encountered."
data = null )
.

i_config.document_TOC_position = document_node.TOC_position
Expand Down Expand Up @@ -148,5 +156,23 @@ service PML_to_HTML_Converter
file_overwrite_policy = file_copy_overwrite_policy.always_overwrite
include_child_directories = yes )
.

function show_error_in_editor ( error anticipated_error, config PML_to_HTML_config )

variable editor_error text_error or null = null
if i_config.error_handler.first_error as first_error is not null then
editor_error = first_error
else
case type of i_error
when text_error
editor_error = i_error
otherwise
editor_error = null
.
.
if editor_error is not null then
se_editor.open_editor_for_error ( error = editor_error, i_config )
.
.
.
.
Loading

0 comments on commit 2eef03f

Please sign in to comment.