gematria 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.0.5
4
+
5
+ * Improved documentation
6
+ * `Gematria::Tables` is now an instance of `Gematria::TableManager` rather than a method bucket
7
+
3
8
  ## v0.0.4
4
9
 
5
10
  * Ability to set global table so as to not have to specify a table name with every new instance
data/README.md CHANGED
@@ -35,7 +35,7 @@ Or install it yourself as:
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
- Settings a global table
38
+ Setting a global table
39
39
 
40
40
  Gematria::Tables.set_table :hebrew
41
41
  alephbet = Gematria::Calculator.new 'אבגדהוזחטיכלמנסעפצקרשתךםןףץ'
@@ -1,9 +1,13 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require "gematria/version"
3
- require "gematria/tables"
3
+ require "gematria/table_manager"
4
4
  require "gematria/calculator"
5
5
 
6
+ # A Ruby gem that calculates Gematria
6
7
  module Gematria
8
+ # initialize TableManager
9
+ Tables = TableManager.new
10
+
7
11
  # Add built-in tables
8
12
 
9
13
  # applies "mispar hechrachi" method to English alphabet (http://www.inner.org/gematria/fourways.php)
@@ -1,8 +1,13 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module Gematria
3
+ # Performs the gematria calculations
3
4
  class Calculator
4
5
 
5
6
  attr_reader :text, :table
7
+
8
+ # Takes the text to be converted and an optional table name
9
+ # @param text [String] text to be converted
10
+ # @param table_name [Symbol] optional table name to use in conversion. If none is specified, the global will be used (see Gematria::Tables#set_table)
6
11
  def initialize(text, table_name=nil)
7
12
  @text = text
8
13
  if table_name.is_a? Symbol
@@ -13,20 +18,18 @@ module Gematria
13
18
  end
14
19
 
15
20
  # Gets an array of the values for each character of text.
16
- #
21
+ # @example
17
22
  # name = Gematria::English.new("Adam")
18
23
  # name.mapped # => [1, 4, 1, 40]
19
- #
20
24
  # @return [Array<Number>] numerical values attributed to each character of the original text
21
25
  def mapped
22
26
  text.each_char.map { |c| lookup_char c }
23
27
  end
24
28
 
25
29
  # Gets the summed gematria number of text.
26
- #
30
+ # @example
27
31
  # name = Gematria::English.new("Adam")
28
32
  # name.converted # => 46
29
- #
30
33
  # This uses <tt>mapped</tt> internally and sums the results.
31
34
  # @return [Number] sum of the values of each character
32
35
  def converted
@@ -34,11 +37,10 @@ module Gematria
34
37
  end
35
38
 
36
39
  # Recursively reduces the <tt>converted</tt> value to a single digit mispar katan mispari style.
37
- #
40
+ # @example
38
41
  # name = Gematria::English.new("Adam")
39
42
  # name.reduced # => 1
40
- #
41
- # For example: "Adam" -> 46 -> 10 -> 1
43
+ # # "Adam" -> 46 -> 10 -> 1
42
44
  # @return [Number] single digit from reduction of <tt>converted</tt> value
43
45
  def reduced
44
46
  do_reduction_on converted
@@ -1,64 +1,57 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module Gematria
3
- module Tables
4
- # Stores available tables
5
- TABLES = {}
3
+ # Manages a set of tables that can be used to do the gematria conversion
4
+ class TableManager
6
5
 
7
- # Sets the global current table
8
- #
9
- # Tables.set_table(:english)
10
- # Tables.current # => {'a'=>1,'b'=>2,...}
11
- #
6
+ attr_reader :tables
7
+
8
+ def initialize
9
+ @tables = {}
10
+ @current = nil
11
+ end
12
+
13
+ # Sets the current table
14
+ # @example
15
+ # Gematria::Tables.set_table(:english)
12
16
  # @param table_name [Symbol] table name
13
17
  # @return [Symbol] table name
14
- def self.set_table(table_name)
18
+ def set_table(table_name)
15
19
  @current = table_name
16
20
  end
17
21
 
18
22
  # Gets the currently selected table
19
- #
20
- # Tables.set_table(:english)
21
- # Tables.current # => {'a'=>1,'b'=>2,...}
22
- #
23
+ # @example After setting the table to <tt>:english</tt> with the <tt>#set_table</tt> method
24
+ # Gematria::Tables.current # => {'a'=>1,'b'=>2,...}
23
25
  # @return [Hash{String => Number}]
24
- def self.current
26
+ def current
25
27
  fetch(@current)
26
28
  end
27
29
 
28
30
  # Adds a table to the table store. A valid table must be a Hash with single character string keys and numerical values.
29
31
  # A table that is not a Hash will raise a TypeError. The table name will be converted to a Symbol.
