zelkova 0.1.0 → 0.1.1

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: 86b06cdb9578edcaa80c633a1b2205d9a01fd231aaecbc3c8721482ab960da36
4
- data.tar.gz: b94f3080271dc65a3c4f21c7e7bf95d1ea25f3b9509825278aeea819b13bd6f4
3
+ metadata.gz: 99845c2d87f2d9f7e4c66c96912a9aac723677f4069a205bdb5e0979c3be035c
4
+ data.tar.gz: 6c1d6d6e4cb6d5c53bd56dec2319cbb1d43756d11bcd955afd9a7a9b03ddafac
5
5
  SHA512:
6
- metadata.gz: a2e6e47acd4da9b54db90a18039f6af0d7635cc54e630570bbbbf3e7f9da5ebc71c5fe7acbe7aa5f2eea40ae8a0ad2c53c1534ee77932649c03f3e04e355d4bd
7
- data.tar.gz: f9f6a520545eeaf470729a6ad1332884b6753857b8fd7535c8c3088086b8fb308460dc742a1d791b813176a8ab5247945dd07ab09068603622b95a59f9378dab
6
+ metadata.gz: 75ac38244fb0a07394dc799bda375a930431ec670fe706ce4ec826504cdd22acb6777f73f8a2b5f4834dd670a103eea7ac2b0bf82aefdb190fb08b738a68d53b
7
+ data.tar.gz: 4622edc7572b76f1f0b938e1cfa0e9f38896842c1debfe937c63acc7862a9e37576727b083c305fb1665f7597f4b9a5990d9e96c60a5ff36de6d4ae63a51dbf7
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- zelkova (0.1.0)
4
+ zelkova (0.1.1)
5
5
  eikon
6
6
 
7
7
  GEM
data/lib/zelkova/graph.rb CHANGED
@@ -18,16 +18,28 @@ class Zelkova::Graph
18
18
  sig { returns(Integer) }
19
19
  attr_reader :depth
20
20
 
21
- sig { void }
22
- def initialize
21
+ sig { returns(Integer) }
22
+ attr_accessor :radius
23
+
24
+ sig { params(radius: T.nilable(Integer)).void }
25
+ def initialize(radius = 2)
23
26
  @root_node = T.let(nil, T.nilable(Zelkova::Node))
24
27
  @nodes = T.let([], T::Array[Zelkova::Node])
25
28
  @depth = T.let(0, Integer)
29
+
30
+ @radius = T.let(T.must(radius), Integer)
31
+ end
32
+
33
+ sig { void }
34
+ def reset
35
+ @root_node = nil
36
+ @nodes = []
37
+ @depth = 0
26
38
  end
27
39
 
28
- sig { params(word: String).returns(Zelkova::Node) }
29
- def add_node(word)
30
- node = Zelkova::Node.new(word, self)
40
+ sig { params(word: String, metadata: T.nilable(T::Hash[T.untyped, T.untyped])).returns(Zelkova::Node) }
41
+ def add_node(word, metadata = {})
42
+ node = Zelkova::Node.new(word, self, metadata)
31
43
  nodes << node
32
44
 
33
45
  if @root_node.nil?
@@ -60,9 +72,9 @@ class Zelkova::Graph
60
72
  node
61
73
  end
62
74
 
63
- sig { params(query: String).returns(T::Array[String]) }
75
+ sig { params(query: String).returns(T::Array[T::Hash[Zelkova::Node, Float]]) }
64
76
  def search(query)
65
- radius = 2
77
+ radius = @radius
66
78
  candidate_nodes = []
67
79
  candidate_edges = []
68
80
 
@@ -85,20 +97,6 @@ class Zelkova::Graph
85
97
  end
86
98
 
87
99
  candidate_nodes.sort_by! { |candidate_node| candidate_node[:distance] }
88
- candidate_nodes.map { |candidate_node| candidate_node[:node].word }
100
+ candidate_nodes
89
101
  end
90
102
  end
91
-
92
- # class Comparator
93
- # extend T::Sig
94
-
95
- # sig { params(dhash_1: String, dhash_2: String).returns(Integer) }
96
- # def self.compare(dhash_1, dhash_2)
97
- # hamming_distance = 0
98
- # dhash_1.chars.each_with_index do |character, index|
99
- # hamming_distance += 1 if character != dhash_2.chars[index]
100
- # end
101
-
102
- # hamming_distance + (dhash_1.length - dhash_2.length).abs
103
- # end
104
- # end
data/lib/zelkova/node.rb CHANGED
@@ -11,18 +11,20 @@ class Zelkova::Node
11
11
  attr_reader :edges
12
12
  sig { returns(Zelkova::Graph) }
13
13
  attr_reader :graph
14
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
15
+ attr_reader :metadata
14
16
 
15
- sig { params(word: String, graph: Zelkova::Graph).void }
16
- def initialize(word, graph)
17
+ sig { params(word: String, graph: Zelkova::Graph, metadata: T.nilable(T::Hash[T.untyped, T.untyped])).void }
18
+ def initialize(word, graph, metadata = {})
17
19
  @word = T.let(word, String)
18
20
  @graph = T.let(graph, Zelkova::Graph)
19
-
20
21
  @edges = T.let([], T::Array[Zelkova::Edge])
22
+ @metadata = T.let(T.must(metadata), T::Hash[T.untyped, T.untyped])
21
23
  end
22
24
 
23
25
  sig { returns(String) }
24
26
  def inspect
25
- "Word: #{self.word}, Number of Edges: #{self.edges.count}"
27
+ "Word: #{self.word}, Number of Edges: #{self.edges.count}, Metadata: #{self.metadata}"
26
28
  end
27
29
 
28
30
  sig { params(node: Zelkova::Node, weight: Integer).void }
@@ -1,4 +1,4 @@
1
1
  # typed: strict
2
2
  module Zelkova
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
data/lib/zelkova.rb CHANGED
@@ -7,4 +7,16 @@ require_relative "zelkova/graph"
7
7
 
8
8
  module Zelkova
9
9
  class Error < StandardError; end
10
+
11
+ @@graph = T.let(Zelkova::Graph.new, Zelkova::Graph)
12
+
13
+ class << self
14
+ extend T::Sig
15
+
16
+ sig { returns(Zelkova::Graph) }
17
+ def graph
18
+ # TODO: make this lazy when in development mode for speed
19
+ @@graph
20
+ end
21
+ end
10
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zelkova
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Guess
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-27 00:00:00.000000000 Z
11
+ date: 2022-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eikon