damn-legacy 0.0.1 → 0.0.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: 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