rsyntaxtree 1.3.0 → 1.3.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3391346a580d49f8492e2a0d9291c1b90102fd516f6a0052cf58805284dc754
4
- data.tar.gz: e56e9dad60a0949cbc562686457526fc283c24e10711e5e6a917c4189e9b3fe2
3
+ metadata.gz: b1d293f1051661467a4b39531bb7868073256fc6a40e60affa4dee8daa45187f
4
+ data.tar.gz: 79ececb16b1b9394f5027ccec1f4dcba9d4cd541fe8829276eb9c18d5a377c24
5
5
  SHA512:
6
- metadata.gz: 7d33f47df1ffc221f4b60bfb1aacbbb2ba19c403eeffee117d1003ea0e56a74b3f44a12d37b561bc496946a22125a2f55fd22129d6e5b473c35810a3f626c06a
7
- data.tar.gz: cb82465f750cd98bd309c6cd85b0815bd33e556c76f74b668b4ba027459833565e768325c170a953a1aa952ede5308cf082dbac77c5df65788787c351ba75786
6
+ metadata.gz: cd4e3ceb0efc58a58b87b4273525aa9456e6050c5b7dfe41bcc0b790018240d2e1c1a0f34a42c45f78faf6913441f41a57aef30f60daab8ce7cfc24182a8b3ce
7
+ data.tar.gz: 76b44cc2c343a43714ab9cfe52c3a04c524fc81296e901796e0b2aa7b8205b73de4b2a88001d269a5fa834a9267e62e3d2a034b2fbde7d7ca471be90d41524ae
data/Dockerfile CHANGED
@@ -1,5 +1,5 @@
1
- FROM ruby:3.2.0-alpine3.17
2
- ENV WORKSPACE /rsyntaxtree
1
+ FROM ruby:3.3-alpine
2
+ ENV WORKSPACE=/rsyntaxtree
3
3
  WORKDIR $WORKSPACE
4
4
 
5
5
  RUN apk update && \
