This is an automated email from the ASF dual-hosted git repository.
sgoeschl pushed a commit to branch FREEMARKER-199
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
The following commit(s) were added to refs/heads/FREEMARKER-199 by this push:
new 676715d FREEMARKER-199 [freemarker-generator] Add "utah-parser-tool"
676715d is described below
commit 676715d147bd92a07ed6f6c6f802c0a458bf0f65
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Sat Oct 23 15:29:35 2021 +0200
FREEMARKER-199 [freemarker-generator] Add "utah-parser-tool"
---
.../org/apache/freemarker/generator/base/table/Table.java | 2 +-
freemarker-generator-cli/CHANGELOG.md | 4 ++++
.../freemarker/generator/cli/config/DataModelSupplier.java | 12 ++++++++++--
.../src/site/markdown/cli/concepts/data-models.md | 2 +-
.../src/site/markdown/cli/concepts/data-sources.md | 4 +---
.../src/site/markdown/cli/concepts/named-uris.md | 2 +-
.../generator/tools/commonscsv/CommonsCSVTool.java | 1 -
7 files changed, 18 insertions(+), 9 deletions(-)
diff --git
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/table/Table.java
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/table/Table.java
index 1abf21b..b1710b1 100644
---
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/table/Table.java
+++
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/table/Table.java
@@ -141,7 +141,7 @@ public class Table {
/**
* Create a table from a list of rows representing tabular data
- * where the first row may consists of column headers.
+ * where the first row may consist of column headers.
*
* @param rows row values
* @param withFirstRowAsColumnNames column names as first row?
diff --git a/freemarker-generator-cli/CHANGELOG.md
b/freemarker-generator-cli/CHANGELOG.md
index d74ca0e..c440886 100644
--- a/freemarker-generator-cli/CHANGELOG.md
+++ b/freemarker-generator-cli/CHANGELOG.md
@@ -4,6 +4,9 @@ All notable changes to this project will be documented in this
file. We try to a
## 0.2.0-SNAPSHOT
+### Added
+* [FREEMARKER-199] Add
[utah-parser-tool](https://github.com/sonalake/utah-parser) to parse
semi-structured text.
+
### Changed
* [FREEMARKER-195] Improve exposure of DataSources using TemplateHashModelEx2
@@ -90,4 +93,5 @@ All notable changes to this project will be documented in
this file. We try to a
[FREEMARKER-182]: https://issues.apache.org/jira/browse/FREEMARKER-182
[FREEMARKER-188]: https://issues.apache.org/jira/browse/FREEMARKER-188
[FREEMARKER-195]: https://issues.apache.org/jira/browse/FREEMARKER-195
+[FREEMARKER-199]: https://issues.apache.org/jira/browse/FREEMARKER-199
diff --git
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/DataModelSupplier.java
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/DataModelSupplier.java
index 57591d6..6cc81d0 100644
---
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/DataModelSupplier.java
+++
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/DataModelSupplier.java
@@ -16,6 +16,7 @@
*/
package org.apache.freemarker.generator.cli.config;
+import org.apache.commons.io.FilenameUtils;
import org.apache.freemarker.generator.base.datasource.DataSource;
import org.apache.freemarker.generator.base.datasource.DataSourceLoader;
import org.apache.freemarker.generator.base.datasource.DataSourceLoaderFactory;
@@ -79,15 +80,22 @@ public class DataModelSupplier implements
Supplier<Map<String, Object>> {
if (contentType.startsWith(MIME_APPLICATION_JSON)) {
return fromJson(dataSource, isExplodedDataModel);
+ } else if (isYamlDataSource(dataSource)) {
+ return fromYaml(dataSource, isExplodedDataModel);
} else if (contentType.startsWith(MIME_TEXT_PLAIN)) {
return fromProperties(dataSource, isExplodedDataModel);
- } else if (contentType.startsWith(MIME_TEXT_YAML)) {
- return fromYaml(dataSource, isExplodedDataModel);
} else {
throw new IllegalArgumentException("Don't know how to handle
content type: " + contentType);
}
}
+ private static boolean isYamlDataSource(DataSource dataSource) {
+ final String contentType = dataSource.getContentType();
+ final String extension =
FilenameUtils.getExtension(dataSource.getUri().toString());
+ return contentType.startsWith(MIME_TEXT_YAML)
+ || (contentType.startsWith(MIME_TEXT_PLAIN)) &&
"yaml".equalsIgnoreCase(extension);
+ }
+
private static Map<String, Object> fromJson(DataSource dataSource, boolean
isExplodedDataModel) {
final GsonTool gsonTool = new GsonTool();
final Object json = gsonTool.parse(dataSource);
diff --git
a/freemarker-generator-cli/src/site/markdown/cli/concepts/data-models.md
b/freemarker-generator-cli/src/site/markdown/cli/concepts/data-models.md
index bd56d76..42b048f 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/concepts/data-models.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/data-models.md
@@ -43,7 +43,7 @@ Exposed the JSON data source as variable `post` in
FreeMarker's model
post title is: qui est esse
```
-Expose all environment variables as `env` in theFreeMarker model
+Expose all environment variables as `env` in the FreeMarker model
```
> freemarker-generator --data-model env=env:/// -i '<#list env as
> name,value>${name}=${value}${"\n"}</#list>'
diff --git
a/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md
b/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md
index 2a7d01e..f04675d 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md
@@ -96,7 +96,7 @@ URI : system:///stdin
### Selecting A DataSource
-After loading one or more `DataSource` they are accessible as `dataSource` map
in the FreeMarker model
+After loading one or more `DataSource` they are accessible as `dataSources`
map in the FreeMarker model
* `dataSources[0]` or `dataSources?first` selects the first data source
* `dataSources["user.csv"]` selects the data source with the name "user.csv"
@@ -306,8 +306,6 @@ group : default
Iterating Over Properties Of A Datasource
---------------------------------------------------------------------------
-
-
```
diff --git
a/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md
b/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md
index 5c5d61b..bb84d92 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md
@@ -93,7 +93,7 @@ URI :
file:/Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-ge
or use a charset for all files of a directory
```text
-freemarker-generator -t freemarker-generator/info.ftl
'examples/data/csv#charset=UTF-16&mimetype=text/plain'
+freemarker-generator -t freemarker-generator/info.ftl
'examples/data/csv#charset=UTF-16&mimeType=text/plain'
FreeMarker Generator DataSources
------------------------------------------------------------------------------
diff --git
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java
index 18c8817..12c757d 100644
---
a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java
+++
b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java
@@ -33,7 +33,6 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;