gematria 0.0.3 → 0.0.4
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.
- data/CHANGELOG.md +4 -0
- data/README.md +9 -6
- data/ROADMAP.md +1 -1
- data/lib/gematria/calculator.rb +1 -1
- data/lib/gematria/tables.rb +25 -5
- data/lib/gematria/version.rb +1 -1
- data/spec/gematria/calculator_spec.rb +22 -26
- data/spec/gematria/tables_spec.rb +58 -30
- metadata +1 -1
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -26,22 +26,25 @@ Or install it yourself as:
|
|
26
26
|
|
27
27
|
## Usage
|
28
28
|
|
29
|
-
name = Gematria::Calculator.new
|
29
|
+
name = Gematria::Calculator.new "Adam", :english
|
30
30
|
name.converted # => 46
|
31
31
|
name.mapped.join(" + ") # => "1 + 4 + 1 + 40"
|
32
32
|
name.reduced # => 1
|
33
33
|
|
34
|
-
gematria = Gematria::Calculator.new
|
34
|
+
gematria = Gematria::Calculator.new "Gematria is fun!", :english
|
35
35
|
gematria.converted # => 818
|
36
36
|
gematria.mapped # => [7, 5, 40, 1, 200, 90, 9, 1, 0, 9, 100, 0, 6, 300, 50, 0]
|
37
37
|
|
38
|
-
|
38
|
+
Settings a global table
|
39
|
+
|
40
|
+
Gematria::Tables.set_table :hebrew
|
41
|
+
alephbet = Gematria::Calculator.new 'אבגדהוזחטיכלמנסעפצקרשתךםןףץ'
|
39
42
|
alephbet.converted == 4995 # => true
|
40
43
|
|
41
|
-
|
44
|
+
Defining a custom table
|
42
45
|
|
43
46
|
Gematria::Tables.add_table :mini, 'a' => 1, 'b' => 10, 'c' => 100
|
44
|
-
abcd = Gematria::Calculator.new
|
47
|
+
abcd = Gematria::Calculator.new 'abcd', :mini
|
45
48
|
abcd.mapped # => [1,10,100,0]
|
46
49
|
abcd.converted # => 111
|
47
50
|
abcd.reduced # => 3
|
@@ -83,4 +86,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
83
86
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
84
87
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
85
88
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
86
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
89
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/ROADMAP.md
CHANGED
data/lib/gematria/calculator.rb
CHANGED
data/lib/gematria/tables.rb
CHANGED
@@ -1,9 +1,29 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
module Gematria
|
3
3
|
module Tables
|
4
|
+
# Stores available tables
|
4
5
|
TABLES = {}
|
5
6
|
|
6
|
-
|
7
|
+
# Sets the global current table
|
8
|
+
#
|
9
|
+
# Tables.set_table(:english)
|
10
|
+
# Tables.current # => {'a'=>1,'b'=>2,...}
|
11
|
+
#
|
12
|
+
# @param table_name [Symbol] table name
|
13
|
+
# @return [Symbol] table name
|
14
|
+
def self.set_table(table_name)
|
15
|
+
@current = table_name
|
16
|
+
end
|
17
|
+
|
18
|
+
# Gets the currently selected table
|
19
|
+
#
|
20
|
+
# Tables.set_table(:english)
|
21
|
+
# Tables.current # => {'a'=>1,'b'=>2,...}
|
22
|
+
#
|
23
|
+
# @return [Hash{String => Number}]
|
24
|
+
def self.current
|
25
|
+
fetch(@current)
|
26
|
+
end
|
7
27
|
|
8
28
|
# Adds a table to the table store. A valid table must be a Hash with single character string keys and numerical values.
|
9
29
|
# A table that is not a Hash will raise a TypeError. The table name will be converted to a Symbol.
|
@@ -12,7 +32,7 @@ module Gematria
|
|
12
32
|
#
|
13
33
|
# @param name [#to_sym] table name
|
14
34
|
# @param table [Hash{String => Number}] table of characters pointing to corresponding values
|
15
|
-
def add_table(name, table)
|
35
|
+
def self.add_table(name, table)
|
16
36
|
if table.is_a? Hash
|
17
37
|
TABLES[name.to_sym] = table
|
18
38
|
else
|
@@ -26,8 +46,8 @@ module Gematria
|
|
26
46
|
#
|
27
47
|
# @param key [Symbol] table name as a Symbol
|
28
48
|
# @return [Hash{String => Number}]
|
29
|
-
def fetch(key)
|
30
|
-
TABLES.fetch(key)
|
49
|
+
def self.fetch(key)
|
50
|
+
TABLES.fetch(key, {})
|
31
51
|
end
|
32
52
|
|
33
53
|
# Fetches specified table (delegates to #fetch)
|
@@ -36,7 +56,7 @@ module Gematria
|
|
36
56
|
#
|
37
57
|
# @param key [Symbol] table name as a Symbol
|
38
58
|
# @return [Hash{String => Number}]
|
39
|
-
def [](key)
|
59
|
+
def self.[](key)
|
40
60
|
fetch(key)
|
41
61
|
end
|
42
62
|
|
data/lib/gematria/version.rb
CHANGED
@@ -2,35 +2,29 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe Gematria::Calculator do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
5
|
+
it "is instantiated with text and provides access to that text" do
|
6
|
+
gematria = Gematria::Calculator.new('mytext')
|
7
|
+
expect(gematria.text).to eq 'mytext'
|
8
|
+
end
|
10
9
|
|
11
|
-
|
12
|
-
|
10
|
+
context "when no table is specified" do
|
11
|
+
context "when a table has been set" do
|
12
|
+
it "uses the currently selected table" do
|
13
|
+
Gematria::Tables.set_table(:english)
|
13
14
|
gematria = Gematria::Calculator.new('abc')
|
14
|
-
expect(gematria.mapped).to eq [
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "#converted" do
|
19
|
-
it "returns the sum of the letter values" do
|
20
|
-
gematria = Gematria::Calculator.new('abc')
|
21
|
-
expect(gematria.converted).to eq 0
|
15
|
+
expect(gematria.mapped).to eq [1,2,3]
|
22
16
|
end
|
23
17
|
end
|
24
|
-
|
25
|
-
|
26
|
-
|
18
|
+
context "when no table has been set" do
|
19
|
+
it "uses an empty table (all zeros)" do
|
20
|
+
Gematria::Tables.set_table(nil)
|
27
21
|
gematria = Gematria::Calculator.new('abc')
|
28
|
-
expect(gematria.
|
22
|
+
expect(gematria.mapped).to eq [0,0,0]
|
29
23
|
end
|
30
|
-
end
|
24
|
+
end
|
31
25
|
end
|
32
26
|
|
33
|
-
|
27
|
+
context "when English table is specified" do
|
34
28
|
describe "#mapped" do
|
35
29
|
it "returns an array of values for each character in text" do
|
36
30
|
gematria = Gematria::Calculator.new('abc', :english)
|
@@ -61,17 +55,19 @@ describe Gematria::Calculator do
|
|
61
55
|
end
|
62
56
|
end
|
63
57
|
|
64
|
-
describe "
|
58
|
+
describe "when Hebrew table is specified" do
|
59
|
+
before { Gematria::Tables.set_table :hebrew }
|
60
|
+
|
65
61
|
describe "#mapped" do
|
66
62
|
it "returns an array of values for each character in text" do
|
67
|
-
abg = Gematria::Calculator.new('אבג'
|
63
|
+
abg = Gematria::Calculator.new('אבג')
|
68
64
|
expect(abg.mapped).to eq [1,2,3]
|
69
65
|
end
|
70
66
|
end
|
71
67
|
|
72
68
|
describe "#converted" do
|
73
69
|
it "returns the sum of the letter values" do
|
74
|
-
alephbet = Gematria::Calculator.new('אבגדהוזחטיכלמנסעפצקרשתךםןףץ'
|
70
|
+
alephbet = Gematria::Calculator.new('אבגדהוזחטיכלמנסעפצקרשתךםןףץ')
|
75
71
|
expect(alephbet.converted).to eq 4995
|
76
72
|
end
|
77
73
|
end
|
@@ -79,13 +75,13 @@ describe Gematria::Calculator do
|
|
79
75
|
describe "#reduced" do
|
80
76
|
context "when converted value is a single digit" do
|
81
77
|
it "returns a single digit" do
|
82
|
-
abg = Gematria::Calculator.new('אבג'
|
78
|
+
abg = Gematria::Calculator.new('אבג')
|
83
79
|
expect(abg.reduced).to eq 6
|
84
80
|
end
|
85
81
|
end
|
86
82
|
context "when converted value is more than one digit" do
|
87
83
|
it "returns a single digit" do
|
88
|
-
alephbet = Gematria::Calculator.new('אבגדהוזחטיכלמנסעפצקרשתךםןףץ'
|
84
|
+
alephbet = Gematria::Calculator.new('אבגדהוזחטיכלמנסעפצקרשתךםןףץ')
|
89
85
|
expect(alephbet.reduced).to eq 9 # 4995 -> 27 -> 9
|
90
86
|
end
|
91
87
|
end
|
@@ -1,48 +1,76 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
module Gematria
|
5
|
+
|
6
|
+
describe Tables do
|
7
|
+
it "has a hash to store the tables" do
|
8
|
+
expect(Tables::TABLES).to be_a Hash
|
9
|
+
end
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
expect(Gematria::Tables::TABLES).to include valid: {'a'=>1,'b'=>2}
|
11
|
+
describe "#set_table" do
|
12
|
+
it "assigns a table to @current" do
|
13
|
+
Tables.set_table(:english)
|
14
|
+
expect(Tables.instance_variable_get :@current).to eq :english
|
14
15
|
end
|
15
16
|
end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
|
18
|
+
describe "#current" do
|
19
|
+
context "when a table has been selected" do
|
20
|
+
it "returns the previously selected table" do
|
21
|
+
Tables.set_table(:hebrew)
|
22
|
+
expect(Tables.current).to eq Tables.fetch(:hebrew)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
context "when a table has not been selected" do
|
26
|
+
before do
|
27
|
+
if Tables.instance_variable_defined? :@current
|
28
|
+
Tables.instance_variable_set :@current, nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
it "returns an empty hash" do
|
32
|
+
expect(Tables.current).to eq({})
|
33
|
+
end
|
21
34
|
end
|
22
35
|
end
|
23
|
-
end
|
24
36
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
37
|
+
describe "#add_table" do
|
38
|
+
context "when table is valid" do
|
39
|
+
it "adds the table to the TABLES store" do
|
40
|
+
Tables.add_table :valid, 'a'=>1,'b'=>2
|
41
|
+
expect(Tables::TABLES).to include valid: {'a'=>1,'b'=>2}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
context "when table is invalid" do
|
45
|
+
it "raises a TypeError" do
|
46
|
+
expect {
|
47
|
+
Tables.add_table :invalid, [['a',1],['b',2]]
|
48
|
+
}.to raise_error TypeError
|
49
|
+
end
|
30
50
|
end
|
31
51
|
end
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
52
|
+
|
53
|
+
describe "#fetch" do
|
54
|
+
context "when table exists" do
|
55
|
+
it "returns the table" do
|
56
|
+
Tables.add_table :mytable, 'a'=>1
|
57
|
+
expect(Tables.fetch(:mytable)).to eq 'a'=>1
|
58
|
+
end
|
59
|
+
end
|
60
|
+
context "when table does not exist" do
|
61
|
+
it "returns an empty hash" do
|
62
|
+
expect(Tables.fetch :non_existant_table).to eq({})
|
63
|
+
end
|
37
64
|
end
|
38
65
|
end
|
39
|
-
end
|
40
66
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
67
|
+
describe "#[]" do
|
68
|
+
it "delegates to #fetch" do
|
69
|
+
Tables.should_receive(:fetch).with(:key)
|
70
|
+
Tables[:key]
|
71
|
+
end
|
45
72
|
end
|
73
|
+
|
46
74
|
end
|
47
75
|
|
48
76
|
end
|