plantuml_builder 0.1.0
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 +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +144 -0
- data/Rakefile +6 -0
- data/bin/console +13 -0
- data/bin/setup +8 -0
- data/lib/plantuml_builder.rb +11 -0
- data/lib/plantuml_builder/compressor.rb +21 -0
- data/lib/plantuml_builder/deflate.rb +18 -0
- data/lib/plantuml_builder/diagram_fetcher.rb +15 -0
- data/lib/plantuml_builder/encode64.rb +54 -0
- data/lib/plantuml_builder/format.rb +40 -0
- data/lib/plantuml_builder/formats.rb +37 -0
- data/lib/plantuml_builder/url_builder.rb +17 -0
- data/lib/plantuml_builder/version.rb +3 -0
- data/plantuml_builder.gemspec +29 -0
- metadata +147 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3291bb7cd32046448a006dd6a82a47646c1fb38a
|
4
|
+
data.tar.gz: 2c0c3191909f2b19a13816b341f7bbb93717c990
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 99e8a4971673bf8495be8547822284650967a794b80c5d29d07f5096f3ae567894c9c77fe89a9a12984e1d5a4699fed1e8fa65fadca41ed21b90cae9ea28c9a0
|
7
|
+
data.tar.gz: 459d99a74a144352bee6556b8d8be9fb3b3038fbfb15141c8f62efc7053efea8e8f15e866428d0ac8e89569e013d216ac226f8f2d426a37d01ad0d7fe6385c68
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2019 TODO: Write your name
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
# PlantumlBuilder
|
2
|
+
|
3
|
+
Gem to convet [PlantUML](http://plantuml.com) diagrams using plantuml.com or
|
4
|
+
[local](https://hub.docker.com/r/plantuml/plantuml-server/) PlantUML server
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Add this line to your application's Gemfile:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem 'plantuml_builder'
|
12
|
+
```
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
|
16
|
+
$ bundle
|
17
|
+
|
18
|
+
Or install it yourself as:
|
19
|
+
|
20
|
+
$ gem install plantuml_builder
|
21
|
+
|
22
|
+
## Usage
|
23
|
+
|
24
|
+
PlantUML allows to describe UML (and some other) diagrams in it's own text format.
|
25
|
+
|
26
|
+
For example, [sequence diagram](http://plantuml.com/sequence-diagram):
|
27
|
+
```wsd
|
28
|
+
@startuml
|
29
|
+
actor User
|
30
|
+
|
31
|
+
User -> MyService : perform
|
32
|
+
activate MyService
|
33
|
+
return true
|
34
|
+
deactivate MyService
|
35
|
+
@enduml
|
36
|
+
```
|
37
|
+
|
38
|
+
The diagram above will be rendered to:
|
39
|
+
|
40
|
+

|
41
|
+
|
42
|
+
PlantUML web service expects compression of such diagrams into
|
43
|
+
it's own format. The diagram above should be converted to
|
44
|
+
|
45
|
+
```
|
46
|
+
UDfJK70eBaaiAYdDpU5I08B4v9By8eNGujGYC1S8G6m5NJi5tyhWrAAopEHK1Ik5WjIYjFoYN9YEpBB4abI40gZEejIIqg8yXPAYKeX8IYfMfGwfUIaWsm5R-2hl
|
47
|
+
```
|
48
|
+
|
49
|
+
Using `plantuml_builder` you can fetch rendered diagrams from specified server.
|
50
|
+
|
51
|
+
Diagrams could be fetched as SVG, PNG, and TXT (ASCII-art) format.
|
52
|
+
|
53
|
+
First, receive diagram text (from WSD or other file format).
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
wsd = <<-WSD
|
57
|
+
@startuml
|
58
|
+
actor User
|
59
|
+
|
60
|
+
User -> MyService : perform
|
61
|
+
activate MyService
|
62
|
+
return true
|
63
|
+
deactivate MyService
|
64
|
+
@enduml
|
65
|
+
WSD
|
66
|
+
```
|
67
|
+
|
68
|
+
### SVG
|
69
|
+
|
70
|
+
Fetch diagram as SVG:
|
71
|
+
|
72
|
+
```ruby
|
73
|
+
PlantumlBuilder::Formats::SVG.new(wsd).load
|
74
|
+
=> "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" contentScriptType=\"application/ecmascript\" contentStyleType=\"text/css\" height=\"251px\" preserveAspectRatio=\"none\" style=\"width:152px;height:251px;\" version=\"1.1\" viewBox=\"0 0 152 251\" width=\"152px\" zoomAndPan=\"magnify\">\n<defs>\n<filter height=\"300%\" id=\"fz1m93rvif4fb\" width=\"300%\" x=\"-1\" y=\"-1\">\n<feGaussianBlur result=\"blurOut\" stdDeviation=\"2.0\"/>\n<feColorMatrix in=\"blurOut\" result=\"blurOut2\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0\"/>\n<feOffset dx=\"4.0\" dy=\"4.0\" in=\"blurOut2\" result=\"blurOut3\"/>\n<feBlend in=\"SourceGraphic\" in2=\"blurOut3\" mode=\"normal\"/>\n</filter>\n</defs>\n<g>\n<rect fill=\"#FFFFFF\" filter=\"url(#fz1m93rvif4fb)\" height=\"29.1328\" style=\"stroke: #A80036; stroke-width: 1.0;\" width=\"10\" x=\"97\" y=\"117.4297\"/>\n<line style=\"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;\" x1=\"27\" x2=\"27\" y1=\"86.2969\" y2=\"164.5625\"/>\n<line style=\"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;\" x1=\"101.5\" x2=\"101.5\" y1=\"86.2969\" y2=\"164.5625\"/>\n<text fill=\"#000000\" font-family=\"sans-serif\" font-size=\"14\" lengthAdjust=\"spacingAndGlyphs\" textLength=\"32\" x=\"8\" y=\"82.9951\">\nUser</text>\n<ellipse cx=\"27\" cy=\"13\" fill=\"#FEFECE\" filter=\"url(#fz1m93rvif4fb)\" rx=\"8\" ry=\"8\" style=\"stroke: #A80036; stroke-width: 2.0;\"/>\n<path d=\"M27,21 L27,48 M14,29 L40,29 M27,48 L14,63 M27,48 L40,63 \" fill=\"none\" filter=\"url(#fz1m93rvif4fb)\" style=\"stroke: #A80036; stroke-width: 2.0;\"/>\n<text fill=\"#000000\" font-family=\"sans-serif\" font-size=\"14\" lengthAdjust=\"spacingAndGlyphs\" textLength=\"32\" x=\"8\" y=\"176.5576\">\nUser</text>\n<ellipse cx=\"27\" cy=\"189.8594\" fill=\"#FEFECE\" filter=\"url(#fz1m93rvif4fb)\" rx=\"8\" ry=\"8\" style=\"stroke: #A80036; stroke-width: 2.0;\"/>\n<path d=\"M27,197.8594 L27,224.8594 M14,205.8594 L40,205.8594 M27,224.8594 L14,239.8594 M27,224.8594 L40,239.8594 \" fill=\"none\" filter=\"url(#fz1m93rvif4fb)\" style=\"stroke: #A80036; stroke-width: 2.0;\"/>\n<rect fill=\"#FEFECE\" filter=\"url(#fz1m93rvif4fb)\" height=\"30.2969\" style=\"stroke: #A80036; stroke-width: 1.5;\" width=\"83\" x=\"58.5\" y=\"51\"/>\n<text fill=\"#000000\" font-family=\"sans-serif\" font-size=\"14\" lengthAdjust=\"spacingAndGlyphs\" textLength=\"69\" x=\"65.5\" y=\"70.9951\">\nMyService</text>\n<rect fill=\"#FEFECE\" filter=\"url(#fz1m93rvif4fb)\" height=\"30.2969\" style=\"stroke: #A80036; stroke-width: 1.5;\" width=\"83\" x=\"58.5\" y=\"163.5625\"/>\n<text fill=\"#000000\" font-family=\"sans-serif\" font-size=\"14\" lengthAdjust=\"spacingAndGlyphs\" textLength=\"69\" x=\"65.5\" y=\"183.5576\">\nMyService</text>\n<rect fill=\"#FFFFFF\" filter=\"url(#fz1m93rvif4fb)\" height=\"29.1328\" style=\"stroke: #A80036; stroke-width: 1.0;\" width=\"10\" x=\"97\" y=\"117.4297\"/>\n<polygon fill=\"#A80036\" points=\"85,113.4297,95,117.4297,85,121.4297,89,117.4297\" style=\"stroke: #A80036; stroke-width: 1.0;\"/>\n<line style=\"stroke: #A80036; stroke-width: 1.0;\" x1=\"27\" x2=\"91\" y1=\"117.4297\" y2=\"117.4297\"/>\n<text fill=\"#000000\" font-family=\"sans-serif\" font-size=\"13\" lengthAdjust=\"spacingAndGlyphs\" textLength=\"51\" x=\"34\" y=\"112.3638\">\nperform</text>\n<polygon fill=\"#A80036\" points=\"38,142.5625,28,146.5625,38,150.5625,34,146.5625\" style=\"stroke: #A80036; stroke-width: 1.0;\"/>\n<line style=\"stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;\" x1=\"32\" x2=\"101\" y1=\"146.5625\" y2=\"146.5625\"/>\n<text fill=\"#000000\" font-family=\"sans-serif\" font-size=\"13\" lengthAdjust=\"spacingAndGlyphs\" textLength=\"26\" x=\"44\" y=\"141.4966\">\ntrue</text>\n\n</g>\n</svg"
|
75
|
+
```
|
76
|
+
|
77
|
+
PlantUML renders SVG as single line of XML code. It is not comfortable because it is impossible
|
78
|
+
to store it in version control system. So, `plantuml_builder` fixes it.
|
79
|
+
Also, XML comment with description would be removed.
|
80
|
+
|
81
|
+
|
82
|
+
### PNG
|
83
|
+
|
84
|
+
Fetch diagram as PNG:
|
85
|
+
```ruby
|
86
|
+
PlantumlBuilder::Formats::PNG.new(wsd).load
|
87
|
+
=> # diagram in PNG
|
88
|
+
```
|
89
|
+
|
90
|
+
### TXT (ASCII-art)
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
PlantumlBuilder::Formats::TXT.new(wsd).load
|
94
|
+
```
|
95
|
+
Result could be outputed as:
|
96
|
+
|
97
|
+
```
|
98
|
+
┌─┐
|
99
|
+
║"│
|
100
|
+
└┬┘
|
101
|
+
┌┼┐
|
102
|
+
│ ┌─────────┐
|
103
|
+
┌┴┐ │MyService│
|
104
|
+
User └────┬────┘
|
105
|
+
│ perform ┌┴┐
|
106
|
+
│ ───────────────>│ │
|
107
|
+
│ │ │
|
108
|
+
│ true │ │
|
109
|
+
│ <─ ─ ─ ─ ─ ─ ─ ─│ │
|
110
|
+
User ┌───└┬┘───┐
|
111
|
+
┌─┐ │MyService│
|
112
|
+
║"│ └─────────┘
|
113
|
+
└┬┘
|
114
|
+
┌┼┐
|
115
|
+
│
|
116
|
+
┌┴┐
|
117
|
+
```
|
118
|
+
|
119
|
+
### Using your own server
|
120
|
+
|
121
|
+
You can also use PlantUML on your local computer, installed, or using docker image.
|
122
|
+
You need to specify endpoint:
|
123
|
+
|
124
|
+
```ruby
|
125
|
+
PlantumlBuilder::Formats::TXT.new(wsd, 'http://localhost:8080').load
|
126
|
+
```
|
127
|
+
|
128
|
+
Default endpoint is: `http://www.plantuml.com/plantuml`.
|
129
|
+
|
130
|
+
## Development
|
131
|
+
|
132
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
133
|
+
|
134
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
135
|
+
|
136
|
+
## Contributing
|
137
|
+
|
138
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/svernidub/plantuml_builder.
|
139
|
+
|
140
|
+
|
141
|
+
## License
|
142
|
+
|
143
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
144
|
+
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "plantuml_builder"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
require "pry"
|
10
|
+
Pry.start
|
11
|
+
|
12
|
+
require "irb"
|
13
|
+
IRB.start
|
data/bin/setup
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'plantuml_builder/version'
|
2
|
+
require 'plantuml_builder/deflate'
|
3
|
+
require 'plantuml_builder/encode64'
|
4
|
+
require 'plantuml_builder/compressor'
|
5
|
+
require 'plantuml_builder/url_builder'
|
6
|
+
require 'plantuml_builder/diagram_fetcher'
|
7
|
+
require 'plantuml_builder/format'
|
8
|
+
require 'plantuml_builder/formats'
|
9
|
+
|
10
|
+
module PlantumlBuilder
|
11
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module PlantumlBuilder
|
2
|
+
class Compressor
|
3
|
+
def initialize(uml)
|
4
|
+
self.uml = uml
|
5
|
+
end
|
6
|
+
|
7
|
+
def encode
|
8
|
+
value = uml
|
9
|
+
|
10
|
+
[PlantumlBuilder::Deflate, PlantumlBuilder::Encode64].each do |encoder|
|
11
|
+
value = encoder.new(value).encode
|
12
|
+
end
|
13
|
+
|
14
|
+
value
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
attr_accessor :uml
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'zlib'
|
2
|
+
module PlantumlBuilder
|
3
|
+
class Deflate
|
4
|
+
LEVEL = Zlib::BEST_COMPRESSION
|
5
|
+
|
6
|
+
def initialize(diagram)
|
7
|
+
self.diagram = diagram
|
8
|
+
end
|
9
|
+
|
10
|
+
def encode
|
11
|
+
Zlib::Deflate.deflate(diagram.encode('UTF-8'), LEVEL)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
attr_accessor :diagram
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module PlantumlBuilder
|
2
|
+
class Encode64
|
3
|
+
# Encoding alphabet
|
4
|
+
# 0..9,
|
5
|
+
# A..Z,
|
6
|
+
# a..z,
|
7
|
+
# -,
|
8
|
+
# _
|
9
|
+
ALPHABET = ['0'..'9',
|
10
|
+
'A'..'Z',
|
11
|
+
'a'..'z',
|
12
|
+
%w[- _ ?]].map(&:to_a).flatten.freeze
|
13
|
+
|
14
|
+
def initialize(string)
|
15
|
+
self.diagram = string
|
16
|
+
self.query = ''
|
17
|
+
end
|
18
|
+
|
19
|
+
def encode
|
20
|
+
align_diagram.map(&:ord).each_slice(3) do |slice|
|
21
|
+
append3bytes(*slice)
|
22
|
+
end
|
23
|
+
|
24
|
+
query
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
attr_accessor :diagram, :query
|
30
|
+
|
31
|
+
def align_diagram
|
32
|
+
chars = diagram.chars
|
33
|
+
unaligned = chars.length % 3
|
34
|
+
left = unaligned.zero? ? 0 : 3 - unaligned
|
35
|
+
|
36
|
+
chars + [0] * left
|
37
|
+
end
|
38
|
+
|
39
|
+
def append3bytes(b1, b2, b3)
|
40
|
+
c1 = b1 >> 2
|
41
|
+
c2 = ((b1 & 0x3) << 4) | (b2 >> 4)
|
42
|
+
c3 = ((b2 & 0xF) << 2) | (b3 >> 6)
|
43
|
+
c4 = b3 & 0x3F
|
44
|
+
|
45
|
+
[c1, c2, c3, c4].each do |c|
|
46
|
+
self.query += encode6bit(c & 0x3F)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def encode6bit(b)
|
51
|
+
ALPHABET[b] || ALPHABET.last
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module PlantumlBuilder
|
2
|
+
class Format
|
3
|
+
DEFAULT_HOST = 'http://www.plantuml.com/plantuml'.freeze
|
4
|
+
|
5
|
+
def initialize(diagram, host=DEFAULT_HOST)
|
6
|
+
self.host = host
|
7
|
+
self.diagram = diagram
|
8
|
+
end
|
9
|
+
|
10
|
+
def load
|
11
|
+
compress_diagram
|
12
|
+
build_url
|
13
|
+
fetch_diagram
|
14
|
+
|
15
|
+
data
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
def format
|
21
|
+
raise NotImplementedError, '#format should be overloaded'
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def compress_diagram
|
27
|
+
self.data = PlantumlBuilder::Compressor.new(diagram).encode
|
28
|
+
end
|
29
|
+
|
30
|
+
def build_url
|
31
|
+
self.data = PlantumlBuilder::UrlBuilder.new(host, format, data).build
|
32
|
+
end
|
33
|
+
|
34
|
+
def fetch_diagram
|
35
|
+
self.data = PlantumlBuilder::DiagramFetcher.new(data).fetch
|
36
|
+
end
|
37
|
+
|
38
|
+
attr_accessor :host, :diagram, :data
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module PlantumlBuilder
|
2
|
+
module Formats
|
3
|
+
class SVG < PlantumlBuilder::Format
|
4
|
+
def load
|
5
|
+
super
|
6
|
+
make_diagram_versionable
|
7
|
+
data
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def format
|
13
|
+
'svg'
|
14
|
+
end
|
15
|
+
|
16
|
+
def make_diagram_versionable
|
17
|
+
self.data = data.split('>').join(">\n").gsub(/<!--.*-->/m, '')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class PNG < PlantumlBuilder::Format
|
22
|
+
protected
|
23
|
+
|
24
|
+
def format
|
25
|
+
'png'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class TXT < PlantumlBuilder::Format
|
30
|
+
protected
|
31
|
+
|
32
|
+
def format
|
33
|
+
'txt'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module PlantumlBuilder
|
2
|
+
class UrlBuilder
|
3
|
+
def initialize(server, format, encoded)
|
4
|
+
self.server = server
|
5
|
+
self.format = format
|
6
|
+
self.encoded = encoded
|
7
|
+
end
|
8
|
+
|
9
|
+
def build
|
10
|
+
"#{server}/#{format}/#{encoded}"
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
attr_accessor :server, :format, :encoded
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
require 'plantuml_builder/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'plantuml_builder'
|
9
|
+
spec.version = PlantumlBuilder::VERSION
|
10
|
+
spec.authors = ['Sergey Vernidub']
|
11
|
+
spec.email = ['svernidub@gmail.com']
|
12
|
+
|
13
|
+
spec.summary = 'Gem to build text diagrams with plant uml'
|
14
|
+
spec.description = 'Gem to build text diagrams with plant uml'
|
15
|
+
spec.homepage = 'https://github.com/svernidub/plantuml_builder'
|
16
|
+
spec.license = 'MIT'
|
17
|
+
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
+
spec.bindir = 'exe'
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ['lib']
|
22
|
+
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.11'
|
24
|
+
spec.add_development_dependency 'pry'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
27
|
+
spec.add_development_dependency 'vcr'
|
28
|
+
spec.add_development_dependency 'webmock'
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: plantuml_builder
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sergey Vernidub
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-03-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.11'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: vcr
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: webmock
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: Gem to build text diagrams with plant uml
|
98
|
+
email:
|
99
|
+
- svernidub@gmail.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- LICENSE.txt
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- bin/console
|
112
|
+
- bin/setup
|
113
|
+
- lib/plantuml_builder.rb
|
114
|
+
- lib/plantuml_builder/compressor.rb
|
115
|
+
- lib/plantuml_builder/deflate.rb
|
116
|
+
- lib/plantuml_builder/diagram_fetcher.rb
|
117
|
+
- lib/plantuml_builder/encode64.rb
|
118
|
+
- lib/plantuml_builder/format.rb
|
119
|
+
- lib/plantuml_builder/formats.rb
|
120
|
+
- lib/plantuml_builder/url_builder.rb
|
121
|
+
- lib/plantuml_builder/version.rb
|
122
|
+
- plantuml_builder.gemspec
|
123
|
+
homepage: https://github.com/svernidub/plantuml_builder
|
124
|
+
licenses:
|
125
|
+
- MIT
|
126
|
+
metadata: {}
|
127
|
+
post_install_message:
|
128
|
+
rdoc_options: []
|
129
|
+
require_paths:
|
130
|
+
- lib
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
requirements: []
|
142
|
+
rubyforge_project:
|
143
|
+
rubygems_version: 2.4.5.1
|
144
|
+
signing_key:
|
145
|
+
specification_version: 4
|
146
|
+
summary: Gem to build text diagrams with plant uml
|
147
|
+
test_files: []
|