universum 0.1.1 → 0.1.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
  SHA1:
3
- metadata.gz: 3acaf4c843a75d9a4861a8e34951c8e52653747e
4
- data.tar.gz: dda716a972555bc30cd2115622c987949819ccd7
3
+ metadata.gz: e2c8f33d68ea490e3785c31d1cca9977af498602
4
+ data.tar.gz: d7ac8121bc501b8339954fdc0c23111c4c5d60d8
5
5
  SHA512:
6
- metadata.gz: 5b0730f852dc73ddf914d6a4faa6ab3c5e67aa5f7991b26b2c7bfbc7d0e0dd713418484b3ffbc6d8256ed836893f19590e8c0633f3edbdc5a10729cf65e0097f
7
- data.tar.gz: 645e5279dd0953d7a121a4eec284c1f22a352fcc37e9366e9bba965f2f0aa090837d3617e4531002b7d0314e77732a8fad17008f66972519c98993f3192a064f
6
+ metadata.gz: fbcfc8ea96b55f557636649078b665554464b5009f411cc6208890a4b4f558a633198321d796093b0b1e0cfa31bd58154064d2112576258ffdbf4ed97b065687
7
+ data.tar.gz: 03a36a8c12c2ff2e88789028b4c978c1ed3d60d909d773b1fb79592a9212b819e2712ce3e2dd82682b250d80b608c3d6cc61880ecadd589a1d14722c63f8c36d
data/Manifest.txt CHANGED
@@ -4,10 +4,14 @@ Manifest.txt
4
4
  README.md
5
5
  Rakefile
6
6
  lib/universum.rb
7
+ lib/universum/enum.rb
8
+ lib/universum/event.rb
7
9
  lib/universum/universum.rb
8
10
  lib/universum/version.rb
9
11
  test/contracts/greeter.rb
10
12
  test/contracts/mytoken.rb
11
13
  test/helper.rb
14
+ test/test_enum.rb
15
+ test/test_event.rb
12
16
  test/test_greeter.rb
13
17
  test/test_version.rb
data/README.md CHANGED
@@ -155,7 +155,7 @@ class MyToken < Contract
155
155
  @balance_of[ msg.sender ] -= value
156
156
  @balance_of[ to ] += value
157
157
 
158
- return true
158
+ true
159
159
  end
160
160
  end # class MyToken
161
161
  ```
data/lib/universum.rb CHANGED
@@ -1,10 +1,19 @@
1
1
  # encoding: utf-8
2
2
 
3
3
 
4
+ ## stdlibs
5
+ require 'pp' ## pretty print (pp)
6
+ require 'digest'
7
+
8
+
4
9
  ## our own code
5
10
  require 'universum/version' # note: let version always go first
6
11
 
12
+ require 'universum/enum'
13
+ require 'universum/event'
14
+
7
15
  require 'universum/universum'
8
16
 
9
17
 
18
+
10
19
  puts Universum.banner ## say hello
@@ -0,0 +1,83 @@
1
+ # encoding: utf-8
2
+
3
+ ##################################
4
+ ## auto-create/builds enum class.
5
+ ##
6
+ ## Example:
7
+ ## State = Enum.new( :fundraising, :expired_refund, :successful)
8
+ ## auto-creates/builds:
9
+ ##
10
+ ## class Enum
11
+ ## def initialize( key, value )
12
+ ## @key = key
13
+ ## @value = value
14
+ ## end
15
+ ## end
16
+ ##
17
+ ## class State < Enum
18
+ ##
19
+ ## FUNDRAISING = new(:fundraising, 0)
20
+ ## EXPIRED_REFUND = new(:expired_refund, 1)
21
+ ## SUCCESSFUL = new(:successful, 2)
22
+ ##
23
+ ## def self.fundraising() FUNDRAISING; end
24
+ ## def self.expired_refund() EXPIRED_REFUND; end
25
+ ## def self.successful() SUCCESSFUL; end
26
+ ##
27
+ ## def fundraising?() self == FUNDRAISING; end
28
+ ## def expired_refund?() self == EXPIRED_REFUND; end
29
+ ## def successful?() self == SUCCESSFUL; end
30
+ ## end
31
+ ##
32
+ ## pp state = State.fundraising #=> #<State @key=:fundraising, @value=0>
33
+ ## pp state.fundraising? #=> true
34
+ ## pp state.expired_refund? #=> false
35
+ ## pp state.successful? #=> false
36
+ ## pp state = State.expired_refund #=> #<State @key=:expired_refund, @value=1>
37
+ ## pp state.fundraising? #=> false
38
+ ## pp state.expired_refund? #=> true
39
+ ## pp state.successful? #=> false
40
+
41
+
42
+ ## base class for enum
43
+ class Enum
44
+ ## return a new Enum read-only class
45
+
46
+ def initialize( key, value )
47
+ @key = key
48
+ @value = value
49
+ end
50
+
51
+
52
+ ###################
53
+ ## meta-programming "macro" - build class (on the fly)
54
+ def self.build_class( *keys )
55
+ klass = Class.new( Enum )
56
+
57
+ ## add self.new too - note: call/forward to "old" orginal self.new of Event (base) class
58
+ klass.define_singleton_method( :new ) do |*args|
59
+ old_new( *args )
60
+ end
61
+
62
+ keys.each_with_index do |key,index|
63
+ klass.class_eval( <<RUBY )
64
+ #{key.upcase} = new( :#{key}, #{index} )
65
+
66
+ def #{key}?
67
+ self == #{key.upcase}
68
+ end
69
+
70
+ def self.#{key}
71
+ #{key.upcase}
72
+ end
73
+ RUBY
74
+ end
75
+
76
+ klass
77
+ end
78
+
79
+ class << self
80
+ alias_method :old_new, :new # note: store "old" orginal version of new
81
+ alias_method :new, :build_class # replace original version with create
82
+ end
83
+ end # class Enum
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+
3
+ ##################################
4
+ ## auto-create/builds struct-like class.
5
+ ##
6
+ ## Example:
7
+ ## Roll = Event.new( :id, :rolled )
8
+ ## auto-creates/builds:
9
+ ##
10
+ ## class Event; end
11
+ ## class Roll < Event
12
+ ## def initialize( id, rolled )
13
+ ## @id = id
14
+ ## @rolled = rolled
15
+ ## end
16
+ ##
17
+ ## def id() @id; end
18
+ ## def rolled() @rolled; end
19
+ ## end
20
+ ##
21
+ ## pp roll = Roll.new( 1, 2345 ) #=> #<Roll @id=1, @rolled=2345>
22
+ ## pp roll.id #=> 1
23
+ ## pp roll.rolled #=> 2345
24
+
25
+
26
+ ## base class for events
27
+ class Event
28
+ ## return a new Struct-like read-only class
29
+
30
+ ###################
31
+ ## meta-programming "macro" - build class (on the fly)
32
+ ##
33
+ def self.build_class( *fields )
34
+ klass = Class.new( Event ) do
35
+ define_method( :initialize ) do |*args|
36
+ fields.zip( args ).each do |field, arg|
37
+ instance_variable_set( "@#{field}", arg )
38
+ end
39
+ end
40
+
41
+ fields.each do |field|
42
+ define_method( field ) do
43
+ instance_variable_get( "@#{field}" )
44
+ end
45
+ end
46
+ end
47
+
48
+ ## add self.new too - note: call/forward to "old" orginal self.new of Event (base) class
49
+ klass.define_singleton_method( :new ) do |*args|
50
+ old_new( *args )
51
+ end
52
+
53
+ klass
54
+ end
55
+
56
+ class << self
57
+ alias_method :old_new, :new # note: store "old" orginal version of new
58
+ alias_method :new, :build_class # replace original version with create
59
+ end
60
+ end # class Event
@@ -1,10 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
3
 
4
- ## stdlibs
5
- require 'pp' ## pretty print (pp)
6
- require 'digest'
7
-
8
4
 
9
5
  def sha256( str )
10
6
  Digest::SHA256.hexdigest( str )
@@ -420,37 +416,6 @@ class Receipt ## transaction receipt
420
416
  end
421
417
 
422
418
 
423
- ## base class for events
424
- class Event
425
- ## return a new Struct-like read-only class
426
- def self.build_class( *fields )
427
- klass = Class.new( Event ) do
428
- define_method( :initialize ) do |*args|
429
- fields.zip( args ).each do |field, arg|
430
- instance_variable_set( "@#{field}", arg )
431
- end
432
- end
433
-
434
- fields.each do |field|
435
- define_method( field ) do
436
- instance_variable_get( "@#{field}" )
437
- end
438
- end
439
- end
440
-
441
- ## add self.new too - note: call/forward to "old" orginal self.new of Event (base) class
442
- klass.define_singleton_method( :new ) do |*args|
443
- old_new( *args )
444
- end
445
-
446
- klass
447
- end
448
-
449
- class << self
450
- alias_method :old_new, :new # note: store "old" orginal version of new
451
- alias_method :new, :build_class # replace original version with create
452
- end
453
- end # class Event
454
419
 
455
420
 
456
421
  class Universum ## Uni short for Universum
@@ -8,7 +8,7 @@ class Universum
8
8
 
9
9
  MAJOR = 0
10
10
  MINOR = 1
11
- PATCH = 1
11
+ PATCH = 2
12
12
  VERSION = [MAJOR,MINOR,PATCH].join('.')
13
13
 
14
14
  def self.version
@@ -15,6 +15,6 @@ class MyToken < Contract
15
15
  @balance_of[ msg.sender ] -= value
16
16
  @balance_of[ to ] += value
17
17
 
18
- return true
18
+ true
19
19
  end
20
20
  end # class MyToken
data/test/test_enum.rb ADDED
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_enum.rb
6
+
7
+
8
+ require 'helper'
9
+
10
+
11
+ class TestEnum < MiniTest::Test
12
+
13
+ State = Enum.new( :fundraising, :expired_refund, :successful )
14
+
15
+ def test_state
16
+ pp State
17
+
18
+ state = State.fundraising
19
+ assert state.is_a?( Enum )
20
+
21
+ assert_equal true, state.fundraising?
22
+ assert_equal false, state.expired_refund?
23
+ assert_equal false, state.successful?
24
+
25
+ state = State.expired_refund
26
+ assert_equal false, state.fundraising?
27
+ assert_equal true, state.expired_refund?
28
+ assert_equal false, state.successful?
29
+ end
30
+ end # class TestEnum
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_event.rb
6
+
7
+
8
+ require 'helper'
9
+
10
+
11
+ class TestEvent < MiniTest::Test
12
+
13
+ BetPlaced = Event.new( :id, :user, :cap, :amount )
14
+ Roll = Event.new( :id, :rolled )
15
+
16
+
17
+ def test_bet_placed
18
+ pp BetPlaced
19
+
20
+ bet = BetPlaced.new( 1, '0xaaaa', 2000, 100 )
21
+
22
+ assert bet.is_a?( Event )
23
+ assert_equal 1, bet.id
24
+ assert_equal '0xaaaa', bet.user
25
+ assert_equal 2000, bet.cap
26
+ assert_equal 100, bet.amount
27
+ end
28
+
29
+ def test_roll
30
+ pp Roll
31
+
32
+ roll = Roll.new( 1, 2345 )
33
+ assert roll.is_a?( Event )
34
+ assert_equal 1, roll.id
35
+ assert_equal 2345, roll.rolled
36
+ end
37
+
38
+ end # class TestEvent
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: universum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-03 00:00:00.000000000 Z
11
+ date: 2019-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdoc
@@ -57,11 +57,15 @@ files:
57
57
  - README.md
58
58
  - Rakefile
59
59
  - lib/universum.rb
60
+ - lib/universum/enum.rb
61
+ - lib/universum/event.rb
60
62
  - lib/universum/universum.rb
61
63
  - lib/universum/version.rb
62
64
  - test/contracts/greeter.rb
63
65
  - test/contracts/mytoken.rb
64
66
  - test/helper.rb
67
+ - test/test_enum.rb
68
+ - test/test_event.rb
65
69
  - test/test_greeter.rb
66
70
  - test/test_version.rb
67
71
  homepage: https://github.com/openblockchains/universum