Git Product home page Git Product logo

app-state-diagram's People

Contributors

apple-x-co avatar h13 avatar josephgardner avatar koriym avatar naokitsuchiya avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

app-state-diagram's Issues

Empty profile causes error

Empty profile causes raise InvalidAlpsException.

<?xml version="1.0" encoding="UTF-8"?>
<alps
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="https://alps-io.github.io/schemas/alps.xsd">
</alps>
> bin/asd -c docs/blog/asd.md.xml docs/blog/profile.xml
InvalidAlpsException: /Users/akihito/git/app-state-diagram/docs/blog/profile.xml 
 in /Users/akihito/git/app-state-diagram/src/SplitProfile.php:58
Script bin/asd -c docs/blog/asd.md.xml docs/blog/profile.xml handling the md event returned with error code 1

No timeout in watch mode

No timeout in watch mode, which currently times out in 300 seconds.

The following exception is caused by a process timeout
Check https://getcomposer.org/doc/06-config.md#process-timeout for details

In Process.php line 1204:
                                                                               
  The process "asd '--watch' '/work/demo.xml'" exceeded the timeout of 300 se  
  conds.                                                                       
                                                                               

exec [-l|--list] [--] [<binary> [<args>...]]

これはgulpではなくcomposer?

Update breadcrumb list

There is a breadcrumb list in the header section of the document, but there is no hierarchical structure and it is not appropriate.

image

This PR changes the separator (>) between Home, Asd, and {semantic} to a pipe (|).
See below.

before :

home > asd > About

after :

home | asd | json

ASD is rendered in multiple modes

現在はステートダイアグラムのレンダリングがIDで行われ、labelオプションで指定できる様になっていますがオプションを廃止して3つ(id, title, both) の全て一度にレンダリングされるようにする。

Currently, state diagrams are rendered by ID, which can be specified with the label option, but this option should be removed so that all three (id, title, both) are rendered at once.

Current

Application State Diagram

Proposal

Application State Diagram (title | id and title)

Usage is not shown

Currently, if you run it without any options

$ asd
Config file not found:

これは寂しい。
It should be as followings.

asd version 0.9.0

Usage:

asd [options] [alpsFile]

Options:
    -c, --config=asd.xml
        Path to a asd.xml configuration file

    -w, --watch
        Watch mode

    --and-tag={tag1, tag2} --or-tag={tag3} [--color=red]
        Filter graph

    -l, --label={id|title|both}
        Displayed words

    -m, --mode={markdown|html}
        Output format

Unexpected results for external values on HREF

the ability to use full URIs for HREF values exhibit unexpected results.

assume this sample ALPS document:

{
  "alps" : {
    "version" : "1.0",
    "title" : "Testing External References",
    "descriptor" : [
      {"href": "https://rwmbook.github.io/alps-documents/related/related.json#home"}
    ]
  }
}

now...

  1. when processed by ASD, the results look identical to the results found here: https://rwmbook.github.io/alps-documents/mru/index.html

Note the title from the source document is replaced by the title in the reference document.

  1. adding a second external reference:
{
  "alps" : {
    "version" : "1.0",
    "title" : "Testing External References",
    "descriptor" : [
      {"href": "https://rwmbook.github.io/alps-documents/related/related.json#home"},
      {"href": "https://rwmbook.github.io/alps-documents/mru/mru.json#home"}
    ]
  }
}

now the results seems to be a merge of the two. but there are inconsistencies.

  • Note the title is still replaced but this time by the title of the second external reference.
  • inspecting the two external references shows that they both contain defintiions for a home semantic element.
  • Note that the home semantic element (a resource expression) shown here is the one from the second reference in the source document. However, it is missing a sub descriptor (relatedLink) even though there is one in the home descriptor of the second reference. It looks like there are overwrites here which should be merges?
  1. finally, let's flip the order of the external references:
{
  "alps" : {
    "version" : "1.0",
    "title" : "Testing External References",
    "descriptor" : [
      {"href": "https://rwmbook.github.io/alps-documents/mru/mru.json#home"},
      {"href": "https://rwmbook.github.io/alps-documents/related/related.json#home"}
    ]
  }
}

now the results show that the second external reference has overwritten (not merged) matching element from the first.

I expected any "clashes" of descriptors to result in a faithful combining of the two (or more) elements. I also expected the title to be that of the source document (not the last reference).

