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;
 

Reply via email to