sievetech/rgc — pull request #6 by etandel (2012-12-26 21:00:48+00:00)
Title: Implementa regras

Implementa o interpretador de regras.

Ele consiste numa classe que deve ser instanciada passando as regras a serem usadas e seus parâmetros. Então deve-se chamar o método apply passando o cloudfile object como parâmetro, o que fará que cada regra seja aplicada àquele objeto:

```python
from rgc.rules import RuleSet
ruleset = RuleSet(days=30, is_export=True)
for container in containers:
for obj in container.get_objects():
if ruleset.apply(obj):
delete_object(obj)
```

Caso uma das regras não exista, o código levanta a excessão `RuleDoesNotExistError`.

### Importante: Se não for passada nenhuma regra na instanciação, **RuleSet.apply retornará verdadeiro** ([verdade por vacuidade](http://en.wikipedia.org/wiki/Vacuous_truth))!
Esse comportamente deverá ser tratado no `rgc/rgc.py` (levantar erro?).

Algumas notas quanto aos comandos:
* Esses comandos ainda estão muito "Sieve". O ideal seria torná-los mais genéricos e, quando formos usarmos na Sieve, extendemos o código com comandos mais pertinentes ao nosso caso (`class SieveRuleSet(rgc.RuleSet)`?).
* Não consegui achar uma forma de diferenciar o tipo de exportação entre product e brand (e também não sei se faz sentido), por isso criei a regra `is_export`.
* No comando `days`, considero que o arquivo deve ser mais velho que o parâmetro (days > ndays).