elkrb 1.0.2 → 2.0.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 +4 -4
- data/CHANGELOG.adoc +364 -0
- data/LICENSE +25 -0
- data/README.adoc +695 -557
- data/exe/elkrb +36 -2
- data/lib/elkrb/atomic_destination.rb +53 -0
- data/lib/elkrb/best_effort_write.rb +49 -0
- data/lib/elkrb/cli/layout_flag_options.rb +54 -0
- data/lib/elkrb/cli.rb +155 -82
- data/lib/elkrb/command_resolver.rb +186 -0
- data/lib/elkrb/commands/batch_command.rb +28 -5
- data/lib/elkrb/commands/convert_command.rb +22 -52
- data/lib/elkrb/commands/diagram_command.rb +234 -102
- data/lib/elkrb/commands/options_command.rb +87 -0
- data/lib/elkrb/commands/render_command.rb +6 -1
- data/lib/elkrb/commands/validate_command.rb +146 -91
- data/lib/elkrb/errors.rb +20 -1
- data/lib/elkrb/format_sniffer.rb +362 -0
- data/lib/elkrb/geometry/bezier.rb +14 -4
- data/lib/elkrb/geometry/point.rb +5 -6
- data/lib/elkrb/geometry/rectangle.rb +2 -2
- data/lib/elkrb/graph/deep_stringify_keys.rb +30 -0
- data/lib/elkrb/graph/edge.rb +89 -3
- data/lib/elkrb/graph/graph.rb +43 -15
- data/lib/elkrb/graph/label.rb +16 -2
- data/lib/elkrb/graph/node.rb +13 -2
- data/lib/elkrb/graph/node_constraints.rb +139 -8
- data/lib/elkrb/graph/normalize_option_keys.rb +39 -0
- data/lib/elkrb/graph/port.rb +29 -21
- data/lib/elkrb/graph/read_only_mapping.rb +21 -0
- data/lib/elkrb/graphviz_wrapper.rb +152 -44
- data/lib/elkrb/layout/algorithm_registry.rb +65 -8
- data/lib/elkrb/layout/algorithms/base_algorithm.rb +74 -74
- data/lib/elkrb/layout/algorithms/box.rb +47 -20
- data/lib/elkrb/layout/algorithms/disco.rb +150 -61
- data/lib/elkrb/layout/algorithms/fixed.rb +70 -10
- data/lib/elkrb/layout/algorithms/force.rb +145 -86
- data/lib/elkrb/layout/algorithms/layered/bk/aligner.rb +104 -0
- data/lib/elkrb/layout/algorithms/layered/bk/compactor.rb +87 -0
- data/lib/elkrb/layout/algorithms/layered/bk/view.rb +103 -0
- data/lib/elkrb/layout/algorithms/layered/bk_node_placer.rb +170 -0
- data/lib/elkrb/layout/algorithms/layered/components.rb +170 -0
- data/lib/elkrb/layout/algorithms/layered/crossing_minimizer.rb +306 -0
- data/lib/elkrb/layout/algorithms/layered/cycle_breaker.rb +118 -49
- data/lib/elkrb/layout/algorithms/layered/discovery_order.rb +75 -0
- data/lib/elkrb/layout/algorithms/layered/dummy_slot.rb +31 -0
- data/lib/elkrb/layout/algorithms/layered/layer_assigner.rb +188 -48
- data/lib/elkrb/layout/algorithms/layered/layer_constraints.rb +82 -0
- data/lib/elkrb/layout/algorithms/layered/layer_sweep.rb +195 -0
- data/lib/elkrb/layout/algorithms/layered/node_placer.rb +214 -36
- data/lib/elkrb/layout/algorithms/layered/orthogonal/gap_solver.rb +219 -0
- data/lib/elkrb/layout/algorithms/layered/orthogonal/hyper_edge_segment.rb +152 -0
- data/lib/elkrb/layout/algorithms/layered/orthogonal/junction_points.rb +58 -0
- data/lib/elkrb/layout/algorithms/layered/orthogonal/segment_order.rb +134 -0
- data/lib/elkrb/layout/algorithms/layered/orthogonal_router.rb +253 -0
- data/lib/elkrb/layout/algorithms/layered/port_order.rb +188 -0
- data/lib/elkrb/layout/algorithms/layered/port_spread.rb +42 -0
- data/lib/elkrb/layout/algorithms/layered.rb +548 -13
- data/lib/elkrb/layout/algorithms/libavoid.rb +951 -187
- data/lib/elkrb/layout/algorithms/mrtree.rb +585 -65
- data/lib/elkrb/layout/algorithms/radial.rb +188 -29
- data/lib/elkrb/layout/algorithms/random.rb +131 -17
- data/lib/elkrb/layout/algorithms/rectpacking.rb +28 -40
- data/lib/elkrb/layout/algorithms/spore_compaction.rb +57 -100
- data/lib/elkrb/layout/algorithms/spore_overlap.rb +78 -84
- data/lib/elkrb/layout/algorithms/stress.rb +391 -84
- data/lib/elkrb/layout/algorithms/topdown_packing.rb +95 -31
- data/lib/elkrb/layout/algorithms/vertiflex.rb +12 -47
- data/lib/elkrb/layout/constraints/alignment_constraint.rb +49 -12
- data/lib/elkrb/layout/constraints/base_constraint.rb +3 -15
- data/lib/elkrb/layout/constraints/constraint_processor.rb +9 -23
- data/lib/elkrb/layout/constraints/fixed_position_constraint.rb +22 -13
- data/lib/elkrb/layout/constraints/layer_constraint.rb +10 -33
- data/lib/elkrb/layout/constraints/relative_position_constraint.rb +94 -50
- data/lib/elkrb/layout/edge_router.rb +533 -337
- data/lib/elkrb/layout/hierarchical_processor.rb +19 -276
- data/lib/elkrb/layout/java_random.rb +59 -0
- data/lib/elkrb/layout/label_placer.rb +165 -157
- data/lib/elkrb/layout/layout_engine.rb +46 -23
- data/lib/elkrb/layout/node_index.rb +149 -0
- data/lib/elkrb/layout/polyomino/component_compactor.rb +138 -0
- data/lib/elkrb/layout/polyomino/footprint.rb +94 -0
- data/lib/elkrb/layout/polyomino/grid.rb +106 -0
- data/lib/elkrb/layout/polyomino/packer.rb +95 -0
- data/lib/elkrb/layout/polyomino/piece.rb +52 -0
- data/lib/elkrb/layout/port_constraint_processor.rb +131 -44
- data/lib/elkrb/layout/spore/body.rb +65 -0
- data/lib/elkrb/layout/spore/depth_first_compaction.rb +127 -0
- data/lib/elkrb/layout/spore/edge_cost.rb +69 -0
- data/lib/elkrb/layout/spore/gap.rb +76 -0
- data/lib/elkrb/layout/spore/geometry.rb +104 -0
- data/lib/elkrb/layout/spore/overlap_sweep.rb +90 -0
- data/lib/elkrb/layout/spore/placement.rb +57 -0
- data/lib/elkrb/layout/spore/rays.rb +119 -0
- data/lib/elkrb/layout/spore/spanning_tree.rb +53 -0
- data/lib/elkrb/layout/spore/triangulation.rb +159 -0
- data/lib/elkrb/layout_flags.rb +69 -0
- data/lib/elkrb/options/decimal.rb +50 -0
- data/lib/elkrb/options/element_options.rb +43 -0
- data/lib/elkrb/options/elk_padding.rb +20 -14
- data/lib/elkrb/options/k_vector.rb +6 -7
- data/lib/elkrb/options/k_vector_chain.rb +12 -20
- data/lib/elkrb/options/option_map.rb +85 -0
- data/lib/elkrb/options/registry.rb +335 -0
- data/lib/elkrb/options/resolver.rb +151 -0
- data/lib/elkrb/options/spellings.rb +62 -0
- data/lib/elkrb/options/unhonoured_report.rb +194 -0
- data/lib/elkrb/parsers/elkt/lexer.rb +309 -0
- data/lib/elkrb/parsers/elkt/parser.rb +424 -0
- data/lib/elkrb/parsers/elkt/resolver.rb +142 -0
- data/lib/elkrb/parsers/elkt/token.rb +40 -0
- data/lib/elkrb/parsers/elkt_parser.rb +32 -230
- data/lib/elkrb/serializers/dot_serializer.rb +342 -54
- data/lib/elkrb/serializers/elkt_serializer.rb +386 -155
- data/lib/elkrb/version.rb +1 -1
- data/lib/elkrb.rb +60 -61
- metadata +71 -49
- data/.rspec +0 -3
- data/.rubocop.yml +0 -11
- data/Gemfile +0 -13
- data/Rakefile +0 -64
- data/benchmarks/README.md +0 -172
- data/benchmarks/elkjs_benchmark.js +0 -140
- data/benchmarks/elkrb_benchmark.rb +0 -145
- data/benchmarks/fixtures/graphs.json +0 -10777
- data/benchmarks/generate_report.rb +0 -241
- data/benchmarks/generate_test_graphs.rb +0 -154
- data/benchmarks/results/elkrb_results.json +0 -280
- data/benchmarks/results/elkrb_summary.json +0 -285
- data/elkrb.gemspec +0 -39
- data/examples/dot_export_demo.rb +0 -133
- data/examples/hierarchical_graph.rb +0 -19
- data/examples/layout_constraints_demo.rb +0 -272
- data/examples/port_constraints_demo.rb +0 -291
- data/examples/self_loop_demo.rb +0 -391
- data/examples/simple_graph.rb +0 -50
- data/examples/spline_routing_demo.rb +0 -235
- data/lib/elkrb/graph/layout_options.rb +0 -247
- data/sig/elkrb/constraints.rbs +0 -114
- data/sig/elkrb/geometry.rbs +0 -61
- data/sig/elkrb/graph.rbs +0 -112
- data/sig/elkrb/layout.rbs +0 -107
- data/sig/elkrb/options.rbs +0 -81
- data/sig/elkrb.rbs +0 -32
data/sig/elkrb/options.rbs
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Elkrb
|
|
4
|
-
module Options
|
|
5
|
-
class ElkPadding
|
|
6
|
-
attr_reader left: Float
|
|
7
|
-
attr_reader top: Float
|
|
8
|
-
attr_reader right: Float
|
|
9
|
-
attr_reader bottom: Float
|
|
10
|
-
|
|
11
|
-
def initialize: (?left: Numeric, ?top: Numeric, ?right: Numeric, ?bottom: Numeric) -> void
|
|
12
|
-
|
|
13
|
-
def self.parse: (String | Hash[Symbol | String, Numeric] | ElkPadding value) -> ElkPadding
|
|
14
|
-
|
|
15
|
-
def self.from_hash: (Hash[Symbol | String, Numeric] hash) -> ElkPadding
|
|
16
|
-
|
|
17
|
-
def self.from_string: (String str) -> ElkPadding
|
|
18
|
-
|
|
19
|
-
def to_h: () -> Hash[Symbol, Float]
|
|
20
|
-
|
|
21
|
-
def to_s: () -> String
|
|
22
|
-
|
|
23
|
-
def ==: (untyped other) -> bool
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
class KVector
|
|
27
|
-
attr_reader x: Float
|
|
28
|
-
attr_reader y: Float
|
|
29
|
-
|
|
30
|
-
def initialize: (Numeric x, Numeric y) -> void
|
|
31
|
-
|
|
32
|
-
def self.parse: (String | Hash[Symbol | String, Numeric] | Array[Numeric] | KVector value) -> KVector
|
|
33
|
-
|
|
34
|
-
def self.from_hash: (Hash[Symbol | String, Numeric] hash) -> KVector
|
|
35
|
-
|
|
36
|
-
def self.from_array: (Array[Numeric] array) -> KVector
|
|
37
|
-
|
|
38
|
-
def self.from_string: (String str) -> KVector
|
|
39
|
-
|
|
40
|
-
def to_h: () -> Hash[Symbol, Float]
|
|
41
|
-
|
|
42
|
-
def to_a: () -> Array[Float]
|
|
43
|
-
|
|
44
|
-
def to_s: () -> String
|
|
45
|
-
|
|
46
|
-
def ==: (untyped other) -> bool
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
class KVectorChain
|
|
50
|
-
attr_reader vectors: Array[KVector]
|
|
51
|
-
|
|
52
|
-
def initialize: (?Array[Array[Numeric] | Hash[Symbol | String, Numeric] | KVector] vectors) -> void
|
|
53
|
-
|
|
54
|
-
def self.parse: (String | Array[Array[Numeric] | Hash[Symbol | String, Numeric] | KVector] | KVectorChain value) -> KVectorChain
|
|
55
|
-
|
|
56
|
-
def self.from_array: (Array[Array[Numeric] | Hash[Symbol | String, Numeric] | KVector] array) -> KVectorChain
|
|
57
|
-
|
|
58
|
-
def self.from_string: (String str) -> KVectorChain
|
|
59
|
-
|
|
60
|
-
def add: (Array[Numeric] | Hash[Symbol | String, Numeric] | KVector vector) -> self
|
|
61
|
-
|
|
62
|
-
alias << add
|
|
63
|
-
|
|
64
|
-
def []: (Integer index) -> KVector?
|
|
65
|
-
|
|
66
|
-
def size: () -> Integer
|
|
67
|
-
|
|
68
|
-
alias length size
|
|
69
|
-
|
|
70
|
-
def empty?: () -> bool
|
|
71
|
-
|
|
72
|
-
def each: () { (KVector) -> void } -> void
|
|
73
|
-
|
|
74
|
-
def to_a: () -> Array[KVector]
|
|
75
|
-
|
|
76
|
-
def to_s: () -> String
|
|
77
|
-
|
|
78
|
-
def ==: (untyped other) -> bool
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
data/sig/elkrb.rbs
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
module Elkrb
|
|
2
|
-
VERSION: String
|
|
3
|
-
|
|
4
|
-
class Error < StandardError
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
class UnsupportedConfigurationException < Error
|
|
8
|
-
attr_reader option: String?
|
|
9
|
-
attr_reader value: untyped
|
|
10
|
-
|
|
11
|
-
def initialize: (String message, ?option: String?, ?value: untyped) -> void
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
class ValidationError < Error
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
class AlgorithmNotFoundError < Error
|
|
18
|
-
attr_reader algorithm_name: String
|
|
19
|
-
|
|
20
|
-
def initialize: (String algorithm_name) -> void
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def self.layout: (Graph::Graph | Hash[Symbol, untyped] graph, ?Hash[Symbol, untyped] options) -> Graph::Graph
|
|
24
|
-
|
|
25
|
-
def self.register_algorithm: (String name, Class algorithm_class, ?Hash[Symbol, untyped] metadata) -> void
|
|
26
|
-
|
|
27
|
-
def self.known_layout_algorithms: () -> Array[Hash[Symbol, untyped]]
|
|
28
|
-
|
|
29
|
-
def self.known_layout_options: () -> Hash[String, Hash[Symbol, untyped]]
|
|
30
|
-
|
|
31
|
-
def self.known_layout_categories: () -> Hash[String, Hash[Symbol, String]]
|
|
32
|
-
end
|