data/README.md CHANGED
@@ -10,6 +10,7 @@ Documentation is currently available in the following languages:
10
10
  - [日本語ドキュメント](https://yohasebe.github.io/rsyntaxtree/documentation_ja)
11
11
 
12
12
  - [Example Gallery](https://yohasebe.github.io/rsyntaxtree/examples)
13
+
13
14
  ## Web Interface
14
15
 
15
16
  <img src='https://github.com/yohasebe/rsyntaxtree/blob/master/img/rsyntaxtree-web-screenshot.png?raw=true' width='700px'/>
@@ -56,9 +57,27 @@ See [RSyntaxTree Example Gallery](https://yohasebe.github.io/rsyntaxtree/example
56
57
 
57
58
  ## Installation
58
59
 
59
- `# gem install rsyntaxtree`
60
+ ```
61
+ gem install rsyntaxtree
62
+ ```
63
+
64
+ ### macOS Installation Notice
65
+
66
+ **Important for macOS users:** If you are installing the RSyntaxTree gem directly on macOS, you might encounter build errors for some native extensions (specifically for `gobject-introspection`, `cairo-gobject`, and `gio2`). These errors occur due to macOS linker requirements for dynamic symbol resolution. To work around this issue, please run the following commands in your terminal **before** installing RSyntaxTree:
67
+
68
+ ```bash
69
+ gem install gobject-introspection -- --with-ldflags="-Wl,-undefined,dynamic_lookup"
70
+ gem install cairo-gobject -- --with-ldflags="-Wl,-undefined,dynamic_lookup"
71
+ gem install gio2 -- --with-ldflags="-Wl,-undefined,dynamic_lookup"
72
+ ```
73
+
74
+ After executing these commands, you can install RSyntaxTree normally:
75
+
76
+ ```bash
77
+ gem install rsyntaxtree
78
+ ```
60
79
 
61
- **NOTE**: Currently, installation of the gem package on macOS is not recommended. Please use the [Docker image](https://hub.docker.com/r/yohasebe/rsyntaxtree) or the [web interface](https://yohasebe.com/rsyntaxtree).
80
+ Alternatively, if you prefer a smoother installation process, consider using the [Docker image](https://hub.docker.com/r/yohasebe/rsyntaxtree) or the [web interface](https://yohasebe.com/rsyntaxtree).
62
81
 
63
82
  ## Usage
64
83
 
@@ -74,6 +93,7 @@ Usage:
74
93
  2) rsyntaxtree [options] "/path/to/text/file"
75
94
  where [options] are:
76
95
  -o, --outdir=<s> Output directory (default: ./)
96
+ -u, --outfilename=<s> Output file base name (default: syntree)
77
97
  -f, --format=<s> Output format: png, gif, jpg, pdf, or svg (default: png)
78
98
  -l, --leafstyle=<s> visual style of tree leaves: auto, triangle, bar, or nothing (default: auto)
79
99
  -n, --fontstyle=<s> Font style (available when ttf font is specified): sans, serif, cjk, mono (default: sans)
@@ -97,11 +117,11 @@ See the [documentation](https://yohasebe.github.io/rsyntaxtree/documentation) fo
97
117
  Please use the following BibTeX entry when referring to RSyntaxTree.
98
118
 
99
119
  ```
100
- @misc{rsyntaxtree_2023,
120
+ @misc{rsyntaxtree_2024,
101
121
  author = {Yoichiro Hasebe},
102
122
  title = {RSyntaxTree: A graphical syntax tree image generator}
103
123
  url = {https://yohasebe.com/rsyntaxtree},
104
- year = {2023}
124
+ year = {2024}
105
125
  }
106
126
  ```
107
127
 
data/Rakefile CHANGED
@@ -9,24 +9,58 @@ require_relative 'lib/rsyntaxtree/utils'
9
9
  # task default: "test"
10
10
 
11
11
  Rake::TestTask.new do |task|
12
- task.pattern = "test/*_test.rb"
13
- task.warning = false
12
+ task.pattern = "test/*_test.rb"
13
+ task.warning = false
14
14
  end
15
15
 
16
16
  desc "Generate SVG and PNG example images locally"
17
17
  task :generate do
18
- require_relative "dev/generate_examples"
18
+ require_relative "dev/generate_examples"
19
19
  end
20
20
 
21
21
  desc "Docker image Build"
22
22
  task :docker_build do
23
- `docker build ./ -t rsyntaxtree_devel`
23
+ `docker build ./ -t rsyntaxtree_devel`
24
24
  end
25
25
 
26
- desc "Generate SVG and PNG example images using Docker mage"
26
+ desc "Generate SVG and PNG example images using Docker image"
27
27
  task :docker_generate do
28
- docpath = File.expand_path(File.join(__dir__, "docs"))
29
- `docker build ./ -t rsyntaxtree_devel`
30
- `docker run --rm -v #{docpath}:/rsyntaxtree/hostdocs rsyntaxtree_devel ruby /rsyntaxtree/dev/generate_examples.rb /rsyntaxtree/hostdocs`
31
- `cat #{docpath}/generate_examples.log`
28
+ docpath = File.expand_path(File.join(__dir__, "docs"))
29
+ `docker build ./ -t rsyntaxtree_devel`
30
+ `docker run --rm -v #{docpath}:/rsyntaxtree/hostdocs rsyntaxtree_devel ruby /rsyntaxtree/dev/generate_examples.rb /rsyntaxtree/hostdocs`
31
+ `cat #{docpath}/generate_examples.log`
32
+ end
33
+
34
+ # Add new task for macOS environment configuration
35
+
36
+ desc "Configure Bundler build options for macOS"
37
+ task :setup_macos do
38
+ require "rbconfig"
39
+ host_os = RbConfig::CONFIG['host_os']
40
+
41
+ # Check if the host OS is macOS (Darwin)
42
+
43
+ if host_os =~ /darwin/
44
+ puts "macOS detected. Setting up build options for native extensions..."
45
+
46
+ gems_with_options = {
47
+ "gobject-introspection" => '--with-ldflags=-Wl,-undefined,dynamic_lookup',
48
+ "cairo-gobject" => '--with-ldflags=-Wl,-undefined,dynamic_lookup',
49
+ "gio2" => '--with-ldflags=-Wl,-undefined,dynamic_lookup'
50
+ }
51
+
52
+ # Configure each gem with the necessary ldflags option using Bundler config command
53
+
54
+ gems_with_options.each do |gem_name, flags|
55
+ command = "bundle config build.#{gem_name} \"#{flags}\""
56
+ puts "Executing: #{command}"
57
+ unless system(command)
58
+ abort("Failed to execute command: #{command}")
59
+ end
60
+ end
61
+
62
+ puts "macOS setup complete. Please run 'bundle install' after this."
63
+ else
64
+ puts "This setup task is intended for macOS environments. Current OS: #{host_os}"
65
+ end
32
66
  end
data/bin/rsyntaxtree CHANGED
@@ -7,7 +7,7 @@ require_relative '../lib/rsyntaxtree'
7
7
  require_relative '../lib/rsyntaxtree/utils'
8
8
 
9
9
  opts = Optimist.options do
10
- version "RSyntaxTree #{RSyntaxTree::VERSION} (c) 2023 Yoichiro Hasebe"
10
+ version "RSyntaxTree #{RSyntaxTree::VERSION} (c) 2024 Yoichiro Hasebe"
11
11
  banner <<~BANNER
12
12
  RSyntaxTree, (linguistic) syntax tree generator written in Ruby.
13
13
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "016"
3
- caption: "Tick-tac-toe"
3
+ caption: "Tic-tac-toe"
4
4
  color: "off"
5
5
  category: "Miscellaneous"
6
6
  polyline: "off"
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: "053"
3
+ color: "on"
4
+ caption: "Escaping square brackets"
5
+ category: "Miscellaneous"
6
+ polyline: "off"
7
+ symmetrization: "off"
8
+ connector: "auto"
9
+ connector_height: "3.0"
10
+ linewidth: "1"
11
+ hide_default_connectors: "off"
12
+ font: "Noto Serif"
13
+ ---
14
+ ```
15
+ [expr
16
+ [id x]
17
+ [suffix
18
+ \[
19
+ [id 2 ]
20
+ \]
21
+ [suffix
22
+ \[
23
+ [id 3 ]
24
+ \]
25
+ [suffix
26
+ \[
27
+ [id 4 ]
28
+ \]
29
+ ]
30
+ ]
31
+ ]
32
+ ]
33
+
34
+ ```
@@ -35,7 +35,7 @@
35
35
  {{ content }}
36
36
 
37
37
  <footer class="site-footer" style='border-top-width: 0; text-align: center;'>
38
- <div> <span class="site-footer-credits">© Yoichiro HASEBE 2009-2023</span></div>
38
+ <div> <span class="site-footer-credits">© Yoichiro HASEBE 2009-2024</span></div>
39
39
  {% include social_media_links.html %}
40
40
  </footer>
41
41
  </main>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" standalone="no"?>
2
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg width="514.0" height="545.75" viewBox="-16.8, 0, 530.8, 557.0" version="1.1" xmlns="http://www.w3.org/2000/svg">
3
+ <svg width="472.0" height="545.75" viewBox="-16.8, 0, 488.8, 557.0" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
4
  <defs>
5
5
  <marker id="arrow" markerUnits="userSpaceOnUse" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="16.8" markerHeight="16.8" orient="auto">
6
6
  <path d="M 0 0 L 10 5 L 0 10" fill="black"/>
@@ -24,27 +24,27 @@
24
24
  <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
25
25
  </pattern>
26
26
  </defs>
27
- <rect x="-16.8" y="0" width="530.8" height="557.0" stroke="none" fill="white" />"
28
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='172.1625' y='67.5'><tspan x='172.1625' y='67.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X</tspan>
29
- <tspan x='194.1625' y='57.25' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">max</tspan>
27
+ <rect x="-16.8" y="0" width="488.8" height="557.0" stroke="none" fill="white" />"
28
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='140.6625' y='67.5'><tspan x='140.6625' y='67.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X</tspan>
29
+ <tspan x='162.6625' y='57.25' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">max</tspan>
30
30
  </text>
31
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='16.80000000000001' y='218.0'><tspan x='16.80000000000001' y='218.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">[Y−X]</tspan>
31
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='16.799999999999997' y='218.0'><tspan x='16.799999999999997' y='218.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">[Y−X]</tspan>
32
32
  </text>
33
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='312.525' y='218.0'><tspan x='312.525' y='218.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">YP</tspan>
33
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='270.525' y='218.0'><tspan x='270.525' y='218.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">YP</tspan>
34
34
  </text>
35
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='210.0' y='368.5'><tspan x='210.0' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Spec</tspan>
36
- <tspan x='283.0' y='372.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
35
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='168.0' y='368.5'><tspan x='168.0' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Spec</tspan>
36
+ <tspan x='241.0' y='372.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
37
37
  </text>
38
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='400.54999999999995' y='368.5'><tspan x='400.54999999999995' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Y'</tspan>
38
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='358.54999999999995' y='368.5'><tspan x='358.54999999999995' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Y'</tspan>
39
39
  </text>
40
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='362.2' y='519.0'><tspan x='362.2' y='519.0' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">t</tspan>
40
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='320.20000000000005' y='519.0'><tspan x='320.20000000000005' y='519.0' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">t</tspan>
41
41
  </text>
42
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='441.4' y='519.0'><tspan x='441.4' y='519.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">ZP</tspan>
42
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='399.4' y='519.0'><tspan x='399.4' y='519.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">ZP</tspan>
43
43
  </text>
44
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='79.80000000000001' y1='161.75' x2='206.6625' y2='95.625' />
45
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='333.525' y1='161.75' x2='206.6625' y2='95.625' />
46
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='252.5' y1='312.25' x2='333.525' y2='246.125' />
47
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='414.54999999999995' y1='312.25' x2='333.525' y2='246.125' />
48
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='368.2' y1='462.75' x2='414.54999999999995' y2='396.625' />
49
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='460.9' y1='462.75' x2='414.54999999999995' y2='396.625' />
44
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='58.8' y1='161.75' x2='175.1625' y2='95.625' />
45
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='291.525' y1='161.75' x2='175.1625' y2='95.625' />
46
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='210.5' y1='312.25' x2='291.525' y2='246.125' />
47
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='372.54999999999995' y1='312.25' x2='291.525' y2='246.125' />
48
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='326.20000000000005' y1='462.75' x2='372.54999999999995' y2='396.625' />
49
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='418.9' y1='462.75' x2='372.54999999999995' y2='396.625' />
50
50
  </svg>
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" standalone="no"?>
2
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg width="596.9999999999999" height="614.25" viewBox="-16.8, 0, 613.7999999999998, 625.5" version="1.1" xmlns="http://www.w3.org/2000/svg">
3
+ <svg width="577.0" height="614.25" viewBox="-16.8, 0, 593.8, 625.5" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
4
  <defs>
5
5
  <marker id="arrow" markerUnits="userSpaceOnUse" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="16.8" markerHeight="16.8" orient="auto">
6
6
  <path d="M 0 0 L 10 5 L 0 10" fill="black"/>
@@ -24,35 +24,35 @@
24
24
  <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
25
25
  </pattern>
26
26
  </defs>
27
- <rect x="-16.8" y="0" width="613.7999999999998" height="625.5" stroke="none" fill="white" />"
28
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='273.97499999999997' y='67.5'><tspan x='273.97499999999997' y='67.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">S</tspan>
29
- <tspan x='277.22499999999997' y='112.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">&#60;</tspan>
27
+ <rect x="-16.8" y="0" width="593.8" height="625.5" stroke="none" fill="white" />"
28
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='266.47499999999997' y='67.5'><tspan x='266.47499999999997' y='67.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">S</tspan>
29
+ <tspan x='269.72499999999997' y='112.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">&#60;</tspan>
30
30
  </text>
31
31
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='100.14999999999998' y='283.5'><tspan x='100.14999999999998' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">NP</tspan>
32
32
  <tspan x='116.39999999999998' y='328.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">&#62;</tspan>
33
33
  </text>
34
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='16.80000000000001' y='499.5'><tspan x='16.80000000000001' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">NP/N</tspan>
35
- <tspan x='31.30000000000001' y='589.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">the</tspan>
34
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='16.799999999999983' y='499.5'><tspan x='16.799999999999983' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">NP/N</tspan>
35
+ <tspan x='31.299999999999983' y='589.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">the</tspan>
36
36
  </text>
37
37
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='159.99999999999997' y='499.5'><tspan x='176.49999999999997' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">N</tspan>
38
38
  <tspan x='159.99999999999997' y='589.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">dog</tspan>
39
39
  </text>
40
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='408.29999999999995' y='283.5'><tspan x='408.29999999999995' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">S\NP</tspan>
41
- <tspan x='438.04999999999995' y='328.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">&#62;</tspan>
40
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='398.29999999999995' y='283.5'><tspan x='398.29999999999995' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">S\NP</tspan>
41
+ <tspan x='423.04999999999995' y='328.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">&#62;</tspan>
42
42
  </text>
43
43
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='284.19999999999993' y='499.5'><tspan x='284.19999999999993' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">(S\NP)\NP</tspan>
44
- <tspan x='336.69999999999993' y='589.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">bit</tspan>
44
+ <tspan x='326.69999999999993' y='589.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">bit</tspan>
45
45
  </text>
46
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='496.4' y='499.5'><tspan x='508.4' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">NP</tspan>
47
- <tspan x='496.4' y='589.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">John</tspan>
46
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='476.4' y='499.5'><tspan x='488.4' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">NP</tspan>
47
+ <tspan x='476.4' y='589.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">John</tspan>
48
48
  </text>
49
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='121.64999999999998' y1='227.25' x2='282.47499999999997' y2='140.625' />
50
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='443.29999999999995' y1='227.25' x2='282.47499999999997' y2='140.625' />
51
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='54.80000000000001' y1='443.25' x2='121.64999999999998' y2='356.625' />
49
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='121.64999999999998' y1='227.25' x2='274.97499999999997' y2='140.625' />
50
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='428.29999999999995' y1='227.25' x2='274.97499999999997' y2='140.625' />
51
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='54.79999999999998' y1='443.25' x2='121.64999999999998' y2='356.625' />
52
52
  <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='188.49999999999997' y1='443.25' x2='121.64999999999998' y2='356.625' />
53
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='356.69999999999993' y1='443.25' x2='443.29999999999995' y2='356.625' />
54
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='529.9' y1='443.25' x2='443.29999999999995' y2='356.625' />
55
- <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="16.80000000000001" y1="533.25" x2="92.80000000000001" y2="533.25"></line>
53
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='346.69999999999993' y1='443.25' x2='428.29999999999995' y2='356.625' />
54
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='509.9' y1='443.25' x2='428.29999999999995' y2='356.625' />
55
+ <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="16.799999999999983" y1="533.25" x2="92.79999999999998" y2="533.25"></line>
56
56
  <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="159.99999999999997" y1="533.25" x2="216.99999999999997" y2="533.25"></line>
57
- <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="284.19999999999993" y1="533.25" x2="429.19999999999993" y2="533.25"></line>
58
- <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="496.4" y1="533.25" x2="563.4" y2="533.25"></line></svg>
57
+ <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="284.19999999999993" y1="533.25" x2="409.19999999999993" y2="533.25"></line>
58
+ <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="476.4" y1="533.25" x2="543.4" y2="533.25"></line></svg>
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" standalone="no"?>
2
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg width="595.9999999999999" height="1046.25" viewBox="-16.8, 0, 612.7999999999998, 1057.5" version="1.1" xmlns="http://www.w3.org/2000/svg">
3
+ <svg width="585.9999999999999" height="1046.25" viewBox="-16.8, 0, 602.7999999999998, 1057.5" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
4
  <defs>
5
5
  <marker id="arrow" markerUnits="userSpaceOnUse" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="16.8" markerHeight="16.8" orient="auto">
6
6
  <path d="M 0 0 L 10 5 L 0 10" fill="black"/>
@@ -24,15 +24,15 @@
24
24
  <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
25
25
  </pattern>
26
26
  </defs>
27
- <rect x="-16.8" y="0" width="612.7999999999998" height="1057.5" stroke="none" fill="white" />"
28
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='375.41249999999997' y='67.5'><tspan x='375.41249999999997' y='67.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">S</tspan>
29
- <tspan x='378.66249999999997' y='112.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">&#62;</tspan>
27
+ <rect x="-16.8" y="0" width="602.7999999999998" height="1057.5" stroke="none" fill="white" />"
28
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='369.16249999999997' y='67.5'><tspan x='369.16249999999997' y='67.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">S</tspan>
29
+ <tspan x='372.41249999999997' y='112.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">&#62;</tspan>
30
30
  </text>
31
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='204.42499999999995' y='283.5'><tspan x='204.42499999999995' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">S/NP</tspan>
32
- <tspan x='224.67499999999995' y='328.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">B</tspan>
33
- <tspan x='245.67499999999995' y='332.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">&#62;</tspan>
31
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='201.92499999999995' y='283.5'><tspan x='201.92499999999995' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">S/NP</tspan>
32
+ <tspan x='222.17499999999995' y='328.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">B</tspan>
33
+ <tspan x='243.17499999999995' y='332.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">&#62;</tspan>
34
34
  </text>
35
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='62.64999999999998' y='499.5'><tspan x='62.64999999999998' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">S/(S\NP)</tspan>
35
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='67.64999999999998' y='499.5'><tspan x='67.64999999999998' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">S/(S\NP)</tspan>
36
36
  <tspan x='107.89999999999998' y='544.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T</tspan>
37
37
  <tspan x='127.89999999999998' y='548.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">&#62;</tspan>
38
38
  </text>
@@ -46,19 +46,19 @@
46
46
  <tspan x='160.0' y='1021.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">dog</tspan>
47
47
  </text>
48
48
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='284.2' y='499.5'><tspan x='284.2' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">(S\NP)/NP</tspan>
49
- <tspan x='336.2' y='589.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">bit</tspan>
49
+ <tspan x='331.2' y='589.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">bit</tspan>
50
50
  </text>
51
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='495.4' y='283.5'><tspan x='507.4' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">NP</tspan>
52
- <tspan x='495.4' y='373.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">John</tspan>
51
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='485.4' y='283.5'><tspan x='497.4' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">NP</tspan>
52
+ <tspan x='485.4' y='373.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">John</tspan>
53
53
  </text>
54
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='238.92499999999998' y1='227.25' x2='383.91249999999997' y2='140.625' />
55
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='528.9' y1='227.25' x2='383.91249999999997' y2='140.625' />
56
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='121.64999999999998' y1='443.25' x2='238.92499999999998' y2='356.625' />
57
- <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='356.2' y1='443.25' x2='238.92499999999998' y2='356.625' />
54
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='236.42499999999998' y1='227.25' x2='377.66249999999997' y2='140.625' />
55
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='518.9' y1='227.25' x2='377.66249999999997' y2='140.625' />
56
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='121.64999999999998' y1='443.25' x2='236.42499999999998' y2='356.625' />
57
+ <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='351.2' y1='443.25' x2='236.42499999999998' y2='356.625' />
58
58
  <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='121.64999999999998' y1='659.25' x2='121.64999999999998' y2='572.625' />
59
59
  <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='54.80000000000001' y1='875.25' x2='121.64999999999998' y2='788.625' />
60
60
  <line style='fill: none; stroke:black; stroke-width:2; stroke-linejoin:round; stroke-linecap:round;' x1='188.5' y1='875.25' x2='121.64999999999998' y2='788.625' />
61
61
  <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="16.80000000000001" y1="965.25" x2="92.80000000000001" y2="965.25"></line>
62
62
  <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="160.0" y1="965.25" x2="217.0" y2="965.25"></line>
63
- <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="284.2" y1="533.25" x2="428.2" y2="533.25"></line>
64
- <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="495.4" y1="317.25" x2="562.4" y2="317.25"></line></svg>
63
+ <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="284.2" y1="533.25" x2="418.2" y2="533.25"></line>
64
+ <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="485.4" y1="317.25" x2="552.4" y2="317.25"></line></svg>