crowdfund_alec 1.0.0 → 1.0.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 +4 -4
- data/README.md +110 -8
- metadata +111 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3ff6ee103e9ea86c90bb6243cd1f79c0e287f74cb2ed3df8029a312e278b0702
|
|
4
|
+
data.tar.gz: 86726a07c2c5eadbddea6d79e03217e2b4742f8c5d9a0897c1c1785e1e495edc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3ca4b8f69821a8a511650b9ae6bdb6e7ce8fd618c5126d6a70f91678c889915a1f7533ef15bb3b65019736ea6a6737c0c500a674ba349251d7d22049e95f1028
|
|
7
|
+
data.tar.gz: 5b91c2dac9214f2fa51b7054ca0fff5dc376e6a1d6727bcff58ec1f35a9c4579de01aa203f59e2c44e6d1a49e6ef9d271790080698b288eeab2cf4a20534af3c
|
data/README.md
CHANGED
|
@@ -1,12 +1,114 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Crowdfund (Alec)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Ferramenta de linha de comando e biblioteca Ruby para simular um programa de **arrecadação de fundos** com rodadas, promessas (pledges) e diferentes tipos de projetos (básico, com *matching*, e *grant*).
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Instalação
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
gem install crowdfund_alec
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Ou rode a partir do código-fonte:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
6
14
|
ruby bin/crowdfund
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Como funciona
|
|
18
|
+
|
|
19
|
+
- Você carrega projetos via CSV (nome, fundos_iniciais, meta).
|
|
20
|
+
- Em cada rodada, um dado é rolado para **adicionar** (+25) ou **remover** (–15) fundos do projeto.
|
|
21
|
+
- Em paralelo, o projeto recebe **pledges** aleatórios: bronze ($50), silver ($75), gold ($100).
|
|
22
|
+
- Projetos podem ter comportamento especial:
|
|
23
|
+
- **MatchingProject**: quando chega a 50% da meta, cada `add_fund` passa a dobrar (+50).
|
|
24
|
+
- **GrantProject**: nunca perde fundos em `remove_fund`.
|
|
25
|
+
- Ao sair, o relatório salva os **subfinanciados** em `needmoremoney.txt` e imprime estatísticas.
|
|
26
|
+
|
|
27
|
+
## Uso (CLI)
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# (1) CSV padrão (bin/projects.csv)
|
|
31
|
+
ruby bin/crowdfund
|
|
32
|
+
|
|
33
|
+
# (2) Informando um CSV customizado
|
|
34
|
+
ruby bin/crowdfund caminho/para/projetos.csv
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Durante a execução:
|
|
38
|
+
- Digite um número para a quantidade de rodadas.
|
|
39
|
+
- Digite `q` ou `e` para sair e ver o relatório final.
|
|
40
|
+
|
|
41
|
+
### Formato do CSV
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
NomeDoProjeto,fundos_iniciais,meta
|
|
45
|
+
BuyaBoat,5,10000
|
|
46
|
+
TraveltoVictoriaIsland,5,3000
|
|
47
|
+
GetaPuppy,5,300
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Saída esperada
|
|
51
|
+
|
|
52
|
+
- Resumo por rodada dos fundos e pledges recebidos.
|
|
53
|
+
- Arquivo `needmoremoney.txt` contendo:
|
|
54
|
+
- Título do relatório.
|
|
55
|
+
- Projetos totalmente financiados.
|
|
56
|
+
- Projetos subfinanciados ordenados por **quanto falta**.
|
|
57
|
+
- Snapshot CSV de todos os projetos.
|
|
58
|
+
|
|
59
|
+
## API (uso como biblioteca)
|
|
60
|
+
|
|
61
|
+
Requerendo as classes principais:
|
|
62
|
+
|
|
63
|
+
```ruby
|
|
64
|
+
require 'crowdfund/project'
|
|
65
|
+
require 'crowdfund/fund_request'
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Criando projetos e executando rodadas:
|
|
69
|
+
|
|
70
|
+
```ruby
|
|
71
|
+
project = Project.new("My App", 500, 2000)
|
|
72
|
+
funding = FundRequest.new("Startup do Alec")
|
|
73
|
+
funding.add_project(project)
|
|
74
|
+
funding.request_funding(5)
|
|
75
|
+
funding.print_results
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Classes principais
|
|
79
|
+
|
|
80
|
+
- `Project`
|
|
81
|
+
- Atributos: `name`, `fund_amount`, `target_fund_amount`
|
|
82
|
+
- Métodos: `add_fund`, `remove_fund`, `funds_needed`, `funded?`, `received_pledge`, `pledges`, `total_funds`, `each_received_pledge`, `to_csv`, `status`
|
|
83
|
+
- `FundRequest`
|
|
84
|
+
- Gerencia lista de projetos, executa rodadas, imprime e salva relatórios.
|
|
85
|
+
- `MatchingProject < Project`
|
|
86
|
+
- Dobra `add_fund` quando `halfway_funded?` (>= 50% da meta).
|
|
87
|
+
- `GrantProject < Project`
|
|
88
|
+
- Sobrescreve `remove_fund` para nunca diminuir fundos.
|
|
89
|
+
- `Pledgesmod`
|
|
90
|
+
- Constante `PLEDGES` e `.random` para escolher bronze/silver/gold.
|
|
91
|
+
- `FundingRound`
|
|
92
|
+
- Regras de uma rodada: rola `Die`, aplica `add/remove`, atribui pledge.
|
|
93
|
+
- `Fundable` (mixin)
|
|
94
|
+
- Implementa `add_fund`, `remove_fund`, `funds_needed`, `funded?`.
|
|
95
|
+
- `Die`
|
|
96
|
+
- D6 simples com `roll`.
|
|
97
|
+
|
|
98
|
+
## Testes
|
|
99
|
+
|
|
100
|
+
Rodar todos os testes:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
rspec
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Principais cenários cobertos:
|
|
107
|
+
- Regras de `add_fund`/`remove_fund`.
|
|
108
|
+
- Comportamento de `MatchingProject` e `GrantProject`.
|
|
109
|
+
- Integração de `FundingRound` e `Pledgesmod`.
|
|
110
|
+
- Geração do relatório em `FundRequest`.
|
|
111
|
+
|
|
112
|
+
## Licença
|
|
7
113
|
|
|
8
|
-
|
|
9
|
-
- Load players from CSV
|
|
10
|
-
- Points system (blam/w00t)
|
|
11
|
-
- Treasure trove
|
|
12
|
-
- Clumsy and beserker player
|
|
114
|
+
MIT — consulte o arquivo `LICENSE`.
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: crowdfund_alec
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- LucioAlec
|
|
@@ -24,18 +24,120 @@ dependencies:
|
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '3'
|
|
26
26
|
description: |-
|
|
27
|
-
#
|
|
27
|
+
# Crowdfund (Alec)
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
Ferramenta de linha de comando e biblioteca Ruby para simular um programa de **arrecadação de fundos** com rodadas, promessas (pledges) e diferentes tipos de projetos (básico, com *matching*, e *grant*).
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## Instalação
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
gem install crowdfund_alec
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Ou rode a partir do código-fonte:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
32
40
|
ruby bin/crowdfund
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Como funciona
|
|
44
|
+
|
|
45
|
+
- Você carrega projetos via CSV (nome, fundos_iniciais, meta).
|
|
46
|
+
- Em cada rodada, um dado é rolado para **adicionar** (+25) ou **remover** (–15) fundos do projeto.
|
|
47
|
+
- Em paralelo, o projeto recebe **pledges** aleatórios: bronze ($50), silver ($75), gold ($100).
|
|
48
|
+
- Projetos podem ter comportamento especial:
|
|
49
|
+
- **MatchingProject**: quando chega a 50% da meta, cada `add_fund` passa a dobrar (+50).
|
|
50
|
+
- **GrantProject**: nunca perde fundos em `remove_fund`.
|
|
51
|
+
- Ao sair, o relatório salva os **subfinanciados** em `needmoremoney.txt` e imprime estatísticas.
|
|
52
|
+
|
|
53
|
+
## Uso (CLI)
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# (1) CSV padrão (bin/projects.csv)
|
|
57
|
+
ruby bin/crowdfund
|
|
58
|
+
|
|
59
|
+
# (2) Informando um CSV customizado
|
|
60
|
+
ruby bin/crowdfund caminho/para/projetos.csv
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Durante a execução:
|
|
64
|
+
- Digite um número para a quantidade de rodadas.
|
|
65
|
+
- Digite `q` ou `e` para sair e ver o relatório final.
|
|
66
|
+
|
|
67
|
+
### Formato do CSV
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
NomeDoProjeto,fundos_iniciais,meta
|
|
71
|
+
BuyaBoat,5,10000
|
|
72
|
+
TraveltoVictoriaIsland,5,3000
|
|
73
|
+
GetaPuppy,5,300
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Saída esperada
|
|
77
|
+
|
|
78
|
+
- Resumo por rodada dos fundos e pledges recebidos.
|
|
79
|
+
- Arquivo `needmoremoney.txt` contendo:
|
|
80
|
+
- Título do relatório.
|
|
81
|
+
- Projetos totalmente financiados.
|
|
82
|
+
- Projetos subfinanciados ordenados por **quanto falta**.
|
|
83
|
+
- Snapshot CSV de todos os projetos.
|
|
84
|
+
|
|
85
|
+
## API (uso como biblioteca)
|
|
86
|
+
|
|
87
|
+
Requerendo as classes principais:
|
|
88
|
+
|
|
89
|
+
```ruby
|
|
90
|
+
require 'crowdfund/project'
|
|
91
|
+
require 'crowdfund/fund_request'
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Criando projetos e executando rodadas:
|
|
95
|
+
|
|
96
|
+
```ruby
|
|
97
|
+
project = Project.new("My App", 500, 2000)
|
|
98
|
+
funding = FundRequest.new("Startup do Alec")
|
|
99
|
+
funding.add_project(project)
|
|
100
|
+
funding.request_funding(5)
|
|
101
|
+
funding.print_results
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Classes principais
|
|
105
|
+
|
|
106
|
+
- `Project`
|
|
107
|
+
- Atributos: `name`, `fund_amount`, `target_fund_amount`
|
|
108
|
+
- Métodos: `add_fund`, `remove_fund`, `funds_needed`, `funded?`, `received_pledge`, `pledges`, `total_funds`, `each_received_pledge`, `to_csv`, `status`
|
|
109
|
+
- `FundRequest`
|
|
110
|
+
- Gerencia lista de projetos, executa rodadas, imprime e salva relatórios.
|
|
111
|
+
- `MatchingProject < Project`
|
|
112
|
+
- Dobra `add_fund` quando `halfway_funded?` (>= 50% da meta).
|
|
113
|
+
- `GrantProject < Project`
|
|
114
|
+
- Sobrescreve `remove_fund` para nunca diminuir fundos.
|
|
115
|
+
- `Pledgesmod`
|
|
116
|
+
- Constante `PLEDGES` e `.random` para escolher bronze/silver/gold.
|
|
117
|
+
- `FundingRound`
|
|
118
|
+
- Regras de uma rodada: rola `Die`, aplica `add/remove`, atribui pledge.
|
|
119
|
+
- `Fundable` (mixin)
|
|
120
|
+
- Implementa `add_fund`, `remove_fund`, `funds_needed`, `funded?`.
|
|
121
|
+
- `Die`
|
|
122
|
+
- D6 simples com `roll`.
|
|
123
|
+
|
|
124
|
+
## Testes
|
|
125
|
+
|
|
126
|
+
Rodar todos os testes:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
rspec
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Principais cenários cobertos:
|
|
133
|
+
- Regras de `add_fund`/`remove_fund`.
|
|
134
|
+
- Comportamento de `MatchingProject` e `GrantProject`.
|
|
135
|
+
- Integração de `FundingRound` e `Pledgesmod`.
|
|
136
|
+
- Geração do relatório em `FundRequest`.
|
|
137
|
+
|
|
138
|
+
## Licença
|
|
33
139
|
|
|
34
|
-
|
|
35
|
-
- Load players from CSV
|
|
36
|
-
- Points system (blam/w00t)
|
|
37
|
-
- Treasure trove
|
|
38
|
-
- Clumsy and beserker player
|
|
140
|
+
MIT — consulte o arquivo `LICENSE`.
|
|
39
141
|
email: lucioalec@gmail.com
|
|
40
142
|
executables:
|
|
41
143
|
- crowdfund
|