I think i am OK with the general results (the merging of the two documents as long as it is done faithfully. it has implications for creating smaller ALPS documents and then using a "parent" document to combine them easily. that could be handy.

Suport Ignore tag filter

従来の tag による filter 処理

従来の tag による filter は 指定したtagを持った遷移のみを抽出 します。

<?xml version="1.0" encoding="UTF-8"?>
<alps
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="https://alps-io.github.io/schemas/alps.xsd">

  <descriptor id="nav">
    <descriptor href="#goHome" />
  </descriptor>

  <!-- embedded navigation -->
  <descriptor id="PageA">
    <descriptor href="#nav" />
    <descriptor href="#goPageB" />
  </descriptor>

  <!-- tagged navigation -->
  <descriptor id="PageB">
    <descriptor href="#goHome"/>
    <descriptor href="#goPageA" />
  </descriptor>


  <descriptor id="Home">
    <descriptor href="#goPageA" />
    <descriptor href="#goPageB" />
  </descriptor>

  <descriptor id="goHome" type="safe" rt="#Home" tag="nav" />
  <descriptor id="goPageA" type="safe" rt="#PageA" />
  <descriptor id="goPageB" type="safe" rt="#PageB" />
</alps>

上記の Profile に対して asd --and-tag=nav profile.xml すると以下のdotが生成されます。

digraph application_state_diagram {
  graph [
    labelloc="t";
    fontname="Helvetica"
    label="";
    URL="index.html" target="_parent"
  ];
  node [shape = box, style = "bold,filled" fillcolor="lightgray"];


    PageB -> Home [label = <goHome (safe)> URL="docs/safe.goHome.html" target="_parent" fontsize=13];
    nav -> Home [label = <goHome (safe)> URL="docs/safe.goHome.html" target="_parent" fontsize=13];

    PageB [label = <PageB> URL="docs/semantic.PageB.html" target="_parent"]
    Home [label = <Home> URL="docs/semantic.Home.html" target="_parent"]
    nav [label = <nav> URL="docs/semantic.nav.html" target="_parent"]

}

image

New feature

新たに サポートする機能は、上記の逆の処理を行い、次のdotを出力します。

digraph application_state_diagram {
  graph [
    labelloc="t";
    fontname="Helvetica"
    label="";
    URL="index.html" target="_parent"
  ];
  node [shape = box, style = "bold,filled" fillcolor="lightgray"];

    PageA [margin=0.02, label=<<table cellspacing="0" cellpadding="5" border="0"><tr><td>PageA<br />(nav)<br /></td></tr></table>>,shape=box URL="docs/semantic.PageA.html" target="_parent"]

    Home -> PageA [label = <goPageA (safe)> URL="docs/safe.goPageA.html" target="_parent" fontsize=13];
    Home -> PageB [label = <goPageB (safe)> URL="docs/safe.goPageB.html" target="_parent" fontsize=13];
    PageA -> PageB [label = <goPageB (safe)> URL="docs/safe.goPageB.html" target="_parent" fontsize=13];
    PageB -> PageA [label = <goPageA (safe)> URL="docs/safe.goPageA.html" target="_parent" fontsize=13];

    Home [label = <Home> URL="docs/semantic.Home.html" target="_parent"]
    PageB [label = <PageB> URL="docs/semantic.PageB.html" target="_parent"]
}

image

docker pullの実行結果を非表示

#163 の変更でdocker pullの実行結果出ていますが、これを表示しないように変更。

asd ./work/profile.json 
latest: Pulling from alps-asd/app-state-diagram
Digest: sha256:f75fd9a4f6742842aadb0122302dce25c50b3d1126fcc31f3ec546a6f349b64c
Status: Image is up to date for ghcr.io/alps-asd/app-state-diagram:latest
ghcr.io/alps-asd/app-state-diagram:latest
Changed current directory to /root/.composer
ASD generated. /work/index.html
Descriptors(12), Links(6)

Better error handling/message

A proper error message will encourage the user to write the correct ALPS file.

Item list should be checked and output proper error message.

  • JSON syntax
  • Descriptor element an array not object
  • Missing rt "#"
  • Missing rt element

In project, when asd path has been setted, asd watch mode is failed

condition

$ pwd
/Users/tsuchiya/work/tsuchiya/alps-asd/app-state-diagram
$ which asd
/usr/local/bin/asd

result

$ bin/asd --watch docs/blog/profile.xml

> [email protected] start
> gulp "--profile" "/Users/tsuchiya/work/tsuchiya/alps-asd/app-state-diagram/docs/blog/profile.xml"

[21:40:40] Using gulpfile ~/work/tsuchiya/alps-asd/app-state-diagram/asd-sync/gulpfile.js
[21:40:40] Starting 'default'...
[21:40:40] Starting 'asd'...
the input device is not a TTY
Command failed: asd /Users/tsuchiya/work/tsuchiya/alps-asd/app-state-diagram/docs/blog/profile.xml
the input device is not a TTY

[21:40:41] Finished 'asd' after 447 ms
[21:40:41] Starting 'serve'...
[21:40:41] Starting 'watch'...
[21:40:41] Finished 'serve' after 48 ms
[Browsersync] Access URLs:
 -------------------------------------
       Local: http://localhost:3000
    External: http://192.168.11.5:3000
 -------------------------------------
          UI: http://localhost:3001
 UI External: http://localhost:3001
 -------------------------------------
[Browsersync] Serving files from: /Users/tsuchiya/work/tsuchiya/alps-asd/app-state-diagram/docs/blog

Display mode

image

[original]

image

The above example displays the title instead of the id of the semantic descriptor.

Wouldn't this paraphrase help the business people understand?

Add footer to tag pages in the documentation

very much like the rendering of tag values on the home page of the ALPS profile documentation.

would also like to see the typical navigation footer appear at the bottom of these pages to maket it easier to naivgate between tag pages and other pages in the documentation.

please consider adding:

home > asd > {tag}

as the footer for all tag pages.

include TITLE in documentation/diagram

it would be great to be able to render the TITLE element (at the root of ALPS) on the output HTML and diagram.

also, maybe include the root level DOC.VALUE element on the HTML output?

thanks for a great tool. enjoying it very much.

Include npm module

The package doesn't include the node module, and it gets installed every time it is started up.

Utility to run ASD on docker container

How to run docker container currently.

docker run -v "$(pwd)/work:/asd" -dit --init --rm --name asd ghcr.io/koriym/app-state-diagram:latest composer --quiet global exec asd /asd/profile.json

This is redundant. It should be changed as follows.

asd work/profile.json

ALPS tutorial

It would be great if we have a decent step-to-step tutorial with ASD for learning how to write an ALPS profile.

add support for the text property of a descriptor

I often use the text property of a desriptor for a short human-readable documentation string. I'd like to see that in the rendering of the ASD documentation, too.

minimum: it should appear alongside all the other property values on the detail pages like type, doc, rel, tag, and rt.

optimum: it would be great if the text value appeared in any listings (home page, tag pages, the descriptor tables), too.

for example, on the home page, insert that text after the type value:
<li><a href="docs/unsafe.doPersonCreate.html">doPersonCreate</a> (unsafe), {text}</li>

and, for descriptor list tables, add another column to the right of the type value:

<table>
 <thead>
 <tr>
 <th>id</th>
 <th>type</th>
 <th>text</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td><a href="semantic.home.html">home</a></td>
 <td>semantic</td>
 <td>{text}</td>
 </tr>
 <tr>
 <td><a href="safe.goHome.html">goHome</a></td>
 <td>safe</td>
 <td>{text}</td>
 </tr>
 <tr>
 <td><a href="safe.goPersonCollection.html">goPersonCollection</a></td>
 <td>safe</td>
 <td>{text}</td>
 </tr>
 </tbody>
 </table>

Adding "watch" mode

Overview

Users can see the diagram in real time while editing the ALPS file.

How To

Monitor the ALPS profile in Gulp to repaint and reload the browser if there are changes.

Usage

composer global exec asd -- --watch alps.json

Suggested by @mamund

Raw descriptor output

Raw descriptor output should be checked.
There are currently a few things to consider.

  • XML is also output as JSON
  • Some elements are missing.

Or don't we need this feature in the first place?

Avoid composer time-out

Set composer timeout value to avoid composer exec timeout as following.

Check https://getcomposer.org/doc/06-config.md#process-timeout for details

In Process.php line 1204:
                                                                                                          
  The process "asd '--watch' '--ignore-timeout' '/work/profile.json'" exceeded the timeout of 300 seconds.

Can not use external profile id as rt

When root profile references rt from external profile like the following, throws RtDescriptorMissingException

{
  "$schema": "https://alps-io.github.io/schemas/alps.json",
  "alps": {
    "descriptor": [
      {"id": "Index", "descriptor": [
        {"href": "#foo"}
      ]},
      {"id": "foo", "type": "safe", "rt": "Foo.json#Foo"}
    ]
  }
}
{
  "$schema": "https://alps-io.github.io/schemas/alps.json",
  "alps": {
    "descriptor": [
      {"id": "Foo", "descriptor": [
        {"href": "#id"}
      ]
      },
      {"id": "id"}
    ]
  }
}

The following commit is a red test.

koriym@ed593ce

Update package URL

  • koriym/app-state-diagram to alps-asd/app-state-diagram
  • koriym/asd-action to alps-asd/asd-action

Error with no options

If run without options, it will try to parse bin/asd.php as a profile.(!?)

....
ParsingException: "#!/usr/bin/env php
<?php

declare(strict_types=1);

....

echo sprintf('Tagged ASD generated. %s', $filteredSvg) . PHP_EOL;
" does not contain valid JSON
Parse error on line 1:
#!/usr/bin/env php<
^
Expected one of: 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[' 
 in /Users/akihito/git/app-state-diagram/src/JsonDecode.php:55

Support link element a child of descriptor

In the spec, link element a child element of the alps and the descriptor elements.

In my idea, can connect profile and schema like the following.

<descriptor id="Blog">
  <link rel="schema" href="../schema/blog.json" />
</descriptor>
{
  "descriptor": [
    {"id": "Blog", "link": {"rel": "schema", "href": "../schema/blog.json"}}
  ]
}

Simple parsing exception message

The current message is too long because it contains JSON. Make it shorter.

asd: ParsingException("{
  "$schema": "https://alps-io.github.io/schemas/alps.json"
  "alps": {
    "title": "ALPS Blog",
    "doc" : { "value" : "An ALPS profile example for ASD"},
    "link" : {"rel" : "issue", "href" : "https://github.com/alps-asd/app-state-diagram/issues"},
    "descriptor": [
      {"id": "id", "type": "semantic", "def": "https://schema.org/identifier"},
      {"id": "articleBody", "type": "semantic", "def": "https://schema.org/articleBody"},
      {"id": "dateCreated", "type": "semantic", "def": "https://schema.org/dateCreated"},

      {"id": "Index", "type": "semantic", "title": "Index Page", "descriptor": [
        {"href": "#goBlog"}
      ]},
      {"id": "About", "type": "semantic", "descriptor": [
        {"href": "#goBlog"}
      ]},
      {"id": "Blog", "type": "semantic", "def": "https://schema.org/Blog", "title": "Blog post list", "rel": "collection", "descriptor": [
        {"href": "#BlogPosting"},
        {"href": "#goBlogPosting"},
        {"href": "#goAbout"},
        {"href": "#doPost"}
      ]},
      {"id": "BlogPosting", "type": "semantic", "title": "Blog post item", "def": "https://schema.org/BlogPosting", "link": {"rel": "schema", "href": "schema/BlogPosting.json", "title": "JsonSchema file"} ,"descriptor": [
        {"href": "#id"},
        {"href": "#articleBody"},
        {"href": "#dateCreated"},
        {"href": "#goBlog"}
      ]},

      {"id": "goStart", "type": "safe", "rt": "#Blog"},
      {"id": "goAbout", "type": "safe", "rt": "#About", "rel": "about"},
      {"id": "goBlog", "type": "safe", "rt": "#Blog", "rel": "collection"},
      {"id": "goBlogPosting", "type": "safe", "rt": "#BlogPosting", "rel": "item", "descriptor": [
        {"href": "#id"}
      ]},
      {"id": "doPost", "type": "unsafe", "def": "https://activitystrea.ms/specs/json/1.0/#post-verb", "rt": "#Blog", "descriptor": [
        {"href": "#articleBody"}
      ]}
    ]
  }
}
" does not contain valid JSON
Parse error on line 2:
...chemas/alps.json"  "alps": {    "title
---------------------^
Expected one of: 'EOF', '}', ':', ',', ']')
[10:06:03] 'asd' errored after 68 ms
[10:06:03] TypeError: this.emit is not a function
    at asd (/Users/akihito/git/app-state-diagram/asd-sync/gulpfile.js:41:14)
    at bound (node:domain:421:15)
    at runBound (node:domain:432:12)
    at asyncRunner (/Users/akihito/git/app-state-diagram/asd-sync/node_modules/async-done/index.js:55:18)
    at processTicksAndRejections (node:internal/process/task_queues:78:11)
[10:08:20] Starting 'asd'...
ASD generated. /Users/akihito/git/app-state-diagram/docs/blog/index.html
Descriptors(12), Links(6)

[10:08:20] Finished 'asd' after 230 ms
[10:08:20] Starting 'reload'...
[10:08:20] Finished 'reload' after 308 μs
[Browsersync] Reloading Browsers...
[10:08:23] Starting 'asd'...
asd: ParsingException(Parse error on line 2:
...chemas/alps.json"  "alps": {    "title
---------------------^
Expected one of: 'EOF', '}', ':', ',', ']')
[10:08:23] 'asd' errored after 82 ms
[10:08:23] TypeError: this.emit is not a function
    at asd (/Users/akihito/git/app-state-diagram/asd-sync/gulpfile.js:41:14)
    at bound (node:domain:421:15)
    at runBound (node:domain:432:12)
    at asyncRunner (/Users/akihito/git/app-state-diagram/asd-sync/node_modules/async-done/index.js:55:18)
    at processTicksAndRejections (node:internal/process/task_queues:78:11)
[10:08:40] Starting 'asd'...
ASD generated. /Users/akihito/git/app-state-diagram/docs/blog/index.html
Descriptors(12), Links(6)

[10:08:40] Finished 'asd' after 268 ms
[10:08:40] Starting 'reload'...
[10:08:40] Finished 'reload' after 346 μs
[Browsersync] Reloading Browsers...
[10:08:43] Starting 'asd'...
asd: ParsingException(Parse error on line 2:
...chemas/alps.json"  "alps": {    "title
---------------------^
Expected one of: 'EOF', '}', ':', ',', ']')
[10:08:43] 'asd' errored after 93 ms
[10:08:43] TypeError: this.emit is not a function
    at asd (/Users/akihito/git/app-state-diagram/asd-sync/gulpfile.js:41:14)
    at bound (node:domain:421:15)
    at runBound (node:domain:432:12)
    at asyncRunner (/Users/akihito/git/app-state-diagram/asd-sync/node_modules/async-done/index.js:55:18)
    at processTicksAndRejections (node:internal/process/task_queues:78:11)
[10:09:11] Starting 'asd'...
ASD generated. /Users/akihito/git/app-state-diagram/docs/blog/index.html
Descriptors(12), Links(6)

[10:09:11] Finished 'asd' after 264 ms
[10:09:11] Starting 'reload'...
[10:09:11] Finished 'reload' after 307 μs
[Browsersync] Reloading Browsers...
[10:09:13] Starting 'asd'...
asd: ParsingException("{
  "$schema": "https://alps-io.github.io/schemas/alps.json"
  "alps": {
    "title": "ALPS Blog",
    "doc" : { "value" : "An ALPS profile example for ASD"},
    "link" : {"rel" : "issue", "href" : "https://github.com/alps-asd/app-state-diagram/issues"},
    "descriptor": [
      {"id": "id", "type": "semantic", "def": "https://schema.org/identifier"},
      {"id": "articleBody", "type": "semantic", "def": "https://schema.org/articleBody"},
      {"id": "dateCreated", "type": "semantic", "def": "https://schema.org/dateCreated"},

      {"id": "Index", "type": "semantic", "title": "Index Page", "descriptor": [
        {"href": "#goBlog"}
      ]},
      {"id": "About", "type": "semantic", "descriptor": [
        {"href": "#goBlog"}
      ]},
      {"id": "Blog", "type": "semantic", "def": "https://schema.org/Blog", "title": "Blog post list", "rel": "collection", "descriptor": [
        {"href": "#BlogPosting"},
        {"href": "#goBlogPosting"},
        {"href": "#goAbout"},
        {"href": "#doPost"}
      ]},
      {"id": "BlogPosting", "type": "semantic", "title": "Blog post item", "def": "https://schema.org/BlogPosting", "link": {"rel": "schema", "href": "schema/BlogPosting.json", "title": "JsonSchema file"} ,"descriptor": [
        {"href": "#id"},
        {"href": "#articleBody"},
        {"href": "#dateCreated"},
        {"href": "#goBlog"}
      ]},

      {"id": "goStart", "type": "safe", "rt": "#Blog"},
      {"id": "goAbout", "type": "safe", "rt": "#About", "rel": "about"},
      {"id": "goBlog", "type": "safe", "rt": "#Blog", "rel": "collection"},
      {"id": "goBlogPosting", "type": "safe", "rt": "#BlogPosting", "rel": "item", "descriptor": [
        {"href": "#id"}
      ]},
      {"id": "doPost", "type": "unsafe", "def": "https://activitystrea.ms/specs/json/1.0/#post-verb", "rt": "#Blog", "descriptor": [
        {"href": "#articleBody"}
      ]}
    ]
  }
}
" does not contain valid JSON
Parse error on line 2:
...chemas/alps.json"  "alps": {    "title
---------------------^
Expected one of: 'EOF', '}', ':', ',', ']')
[10:09:14] 'asd' errored after 67 ms
[10:09:14] TypeError: this.emit is not a function
    at asd (/Users/akihito/git/app-state-diagram/asd-sync/gulpfile.js:41:14)
    at bound (node:domain:421:15)
    at runBound (node:domain:432:12)
    at asyncRunner (/Users/akihito/git/app-state-diagram/asd-sync/node_modules/async-done/index.js:55:18)
    at processTicksAndRejections (node:internal/process/task_queues:78:11)