30
- #
31
- # Tables.add_table :mini_english, 'a' => 1, 'b' => 2, 'c' => 3
32
- #
32
+ # @example
33
+ # Gematria::Tables.add_table :mini_english, 'a' => 1, 'b' => 2, 'c' => 3
34
+ # @raise [TypeError] if table is not a valid Hash
33
35
  # @param name [#to_sym] table name
34
36
  # @param table [Hash{String => Number}] table of characters pointing to corresponding values
35
- def self.add_table(name, table)
37
+ # @return [void]
38
+ def add_table(name, table)
36
39
  if table.is_a? Hash
37
- TABLES[name.to_sym] = table
40
+ tables[name.to_sym] = table
38
41
  else
39
42
  raise TypeError, 'Invalid table format'
40
43
  end
41
44
  end
42
45
 
43
46
  # Fetches specified table
44
- #
45
- # Tables.fetch(:mini_english) # => {'a'=>1,'b'=>2,'c'=>3}
46
- #
47
- # @param key [Symbol] table name as a Symbol
48
- # @return [Hash{String => Number}]
49
- def self.fetch(key)
50
- TABLES.fetch(key, {})
51
- end
52
-
53
- # Fetches specified table (delegates to #fetch)
54
- #
55
- # Tables[:mini_english] # => {'a'=>1,'b'=>2,'c'=>3}
56
- #
47
+ # @example
48
+ # Gematria::Tables.fetch(:mini_english) # => {'a'=>1,'b'=>2,'c'=>3}
57
49
  # @param key [Symbol] table name as a Symbol
58
50
  # @return [Hash{String => Number}]
59
- def self.[](key)
60
- fetch(key)
51
+ def fetch(key)
52
+ tables.fetch(key, {})
61
53
  end
54
+ alias :[] :fetch
62
55
 
63
56
  end
64
57
  end
@@ -1,4 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module Gematria
3
- VERSION = "0.0.4"
3
+ # Official version of gematria gem
4
+ VERSION = "0.0.5"
4
5
  end
@@ -2,10 +2,10 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  module Gematria
5
+ describe TableManager do
5
6
 
6
- describe Tables do
7
7
  it "has a hash to store the tables" do
8
- expect(Tables::TABLES).to be_a Hash
8
+ expect(Tables.tables).to be_a Hash
9
9
  end
10
10
 
11
11
  describe "#set_table" do
@@ -38,7 +38,7 @@ module Gematria
38
38
  context "when table is valid" do
39
39
  it "adds the table to the TABLES store" do
40
40
  Tables.add_table :valid, 'a'=>1,'b'=>2
41
- expect(Tables::TABLES).to include valid: {'a'=>1,'b'=>2}
41
+ expect(Tables.tables).to include valid: {'a'=>1,'b'=>2}
42
42
  end
43
43
  end
44
44
  context "when table is invalid" do
@@ -50,27 +50,21 @@ module Gematria
50
50
  end
51
51
  end
52
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
53
+ %w{fetch []}.each do |method_name|
54
+ describe "##{method_name}" do
55
+ context "when table exists" do
56
+ it "returns the table" do
57
+ Tables.add_table :mytable, 'a'=>1
58
+ expect(Tables.send method_name, :mytable).to eq 'a'=>1
59
+ end
58
60
  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({})
61
+ context "when table does not exist" do
62
+ it "returns an empty hash" do
63
+ expect(Tables.send method_name, :non_existant_table).to eq({})
64
+ end
63
65
  end
64
66
  end
65
67
  end
66
68
 
67
- describe "#[]" do
68
- it "delegates to #fetch" do
69
- Tables.should_receive(:fetch).with(:key)
70
- Tables[:key]
71
- end
72
- end
73
-
74
69
  end
75
-
76
70
  end
@@ -1,4 +1,3 @@
1
1
  # -*- encoding : utf-8 -*-
2
- require 'rubygems'
3
2
  require 'rspec'
4
3
  require 'gematria'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gematria
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-27 00:00:00.000000000 Z
12
+ date: 2013-02-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -64,10 +64,10 @@ files:
64
64
  - gematria.gemspec
65
65
  - lib/gematria.rb
66
66
  - lib/gematria/calculator.rb
67
- - lib/gematria/tables.rb
67
+ - lib/gematria/table_manager.rb
68
68
  - lib/gematria/version.rb
69
69
  - spec/gematria/calculator_spec.rb
70
- - spec/gematria/tables_spec.rb
70
+ - spec/gematria/table_manager_spec.rb
71
71
  - spec/spec_helper.rb
72
72
  homepage: http://github.com/adamzaninovich/gematria
73
73
  licenses: []
@@ -95,6 +95,6 @@ specification_version: 3
95
95
  summary: A Ruby gem that calculates Gematria
96
96
  test_files:
97
97
  - spec/gematria/calculator_spec.rb
98
- - spec/gematria/tables_spec.rb
98
+ - spec/gematria/table_manager_spec.rb
99
99
  - spec/spec_helper.rb
100
100
  has_rdoc: