damn-legacy 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b96bf47a973a7f75b2a393a72295e21183a9579438549729fdda111879bc2bd1
4
- data.tar.gz: 10e299c01511bde3df106260c24218b4f0d55e4d67bf78dab878b639fd67ab00
3
+ metadata.gz: e96389ba658f6900e53c76902381b745c04ec60a1718dec668b9d2427b980e90
4
+ data.tar.gz: 85fed85ff669063d66a9288607842f96cee108a6c3b2ea5a9909c8476dd45e68
5
5
  SHA512:
6
- metadata.gz: 0111550b7989e8d2ad925dcd69aea2a13814d7b2f64ee3b20f6f88e7f2d441a5375cb55268967e206bfc37f1975055e19e5681aee49b53a2b70d00cccf9a4140
7
- data.tar.gz: e0e7e4b0115065c06656e58316bc8566858ec3a19f405ffdadc000ca75ce701d3607807db55db9ed3e52870f159b0345e7beb708b214e7f8397671085e5035a2
6
+ metadata.gz: 0072bcb03b19258b020fb2f5315b2e5a42928dca097f6a6539ed37bc36b5f1d2b10825440790cacaee034c579ce2392c346f84bcdac940a1270910a90cc15be9
7
+ data.tar.gz: bef1d99e38515a3734d8686ce183d8f2dba4cc410b779e992a5b77f1f6f90c92e5c36e0df38af32ab06d6509a8b13f7fbc674944e049b73228640ca8ba9410f0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- damn-legacy (0.0.1)
4
+ damn-legacy (0.0.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -15,7 +15,12 @@ module Damn
15
15
  raise ArgumentError, "No block provided" unless block_given?
16
16
 
17
17
  val = block.call
18
- if !val.nil? && !Store.instance.stack.empty? && self == Store.instance.stack.first[1]
18
+ if val.nil?
19
+ head, = Store.instance.stack.shift
20
+ return head.to_s
21
+ end
22
+
23
+ if !Store.instance.stack.empty? && self == Store.instance.stack.first[1]
19
24
  each do |key|
20
25
  Store.instance.add(key, val)
21
26
  end
@@ -49,7 +49,7 @@ module Damn
49
49
  def add_hash_to_store(key, value, glue)
50
50
  value.map do |k, v|
51
51
  next_key = "#{key}#{glue}#{k}"
52
- store[key] << next_key
52
+ store[key.to_s] << next_key
53
53
  next add_sym_to_store(next_key, v, glue) if v.is_a?(Symbol)
54
54
  next add_hash_to_store(next_key, v, glue) if v.is_a?(Hash)
55
55
  next add_array_to_store(next_key, v, glue) if v.is_a?(Array)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Damn
4
4
  module Legacy
5
- VERSION = "0.0.1"
5
+ VERSION = "0.0.2"
6
6
  end
7
7
  end
@@ -1,12 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "set"
4
+
3
5
  module Damn
4
6
  module Legacy
5
7
  class Mermaid
6
- attr_reader :store
8
+ attr_reader :store, :line_sep
9
+
10
+ HEADER = "stateDiagram-v2"
7
11
 
8
- def initialize(store)
12
+ def initialize(store, line_sep = "\n")
9
13
  @store = store
14
+ @line_sep = line_sep
10
15
  end
11
16
 
12
17
  def self.call
@@ -14,14 +19,34 @@ module Damn
14
19
  end
15
20
 
16
21
  def call
17
- header = "stateDiagram-v2"
18
22
  buffer = []
23
+ states = Set.new
19
24
  store.each do |k, v|
20
25
  v.each do |item|
21
- buffer << "#{k} --> #{item}"
26
+ states << k
27
+ states << item
28
+ buffer << connection_line(escape_str(k), escape_str(item))
22
29
  end
23
30
  end
24
- [header, buffer.join("\n")].join("\n")
31
+ [HEADER, state_lines(states), buffer.join(line_sep)].join(line_sep)
32
+ end
33
+
34
+ private
35
+
36
+ def state_lines(states)
37
+ states.map { |state| state_line(state) }.join(line_sep)
38
+ end
39
+
40
+ def escape_str(value)
41
+ value.gsub(/[:#]/, "_")
42
+ end
43
+
44
+ def connection_line(from, to)
45
+ "#{from} --> #{to}"
46
+ end
47
+
48
+ def state_line(state)
49
+ "state \"#{state}\" as #{escape_str(state)}"
25
50
  end
26
51
  end
27
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: damn-legacy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - gingray