^C
akihito@Air2020 app-state-diagram % ./bin/asd ./docs/blog/profile.json 
asd: ParsingException("{
  "$schema": "https://alps-io.github.io/schemas/alps.json"
  "alps": {
    "title": "ALPS Blog",
    "doc" : { "value" : "An ALPS profile example for ASD"},
    "link" : {"rel" : "issue", "href" : "https://github.com/alps-asd/app-state-diagram/issues"},
    "descriptor": [
      {"id": "id", "type": "semantic", "def": "https://schema.org/identifier"},
      {"id": "articleBody", "type": "semantic", "def": "https://schema.org/articleBody"},
      {"id": "dateCreated", "type": "semantic", "def": "https://schema.org/dateCreated"},

      {"id": "Index", "type": "semantic", "title": "Index Page", "descriptor": [
        {"href": "#goBlog"}
      ]},
      {"id": "About", "type": "semantic", "descriptor": [
        {"href": "#goBlog"}
      ]},
      {"id": "Blog", "type": "semantic", "def": "https://schema.org/Blog", "title": "Blog post list", "rel": "collection", "descriptor": [
        {"href": "#BlogPosting"},
        {"href": "#goBlogPosting"},
        {"href": "#goAbout"},
        {"href": "#doPost"}
      ]},
      {"id": "BlogPosting", "type": "semantic", "title": "Blog post item", "def": "https://schema.org/BlogPosting", "link": {"rel": "schema", "href": "schema/BlogPosting.json", "title": "JsonSchema file"} ,"descriptor": [
        {"href": "#id"},
        {"href": "#articleBody"},
        {"href": "#dateCreated"},
        {"href": "#goBlog"}
      ]},

      {"id": "goStart", "type": "safe", "rt": "#Blog"},
      {"id": "goAbout", "type": "safe", "rt": "#About", "rel": "about"},
      {"id": "goBlog", "type": "safe", "rt": "#Blog", "rel": "collection"},
      {"id": "goBlogPosting", "type": "safe", "rt": "#BlogPosting", "rel": "item", "descriptor": [
        {"href": "#id"}
      ]},
      {"id": "doPost", "type": "unsafe", "def": "https://activitystrea.ms/specs/json/1.0/#post-verb", "rt": "#Blog", "descriptor": [
        {"href": "#articleBody"}
      ]}
    ]
  }
}
" does not contain valid JSON
Parse error on line 2:
...chemas/alps.json"  "alps": {    "title
---------------------^
Expected one of: 'EOF', '}', ':', ',', ']')

... should be

asd: ParsingException(Parse error on line 2:
...chemas/alps.json"  "alps": {    "title
---------------------^
Expected one of: 'EOF', '}', ':', ',', ']')

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.